From 004e6fccc8271f12d82805ffd8aa9fcba7cecc17 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Thu, 25 Sep 2025 20:47:11 +0800 Subject: [PATCH 01/17] Migrated geo-traits-ext and geo-generic-alg --- Cargo.lock | 204 +- Cargo.toml | 27 +- c/sedona-geos/Cargo.toml | 2 +- rust/geo-generic-alg/Cargo.toml | 79 + rust/geo-generic-alg/README.md | 22 + rust/geo-generic-alg/benches/area.rs | 53 + rust/geo-generic-alg/benches/centroid.rs | 53 + rust/geo-generic-alg/benches/distance.rs | 494 ++++ rust/geo-generic-alg/benches/intersection.rs | 412 +++ rust/geo-generic-alg/benches/length.rs | 48 + rust/geo-generic-alg/benches/perimeter.rs | 53 + rust/geo-generic-alg/benches/utils/wkb.rs | 14 + .../src/algorithm/affine_ops.rs | 664 +++++ rust/geo-generic-alg/src/algorithm/area.rs | 605 +++++ .../src/algorithm/bounding_rect.rs | 414 +++ .../geo-generic-alg/src/algorithm/centroid.rs | 1217 +++++++++ rust/geo-generic-alg/src/algorithm/convert.rs | 75 + .../src/algorithm/convert_angle_unit.rs | 84 + .../src/algorithm/coordinate_position.rs | 892 +++++++ .../src/algorithm/coords_iter.rs | 1531 +++++++++++ .../src/algorithm/dimensions.rs | 773 ++++++ .../src/algorithm/euclidean_length.rs | 550 ++++ .../geo-generic-alg/src/algorithm/extremes.rs | 131 + .../src/algorithm/intersects/collections.rs | 144 + .../src/algorithm/intersects/coordinate.rs | 27 + .../src/algorithm/intersects/line.rs | 99 + .../src/algorithm/intersects/line_string.rs | 129 + .../src/algorithm/intersects/mod.rs | 734 +++++ .../src/algorithm/intersects/point.rs | 91 + .../src/algorithm/intersects/polygon.rs | 193 ++ .../src/algorithm/intersects/rect.rs | 97 + .../src/algorithm/intersects/triangle.rs | 71 + .../src/algorithm/kernels/mod.rs | 63 + .../src/algorithm/kernels/robust.rs | 44 + .../src/algorithm/kernels/simple.rs | 10 + .../src/algorithm/line_measures/distance.rs | 15 + .../src/algorithm/line_measures/length.rs | 809 ++++++ .../metric_spaces/euclidean/distance.rs | 2241 ++++++++++++++++ .../metric_spaces/euclidean/mod.rs | 78 + .../metric_spaces/euclidean/utils.rs | 2364 +++++++++++++++++ .../line_measures/metric_spaces/mod.rs | 3 + .../src/algorithm/line_measures/mod.rs | 8 + .../src/algorithm/map_coords.rs | 1080 ++++++++ rust/geo-generic-alg/src/algorithm/mod.rs | 84 + rust/geo-generic-alg/src/algorithm/rotate.rs | 603 +++++ rust/geo-generic-alg/src/algorithm/scale.rs | 163 ++ .../geo-generic-alg/src/algorithm/simplify.rs | 582 ++++ rust/geo-generic-alg/src/algorithm/skew.rs | 208 ++ .../src/algorithm/translate.rs | 178 ++ rust/geo-generic-alg/src/geometry.rs | 2 + rust/geo-generic-alg/src/geometry_cow.rs | 185 ++ rust/geo-generic-alg/src/lib.rs | 387 +++ rust/geo-generic-alg/src/types.rs | 158 ++ rust/geo-generic-alg/src/utils.rs | 180 ++ rust/geo-test-fixtures/Cargo.toml | 29 + .../fixtures/east_baton_rouge.wkt | 1 + .../fixtures/issue-894/inpa.wkt | 1 + .../fixtures/issue-894/inpb.wkt | 1 + .../fixtures/issue-894/inpc.wkt | 1 + rust/geo-test-fixtures/fixtures/louisiana.wkt | 1 + rust/geo-test-fixtures/fixtures/nl_plots.wkt | 1 + .../fixtures/nl_plots_epsg_28992.wkt | 1 + rust/geo-test-fixtures/fixtures/nl_zones.wkt | 1 + .../fixtures/norway_concave_hull.wkt | 1 + .../fixtures/norway_convex_hull.wkt | 1 + .../fixtures/norway_main.wkt | 1 + .../fixtures/norway_nonconvex_hull.wkt | 1 + rust/geo-test-fixtures/fixtures/poly1.wkt | 1 + .../geo-test-fixtures/fixtures/poly1_hull.wkt | 1 + rust/geo-test-fixtures/fixtures/poly2.wkt | 1 + .../geo-test-fixtures/fixtures/poly2_hull.wkt | 1 + .../fixtures/poly_in_ring.wkt | 1 + rust/geo-test-fixtures/fixtures/ring.wkt | 1 + rust/geo-test-fixtures/fixtures/shell.wkt | 1 + rust/geo-test-fixtures/fixtures/vw_orig.wkt | 1 + .../fixtures/vw_simplified.wkt | 1 + rust/geo-test-fixtures/pp_points.py | 44 + rust/geo-test-fixtures/src/lib.rs | 170 ++ rust/geo-traits-ext/Cargo.toml | 30 + rust/geo-traits-ext/README.md | 9 + rust/geo-traits-ext/src/coord.rs | 50 + rust/geo-traits-ext/src/geometry.rs | 326 +++ .../geo-traits-ext/src/geometry_collection.rs | 82 + rust/geo-traits-ext/src/lib.rs | 46 + rust/geo-traits-ext/src/line.rs | 110 + rust/geo-traits-ext/src/line_string.rs | 168 ++ rust/geo-traits-ext/src/multi_line_string.rs | 88 + rust/geo-traits-ext/src/multi_point.rs | 114 + rust/geo-traits-ext/src/multi_polygon.rs | 82 + rust/geo-traits-ext/src/point.rs | 89 + rust/geo-traits-ext/src/polygon.rs | 89 + rust/geo-traits-ext/src/rect.rs | 283 ++ rust/geo-traits-ext/src/triangle.rs | 140 + rust/geo-traits-ext/src/type_tag.rs | 33 + rust/sedona-geo/Cargo.toml | 2 +- rust/sedona-geo/src/to_geo.rs | 53 +- rust/sedona-spatial-join/Cargo.toml | 4 +- 97 files changed, 21376 insertions(+), 113 deletions(-) create mode 100644 rust/geo-generic-alg/Cargo.toml create mode 100644 rust/geo-generic-alg/README.md create mode 100644 rust/geo-generic-alg/benches/area.rs create mode 100644 rust/geo-generic-alg/benches/centroid.rs create mode 100644 rust/geo-generic-alg/benches/distance.rs create mode 100644 rust/geo-generic-alg/benches/intersection.rs create mode 100644 rust/geo-generic-alg/benches/length.rs create mode 100644 rust/geo-generic-alg/benches/perimeter.rs create mode 100644 rust/geo-generic-alg/benches/utils/wkb.rs create mode 100644 rust/geo-generic-alg/src/algorithm/affine_ops.rs create mode 100644 rust/geo-generic-alg/src/algorithm/area.rs create mode 100644 rust/geo-generic-alg/src/algorithm/bounding_rect.rs create mode 100644 rust/geo-generic-alg/src/algorithm/centroid.rs create mode 100644 rust/geo-generic-alg/src/algorithm/convert.rs create mode 100644 rust/geo-generic-alg/src/algorithm/convert_angle_unit.rs create mode 100644 rust/geo-generic-alg/src/algorithm/coordinate_position.rs create mode 100644 rust/geo-generic-alg/src/algorithm/coords_iter.rs create mode 100644 rust/geo-generic-alg/src/algorithm/dimensions.rs create mode 100644 rust/geo-generic-alg/src/algorithm/euclidean_length.rs create mode 100644 rust/geo-generic-alg/src/algorithm/extremes.rs create mode 100644 rust/geo-generic-alg/src/algorithm/intersects/collections.rs create mode 100644 rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs create mode 100644 rust/geo-generic-alg/src/algorithm/intersects/line.rs create mode 100644 rust/geo-generic-alg/src/algorithm/intersects/line_string.rs create mode 100644 rust/geo-generic-alg/src/algorithm/intersects/mod.rs create mode 100644 rust/geo-generic-alg/src/algorithm/intersects/point.rs create mode 100644 rust/geo-generic-alg/src/algorithm/intersects/polygon.rs create mode 100644 rust/geo-generic-alg/src/algorithm/intersects/rect.rs create mode 100644 rust/geo-generic-alg/src/algorithm/intersects/triangle.rs create mode 100644 rust/geo-generic-alg/src/algorithm/kernels/mod.rs create mode 100644 rust/geo-generic-alg/src/algorithm/kernels/robust.rs create mode 100644 rust/geo-generic-alg/src/algorithm/kernels/simple.rs create mode 100644 rust/geo-generic-alg/src/algorithm/line_measures/distance.rs create mode 100644 rust/geo-generic-alg/src/algorithm/line_measures/length.rs create mode 100644 rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs create mode 100644 rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs create mode 100644 rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs create mode 100644 rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs create mode 100644 rust/geo-generic-alg/src/algorithm/line_measures/mod.rs create mode 100644 rust/geo-generic-alg/src/algorithm/map_coords.rs create mode 100644 rust/geo-generic-alg/src/algorithm/mod.rs create mode 100644 rust/geo-generic-alg/src/algorithm/rotate.rs create mode 100644 rust/geo-generic-alg/src/algorithm/scale.rs create mode 100644 rust/geo-generic-alg/src/algorithm/simplify.rs create mode 100644 rust/geo-generic-alg/src/algorithm/skew.rs create mode 100644 rust/geo-generic-alg/src/algorithm/translate.rs create mode 100644 rust/geo-generic-alg/src/geometry.rs create mode 100644 rust/geo-generic-alg/src/geometry_cow.rs create mode 100644 rust/geo-generic-alg/src/lib.rs create mode 100644 rust/geo-generic-alg/src/types.rs create mode 100644 rust/geo-generic-alg/src/utils.rs create mode 100644 rust/geo-test-fixtures/Cargo.toml create mode 100644 rust/geo-test-fixtures/fixtures/east_baton_rouge.wkt create mode 100644 rust/geo-test-fixtures/fixtures/issue-894/inpa.wkt create mode 100644 rust/geo-test-fixtures/fixtures/issue-894/inpb.wkt create mode 100644 rust/geo-test-fixtures/fixtures/issue-894/inpc.wkt create mode 100644 rust/geo-test-fixtures/fixtures/louisiana.wkt create mode 100644 rust/geo-test-fixtures/fixtures/nl_plots.wkt create mode 100644 rust/geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt create mode 100644 rust/geo-test-fixtures/fixtures/nl_zones.wkt create mode 100644 rust/geo-test-fixtures/fixtures/norway_concave_hull.wkt create mode 100644 rust/geo-test-fixtures/fixtures/norway_convex_hull.wkt create mode 100644 rust/geo-test-fixtures/fixtures/norway_main.wkt create mode 100644 rust/geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt create mode 100644 rust/geo-test-fixtures/fixtures/poly1.wkt create mode 100644 rust/geo-test-fixtures/fixtures/poly1_hull.wkt create mode 100644 rust/geo-test-fixtures/fixtures/poly2.wkt create mode 100644 rust/geo-test-fixtures/fixtures/poly2_hull.wkt create mode 100644 rust/geo-test-fixtures/fixtures/poly_in_ring.wkt create mode 100644 rust/geo-test-fixtures/fixtures/ring.wkt create mode 100644 rust/geo-test-fixtures/fixtures/shell.wkt create mode 100644 rust/geo-test-fixtures/fixtures/vw_orig.wkt create mode 100644 rust/geo-test-fixtures/fixtures/vw_simplified.wkt create mode 100755 rust/geo-test-fixtures/pp_points.py create mode 100644 rust/geo-test-fixtures/src/lib.rs create mode 100644 rust/geo-traits-ext/Cargo.toml create mode 100644 rust/geo-traits-ext/README.md create mode 100644 rust/geo-traits-ext/src/coord.rs create mode 100644 rust/geo-traits-ext/src/geometry.rs create mode 100644 rust/geo-traits-ext/src/geometry_collection.rs create mode 100644 rust/geo-traits-ext/src/lib.rs create mode 100644 rust/geo-traits-ext/src/line.rs create mode 100644 rust/geo-traits-ext/src/line_string.rs create mode 100644 rust/geo-traits-ext/src/multi_line_string.rs create mode 100644 rust/geo-traits-ext/src/multi_point.rs create mode 100644 rust/geo-traits-ext/src/multi_polygon.rs create mode 100644 rust/geo-traits-ext/src/point.rs create mode 100644 rust/geo-traits-ext/src/polygon.rs create mode 100644 rust/geo-traits-ext/src/rect.rs create mode 100644 rust/geo-traits-ext/src/triangle.rs create mode 100644 rust/geo-traits-ext/src/type_tag.rs diff --git a/Cargo.lock b/Cargo.lock index 56a50589..ff860f3f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,8 +52,9 @@ dependencies = [ [[package]] name = "adbc_core" -version = "0.18.0" -source = "git+https://github.com/apache/arrow-adbc?rev=1ba248290cd299c4969b679463bcd54c217cf2e4#1ba248290cd299c4969b679463bcd54c217cf2e4" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b891479797b5588e320f7fd3caf15faba311cf8f8a76911195b6a3d55304eb" dependencies = [ "arrow-array", "arrow-schema", @@ -525,6 +526,17 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.5.0" @@ -2320,6 +2332,19 @@ dependencies = [ "regex", ] +[[package]] +name = "env_logger" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +dependencies = [ + "atty", + "humantime 1.3.0", + "log", + "regex", + "termcolor", +] + [[package]] name = "env_logger" version = "0.11.8" @@ -2566,9 +2591,9 @@ dependencies = [ [[package]] name = "geo" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4416397671d8997e9a3e7ad99714f4f00a22e9eaa9b966a5985d2194fc9e02e1" +checksum = "2fc1a1678e54befc9b4bcab6cd43b8e7f834ae8ea121118b0fd8c42747675b4a" dependencies = [ "earcutr", "float_next_after", @@ -2584,32 +2609,37 @@ dependencies = [ [[package]] name = "geo-generic-alg" -version = "0.1.0" -source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#66ff85949a82549b0d28fb2d4fae01e3ea19ca83" +version = "0.2.0" dependencies = [ - "earcutr", + "approx", + "criterion", "float_next_after", - "geo-traits 0.2.0", + "geo", + "geo-test-fixtures", + "geo-traits", "geo-traits-ext", "geo-types", - "geographiclib-rs", + "geos", "i_overlay", "log", "num-traits", + "pretty_env_logger", + "rand 0.8.5", + "rand_distr", "robust", "rstar", - "spade", + "serde", + "wkt 0.14.0", ] [[package]] name = "geo-index" version = "0.3.1" -source = "git+https://github.com/wherobots/geo-index.git?branch=main#f7d5bef2044831e78b2deb095f1af932128d74e4" dependencies = [ "bytemuck", "float_next_after", "geo", - "geo-traits 0.3.0", + "geo-traits", "geo-types", "num-traits", "thiserror 1.0.69", @@ -2618,11 +2648,11 @@ dependencies = [ ] [[package]] -name = "geo-traits" +name = "geo-test-fixtures" version = "0.2.0" -source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#66ff85949a82549b0d28fb2d4fae01e3ea19ca83" dependencies = [ "geo-types", + "wkt 0.14.0", ] [[package]] @@ -2636,20 +2666,18 @@ dependencies = [ [[package]] name = "geo-traits-ext" -version = "0.1.0" -source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#66ff85949a82549b0d28fb2d4fae01e3ea19ca83" +version = "0.2.0" dependencies = [ - "approx", - "geo-traits 0.2.0", + "geo-traits", "geo-types", "num-traits", - "serde", ] [[package]] name = "geo-types" -version = "0.7.16" -source = "git+https://github.com/wherobots/geo.git?branch=generic-alg#66ff85949a82549b0d28fb2d4fae01e3ea19ca83" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75a4dcd69d35b2c87a7c83bce9af69fd65c9d68d3833a0ded568983928f3fc99" dependencies = [ "approx", "num-traits", @@ -2813,6 +2841,15 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + [[package]] name = "hermit-abi" version = "0.5.2" @@ -2905,6 +2942,15 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error", +] + [[package]] name = "humantime" version = "2.3.0" @@ -2976,24 +3022,24 @@ dependencies = [ [[package]] name = "i_float" -version = "1.7.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85df3a416829bb955fdc2416c7b73680c8dcea8d731f2c7aa23e1042fe1b8343" +checksum = "010025c2c532c8d82e42d0b8bb5184afa449fa6f06c709ea9adcb16c49ae405b" dependencies = [ - "serde", + "libm", ] [[package]] name = "i_key_sort" -version = "0.2.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "347c253b4748a1a28baf94c9ce133b6b166f08573157e05afe718812bc599fcd" +checksum = "9190f86706ca38ac8add223b2aed8b1330002b5cdbbce28fb58b10914d38fc27" [[package]] name = "i_overlay" -version = "2.0.5" +version = "4.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0542dfef184afdd42174a03dcc0625b6147fb73e1b974b1a08a2a42ac35cee49" +checksum = "0fcccbd4e4274e0f80697f5fbc6540fdac533cce02f2081b328e68629cce24f9" dependencies = [ "i_float", "i_key_sort", @@ -3004,19 +3050,18 @@ dependencies = [ [[package]] name = "i_shape" -version = "1.7.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a38f5a42678726718ff924f6d4a0e79b129776aeed298f71de4ceedbd091bce" +checksum = "1ea154b742f7d43dae2897fcd5ead86bc7b5eefcedd305a7ebf9f69d44d61082" dependencies = [ "i_float", - "serde", ] [[package]] name = "i_tree" -version = "0.8.3" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139" +checksum = "35e6d558e6d4c7b82bc51d9c771e7a927862a161a7d87bf2b0541450e0e20915" [[package]] name = "iana-time-zone" @@ -3210,7 +3255,7 @@ version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi", + "hermit-abi 0.5.2", "libc", "windows-sys 0.59.0", ] @@ -3761,7 +3806,7 @@ dependencies = [ "futures", "http 1.3.1", "http-body-util", - "humantime", + "humantime 2.3.0", "hyper", "itertools 0.14.0", "md-5", @@ -4016,6 +4061,16 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "pretty_env_logger" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d" +dependencies = [ + "env_logger 0.7.1", + "log", +] + [[package]] name = "prettyplease" version = "0.2.37" @@ -4158,6 +4213,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a651516ddc9168ebd67b24afd085a718be02f8858fe406591b013d101ce2f40" +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + [[package]] name = "quick-xml" version = "0.38.3" @@ -4307,6 +4368,16 @@ dependencies = [ "getrandom 0.3.3", ] +[[package]] +name = "rand_distr" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + [[package]] name = "rayon" version = "1.11.0" @@ -4757,7 +4828,7 @@ dependencies = [ "datafusion-ffi", "dirs", "futures", - "geo-traits 0.2.0", + "geo-traits", "geo-types", "object_store", "parking_lot", @@ -4803,7 +4874,7 @@ dependencies = [ "async-trait", "clap", "datafusion", - "env_logger", + "env_logger 0.11.8", "futures", "libmimalloc-sys", "mimalloc", @@ -4832,7 +4903,7 @@ dependencies = [ "datafusion-common", "datafusion-expr", "datafusion-physical-expr", - "geo-traits 0.2.0", + "geo-traits", "rstest", "sedona-common", "sedona-geometry", @@ -4853,7 +4924,7 @@ dependencies = [ "datafusion", "datafusion-common", "datafusion-expr", - "geo-traits 0.2.0", + "geo-traits", "rstest", "sedona-common", "sedona-expr", @@ -4863,7 +4934,7 @@ dependencies = [ "serde_json", "tokio", "wkb", - "wkt 0.13.0", + "wkt 0.14.0", ] [[package]] @@ -4877,7 +4948,7 @@ dependencies = [ "datafusion-expr", "geo", "geo-generic-alg", - "geo-traits 0.2.0", + "geo-traits", "geo-types", "rstest", "sedona-expr", @@ -4886,7 +4957,7 @@ dependencies = [ "sedona-schema", "sedona-testing", "wkb", - "wkt 0.13.0", + "wkt 0.14.0", ] [[package]] @@ -4914,7 +4985,7 @@ dependencies = [ name = "sedona-geometry" version = "0.2.0" dependencies = [ - "geo-traits 0.2.0", + "geo-traits", "geo-types", "lru", "rstest", @@ -4923,7 +4994,7 @@ dependencies = [ "serde_with", "thiserror 2.0.16", "wkb", - "wkt 0.13.0", + "wkt 0.14.0", ] [[package]] @@ -4943,7 +5014,7 @@ dependencies = [ "datafusion-physical-expr", "datafusion-physical-plan", "futures", - "geo-traits 0.2.0", + "geo-traits", "object_store", "parquet", "rstest", @@ -4991,7 +5062,7 @@ dependencies = [ "criterion", "datafusion-common", "datafusion-expr", - "geo-traits 0.2.0", + "geo-traits", "geo-types", "proj-sys", "rstest", @@ -5058,7 +5129,7 @@ dependencies = [ "futures", "geo-generic-alg", "geo-index", - "geo-traits 0.2.0", + "geo-traits", "geo-traits-ext", "geo-types", "geos", @@ -5076,7 +5147,7 @@ dependencies = [ "sedona-tg", "tokio", "wkb", - "wkt 0.13.0", + "wkt 0.14.0", ] [[package]] @@ -5090,7 +5161,7 @@ dependencies = [ "datafusion-common", "datafusion-expr", "datafusion-physical-expr", - "geo-traits 0.2.0", + "geo-traits", "geo-types", "parquet", "rand 0.8.5", @@ -5100,7 +5171,7 @@ dependencies = [ "sedona-geometry", "sedona-schema", "wkb", - "wkt 0.13.0", + "wkt 0.14.0", ] [[package]] @@ -5497,6 +5568,15 @@ dependencies = [ "windows-sys 0.61.1", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -6357,14 +6437,12 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "wkb" -version = "0.8.0" -source = "git+https://github.com/wherobots/wkb.git?branch=generic-alg#5496c33919e9193edcde6ccf7dd51a9093782277" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff9eff6aebac4c64f9c7c057a68f6359284e2a80acf102dffe041fe219b3a082" dependencies = [ "byteorder", - "geo-traits 0.2.0", - "geo-traits-ext", - "geo-types", - "geos", + "geo-traits", "num_enum", "thiserror 1.0.69", ] @@ -6381,25 +6459,13 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "wkt" -version = "0.13.0" -source = "git+https://github.com/wherobots/wkt.git?branch=generic-alg#ec26b050ec1718ee08e4d8a911e99f1039b60c8b" -dependencies = [ - "geo-traits 0.2.0", - "geo-types", - "log", - "num-traits", - "thiserror 1.0.69", -] - [[package]] name = "wkt" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "efb2b923ccc882312e559ffaa832a055ba9d1ac0cc8e86b3e25453247e4b81d7" dependencies = [ - "geo-traits 0.3.0", + "geo-traits", "geo-types", "log", "num-traits", diff --git a/Cargo.toml b/Cargo.toml index bdce5422..73f974fd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,6 +22,9 @@ members = [ "c/sedona-s2geography", "c/sedona-tg", "r/sedonadb/src/rust", + "rust/geo-traits-ext", + "rust/geo-generic-alg", + "rust/geo-test-fixtures", "rust/sedona-adbc", "rust/sedona-expr", "rust/sedona-functions", @@ -54,7 +57,7 @@ rust-version = "1.82" [workspace.dependencies] approx = "0.5" abi_stable = "0.11.3" -adbc_core = { git = "https://github.com/apache/arrow-adbc", rev = "1ba248290cd299c4969b679463bcd54c217cf2e4" } +adbc_core = "0.20.0" lru = "0.12" arrow = { version = "55.1.0", features = ["prettyprint", "ffi", "chrono-tz"] } arrow-array = { version = "55.1.0" } @@ -81,22 +84,20 @@ env_logger = "0.11" futures = { version = "0.3" } object_store = { version = "0.12.0", default-features = false } float_next_after = "1" +num-traits = { version = "0.2", default-features = false, features = ["libm"] } mimalloc = { version = "0.1", default-features = false } libmimalloc-sys = { version = "0.1", default-features = false } geos = { version = "10.0.0", features = ["geo"] } -# Use our own fork of georust/geo, which implements generic computational geometry algorithms for geo-traits -geo-generic-alg = { git = "https://github.com/wherobots/geo.git", branch = "generic-alg", package = "geo-generic-alg" } -geo-types = "0.7.16" -geo-traits = "0.2.0" -geo-traits-ext = "0.1.0" -geo = { version = "0.30.0" } +geo-types = "0.7.17" +geo-traits = "0.3.0" +geo = "0.31.0" geo-index = { version = "0.3.1" } -wkb = { version = "0.8.0", features = ["geos"] } -wkt = "0.13.0" +wkb = { version = "0.9.0" } +wkt = "0.14.0" parking_lot = "0.12" parquet = { version = "55.1.0", default-features = false, features = [ @@ -127,9 +128,5 @@ datafusion-ffi = { git = "https://github.com/paleolimbot/datafusion.git", branch datafusion-physical-expr = { git = "https://github.com/paleolimbot/datafusion.git", branch = "local-49-with-patch", package = "datafusion-physical-expr" } datafusion-physical-plan = { git = "https://github.com/paleolimbot/datafusion.git", branch = "local-49-with-patch", package = "datafusion-physical-plan" } -geo-types = { git = "https://github.com/wherobots/geo.git", branch = "generic-alg", package = "geo-types" } -geo-traits = { git = "https://github.com/wherobots/geo.git", branch = "generic-alg", package = "geo-traits" } -geo-traits-ext = { git = "https://github.com/wherobots/geo.git", branch = "generic-alg", package = "geo-traits-ext" } -geo-index = { git = "https://github.com/wherobots/geo-index.git", branch = "main" } -wkb = { git = "https://github.com/wherobots/wkb.git", branch = "generic-alg" } -wkt = { git = "https://github.com/wherobots/wkt.git", branch = "generic-alg" } +# geo-index = { git = "https://github.com/Kontinuation/geo-index.git", branch = "geo-0.31.0" } +geo-index = { path = "/Users/bopeng/workspace/github/geo-index" } diff --git a/c/sedona-geos/Cargo.toml b/c/sedona-geos/Cargo.toml index f7de7ee9..747a7cbb 100644 --- a/c/sedona-geos/Cargo.toml +++ b/c/sedona-geos/Cargo.toml @@ -42,7 +42,7 @@ sedona-expr = { path = "../../rust/sedona-expr" } sedona-functions = { path = "../../rust/sedona-functions" } sedona-geometry = { path = "../../rust/sedona-geometry" } sedona-schema = { path = "../../rust/sedona-schema" } -wkb = { workspace = true, features = ["geos"] } +wkb = { workspace = true } [[bench]] harness = false diff --git a/rust/geo-generic-alg/Cargo.toml b/rust/geo-generic-alg/Cargo.toml new file mode 100644 index 00000000..0a776d3d --- /dev/null +++ b/rust/geo-generic-alg/Cargo.toml @@ -0,0 +1,79 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +[package] +name = "geo-generic-alg" +version.workspace = true +homepage.workspace = true +repository.workspace = true +description.workspace = true +readme.workspace = true +edition.workspace = true +rust-version.workspace = true + +[features] +default = ["multithreading"] +use-serde = ["serde", "geo-types/serde"] +multithreading = ["i_overlay/allow_multithreading", "geo-types/multithreading"] + +[dependencies] +float_next_after = { workspace = true } +geo-traits = { workspace = true } +geo-types = { workspace = true, features = ["approx", "use-rstar_0_12"] } +geo-traits-ext = { path = "../geo-traits-ext" } +log = "0.4.11" +num-traits = { workspace = true } +robust = "1.1.0" +rstar = "0.12.0" +serde = { workspace = true, features = ["derive"], optional = true } +i_overlay = { version = "4.0.0, < 4.1.0", default-features = false } + +[dev-dependencies] +geo-test-fixtures = { path = "../geo-test-fixtures" } +approx = { workspace = true } +criterion = { workspace = true } +pretty_env_logger = "0.4" +rand = { workspace = true } +rand_distr = "0.4.3" +geo = { workspace = true } +wkt = { workspace = true } + +# For writing WKB geometry for benchmarks +geos = { workspace = true, features = ["geo"] } + +[[bench]] +name = "area" +harness = false + +[[bench]] +name = "intersection" +harness = false + +[[bench]] +name = "centroid" +harness = false + +[[bench]] +name = "length" +harness = false + +[[bench]] +name = "distance" +harness = false + +[[bench]] +name = "perimeter" +harness = false diff --git a/rust/geo-generic-alg/README.md b/rust/geo-generic-alg/README.md new file mode 100644 index 00000000..b17b6526 --- /dev/null +++ b/rust/geo-generic-alg/README.md @@ -0,0 +1,22 @@ +# Generic Algorithms for Geo-Traits + +This crate provides the same algorithms as the `geo` crate, but applies traits +defined in `geo-traits` instead of concrete geometry types defined in +`geo-types`. + +We are still in the early stage of migrating the algorithms, and the crate is +not ready for production use yet. + +## Status + +- [ ] Area calculation +- [ ] Centroid calculation +- [ ] Convex hull calculation +- [ ] Relationships (contains, within, etc) +- [ ] Simplification +- [ ] Buffer +- [ ] Distance +- [ ] Intersection +- [ ] Union +- [ ] Difference +- [ ] Symmetric difference diff --git a/rust/geo-generic-alg/benches/area.rs b/rust/geo-generic-alg/benches/area.rs new file mode 100644 index 00000000..47beb2cb --- /dev/null +++ b/rust/geo-generic-alg/benches/area.rs @@ -0,0 +1,53 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use geo_generic_alg::Area; +use geo_generic_alg::Polygon; +use geo_traits::to_geo::ToGeoGeometry; + +#[path = "utils/wkb.rs"] +mod wkb; + +fn criterion_benchmark(c: &mut Criterion) { + c.bench_function("area_f32", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + + bencher.iter(|| { + criterion::black_box(criterion::black_box(&polygon).signed_area()); + }); + }); + + c.bench_function("area", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + + bencher.iter(|| { + criterion::black_box(criterion::black_box(&polygon).signed_area()); + }); + }); + + c.bench_function("area_wkb", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + let wkb_bytes = wkb::geo_to_wkb(&polygon); + + bencher.iter(|| { + let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + criterion::black_box(wkb_geom.signed_area()); + }); + }); + + c.bench_function("area_wkb_convert", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + let wkb_bytes = wkb::geo_to_wkb(&polygon); + + bencher.iter(|| { + let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let geom = wkb_geom.to_geometry(); + criterion::black_box(geom.signed_area()); + }); + }); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/rust/geo-generic-alg/benches/centroid.rs b/rust/geo-generic-alg/benches/centroid.rs new file mode 100644 index 00000000..085358c0 --- /dev/null +++ b/rust/geo-generic-alg/benches/centroid.rs @@ -0,0 +1,53 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use geo_generic_alg::Centroid; +use geo_generic_alg::Polygon; +use geo_traits::to_geo::ToGeoGeometry; + +#[path = "utils/wkb.rs"] +mod wkb; + +fn criterion_benchmark(c: &mut Criterion) { + c.bench_function("centroid_f32", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + + bencher.iter(|| { + criterion::black_box(criterion::black_box(&polygon).centroid()); + }); + }); + + c.bench_function("centroid", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + + bencher.iter(|| { + criterion::black_box(criterion::black_box(&polygon).centroid()); + }); + }); + + c.bench_function("centroid_wkb", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + let wkb_bytes = wkb::geo_to_wkb(&polygon); + + bencher.iter(|| { + let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + criterion::black_box(wkb_geom.centroid()); + }); + }); + + c.bench_function("centroid_wkb_convert", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + let wkb_bytes = wkb::geo_to_wkb(&polygon); + + bencher.iter(|| { + let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let geom = wkb_geom.to_geometry(); + criterion::black_box(geom.centroid()); + }); + }); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/rust/geo-generic-alg/benches/distance.rs b/rust/geo-generic-alg/benches/distance.rs new file mode 100644 index 00000000..dceec952 --- /dev/null +++ b/rust/geo-generic-alg/benches/distance.rs @@ -0,0 +1,494 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use geo_generic_alg::algorithm::line_measures::{Distance, DistanceExt, Euclidean}; +use geo_generic_alg::{coord, LineString, MultiPolygon, Point, Polygon}; + +#[path = "utils/wkb.rs"] +mod wkb; + +// Helper function to create complex polygons with many vertices for stress testing +fn create_complex_polygon( + center_x: f64, + center_y: f64, + radius: f64, + num_vertices: usize, +) -> Polygon { + let mut vertices = Vec::with_capacity(num_vertices + 1); + + for i in 0..num_vertices { + let angle = 2.0 * std::f64::consts::PI * i as f64 / num_vertices as f64; + // Add some variation to make it non-regular + let r = radius * (1.0 + 0.1 * (i as f64 * 0.3).sin()); + let x = center_x + r * angle.cos(); + let y = center_y + r * angle.sin(); + vertices.push(coord!(x: x, y: y)); + } + + // Close the polygon + vertices.push(vertices[0]); + + Polygon::new(LineString::from(vertices), vec![]) +} + +// Helper function to create multipolygons for testing iteration overhead +fn create_multipolygon(num_polygons: usize) -> MultiPolygon { + let mut polygons = Vec::with_capacity(num_polygons); + + for i in 0..num_polygons { + let offset = i as f64 * 50.0; + let poly = Polygon::new( + LineString::from(vec![ + coord!(x: offset, y: offset), + coord!(x: offset + 30.0, y: offset), + coord!(x: offset + 30.0, y: offset + 30.0), + coord!(x: offset, y: offset + 30.0), + coord!(x: offset, y: offset), + ]), + vec![], + ); + polygons.push(poly); + } + + MultiPolygon::new(polygons) +} + +fn criterion_benchmark(c: &mut Criterion) { + c.bench_function("distance_point_to_point", |bencher| { + let p1 = Point::new(0.0, 0.0); + let p2 = Point::new(100.0, 100.0); + + bencher.iter(|| { + criterion::black_box(criterion::black_box(&p1).distance_ext(criterion::black_box(&p2))); + }); + }); + + c.bench_function("distance_linestring_to_linestring", |bencher| { + let ls1 = geo_test_fixtures::norway_main::(); + let ls2 = LineString::from(vec![ + coord!(x: 100.0, y: 100.0), + coord!(x: 200.0, y: 200.0), + coord!(x: 300.0, y: 300.0), + ]); + + bencher.iter(|| { + criterion::black_box( + criterion::black_box(&ls1).distance_ext(criterion::black_box(&ls2)), + ); + }); + }); + + c.bench_function("distance_polygon_to_polygon", |bencher| { + let poly1 = Polygon::new( + LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 100.0, y: 0.0), + coord!(x: 100.0, y: 100.0), + coord!(x: 0.0, y: 100.0), + coord!(x: 0.0, y: 0.0), + ]), + vec![], + ); + let poly2 = Polygon::new( + LineString::from(vec![ + coord!(x: 200.0, y: 200.0), + coord!(x: 300.0, y: 200.0), + coord!(x: 300.0, y: 300.0), + coord!(x: 200.0, y: 300.0), + coord!(x: 200.0, y: 200.0), + ]), + vec![], + ); + + bencher.iter(|| { + criterion::black_box( + criterion::black_box(&poly1).distance_ext(criterion::black_box(&poly2)), + ); + }); + }); + + c.bench_function("distance_wkb_point_to_point", |bencher| { + let p1 = Point::new(0.0, 0.0); + let p2 = Point::new(100.0, 100.0); + let wkb_bytes1 = wkb::geo_to_wkb(p1); + let wkb_bytes2 = wkb::geo_to_wkb(p2); + + bencher.iter(|| { + let wkb_geom1 = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes1).unwrap(); + let wkb_geom2 = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes2).unwrap(); + criterion::black_box(wkb_geom1.distance_ext(&wkb_geom2)); + }); + }); + + c.bench_function("distance_wkb_linestring_to_linestring", |bencher| { + let ls1 = geo_test_fixtures::norway_main::(); + let ls2 = LineString::from(vec![ + coord!(x: 100.0, y: 100.0), + coord!(x: 200.0, y: 200.0), + coord!(x: 300.0, y: 300.0), + ]); + let wkb_bytes1 = wkb::geo_to_wkb(&ls1); + let wkb_bytes2 = wkb::geo_to_wkb(&ls2); + + bencher.iter(|| { + let wkb_geom1 = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes1).unwrap(); + let wkb_geom2 = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes2).unwrap(); + criterion::black_box(wkb_geom1.distance_ext(&wkb_geom2)); + }); + }); + + c.bench_function("distance_multipolygon_to_multipolygon", |bencher| { + let poly1 = Polygon::new( + LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 50.0, y: 0.0), + coord!(x: 50.0, y: 50.0), + coord!(x: 0.0, y: 50.0), + coord!(x: 0.0, y: 0.0), + ]), + vec![], + ); + let poly2 = Polygon::new( + LineString::from(vec![ + coord!(x: 60.0, y: 60.0), + coord!(x: 110.0, y: 60.0), + coord!(x: 110.0, y: 110.0), + coord!(x: 60.0, y: 110.0), + coord!(x: 60.0, y: 60.0), + ]), + vec![], + ); + let mp1 = MultiPolygon::new(vec![poly1.clone(), poly1]); + let mp2 = MultiPolygon::new(vec![poly2.clone(), poly2]); + + bencher.iter(|| { + criterion::black_box( + criterion::black_box(&mp1).distance_ext(criterion::black_box(&mp2)), + ); + }); + }); + + c.bench_function("distance_concrete_point_to_point", |bencher| { + let p1 = Point::new(0.0, 0.0); + let p2 = Point::new(100.0, 100.0); + + bencher.iter(|| { + criterion::black_box( + Euclidean.distance(criterion::black_box(p1), criterion::black_box(p2)), + ); + }); + }); + + c.bench_function("distance_concrete_linestring_to_linestring", |bencher| { + let ls1 = geo_test_fixtures::norway_main::(); + let ls2 = LineString::from(vec![ + coord!(x: 100.0, y: 100.0), + coord!(x: 200.0, y: 200.0), + coord!(x: 300.0, y: 300.0), + ]); + + bencher.iter(|| { + criterion::black_box( + Euclidean.distance(criterion::black_box(&ls1), criterion::black_box(&ls2)), + ); + }); + }); + + c.bench_function("distance_cross_type_point_to_linestring", |bencher| { + let point = Point::new(50.0, 50.0); + let linestring = LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 100.0, y: 100.0), + coord!(x: 200.0, y: 0.0), + ]); + + bencher.iter(|| { + criterion::black_box(Euclidean.distance( + criterion::black_box(&point), + criterion::black_box(&linestring), + )); + }); + }); + + c.bench_function("distance_cross_type_linestring_to_polygon", |bencher| { + let linestring = + LineString::from(vec![coord!(x: -50.0, y: 50.0), coord!(x: 150.0, y: 50.0)]); + let polygon = Polygon::new( + LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 100.0, y: 0.0), + coord!(x: 100.0, y: 100.0), + coord!(x: 0.0, y: 100.0), + coord!(x: 0.0, y: 0.0), + ]), + vec![], + ); + + bencher.iter(|| { + criterion::black_box(Euclidean.distance( + criterion::black_box(&linestring), + criterion::black_box(&polygon), + )); + }); + }); + + c.bench_function("distance_cross_type_point_to_polygon", |bencher| { + let point = Point::new(150.0, 50.0); + let polygon = Polygon::new( + LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 100.0, y: 0.0), + coord!(x: 100.0, y: 100.0), + coord!(x: 0.0, y: 100.0), + coord!(x: 0.0, y: 0.0), + ]), + vec![], + ); + + bencher.iter(|| { + criterion::black_box( + Euclidean.distance(criterion::black_box(&point), criterion::black_box(&polygon)), + ); + }); + }); + + // ┌────────────────────────────────────────────────────────────┐ + // │ Targeted Performance Benchmarks: Generic vs Concrete │ + // └────────────────────────────────────────────────────────────┘ + + c.bench_function( + "generic_vs_concrete_polygon_containment_simple", + |bencher| { + // Simple polygon-to-polygon distance (no holes, no containment) + let poly1 = Polygon::new( + LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 50.0, y: 0.0), + coord!(x: 50.0, y: 50.0), + coord!(x: 0.0, y: 50.0), + coord!(x: 0.0, y: 0.0), + ]), + vec![], + ); + let poly2 = Polygon::new( + LineString::from(vec![ + coord!(x: 100.0, y: 100.0), + coord!(x: 150.0, y: 100.0), + coord!(x: 150.0, y: 150.0), + coord!(x: 100.0, y: 150.0), + coord!(x: 100.0, y: 100.0), + ]), + vec![], + ); + + bencher.iter(|| { + // Generic implementation + criterion::black_box( + criterion::black_box(&poly1).distance_ext(criterion::black_box(&poly2)), + ); + }); + }, + ); + + c.bench_function( + "concrete_vs_generic_polygon_containment_simple", + |bencher| { + let poly1 = Polygon::new( + LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 50.0, y: 0.0), + coord!(x: 50.0, y: 50.0), + coord!(x: 0.0, y: 50.0), + coord!(x: 0.0, y: 0.0), + ]), + vec![], + ); + let poly2 = Polygon::new( + LineString::from(vec![ + coord!(x: 100.0, y: 100.0), + coord!(x: 150.0, y: 100.0), + coord!(x: 150.0, y: 150.0), + coord!(x: 100.0, y: 150.0), + coord!(x: 100.0, y: 100.0), + ]), + vec![], + ); + + bencher.iter(|| { + // Concrete implementation + criterion::black_box( + Euclidean.distance(criterion::black_box(&poly1), criterion::black_box(&poly2)), + ); + }); + }, + ); + + c.bench_function("generic_polygon_with_holes_distance", |bencher| { + // Polygon with holes - this triggers the containment check and temporary object creation + let outer = LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 200.0, y: 0.0), + coord!(x: 200.0, y: 200.0), + coord!(x: 0.0, y: 200.0), + coord!(x: 0.0, y: 0.0), + ]); + let hole = LineString::from(vec![ + coord!(x: 50.0, y: 50.0), + coord!(x: 150.0, y: 50.0), + coord!(x: 150.0, y: 150.0), + coord!(x: 50.0, y: 150.0), + coord!(x: 50.0, y: 50.0), + ]); + let poly_with_hole = Polygon::new(outer, vec![hole]); + + // Small polygon that might be inside the hole (triggers containment logic) + let small_poly = Polygon::new( + LineString::from(vec![ + coord!(x: 75.0, y: 75.0), + coord!(x: 125.0, y: 75.0), + coord!(x: 125.0, y: 125.0), + coord!(x: 75.0, y: 125.0), + coord!(x: 75.0, y: 75.0), + ]), + vec![], + ); + + bencher.iter(|| { + criterion::black_box( + criterion::black_box(&poly_with_hole) + .distance_ext(criterion::black_box(&small_poly)), + ); + }); + }); + + c.bench_function("concrete_polygon_with_holes_distance", |bencher| { + let outer = LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 200.0, y: 0.0), + coord!(x: 200.0, y: 200.0), + coord!(x: 0.0, y: 200.0), + coord!(x: 0.0, y: 0.0), + ]); + let hole = LineString::from(vec![ + coord!(x: 50.0, y: 50.0), + coord!(x: 150.0, y: 50.0), + coord!(x: 150.0, y: 150.0), + coord!(x: 50.0, y: 150.0), + coord!(x: 50.0, y: 50.0), + ]); + let poly_with_hole = Polygon::new(outer, vec![hole]); + let small_poly = Polygon::new( + LineString::from(vec![ + coord!(x: 75.0, y: 75.0), + coord!(x: 125.0, y: 75.0), + coord!(x: 125.0, y: 125.0), + coord!(x: 75.0, y: 125.0), + coord!(x: 75.0, y: 75.0), + ]), + vec![], + ); + + bencher.iter(|| { + criterion::black_box(Euclidean.distance( + criterion::black_box(&poly_with_hole), + criterion::black_box(&small_poly), + )); + }); + }); + + c.bench_function("generic_complex_polygon_distance", |bencher| { + // Complex polygons with many vertices - stress test for temporary object creation + let complex_poly1 = create_complex_polygon(0.0, 0.0, 50.0, 20); // 20 vertices + let complex_poly2 = create_complex_polygon(100.0, 100.0, 30.0, 15); // 15 vertices + + bencher.iter(|| { + criterion::black_box( + criterion::black_box(&complex_poly1) + .distance_ext(criterion::black_box(&complex_poly2)), + ); + }); + }); + + c.bench_function("concrete_complex_polygon_distance", |bencher| { + let complex_poly1 = create_complex_polygon(0.0, 0.0, 50.0, 20); + let complex_poly2 = create_complex_polygon(100.0, 100.0, 30.0, 15); + + bencher.iter(|| { + criterion::black_box(Euclidean.distance( + criterion::black_box(&complex_poly1), + criterion::black_box(&complex_poly2), + )); + }); + }); + + c.bench_function("generic_linestring_to_polygon_intersecting", |bencher| { + // LineString that intersects polygon - tests early exit performance + let polygon = Polygon::new( + LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 100.0, y: 0.0), + coord!(x: 100.0, y: 100.0), + coord!(x: 0.0, y: 100.0), + coord!(x: 0.0, y: 0.0), + ]), + vec![], + ); + let intersecting_linestring = LineString::from(vec![ + coord!(x: -50.0, y: 50.0), + coord!(x: 150.0, y: 50.0), // Crosses through the polygon + ]); + + bencher.iter(|| { + criterion::black_box( + criterion::black_box(&intersecting_linestring) + .distance_ext(criterion::black_box(&polygon)), + ); + }); + }); + + c.bench_function("concrete_linestring_to_polygon_intersecting", |bencher| { + let polygon = Polygon::new( + LineString::from(vec![ + coord!(x: 0.0, y: 0.0), + coord!(x: 100.0, y: 0.0), + coord!(x: 100.0, y: 100.0), + coord!(x: 0.0, y: 100.0), + coord!(x: 0.0, y: 0.0), + ]), + vec![], + ); + let intersecting_linestring = + LineString::from(vec![coord!(x: -50.0, y: 50.0), coord!(x: 150.0, y: 50.0)]); + + bencher.iter(|| { + criterion::black_box(Euclidean.distance( + criterion::black_box(&intersecting_linestring), + criterion::black_box(&polygon), + )); + }); + }); + + c.bench_function("generic_multipolygon_distance_overhead", |bencher| { + // Test multipolygon distance to measure iterator and temporary object overhead + let mp1 = create_multipolygon(5); // 5 polygons + let mp2 = create_multipolygon(3); // 3 polygons + + bencher.iter(|| { + criterion::black_box( + criterion::black_box(&mp1).distance_ext(criterion::black_box(&mp2)), + ); + }); + }); + + c.bench_function("concrete_multipolygon_distance_overhead", |bencher| { + let mp1 = create_multipolygon(5); + let mp2 = create_multipolygon(3); + + bencher.iter(|| { + criterion::black_box( + Euclidean.distance(criterion::black_box(&mp1), criterion::black_box(&mp2)), + ); + }); + }); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/rust/geo-generic-alg/benches/intersection.rs b/rust/geo-generic-alg/benches/intersection.rs new file mode 100644 index 00000000..9bb13b22 --- /dev/null +++ b/rust/geo-generic-alg/benches/intersection.rs @@ -0,0 +1,412 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use geo_generic_alg::MultiPolygon; +use geo_generic_alg::{intersects::Intersects, Centroid}; +use geo_traits::to_geo::ToGeoGeometry; +use geo_types::Geometry; + +#[path = "utils/wkb.rs"] +mod wkb; + +fn multi_polygon_intersection(c: &mut Criterion) { + let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + let plot_geoms: Vec = plot_polygons.into_iter().map(|p| p.into()).collect(); + let zone_geoms: Vec = zone_polygons.into_iter().map(|p| p.into()).collect(); + + c.bench_function("MultiPolygon intersects", |bencher| { + bencher.iter(|| { + let mut intersects = 0; + let mut non_intersects = 0; + + for a in &plot_geoms { + for b in &zone_geoms { + if criterion::black_box(b.intersects(a)) { + intersects += 1; + } else { + non_intersects += 1; + } + } + } + + assert_eq!(intersects, 974); + assert_eq!(non_intersects, 27782); + }); + }); +} + +fn multi_polygon_intersection_wkb(c: &mut Criterion) { + let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + + // Convert intersected polygons to WKB + let mut plot_polygon_wkbs = Vec::new(); + let mut zone_polygon_wkbs = Vec::new(); + for plot_polygon in &plot_polygons { + plot_polygon_wkbs.push(wkb::geo_to_wkb(plot_polygon)); + } + for zone_polygon in &zone_polygons { + zone_polygon_wkbs.push(wkb::geo_to_wkb(zone_polygon)); + } + + c.bench_function("MultiPolygon intersects wkb", |bencher| { + bencher.iter(|| { + let mut intersects = 0; + let mut non_intersects = 0; + + for a in &plot_polygon_wkbs { + for b in &zone_polygon_wkbs { + let a_geom = geo_generic_tests::wkb::reader::read_wkb(a).unwrap(); // Skip padding + let b_geom = geo_generic_tests::wkb::reader::read_wkb(b).unwrap(); // Skip padding + if criterion::black_box(b_geom.intersects(&a_geom)) { + intersects += 1; + } else { + non_intersects += 1; + } + } + } + + assert_eq!(intersects, 974); + assert_eq!(non_intersects, 27782); + }); + }); +} + +fn multi_polygon_intersection_wkb_aligned(c: &mut Criterion) { + let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + + // Convert intersected polygons to WKB + let mut plot_polygon_wkbs = Vec::new(); + let mut zone_polygon_wkbs = Vec::new(); + for plot_polygon in &plot_polygons { + let mut wkb = vec![0, 0, 0]; // Add 3-byte padding + wkb.extend_from_slice(&wkb::geo_to_wkb(plot_polygon)); + plot_polygon_wkbs.push(wkb); + } + for zone_polygon in &zone_polygons { + let mut wkb = vec![0, 0, 0]; // Add 3-byte padding + wkb.extend_from_slice(&wkb::geo_to_wkb(zone_polygon)); + zone_polygon_wkbs.push(wkb); + } + + c.bench_function("MultiPolygon intersects wkb aligned", |bencher| { + bencher.iter(|| { + let mut intersects = 0; + let mut non_intersects = 0; + + for a in &plot_polygon_wkbs { + for b in &zone_polygon_wkbs { + let a_geom = geo_generic_tests::wkb::reader::read_wkb(&a[3..]).unwrap(); // Skip padding + let b_geom = geo_generic_tests::wkb::reader::read_wkb(&b[3..]).unwrap(); // Skip padding + if criterion::black_box(b_geom.intersects(&a_geom)) { + intersects += 1; + } else { + non_intersects += 1; + } + } + } + + assert_eq!(intersects, 974); + assert_eq!(non_intersects, 27782); + }); + }); +} + +fn multi_polygon_intersection_wkb_conv(c: &mut Criterion) { + let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + + // Convert intersected polygons to WKB + let mut plot_polygon_wkbs = Vec::new(); + let mut zone_polygon_wkbs = Vec::new(); + for plot_polygon in &plot_polygons { + plot_polygon_wkbs.push(wkb::geo_to_wkb(plot_polygon)); + } + for zone_polygon in &zone_polygons { + zone_polygon_wkbs.push(wkb::geo_to_wkb(zone_polygon)); + } + + c.bench_function("MultiPolygon intersects wkb conv", |bencher| { + bencher.iter(|| { + let mut intersects = 0; + let mut non_intersects = 0; + + for a in &plot_polygon_wkbs { + for b in &zone_polygon_wkbs { + let a_geom = geo_generic_tests::wkb::reader::read_wkb(a).unwrap(); + let b_geom = geo_generic_tests::wkb::reader::read_wkb(b).unwrap(); + let a_geom = a_geom.to_geometry(); + let b_geom = b_geom.to_geometry(); + if criterion::black_box(b_geom.intersects(&a_geom)) { + intersects += 1; + } else { + non_intersects += 1; + } + } + } + + assert_eq!(intersects, 974); + assert_eq!(non_intersects, 27782); + }); + }); +} + +fn point_polygon_intersection(c: &mut Criterion) { + let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + let plot_geoms: Vec = plot_polygons + .into_iter() + .map(|p| { + let centroid = p.centroid().unwrap(); + centroid.into() + }) + .collect(); + let zone_geoms: Vec = zone_polygons.into_iter().map(|p| p.into()).collect(); + + c.bench_function("Point polygon intersects", |bencher| { + bencher.iter(|| { + for a in &plot_geoms { + for b in &zone_geoms { + criterion::black_box(b.intersects(a)); + } + } + }); + }); +} + +fn point_polygon_intersection_wkb(c: &mut Criterion) { + let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + + // Convert intersected polygons to WKB + let mut plot_centroid_wkbs = Vec::new(); + let mut zone_polygon_wkbs = Vec::new(); + for plot_polygon in &plot_polygons { + let centroid = plot_polygon.centroid().unwrap(); + plot_centroid_wkbs.push(wkb::geo_to_wkb(centroid)); + } + for zone_polygon in &zone_polygons { + zone_polygon_wkbs.push(wkb::geo_to_wkb(zone_polygon)); + } + + c.bench_function("Point polygon intersects wkb", |bencher| { + bencher.iter(|| { + for a in &plot_centroid_wkbs { + for b in &zone_polygon_wkbs { + let a_geom = geo_generic_tests::wkb::reader::read_wkb(a).unwrap(); + let b_geom = geo_generic_tests::wkb::reader::read_wkb(b).unwrap(); + criterion::black_box(b_geom.intersects(&a_geom)); + } + } + }); + }); +} + +fn point_polygon_intersection_wkb_conv(c: &mut Criterion) { + let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + + // Convert intersected polygons to WKB + let mut plot_centroid_wkbs = Vec::new(); + let mut zone_polygon_wkbs = Vec::new(); + for plot_polygon in &plot_polygons { + let centroid = plot_polygon.centroid().unwrap(); + plot_centroid_wkbs.push(wkb::geo_to_wkb(centroid)); + } + for zone_polygon in &zone_polygons { + zone_polygon_wkbs.push(wkb::geo_to_wkb(zone_polygon)); + } + + c.bench_function("Point polygon intersects wkb conv", |bencher| { + bencher.iter(|| { + for a in &plot_centroid_wkbs { + for b in &zone_polygon_wkbs { + let a_geom = geo_generic_tests::wkb::reader::read_wkb(a).unwrap(); + let b_geom = geo_generic_tests::wkb::reader::read_wkb(b).unwrap(); + let a_geom = a_geom.to_geometry(); + let b_geom = b_geom.to_geometry(); + criterion::black_box(b_geom.intersects(&a_geom)); + } + } + }); + }); +} + +fn rect_intersection(c: &mut Criterion) { + use geo_generic_alg::algorithm::BoundingRect; + use geo_generic_alg::Rect; + let plot_bbox: Vec = geo_test_fixtures::nl_plots_wgs84() + .iter() + .map(|plot| plot.bounding_rect().unwrap()) + .collect(); + let zone_bbox: Vec = geo_test_fixtures::nl_zones() + .iter() + .map(|plot| plot.bounding_rect().unwrap()) + .collect(); + + c.bench_function("Rect intersects", |bencher| { + bencher.iter(|| { + let mut intersects = 0; + let mut non_intersects = 0; + + for a in &plot_bbox { + for b in &zone_bbox { + if criterion::black_box(a.intersects(b)) { + intersects += 1; + } else { + non_intersects += 1; + } + } + } + + assert_eq!(intersects, 3054); + assert_eq!(non_intersects, 25702); + }); + }); +} + +fn point_rect_intersection(c: &mut Criterion) { + use geo_generic_alg::algorithm::{BoundingRect, Centroid}; + use geo_generic_alg::geometry::{Point, Rect}; + let plot_centroids: Vec = geo_test_fixtures::nl_plots_wgs84() + .iter() + .map(|plot| plot.centroid().unwrap()) + .collect(); + let zone_bbox: Vec = geo_test_fixtures::nl_zones() + .iter() + .map(|plot| plot.bounding_rect().unwrap()) + .collect(); + + c.bench_function("Point intersects rect", |bencher| { + bencher.iter(|| { + let mut intersects = 0; + let mut non_intersects = 0; + + for a in &plot_centroids { + for b in &zone_bbox { + if criterion::black_box(a.intersects(b)) { + intersects += 1; + } else { + non_intersects += 1; + } + } + } + + assert_eq!(intersects, 2246); + assert_eq!(non_intersects, 26510); + }); + }); +} + +fn point_triangle_intersection(c: &mut Criterion) { + use geo_generic_alg::algorithm::{Centroid, TriangulateEarcut}; + use geo_generic_alg::{Point, Triangle}; + let plot_centroids: Vec = geo_test_fixtures::nl_plots_wgs84() + .iter() + .map(|plot| plot.centroid().unwrap()) + .collect(); + let zone_triangles: Vec = geo_test_fixtures::nl_zones() + .iter() + .flat_map(|plot| plot.earcut_triangles_iter()) + .collect(); + + c.bench_function("Point intersects triangle", |bencher| { + bencher.iter(|| { + let mut intersects = 0; + let mut non_intersects = 0; + + for a in &plot_centroids { + for b in &zone_triangles { + if criterion::black_box(a.intersects(b)) { + intersects += 1; + } else { + non_intersects += 1; + } + } + } + + assert_eq!(intersects, 533); + assert_eq!(non_intersects, 5450151); + }); + }); + + c.bench_function("Triangle intersects point", |bencher| { + let triangle = Triangle::from([(0., 0.), (10., 0.), (5., 10.)]); + let point = Point::new(5., 5.); + + bencher.iter(|| { + assert!(criterion::black_box(&triangle).intersects(criterion::black_box(&point))); + }); + }); + + c.bench_function("Triangle intersects point on edge", |bencher| { + let triangle = Triangle::from([(0., 0.), (10., 0.), (6., 10.)]); + let point = Point::new(3., 5.); + + bencher.iter(|| { + assert!(criterion::black_box(&triangle).intersects(criterion::black_box(&point))); + }); + }); +} + +criterion_group! { + name = bench_multi_polygons; + config = Criterion::default().sample_size(10); + targets = multi_polygon_intersection +} +criterion_group! { + name = bench_multi_polygons_wkb; + config = Criterion::default().sample_size(10); + targets = multi_polygon_intersection_wkb +} +criterion_group! { + name = bench_multi_polygons_wkb_aligned; + config = Criterion::default().sample_size(10); + targets = multi_polygon_intersection_wkb_aligned +} +criterion_group! { + name = bench_multi_polygons_wkb_conv; + config = Criterion::default().sample_size(10); + targets = multi_polygon_intersection_wkb_conv +} + +criterion_group!(bench_rects, rect_intersection); +criterion_group! { + name = bench_point_rect; + config = Criterion::default().sample_size(50); + targets = point_rect_intersection +} +criterion_group! { + name = bench_point_triangle; + config = Criterion::default().sample_size(50); + targets = point_triangle_intersection +} + +criterion_group! { + name = bench_point_polygon; + config = Criterion::default().sample_size(50); + targets = point_polygon_intersection +} +criterion_group! { + name = bench_point_polygon_wkb; + config = Criterion::default().sample_size(50); + targets = point_polygon_intersection_wkb +} +criterion_group! { + name = bench_point_polygon_wkb_conv; + config = Criterion::default().sample_size(50); + targets = point_polygon_intersection_wkb_conv +} + +criterion_main!( + bench_multi_polygons, + bench_multi_polygons_wkb, + bench_multi_polygons_wkb_aligned, + bench_multi_polygons_wkb_conv, + bench_rects, + bench_point_rect, + bench_point_triangle, + bench_point_polygon, + bench_point_polygon_wkb, + bench_point_polygon_wkb_conv +); diff --git a/rust/geo-generic-alg/benches/length.rs b/rust/geo-generic-alg/benches/length.rs new file mode 100644 index 00000000..292777b1 --- /dev/null +++ b/rust/geo-generic-alg/benches/length.rs @@ -0,0 +1,48 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use geo_generic_alg::algorithm::line_measures::{Euclidean, LengthMeasurableExt}; +use geo_traits::to_geo::ToGeoGeometry; + +#[path = "utils/wkb.rs"] +mod wkb; + +fn criterion_benchmark(c: &mut Criterion) { + c.bench_function("length_f32", |bencher| { + let linestring = geo_test_fixtures::norway_main::(); + + bencher.iter(|| { + criterion::black_box(criterion::black_box(&linestring).length_ext(&Euclidean)); + }); + }); + + c.bench_function("length", |bencher| { + let linestring = geo_test_fixtures::norway_main::(); + + bencher.iter(|| { + criterion::black_box(criterion::black_box(&linestring).length_ext(&Euclidean)); + }); + }); + + c.bench_function("length_wkb", |bencher| { + let linestring = geo_test_fixtures::norway_main::(); + let wkb_bytes = wkb::geo_to_wkb(&linestring); + + bencher.iter(|| { + let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + criterion::black_box(wkb_geom.length_ext(&Euclidean)); + }); + }); + + c.bench_function("length_wkb_convert", |bencher| { + let linestring = geo_test_fixtures::norway_main::(); + let wkb_bytes = wkb::geo_to_wkb(&linestring); + + bencher.iter(|| { + let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let geom = wkb_geom.to_geometry(); + criterion::black_box(geom.length_ext(&Euclidean)); + }); + }); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/rust/geo-generic-alg/benches/perimeter.rs b/rust/geo-generic-alg/benches/perimeter.rs new file mode 100644 index 00000000..895ae4cb --- /dev/null +++ b/rust/geo-generic-alg/benches/perimeter.rs @@ -0,0 +1,53 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use geo_generic_alg::algorithm::line_measures::{Euclidean, LengthMeasurableExt}; +use geo_generic_alg::Polygon; +use geo_traits::to_geo::ToGeoGeometry; + +#[path = "utils/wkb.rs"] +mod wkb; + +fn criterion_benchmark(c: &mut Criterion) { + c.bench_function("perimeter_f32", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + + bencher.iter(|| { + criterion::black_box(criterion::black_box(&polygon).perimeter_ext(&Euclidean)); + }); + }); + + c.bench_function("perimeter", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + + bencher.iter(|| { + criterion::black_box(criterion::black_box(&polygon).perimeter_ext(&Euclidean)); + }); + }); + + c.bench_function("perimeter_wkb", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + let wkb_bytes = wkb::geo_to_wkb(&polygon); + + bencher.iter(|| { + let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + criterion::black_box(wkb_geom.perimeter_ext(&Euclidean)); + }); + }); + + c.bench_function("perimeter_wkb_convert", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + let wkb_bytes = wkb::geo_to_wkb(&polygon); + + bencher.iter(|| { + let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let geom = wkb_geom.to_geometry(); + criterion::black_box(geom.perimeter_ext(&Euclidean)); + }); + }); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/rust/geo-generic-alg/benches/utils/wkb.rs b/rust/geo-generic-alg/benches/utils/wkb.rs new file mode 100644 index 00000000..60342db8 --- /dev/null +++ b/rust/geo-generic-alg/benches/utils/wkb.rs @@ -0,0 +1,14 @@ +use geos::WKBWriter; + +pub fn geo_to_wkb(geo: G) -> Vec +where + G: TryInto, +{ + let geos_geom: geos::Geometry = match geo.try_into() { + Ok(geos_geom) => geos_geom, + Err(_) => panic!("Failed to convert to geos::Geometry"), + }; + + let mut wkb_writer = WKBWriter::new().unwrap(); + wkb_writer.write_wkb(&geos_geom).unwrap().into() +} diff --git a/rust/geo-generic-alg/src/algorithm/affine_ops.rs b/rust/geo-generic-alg/src/algorithm/affine_ops.rs new file mode 100644 index 00000000..17deb5dd --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/affine_ops.rs @@ -0,0 +1,664 @@ +use num_traits::ToPrimitive; + +use crate::{Coord, CoordFloat, CoordNum, MapCoords, MapCoordsInPlace}; +use std::{fmt, ops::Mul, ops::Neg}; + +/// Apply an [`AffineTransform`] like [`scale`](AffineTransform::scale), +/// [`skew`](AffineTransform::skew), or [`rotate`](AffineTransform::rotate) to a +/// [`Geometry`](crate::geometry::Geometry). +/// +/// Multiple transformations can be composed in order to be efficiently applied in a single +/// operation. See [`AffineTransform`] for more on how to build up a transformation. +/// +/// If you are not composing operations, traits that leverage this same machinery exist which might +/// be more readable. See: [`Scale`](crate::algorithm::Scale), +/// [`Translate`](crate::algorithm::Translate), [`Rotate`](crate::algorithm::Rotate), +/// and [`Skew`](crate::algorithm::Skew). +/// +/// # Examples +/// ## Build up transforms by beginning with a constructor, then chaining mutation operations +/// ``` +/// use geo::{AffineOps, AffineTransform}; +/// use geo::{point, line_string, BoundingRect}; +/// use approx::assert_relative_eq; +/// +/// let line_string = line_string![(x: 0.0, y: 0.0),(x: 1.0, y: 1.0)]; +/// +/// let transform = AffineTransform::translate(1.0, 1.0).scaled(2.0, 2.0, point!(x: 0.0, y: 0.0)); +/// +/// let transformed_line_string = line_string.affine_transform(&transform); +/// +/// assert_relative_eq!( +/// transformed_line_string, +/// line_string![(x: 2.0, y: 2.0),(x: 4.0, y: 4.0)] +/// ); +/// ``` +pub trait AffineOps { + type Output; + + /// Apply `transform` immutably, outputting a new geometry. + #[must_use] + fn affine_transform(&self, transform: &AffineTransform) -> Self::Output; +} + +/// Apply an [`AffineTransform`] like [`scale`](AffineTransform::scale), +/// [`skew`](AffineTransform::skew), or [`rotate`](AffineTransform::rotate) to a +/// [`Geometry`](crate::geometry::Geometry) in place. +/// +/// Multiple transformations can be composed in order to be efficiently applied in a single +/// operation. See [`AffineTransform`] for more on how to build up a transformation. +/// +/// If you are not composing operations, traits that leverage this same machinery exist which might +/// be more readable. See: [`Scale`](crate::algorithm::Scale), +/// [`Translate`](crate::algorithm::Translate), [`Rotate`](crate::algorithm::Rotate), +/// and [`Skew`](crate::algorithm::Skew). +pub trait AffineOpsMut { + /// Apply `transform` to mutate `self`. + fn affine_transform_mut(&mut self, transform: &AffineTransform); +} + +impl> AffineOps for M { + type Output = M::Output; + + fn affine_transform(&self, transform: &AffineTransform) -> Self::Output { + self.map_coords(|c| transform.apply(c)) + } +} + +impl> AffineOpsMut for M { + fn affine_transform_mut(&mut self, transform: &AffineTransform) { + self.map_coords_in_place(|c| transform.apply(c)) + } +} + +/// A general affine transformation matrix, and associated operations. +/// +/// Note that affine ops are **already implemented** on most `geo-types` primitives, using this module. +/// +/// Affine transforms using the same numeric type (e.g. [`CoordFloat`]) can be **composed**, +/// and the result can be applied to geometries using e.g. [`MapCoords`]. This allows the +/// efficient application of transforms: an arbitrary number of operations can be chained. +/// These are then composed, producing a final transformation matrix which is applied to the geometry coordinates. +/// +/// `AffineTransform` is a row-major matrix. +/// 2D affine transforms require six matrix parameters: +/// +/// `[a, b, xoff, d, e, yoff]` +/// +/// these map onto the `AffineTransform` rows as follows: +/// ```ignore +/// [[a, b, xoff], +/// [d, e, yoff], +/// [0, 0, 1]] +/// ``` +/// The equations for transforming coordinates `(x, y) -> (x', y')` are given as follows: +/// +/// `x' = ax + by + xoff` +/// +/// `y' = dx + ey + yoff` +/// +/// # Usage +/// +/// Two types of operation are provided: construction and mutation. **Construction** functions create a *new* transform +/// and are denoted by the use of the **present tense**: `scale()`, `translate()`, `rotate()`, and `skew()`. +/// +/// **Mutation** methods *add* a transform to the existing `AffineTransform`, and are denoted by the use of the past participle: +/// `scaled()`, `translated()`, `rotated()`, and `skewed()`. +/// +/// # Examples +/// ## Build up transforms by beginning with a constructor, then chaining mutation operations +/// ``` +/// use geo::{AffineOps, AffineTransform}; +/// use geo::{point, line_string, BoundingRect}; +/// use approx::assert_relative_eq; +/// +/// let line_string = line_string![(x: 0.0, y: 0.0),(x: 1.0, y: 1.0)]; +/// +/// let transform = AffineTransform::translate(1.0, 1.0).scaled(2.0, 2.0, point!(x: 0.0, y: 0.0)); +/// +/// let transformed_line_string = line_string.affine_transform(&transform); +/// +/// assert_relative_eq!( +/// transformed_line_string, +/// line_string![(x: 2.0, y: 2.0),(x: 4.0, y: 4.0)] +/// ); +/// ``` +/// +/// ## Create affine transform manually, and access elements using getter methods +/// ``` +/// use geo::AffineTransform; +/// +/// let transform = AffineTransform::new(10.0, 0.0, 400_000.0, 0.0, -10.0, 500_000.0); +/// +/// let a: f64 = transform.a(); +/// let b: f64 = transform.b(); +/// let xoff: f64 = transform.xoff(); +/// let d: f64 = transform.d(); +/// let e: f64 = transform.e(); +/// let yoff: f64 = transform.yoff(); +/// assert_eq!(transform, AffineTransform::new(a, b, xoff, d, e, yoff)) +/// ``` + +#[derive(Copy, Clone, PartialEq, Eq)] +pub struct AffineTransform([[T; 3]; 3]); + +impl Default for AffineTransform { + fn default() -> Self { + // identity matrix + Self::identity() + } +} + +impl AffineTransform { + /// Create a new affine transformation by composing two `AffineTransform`s. + /// + /// This is a **cumulative** operation; the new transform is *added* to the existing transform. + #[must_use] + pub fn compose(&self, other: &Self) -> Self { + // lol + Self([ + [ + (other.0[0][0] * self.0[0][0]) + + (other.0[0][1] * self.0[1][0]) + + (other.0[0][2] * self.0[2][0]), + (other.0[0][0] * self.0[0][1]) + + (other.0[0][1] * self.0[1][1]) + + (other.0[0][2] * self.0[2][1]), + (other.0[0][0] * self.0[0][2]) + + (other.0[0][1] * self.0[1][2]) + + (other.0[0][2] * self.0[2][2]), + ], + [ + (other.0[1][0] * self.0[0][0]) + + (other.0[1][1] * self.0[1][0]) + + (other.0[1][2] * self.0[2][0]), + (other.0[1][0] * self.0[0][1]) + + (other.0[1][1] * self.0[1][1]) + + (other.0[1][2] * self.0[2][1]), + (other.0[1][0] * self.0[0][2]) + + (other.0[1][1] * self.0[1][2]) + + (other.0[1][2] * self.0[2][2]), + ], + [ + // this section isn't technically necessary since the last row is invariant: [0, 0, 1] + (other.0[2][0] * self.0[0][0]) + + (other.0[2][1] * self.0[1][0]) + + (other.0[2][2] * self.0[2][0]), + (other.0[2][0] * self.0[0][1]) + + (other.0[2][1] * self.0[1][1]) + + (other.0[2][2] * self.0[2][1]), + (other.0[2][0] * self.0[0][2]) + + (other.0[2][1] * self.0[1][2]) + + (other.0[2][2] * self.0[2][2]), + ], + ]) + } + + /// Create a new affine transformation by composing an arbitrary number of `AffineTransform`s. + /// + /// This is a **cumulative** operation; the new transform is *added* to the existing transform. + /// ``` + /// use geo::AffineTransform; + /// let mut transform = AffineTransform::identity(); + /// + /// // create two transforms that cancel each other + /// let transform1 = AffineTransform::translate(1.0, 2.0); + /// let transform2 = AffineTransform::translate(-1.0, -2.0); + /// let transforms = vec![transform1, transform2]; + /// + /// // apply them + /// let outcome = transform.compose_many(&transforms); + /// // we should be back to square one + /// assert!(outcome.is_identity()); + /// ``` + #[must_use] + pub fn compose_many(&self, transforms: &[Self]) -> Self { + self.compose(&transforms.iter().fold( + AffineTransform::default(), + |acc: AffineTransform, transform| acc.compose(transform), + )) + } + + /// Create the identity matrix + /// + /// The matrix is: + /// ```ignore + /// [[1, 0, 0], + /// [0, 1, 0], + /// [0, 0, 1]] + /// ``` + pub fn identity() -> Self { + Self::new( + T::one(), + T::zero(), + T::zero(), + T::zero(), + T::one(), + T::zero(), + ) + } + + /// Whether the transformation is equivalent to the [identity matrix](Self::identity), + /// that is, whether it's application will be a a no-op. + /// + /// ``` + /// use geo::AffineTransform; + /// let mut transform = AffineTransform::identity(); + /// assert!(transform.is_identity()); + /// + /// // mutate the transform a bit + /// transform = transform.translated(1.0, 2.0); + /// assert!(!transform.is_identity()); + /// + /// // put it back + /// transform = transform.translated(-1.0, -2.0); + /// assert!(transform.is_identity()); + /// ``` + pub fn is_identity(&self) -> bool { + self == &Self::identity() + } + + /// **Create** a new affine transform for scaling, scaled by factors along the `x` and `y` dimensions. + /// The point of origin is *usually* given as the 2D bounding box centre of the geometry, but + /// any coordinate may be specified. + /// Negative scale factors will mirror or reflect coordinates. + /// + /// The matrix is: + /// ```ignore + /// [[xfact, 0, xoff], + /// [0, yfact, yoff], + /// [0, 0, 1]] + /// + /// xoff = origin.x - (origin.x * xfact) + /// yoff = origin.y - (origin.y * yfact) + /// ``` + pub fn scale(xfact: T, yfact: T, origin: impl Into>) -> Self { + let (x0, y0) = origin.into().x_y(); + let xoff = x0 - (x0 * xfact); + let yoff = y0 - (y0 * yfact); + Self::new(xfact, T::zero(), xoff, T::zero(), yfact, yoff) + } + + /// **Add** an affine transform for scaling, scaled by factors along the `x` and `y` dimensions. + /// The point of origin is *usually* given as the 2D bounding box centre of the geometry, but + /// any coordinate may be specified. + /// Negative scale factors will mirror or reflect coordinates. + /// This is a **cumulative** operation; the new transform is *added* to the existing transform. + #[must_use] + pub fn scaled(mut self, xfact: T, yfact: T, origin: impl Into>) -> Self { + self.0 = self.compose(&Self::scale(xfact, yfact, origin)).0; + self + } + + /// **Create** an affine transform for translation, shifted by offsets along the `x` and `y` dimensions. + /// + /// The matrix is: + /// ```ignore + /// [[1, 0, xoff], + /// [0, 1, yoff], + /// [0, 0, 1]] + /// ``` + pub fn translate(xoff: T, yoff: T) -> Self { + Self::new(T::one(), T::zero(), xoff, T::zero(), T::one(), yoff) + } + + /// **Add** an affine transform for translation, shifted by offsets along the `x` and `y` dimensions + /// + /// This is a **cumulative** operation; the new transform is *added* to the existing transform. + #[must_use] + pub fn translated(mut self, xoff: T, yoff: T) -> Self { + self.0 = self.compose(&Self::translate(xoff, yoff)).0; + self + } + + /// Apply the current transform to a coordinate + pub fn apply(&self, coord: Coord) -> Coord { + Coord { + x: (self.0[0][0] * coord.x + self.0[0][1] * coord.y + self.0[0][2]), + y: (self.0[1][0] * coord.x + self.0[1][1] * coord.y + self.0[1][2]), + } + } + + /// Create a new custom transform matrix + /// + /// The argument order matches that of the affine transform matrix: + ///```ignore + /// [[a, b, xoff], + /// [d, e, yoff], + /// [0, 0, 1]] <-- not part of the input arguments + /// ``` + pub fn new(a: T, b: T, xoff: T, d: T, e: T, yoff: T) -> Self { + Self([[a, b, xoff], [d, e, yoff], [T::zero(), T::zero(), T::one()]]) + } + + /// See [AffineTransform::new] for this value's role in the affine transformation. + pub fn a(&self) -> T { + self.0[0][0] + } + /// See [AffineTransform::new] for this value's role in the affine transformation. + pub fn b(&self) -> T { + self.0[0][1] + } + /// See [AffineTransform::new] for this value's role in the affine transformation. + pub fn xoff(&self) -> T { + self.0[0][2] + } + /// See [AffineTransform::new] for this value's role in the affine transformation. + pub fn d(&self) -> T { + self.0[1][0] + } + /// See [AffineTransform::new] for this value's role in the affine transformation. + pub fn e(&self) -> T { + self.0[1][1] + } + /// See [AffineTransform::new] for this value's role in the affine transformation. + pub fn yoff(&self) -> T { + self.0[1][2] + } +} + +impl AffineTransform { + /// Return the inverse of a given transform. Composing a transform with its inverse yields + /// the [identity matrix](Self::identity) + #[must_use] + pub fn inverse(&self) -> Option + where + ::Output: Mul, + <::Output as Mul>::Output: ToPrimitive, + { + let a = self.0[0][0]; + let b = self.0[0][1]; + let xoff = self.0[0][2]; + let d = self.0[1][0]; + let e = self.0[1][1]; + let yoff = self.0[1][2]; + + let determinant = a * e - b * d; + + if determinant == T::zero() { + return None; // The matrix is not invertible + } + let inv_det = T::one() / determinant; + + // If conversion of either the b or d matrix value fails, bail out + Some(Self::new( + e * inv_det, + T::from(-b * inv_det)?, + (b * yoff - e * xoff) * inv_det, + T::from(-d * inv_det)?, + a * inv_det, + (d * xoff - a * yoff) * inv_det, + )) + } +} + +impl fmt::Debug for AffineTransform { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("AffineTransform") + .field("a", &self.0[0][0]) + .field("b", &self.0[0][1]) + .field("xoff", &self.0[0][2]) + .field("d", &self.0[1][0]) + .field("e", &self.0[1][1]) + .field("yoff", &self.0[1][2]) + .finish() + } +} + +impl From<[T; 6]> for AffineTransform { + fn from(arr: [T; 6]) -> Self { + Self::new(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]) + } +} + +impl From<(T, T, T, T, T, T)> for AffineTransform { + fn from(tup: (T, T, T, T, T, T)) -> Self { + Self::new(tup.0, tup.1, tup.2, tup.3, tup.4, tup.5) + } +} + +impl AffineTransform { + /// **Create** an affine transform for rotation, using an arbitrary point as its centre. + /// + /// Note that this operation is only available for geometries with floating point coordinates. + /// + /// `angle` is given in **degrees**. + /// + /// The matrix (angle denoted as theta) is: + /// ```ignore + /// [[cos_theta, -sin_theta, xoff], + /// [sin_theta, cos_theta, yoff], + /// [0, 0, 1]] + /// + /// xoff = origin.x - (origin.x * cos(theta)) + (origin.y * sin(theta)) + /// yoff = origin.y - (origin.x * sin(theta)) + (origin.y * cos(theta)) + /// ``` + pub fn rotate(degrees: U, origin: impl Into>) -> Self { + let (sin_theta, cos_theta) = degrees.to_radians().sin_cos(); + let (x0, y0) = origin.into().x_y(); + let xoff = x0 - (x0 * cos_theta) + (y0 * sin_theta); + let yoff = y0 - (x0 * sin_theta) - (y0 * cos_theta); + Self::new(cos_theta, -sin_theta, xoff, sin_theta, cos_theta, yoff) + } + + /// **Add** an affine transform for rotation, using an arbitrary point as its centre. + /// + /// Note that this operation is only available for geometries with floating point coordinates. + /// + /// `angle` is given in **degrees**. + /// + /// This is a **cumulative** operation; the new transform is *added* to the existing transform. + #[must_use] + pub fn rotated(mut self, angle: U, origin: impl Into>) -> Self { + self.0 = self.compose(&Self::rotate(angle, origin)).0; + self + } + + /// **Create** an affine transform for skewing. + /// + /// Note that this operation is only available for geometries with floating point coordinates. + /// + /// Geometries are sheared by angles along x (`xs`) and y (`ys`) dimensions. + /// The point of origin is *usually* given as the 2D bounding box centre of the geometry, but + /// any coordinate may be specified. Angles are given in **degrees**. + /// The matrix is: + /// ```ignore + /// [[1, tan(x), xoff], + /// [tan(y), 1, yoff], + /// [0, 0, 1]] + /// + /// xoff = -origin.y * tan(xs) + /// yoff = -origin.x * tan(ys) + /// ``` + pub fn skew(xs: U, ys: U, origin: impl Into>) -> Self { + let Coord { x: x0, y: y0 } = origin.into(); + let mut tanx = xs.to_radians().tan(); + let mut tany = ys.to_radians().tan(); + // These checks are stolen from Shapely's implementation -- may not be necessary + if tanx.abs() < U::from::(2.5e-16).unwrap() { + tanx = U::zero(); + } + if tany.abs() < U::from::(2.5e-16).unwrap() { + tany = U::zero(); + } + let xoff = -y0 * tanx; + let yoff = -x0 * tany; + Self::new(U::one(), tanx, xoff, tany, U::one(), yoff) + } + + /// **Add** an affine transform for skewing. + /// + /// Note that this operation is only available for geometries with floating point coordinates. + /// + /// Geometries are sheared by angles along x (`xs`) and y (`ys`) dimensions. + /// The point of origin is *usually* given as the 2D bounding box centre of the geometry, but + /// any coordinate may be specified. Angles are given in **degrees**. + /// + /// This is a **cumulative** operation; the new transform is *added* to the existing transform. + #[must_use] + pub fn skewed(mut self, xs: U, ys: U, origin: impl Into>) -> Self { + self.0 = self.compose(&Self::skew(xs, ys, origin)).0; + self + } +} + +#[cfg(test)] +mod tests { + use approx::{AbsDiffEq, RelativeEq}; + + impl RelativeEq for AffineTransform + where + T: AbsDiffEq + CoordNum + RelativeEq, + { + #[inline] + fn default_max_relative() -> Self::Epsilon { + T::default_max_relative() + } + + /// Equality assertion within a relative limit. + /// + /// # Examples + /// + /// ``` + /// use geo_types::AffineTransform; + /// use geo_types::point; + /// + /// let a = AffineTransform::new(1.0, 2.0, 3.0, 4.0, 5.0, 6.0); + /// let b = AffineTransform::new(1.01, 2.02, 3.03, 4.04, 5.05, 6.06); + /// + /// approx::assert_relative_eq!(a, b, max_relative=0.1) + /// approx::assert_relative_ne!(a, b, max_relative=0.055) + /// ``` + #[inline] + fn relative_eq( + &self, + other: &Self, + epsilon: Self::Epsilon, + max_relative: Self::Epsilon, + ) -> bool { + let mut mp_zipper = self.0.iter().flatten().zip(other.0.iter().flatten()); + mp_zipper.all(|(lhs, rhs)| lhs.relative_eq(rhs, epsilon, max_relative)) + } + } + + impl AbsDiffEq for AffineTransform + where + T: AbsDiffEq + CoordNum, + T::Epsilon: Copy, + { + type Epsilon = T; + + #[inline] + fn default_epsilon() -> Self::Epsilon { + T::default_epsilon() + } + + /// Equality assertion with an absolute limit. + /// + /// # Examples + /// + /// ``` + /// use geo_types::MultiPoint; + /// use geo_types::point; + /// + /// let a = AffineTransform::new(1.0, 2.0, 3.0, 4.0, 5.0, 6.0); + /// let b = AffineTransform::new(1.01, 2.02, 3.03, 4.04, 5.05, 6.06); + /// + /// approx::abs_diff_eq!(a, b, epsilon=0.1) + /// approx::abs_diff_ne!(a, b, epsilon=0.055) + /// ``` + #[inline] + fn abs_diff_eq(&self, other: &Self, epsilon: Self::Epsilon) -> bool { + let mut mp_zipper = self.0.iter().flatten().zip(other.0.iter().flatten()); + mp_zipper.all(|(lhs, rhs)| lhs.abs_diff_eq(rhs, epsilon)) + } + } + + use super::*; + use crate::{wkt, Point}; + + // given a matrix with the shape + // [[a, b, xoff], + // [d, e, yoff], + // [0, 0, 1]] + #[test] + fn matrix_multiply() { + let a = AffineTransform::new(1, 2, 5, 3, 4, 6); + let b = AffineTransform::new(7, 8, 11, 9, 10, 12); + let composed = a.compose(&b); + assert_eq!(composed.0[0][0], 31); + assert_eq!(composed.0[0][1], 46); + assert_eq!(composed.0[0][2], 94); + assert_eq!(composed.0[1][0], 39); + assert_eq!(composed.0[1][1], 58); + assert_eq!(composed.0[1][2], 117); + } + #[test] + fn test_transform_composition() { + let p0 = Point::new(0.0f64, 0.0); + // scale once + let mut scale_a = AffineTransform::default().scaled(2.0, 2.0, p0); + // rotate + scale_a = scale_a.rotated(45.0, p0); + // rotate back + scale_a = scale_a.rotated(-45.0, p0); + // scale up again, doubling + scale_a = scale_a.scaled(2.0, 2.0, p0); + // scaled once + let scale_b = AffineTransform::default().scaled(2.0, 2.0, p0); + // scaled once, but equal to 2 + 2 + let scale_c = AffineTransform::default().scaled(4.0, 4.0, p0); + assert_ne!(&scale_a.0, &scale_b.0); + assert_relative_eq!(&scale_a, &scale_c); + } + + #[test] + fn affine_transformed() { + let transform = AffineTransform::translate(1.0, 1.0).scaled(2.0, 2.0, (0.0, 0.0)); + let mut poly = wkt! { POLYGON((0.0 0.0,0.0 2.0,1.0 2.0)) }; + poly.affine_transform_mut(&transform); + + let expected = wkt! { POLYGON((2.0 2.0,2.0 6.0,4.0 6.0)) }; + assert_eq!(expected, poly); + } + #[test] + fn affine_transformed_inverse() { + let transform = AffineTransform::translate(1.0, 1.0).scaled(2.0, 2.0, (0.0, 0.0)); + let tinv = transform.inverse().unwrap(); + let identity = transform.compose(&tinv); + // test really only needs this, but let's be sure + assert!(identity.is_identity()); + + let mut poly = wkt! { POLYGON((0.0 0.0,0.0 2.0,1.0 2.0)) }; + let expected = poly.clone(); + poly.affine_transform_mut(&identity); + assert_eq!(expected, poly); + } + #[test] + fn test_affine_transform_getters() { + let transform = AffineTransform::new(10.0, 0.0, 400_000.0, 0.0, -10.0, 500_000.0); + assert_eq!(transform.a(), 10.0); + assert_eq!(transform.b(), 0.0); + assert_eq!(transform.xoff(), 400_000.0); + assert_eq!(transform.d(), 0.0); + assert_eq!(transform.e(), -10.0); + assert_eq!(transform.yoff(), 500_000.0); + } + #[test] + fn test_compose() { + let point = Point::new(1., 0.); + + let translate = AffineTransform::translate(1., 0.); + let scale = AffineTransform::scale(4., 1., [0., 0.]); + let composed = translate.compose(&scale); + + assert_eq!(point.affine_transform(&translate), Point::new(2., 0.)); + assert_eq!(point.affine_transform(&scale), Point::new(4., 0.)); + assert_eq!( + point.affine_transform(&translate).affine_transform(&scale), + Point::new(8., 0.) + ); + + assert_eq!(point.affine_transform(&composed), Point::new(8., 0.)); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/area.rs b/rust/geo-generic-alg/src/algorithm/area.rs new file mode 100644 index 00000000..f16a4bb5 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/area.rs @@ -0,0 +1,605 @@ +use geo_traits_ext::*; + +use crate::{CoordFloat, CoordNum}; +use core::borrow::Borrow; + +pub(crate) fn twice_signed_ring_area>( + linestring: &LS, +) -> T { + // LineString with less than 3 points is empty, or a + // single point, or is not closed. + let num_coords = linestring.num_coords(); + if num_coords < 3 { + return T::zero(); + } + + unsafe { + // Above test ensures the vector has at least 2 elements. + // We check if linestring is closed, and return 0 otherwise. + if linestring.geo_coord_unchecked(0) != linestring.geo_coord_unchecked(num_coords - 1) { + return T::zero(); + } + + // Use a reasonable shift for the line-string coords + // to avoid numerical-errors when summing the + // determinants. + // + // Note: we can't use the `Centroid` trait as it + // requires `T: Float` and in fact computes area in the + // implementation. Another option is to use the average + // of the coordinates, but it is not fool-proof to + // divide by the length of the linestring (eg. a long + // line-string with T = u8) + let shift = linestring.geo_coord_unchecked(0); + + let mut tmp = T::zero(); + for line in linestring.lines() { + use crate::MapCoords; + let line = line.map_coords(|c| c - shift); + tmp = tmp + line.determinant(); + } + + tmp + } +} + +/// Signed and unsigned planar area of a geometry. +/// +/// # Examples +/// +/// ``` +/// use geo::polygon; +/// use geo::Area; +/// +/// let mut polygon = polygon![ +/// (x: 0., y: 0.), +/// (x: 5., y: 0.), +/// (x: 5., y: 6.), +/// (x: 0., y: 6.), +/// (x: 0., y: 0.), +/// ]; +/// +/// assert_eq!(polygon.signed_area(), 30.); +/// assert_eq!(polygon.unsigned_area(), 30.); +/// +/// polygon.exterior_mut(|line_string| { +/// line_string.0.reverse(); +/// }); +/// +/// assert_eq!(polygon.signed_area(), -30.); +/// assert_eq!(polygon.unsigned_area(), 30.); +/// ``` +pub trait Area +where + T: CoordNum, +{ + fn signed_area(&self) -> T; + + fn unsigned_area(&self) -> T; +} + +impl Area for G +where + T: CoordNum, + G: GeoTraitExtWithTypeTag + AreaTrait, +{ + fn signed_area(&self) -> T { + self.signed_area_trait() + } + + fn unsigned_area(&self) -> T { + self.unsigned_area_trait() + } +} + +trait AreaTrait +where + T: CoordNum, +{ + fn signed_area_trait(&self) -> T; + + fn unsigned_area_trait(&self) -> T; +} + +// Calculation of simple (no interior holes) Polygon area +pub(crate) fn get_linestring_area>(linestring: &LS) -> T +where + T: CoordFloat, +{ + twice_signed_ring_area(linestring) / (T::one() + T::one()) +} + +impl> AreaTrait for P +where + T: CoordNum, +{ + fn signed_area_trait(&self) -> T { + T::zero() + } + + fn unsigned_area_trait(&self) -> T { + T::zero() + } +} + +impl> AreaTrait for LS +where + T: CoordNum, +{ + fn signed_area_trait(&self) -> T { + T::zero() + } + + fn unsigned_area_trait(&self) -> T { + T::zero() + } +} + +impl> AreaTrait for L +where + T: CoordNum, +{ + fn signed_area_trait(&self) -> T { + T::zero() + } + + fn unsigned_area_trait(&self) -> T { + T::zero() + } +} + +/// **Note.** The implementation handles polygons whose +/// holes do not all have the same orientation. The sign of +/// the output is the same as that of the exterior shell. +impl> AreaTrait for P +where + T: CoordFloat, +{ + fn signed_area_trait(&self) -> T { + match self.exterior_ext() { + Some(exterior) => { + let area = get_linestring_area(&exterior); + + // We could use winding order here, but that would + // result in computing the shoelace formula twice. + let is_negative = area < T::zero(); + + let area = self.interiors_ext().fold(area.abs(), |total, next| { + total - get_linestring_area(&next).abs() + }); + + if is_negative { + -area + } else { + area + } + } + None => T::zero(), + } + } + + fn unsigned_area_trait(&self) -> T { + self.signed_area_trait().abs() + } +} + +impl> AreaTrait for MP +where + T: CoordNum, +{ + fn signed_area_trait(&self) -> T { + T::zero() + } + + fn unsigned_area_trait(&self) -> T { + T::zero() + } +} + +impl> AreaTrait for MLS +where + T: CoordNum, +{ + fn signed_area_trait(&self) -> T { + T::zero() + } + + fn unsigned_area_trait(&self) -> T { + T::zero() + } +} + +/// **Note.** The implementation is a straight-forward +/// summation of the signed areas of the individual +/// polygons. In particular, `unsigned_area` is not +/// necessarily the sum of the `unsigned_area` of the +/// constituent polygons unless they are all oriented the +/// same. +impl> AreaTrait for MP +where + T: CoordFloat, +{ + fn signed_area_trait(&self) -> T { + self.polygons_ext() + .fold(T::zero(), |total, next| total + next.signed_area_trait()) + } + + fn unsigned_area_trait(&self) -> T { + self.polygons_ext().fold(T::zero(), |total, next| { + total + next.signed_area_trait().abs() + }) + } +} + +/// Because a `Rect` has no winding order, the area will always be positive. +impl> AreaTrait for R +where + T: CoordNum, +{ + fn signed_area_trait(&self) -> T { + self.width() * self.height() + } + + fn unsigned_area_trait(&self) -> T { + self.width() * self.height() + } +} + +impl> AreaTrait for TT +where + T: CoordFloat, +{ + fn signed_area_trait(&self) -> T { + self.to_lines() + .iter() + .fold(T::zero(), |total, line| total + line.determinant()) + / (T::one() + T::one()) + } + + fn unsigned_area_trait(&self) -> T { + self.signed_area_trait().abs() + } +} + +impl> AreaTrait for GC +where + T: CoordFloat, +{ + fn signed_area_trait(&self) -> T { + self.geometries_ext() + .map(|g| g.signed_area_trait()) + .fold(T::zero(), |acc, next| acc + next) + } + + fn unsigned_area_trait(&self) -> T { + self.geometries_ext() + .map(|g| g.unsigned_area_trait()) + .fold(T::zero(), |acc, next| acc + next) + } +} + +impl> AreaTrait for G +where + T: CoordFloat, +{ + fn signed_area_trait(&self) -> T { + if self.is_collection() { + self.geometries_ext() + .map(|g_inner| g_inner.borrow().signed_area_trait()) + .fold(T::zero(), |acc, next| acc + next) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => g.signed_area_trait(), + GeometryTypeExt::Line(g) => g.signed_area_trait(), + GeometryTypeExt::LineString(g) => g.signed_area_trait(), + GeometryTypeExt::Polygon(g) => g.signed_area_trait(), + GeometryTypeExt::MultiPoint(g) => g.signed_area_trait(), + GeometryTypeExt::MultiLineString(g) => g.signed_area_trait(), + GeometryTypeExt::MultiPolygon(g) => g.signed_area_trait(), + GeometryTypeExt::Rect(g) => g.signed_area_trait(), + GeometryTypeExt::Triangle(g) => g.signed_area_trait(), + } + } + } + + fn unsigned_area_trait(&self) -> T { + if self.is_collection() { + self.geometries_ext() + .map(|g_inner| g_inner.borrow().unsigned_area_trait()) + .fold(T::zero(), |acc, next| acc + next) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => g.unsigned_area_trait(), + GeometryTypeExt::Line(g) => g.unsigned_area_trait(), + GeometryTypeExt::LineString(g) => g.unsigned_area_trait(), + GeometryTypeExt::Polygon(g) => g.unsigned_area_trait(), + GeometryTypeExt::MultiPoint(g) => g.unsigned_area_trait(), + GeometryTypeExt::MultiLineString(g) => g.unsigned_area_trait(), + GeometryTypeExt::MultiPolygon(g) => g.unsigned_area_trait(), + GeometryTypeExt::Rect(g) => g.unsigned_area_trait(), + GeometryTypeExt::Triangle(g) => g.unsigned_area_trait(), + } + } + } +} + +#[cfg(test)] +mod test { + use crate::Area; + use crate::{coord, polygon, wkt, Line, MultiPolygon, Polygon, Rect, Triangle}; + + // Area of the polygon + #[test] + fn area_empty_polygon_test() { + let poly: Polygon = polygon![]; + assert_relative_eq!(poly.signed_area(), 0.); + } + + #[test] + fn area_one_point_polygon_test() { + let poly = wkt! { POLYGON((1. 0.)) }; + assert_relative_eq!(poly.signed_area(), 0.); + } + #[test] + fn area_polygon_test() { + let polygon = wkt! { POLYGON((0. 0.,5. 0.,5. 6.,0. 6.,0. 0.)) }; + assert_relative_eq!(polygon.signed_area(), 30.); + } + #[test] + fn area_polygon_numerical_stability() { + let polygon = { + use std::f64::consts::PI; + const NUM_VERTICES: usize = 10; + const ANGLE_INC: f64 = 2. * PI / NUM_VERTICES as f64; + + Polygon::new( + (0..NUM_VERTICES) + .map(|i| { + let angle = i as f64 * ANGLE_INC; + coord! { + x: angle.cos(), + y: angle.sin(), + } + }) + .collect::>() + .into(), + vec![], + ) + }; + + let area = polygon.signed_area(); + + let shift = coord! { x: 1.5e8, y: 1.5e8 }; + + use crate::map_coords::MapCoords; + let polygon = polygon.map_coords(|c| c + shift); + + let new_area = polygon.signed_area(); + let err = (area - new_area).abs() / area; + + assert!(err < 1e-2); + } + #[test] + fn rectangle_test() { + let rect1: Rect = Rect::new(coord! { x: 10., y: 30. }, coord! { x: 20., y: 40. }); + assert_relative_eq!(rect1.signed_area(), 100.); + + let rect2: Rect = Rect::new(coord! { x: 10, y: 30 }, coord! { x: 20, y: 40 }); + assert_eq!(rect2.signed_area(), 100); + } + #[test] + fn area_polygon_inner_test() { + let poly = polygon![ + exterior: [ + (x: 0., y: 0.), + (x: 10., y: 0.), + (x: 10., y: 10.), + (x: 0., y: 10.), + (x: 0., y: 0.) + ], + interiors: [ + [ + (x: 1., y: 1.), + (x: 2., y: 1.), + (x: 2., y: 2.), + (x: 1., y: 2.), + (x: 1., y: 1.), + ], + [ + (x: 5., y: 5.), + (x: 6., y: 5.), + (x: 6., y: 6.), + (x: 5., y: 6.), + (x: 5., y: 5.) + ], + ], + ]; + assert_relative_eq!(poly.signed_area(), 98.); + } + #[test] + fn area_multipolygon_test() { + let poly0 = polygon![ + (x: 0., y: 0.), + (x: 10., y: 0.), + (x: 10., y: 10.), + (x: 0., y: 10.), + (x: 0., y: 0.) + ]; + let poly1 = polygon![ + (x: 1., y: 1.), + (x: 2., y: 1.), + (x: 2., y: 2.), + (x: 1., y: 2.), + (x: 1., y: 1.) + ]; + let poly2 = polygon![ + (x: 5., y: 5.), + (x: 6., y: 5.), + (x: 6., y: 6.), + (x: 5., y: 6.), + (x: 5., y: 5.) + ]; + let mpoly = MultiPolygon::new(vec![poly0, poly1, poly2]); + assert_relative_eq!(mpoly.signed_area(), 102.); + assert_relative_eq!(mpoly.signed_area(), 102.); + } + #[test] + fn area_line_test() { + let line1 = Line::new(coord! { x: 0.0, y: 0.0 }, coord! { x: 1.0, y: 1.0 }); + assert_relative_eq!(line1.signed_area(), 0.); + } + + #[test] + fn area_triangle_test() { + let triangle = Triangle::new( + coord! { x: 0.0, y: 0.0 }, + coord! { x: 1.0, y: 0.0 }, + coord! { x: 0.0, y: 1.0 }, + ); + assert_relative_eq!(triangle.signed_area(), 0.5); + + let triangle = Triangle::new( + coord! { x: 0.0, y: 0.0 }, + coord! { x: 0.0, y: 1.0 }, + coord! { x: 1.0, y: 0.0 }, + ); + // triangles are always ccw, thus positive + assert_relative_eq!(triangle.signed_area(), 0.5); + } + + #[test] + fn area_geometry_test() { + let geom = wkt! { + MULTIPOLYGON( + ((0. 0.,5. 0.,5. 6.,0. 6.,0. 0.)), + ((1. 1.,2. 1.,2. 2.,1. 2.,1. 1.)) + ) + }; + assert_relative_eq!(geom.signed_area(), 31.0); + } + + #[test] + fn area_multi_polygon_area_reversed() { + let polygon_cw: Polygon = polygon![ + coord! { x: 0.0, y: 0.0 }, + coord! { x: 0.0, y: 1.0 }, + coord! { x: 1.0, y: 1.0 }, + coord! { x: 1.0, y: 0.0 }, + coord! { x: 0.0, y: 0.0 }, + ]; + let polygon_ccw: Polygon = polygon![ + coord! { x: 0.0, y: 0.0 }, + coord! { x: 1.0, y: 0.0 }, + coord! { x: 1.0, y: 1.0 }, + coord! { x: 0.0, y: 1.0 }, + coord! { x: 0.0, y: 0.0 }, + ]; + let polygon_area = polygon_cw.unsigned_area(); + + let multi_polygon = MultiPolygon::new(vec![polygon_cw, polygon_ccw]); + + assert_eq!(polygon_area * 2., multi_polygon.unsigned_area()); + } + + #[test] + fn area_north_america_cutout() { + let poly = polygon![ + exterior: [ + (x: -102.902861858977, y: 31.6943450891131), + (x: -102.917375513247, y: 31.6990175356827), + (x: -102.917887344527, y: 31.7044889522597), + (x: -102.938892711173, y: 31.7032871894594), + (x: -102.939919687305, y: 31.7142296141915), + (x: -102.946922353444, y: 31.713828170995), + (x: -102.954642979004, y: 31.7210594956594), + (x: -102.960927457803, y: 31.7130240707676), + (x: -102.967929895872, y: 31.7126214137469), + (x: -102.966383373178, y: 31.6962079209847), + (x: -102.973384192133, y: 31.6958049292994), + (x: -102.97390013779, y: 31.701276160078), + (x: -102.980901394769, y: 31.7008727405409), + (x: -102.987902575456, y: 31.7004689164622), + (x: -102.986878877087, y: 31.7127206248263), + (x: -102.976474089689, y: 31.7054378797983), + (x: -102.975448432121, y: 31.7176893134691), + (x: -102.96619351228, y: 31.7237224912303), + (x: -102.976481009643, y: 31.7286309669534), + (x: -102.976997412845, y: 31.7341016591658), + (x: -102.978030448215, y: 31.7450427747035), + (x: -102.985035821671, y: 31.7446391683265), + (x: -102.985552968771, y: 31.7501095683386), + (x: -102.992558780682, y: 31.7497055338313), + (x: -102.993594334215, y: 31.7606460184322), + (x: -102.973746840657, y: 31.7546100958509), + (x: -102.966082339116, y: 31.767730116605), + (x: -102.959074676589, y: 31.768132602064), + (x: -102.95206693787, y: 31.7685346826851), + (x: -102.953096767614, y: 31.7794749110023), + (x: -102.953611796704, y: 31.7849448911322), + (x: -102.952629078076, y: 31.7996518517642), + (x: -102.948661251495, y: 31.8072257578725), + (x: -102.934638176282, y: 31.8080282207231), + (x: -102.927626524626, y: 31.8084288446215), + (x: -102.927113253813, y: 31.8029591283411), + (x: -102.920102042027, y: 31.8033593239799), + (x: -102.919076759513, y: 31.792419577395), + (x: -102.912066503301, y: 31.7928193216213), + (x: -102.911554491357, y: 31.7873492912889), + (x: -102.904544675025, y: 31.7877486073783), + (x: -102.904033254331, y: 31.7822784646103), + (x: -102.903521909259, y: 31.7768082325431), + (x: -102.895800463718, y: 31.7695748336589), + (x: -102.889504111843, y: 31.7776055573633), + (x: -102.882495099915, y: 31.7780036124077), + (x: -102.868476849997, y: 31.7787985077398), + (x: -102.866950998738, y: 31.7623869292283), + (x: -102.873958615171, y: 31.7619897531194), + (x: -102.87888647278, y: 31.7688910039026), + (x: -102.879947237315, y: 31.750650764952), + (x: -102.886953672823, y: 31.750252825268), + (x: -102.89396003296, y: 31.7498544807869), + (x: -102.892939355062, y: 31.7389128078806), + (x: -102.913954892669, y: 31.7377154844276), + (x: -102.913443122277, y: 31.7322445829725), + (x: -102.912931427507, y: 31.7267735918962), + (x: -102.911908264767, y: 31.7158313407426), + (x: -102.904905220014, y: 31.7162307607961), + (x: -102.904394266551, y: 31.7107594775392), + (x: -102.903372586049, y: 31.6998166417321), + (x: -102.902861858977, y: 31.6943450891131), + ], + interiors: [ + [ + (x: -102.916514879554, y: 31.7650686485918), + (x: -102.921022256876, y: 31.7770831833398), + (x: -102.93367363719, y: 31.771184865332), + (x: -102.916514879554, y: 31.7650686485918), + ], + [ + (x: -102.935483140202, y: 31.7419852607081), + (x: -102.932452314332, y: 31.7328567234689), + (x: -102.918345099146, y: 31.7326099897391), + (x: -102.925566322952, y: 31.7552505533503), + (x: -102.928990700436, y: 31.747856686604), + (x: -102.935996606762, y: 31.7474559134477), + (x: -102.939021176592, y: 31.7539885279379), + (x: -102.944714388971, y: 31.7488395547293), + (x: -102.935996606762, y: 31.7474559134477), + (x: -102.935483140202, y: 31.7419852607081), + ], + [ + (x: -102.956498858767, y: 31.7407805824758), + (x: -102.960959476367, y: 31.7475080456347), + (x: -102.972817445204, y: 31.742072061889), + (x: -102.956498858767, y: 31.7407805824758), + ] + ], + ]; + // Value from shapely + assert_relative_eq!( + poly.unsigned_area(), + 0.006547948219252177, + max_relative = 0.0001 + ); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/bounding_rect.rs b/rust/geo-generic-alg/src/algorithm/bounding_rect.rs new file mode 100644 index 00000000..d1673811 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/bounding_rect.rs @@ -0,0 +1,414 @@ +use crate::utils::{partial_max, partial_min}; +use crate::{coord, geometry::*, CoordNum, GeometryCow}; +use core::borrow::Borrow; +use geo_traits_ext::*; +use geo_types::private_utils::get_bounding_rect; + +/// Calculation of the bounding rectangle of a geometry. +pub trait BoundingRect { + type Output: Into>>; + + /// Return the bounding rectangle of a geometry + /// + /// # Examples + /// + /// ``` + /// use geo::BoundingRect; + /// use geo::line_string; + /// + /// let line_string = line_string![ + /// (x: 40.02f64, y: 116.34), + /// (x: 42.02f64, y: 116.34), + /// (x: 42.02f64, y: 118.34), + /// ]; + /// + /// let bounding_rect = line_string.bounding_rect().unwrap(); + /// + /// assert_eq!(40.02f64, bounding_rect.min().x); + /// assert_eq!(42.02f64, bounding_rect.max().x); + /// assert_eq!(116.34, bounding_rect.min().y); + /// assert_eq!(118.34, bounding_rect.max().y); + /// ``` + fn bounding_rect(&self) -> Self::Output; +} + +impl BoundingRect for G +where + T: CoordNum, + G: GeoTraitExtWithTypeTag + BoundingRectTrait, +{ + type Output = G::Output; + + fn bounding_rect(&self) -> Self::Output { + self.bounding_rect_trait() + } +} + +pub trait BoundingRectTrait +where + T: CoordNum, +{ + type Output: Into>>; + + fn bounding_rect_trait(&self) -> Self::Output; +} + +impl> BoundingRectTrait for C +where + T: CoordNum, +{ + type Output = Rect; + + /// Return the bounding rectangle for a `Coord`. It will have zero width + /// and zero height. + fn bounding_rect_trait(&self) -> Self::Output { + Rect::new(self.geo_coord(), self.geo_coord()) + } +} + +impl> BoundingRectTrait for P +where + T: CoordNum, +{ + type Output = Rect; + + /// Return the bounding rectangle for a `Point`. It will have zero width + /// and zero height. + fn bounding_rect_trait(&self) -> Self::Output { + match self.geo_coord() { + Some(coord) => Rect::new(coord, coord), + None => { + let zero = Coord::::zero(); + Rect::new(zero, zero) + } + } + } +} + +impl> BoundingRectTrait for MP +where + T: CoordNum, +{ + type Output = Option>; + + /// + /// Return the BoundingRect for a MultiPoint + fn bounding_rect_trait(&self) -> Self::Output { + get_bounding_rect(self.coord_iter()) + } +} + +impl> BoundingRectTrait for L +where + T: CoordNum, +{ + type Output = Rect; + + fn bounding_rect_trait(&self) -> Self::Output { + Rect::new(self.start_coord(), self.end_coord()) + } +} + +impl> BoundingRectTrait for LS +where + T: CoordNum, +{ + type Output = Option>; + + /// + /// Return the BoundingRect for a LineString + fn bounding_rect_trait(&self) -> Self::Output { + get_bounding_rect(self.coord_iter()) + } +} + +impl> BoundingRectTrait for MLS +where + T: CoordNum, +{ + type Output = Option>; + + /// + /// Return the BoundingRect for a MultiLineString + fn bounding_rect_trait(&self) -> Self::Output { + self.line_strings_ext().fold(None, |acc, p| { + let rect = p.bounding_rect_trait(); + match (acc, rect) { + (None, None) => None, + (Some(r), None) | (None, Some(r)) => Some(r), + (Some(r1), Some(r2)) => Some(bounding_rect_merge(r1, r2)), + } + }) + } +} + +impl> BoundingRectTrait for P +where + T: CoordNum, +{ + type Output = Option>; + + /// + /// Return the BoundingRect for a Polygon + fn bounding_rect_trait(&self) -> Self::Output { + let exterior = self.exterior_ext(); + exterior.and_then(|e| get_bounding_rect(e.coord_iter())) + } +} + +impl> BoundingRectTrait for MP +where + T: CoordNum, +{ + type Output = Option>; + + /// + /// Return the BoundingRect for a MultiPolygon + fn bounding_rect_trait(&self) -> Self::Output { + self.polygons_ext().fold(None, |acc, p| { + let rect = p + .exterior_ext() + .and_then(|e| get_bounding_rect(e.coord_iter())); + match (acc, rect) { + (None, None) => None, + (Some(r), None) | (None, Some(r)) => Some(r), + (Some(r1), Some(r2)) => Some(bounding_rect_merge(r1, r2)), + } + }) + } +} + +impl> BoundingRectTrait for TT +where + T: CoordNum, +{ + type Output = Rect; + + fn bounding_rect_trait(&self) -> Self::Output { + get_bounding_rect(self.coord_iter()).unwrap() + } +} + +impl> BoundingRectTrait for R +where + T: CoordNum, +{ + type Output = Rect; + + fn bounding_rect_trait(&self) -> Self::Output { + self.geo_rect() + } +} + +impl> BoundingRectTrait for GC +where + T: CoordNum, +{ + type Output = Option>; + + fn bounding_rect_trait(&self) -> Self::Output { + self.geometries_ext().fold(None, |acc, next| { + let next_bounding_rect = next.bounding_rect_trait(); + + match (acc, next_bounding_rect) { + (None, None) => None, + (Some(r), None) | (None, Some(r)) => Some(r), + (Some(r1), Some(r2)) => Some(bounding_rect_merge(r1, r2)), + } + }) + } +} + +impl> BoundingRectTrait for G +where + T: CoordNum, +{ + type Output = Option>; + + fn bounding_rect_trait(&self) -> Self::Output { + if self.is_collection() { + self.geometries_ext().fold(None, |acc, next| { + let next_bounding_rect = next.borrow().bounding_rect_trait(); + + match (acc, next_bounding_rect) { + (None, None) => None, + (Some(r), None) | (None, Some(r)) => Some(r), + (Some(r1), Some(r2)) => Some(bounding_rect_merge(r1, r2)), + } + }) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => g.bounding_rect_trait().into(), + GeometryTypeExt::Line(g) => g.bounding_rect_trait().into(), + GeometryTypeExt::LineString(g) => g.bounding_rect_trait(), + GeometryTypeExt::Polygon(g) => g.bounding_rect_trait(), + GeometryTypeExt::MultiPoint(g) => g.bounding_rect_trait(), + GeometryTypeExt::MultiLineString(g) => g.bounding_rect_trait(), + GeometryTypeExt::MultiPolygon(g) => g.bounding_rect_trait(), + GeometryTypeExt::Rect(g) => g.bounding_rect_trait().into(), + GeometryTypeExt::Triangle(g) => g.bounding_rect_trait().into(), + } + } + } +} + +impl BoundingRect for GeometryCow<'_, T> +where + T: CoordNum, +{ + type Output = Option>; + + crate::geometry_cow_delegate_impl! { + fn bounding_rect(&self) -> Self::Output; + } +} + +// Return a new rectangle that encompasses the provided rectangles +fn bounding_rect_merge(a: Rect, b: Rect) -> Rect { + Rect::new( + coord! { + x: partial_min(a.min().x, b.min().x), + y: partial_min(a.min().y, b.min().y), + }, + coord! { + x: partial_max(a.max().x, b.max().x), + y: partial_max(a.max().y, b.max().y), + }, + ) +} + +#[cfg(test)] +mod test { + use super::bounding_rect_merge; + use crate::line_string; + use crate::BoundingRect; + use crate::{ + coord, point, polygon, Geometry, GeometryCollection, Line, LineString, MultiLineString, + MultiPoint, MultiPolygon, Polygon, Rect, + }; + + #[test] + fn empty_linestring_test() { + let linestring: LineString = line_string![]; + let bounding_rect = linestring.bounding_rect(); + assert!(bounding_rect.is_none()); + } + #[test] + fn linestring_one_point_test() { + let linestring = line_string![(x: 40.02f64, y: 116.34)]; + let bounding_rect = Rect::new( + coord! { + x: 40.02f64, + y: 116.34, + }, + coord! { + x: 40.02, + y: 116.34, + }, + ); + assert_eq!(bounding_rect, linestring.bounding_rect().unwrap()); + } + #[test] + fn linestring_test() { + let linestring = line_string![ + (x: 1., y: 1.), + (x: 2., y: -2.), + (x: -3., y: -3.), + (x: -4., y: 4.) + ]; + let bounding_rect = Rect::new(coord! { x: -4., y: -3. }, coord! { x: 2., y: 4. }); + assert_eq!(bounding_rect, linestring.bounding_rect().unwrap()); + } + #[test] + fn multilinestring_test() { + let multiline = MultiLineString::new(vec![ + line_string![(x: 1., y: 1.), (x: -40., y: 1.)], + line_string![(x: 1., y: 1.), (x: 50., y: 1.)], + line_string![(x: 1., y: 1.), (x: 1., y: -60.)], + line_string![(x: 1., y: 1.), (x: 1., y: 70.)], + ]); + let bounding_rect = Rect::new(coord! { x: -40., y: -60. }, coord! { x: 50., y: 70. }); + assert_eq!(bounding_rect, multiline.bounding_rect().unwrap()); + } + #[test] + fn multipoint_test() { + let multipoint = MultiPoint::from(vec![(1., 1.), (2., -2.), (-3., -3.), (-4., 4.)]); + let bounding_rect = Rect::new(coord! { x: -4., y: -3. }, coord! { x: 2., y: 4. }); + assert_eq!(bounding_rect, multipoint.bounding_rect().unwrap()); + } + #[test] + fn polygon_test() { + let linestring = line_string![ + (x: 0., y: 0.), + (x: 5., y: 0.), + (x: 5., y: 6.), + (x: 0., y: 6.), + (x: 0., y: 0.), + ]; + let line_bounding_rect = linestring.bounding_rect().unwrap(); + let poly = Polygon::new(linestring, Vec::new()); + assert_eq!(line_bounding_rect, poly.bounding_rect().unwrap()); + } + #[test] + fn multipolygon_test() { + let mpoly = MultiPolygon::new(vec![ + polygon![(x: 0., y: 0.), (x: 50., y: 0.), (x: 0., y: -70.), (x: 0., y: 0.)], + polygon![(x: 0., y: 0.), (x: 5., y: 0.), (x: 0., y: 80.), (x: 0., y: 0.)], + polygon![(x: 0., y: 0.), (x: -60., y: 0.), (x: 0., y: 6.), (x: 0., y: 0.)], + ]); + let bounding_rect = Rect::new(coord! { x: -60., y: -70. }, coord! { x: 50., y: 80. }); + assert_eq!(bounding_rect, mpoly.bounding_rect().unwrap()); + } + #[test] + fn line_test() { + let line1 = Line::new(coord! { x: 0., y: 1. }, coord! { x: 2., y: 3. }); + let line2 = Line::new(coord! { x: 2., y: 3. }, coord! { x: 0., y: 1. }); + assert_eq!( + line1.bounding_rect(), + Rect::new(coord! { x: 0., y: 1. }, coord! { x: 2., y: 3. },) + ); + assert_eq!( + line2.bounding_rect(), + Rect::new(coord! { x: 0., y: 1. }, coord! { x: 2., y: 3. },) + ); + } + + #[test] + fn bounding_rect_merge_test() { + assert_eq!( + bounding_rect_merge( + Rect::new(coord! { x: 0., y: 0. }, coord! { x: 1., y: 1. }), + Rect::new(coord! { x: 1., y: 1. }, coord! { x: 2., y: 2. }), + ), + Rect::new(coord! { x: 0., y: 0. }, coord! { x: 2., y: 2. }), + ); + } + + #[test] + fn point_bounding_rect_test() { + assert_eq!( + Rect::new(coord! { x: 1., y: 2. }, coord! { x: 1., y: 2. }), + point! { x: 1., y: 2. }.bounding_rect(), + ); + } + + #[test] + fn geometry_collection_bounding_rect_test() { + assert_eq!( + Some(Rect::new(coord! { x: 0., y: 0. }, coord! { x: 1., y: 2. })), + GeometryCollection::new_from(vec![ + Geometry::Point(point! { x: 0., y: 0. }), + Geometry::Point(point! { x: 1., y: 2. }), + ]) + .bounding_rect(), + ); + assert_eq!( + Some(Rect::new(coord! { x: 0., y: 0. }, coord! { x: 1., y: 2. })), + Geometry::GeometryCollection(GeometryCollection::new_from(vec![ + Geometry::Point(point! { x: 0., y: 0. }), + Geometry::Point(point! { x: 1., y: 2. }), + ])) + .bounding_rect(), + ); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/centroid.rs b/rust/geo-generic-alg/src/algorithm/centroid.rs new file mode 100644 index 00000000..e931d093 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/centroid.rs @@ -0,0 +1,1217 @@ +use core::borrow::Borrow; +use std::cmp::Ordering; + +use geo_traits_ext::*; + +use crate::area::{get_linestring_area, Area}; +use crate::dimensions::{Dimensions, Dimensions::*, HasDimensions}; +use crate::geometry::*; +use crate::line_measures::metric_spaces::euclidean::Euclidean; +use crate::line_measures::LengthMeasurableExt; +use crate::GeoFloat; + +/// Calculation of the centroid. +/// The centroid is the arithmetic mean position of all points in the shape. +/// Informally, it is the point at which a cutout of the shape could be perfectly +/// balanced on the tip of a pin. +/// The geometric centroid of a convex object always lies in the object. +/// A non-convex object might have a centroid that _is outside the object itself_. +/// +/// # Examples +/// +/// ``` +/// use geo::Centroid; +/// use geo::{point, polygon}; +/// +/// // rhombus shaped polygon +/// let polygon = polygon![ +/// (x: -2., y: 1.), +/// (x: 1., y: 3.), +/// (x: 4., y: 1.), +/// (x: 1., y: -1.), +/// (x: -2., y: 1.), +/// ]; +/// +/// assert_eq!( +/// Some(point!(x: 1., y: 1.)), +/// polygon.centroid(), +/// ); +/// ``` +pub trait Centroid { + type Output; + + /// See: + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::{line_string, point}; + /// + /// let line_string = line_string![ + /// (x: 40.02f64, y: 116.34), + /// (x: 40.02f64, y: 118.23), + /// ]; + /// + /// assert_eq!( + /// Some(point!(x: 40.02, y: 117.285)), + /// line_string.centroid(), + /// ); + /// ``` + fn centroid(&self) -> Self::Output; +} + +impl Centroid for G +where + G: GeoTraitExtWithTypeTag + CentroidTrait, +{ + type Output = G::Output; + + fn centroid(&self) -> Self::Output { + self.centroid_trait() + } +} + +pub trait CentroidTrait { + type Output; + + fn centroid_trait(&self) -> Self::Output; +} + +impl CentroidTrait for L +where + L: LineTraitExt, + T: GeoFloat, +{ + type Output = Point; + + /// The Centroid of a [`Line`] is its middle point + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::{Line, point}; + /// + /// let line = Line::new( + /// point!(x: 1.0f64, y: 3.0), + /// point!(x: 2.0f64, y: 4.0), + /// ); + /// + /// assert_eq!( + /// point!(x: 1.5, y: 3.5), + /// line.centroid(), + /// ); + /// ``` + fn centroid_trait(&self) -> Self::Output { + let two = T::one() + T::one(); + let start = self.start_coord(); + let end = self.end_coord(); + let center = (start + end) / two; + center.into() + } +} + +impl CentroidTrait for LS +where + LS: LineStringTraitExt, + T: GeoFloat, +{ + type Output = Option>; + + // The Centroid of a [`LineString`] is the mean of the middle of the segment + // weighted by the length of the segments. + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::{line_string, point}; + /// + /// let line_string = line_string![ + /// (x: 1.0f32, y: 1.0), + /// (x: 2.0, y: 2.0), + /// (x: 4.0, y: 4.0) + /// ]; + /// + /// assert_eq!( + /// // (1.0 * (1.5, 1.5) + 2.0 * (3.0, 3.0)) / 3.0 + /// Some(point!(x: 2.5, y: 2.5)), + /// line_string.centroid(), + /// ); + /// ``` + fn centroid_trait(&self) -> Self::Output { + let mut operation = CentroidOperation::new(); + operation.add_line_string(self); + operation.centroid() + } +} + +impl CentroidTrait for MLS +where + MLS: MultiLineStringTraitExt, + T: GeoFloat, +{ + type Output = Option>; + + /// The Centroid of a [`MultiLineString`] is the mean of the centroids of all the constituent linestrings, + /// weighted by the length of each linestring + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::{MultiLineString, line_string, point}; + /// + /// let multi_line_string = MultiLineString::new(vec![ + /// // centroid: (2.5, 2.5) + /// line_string![(x: 1.0f32, y: 1.0), (x: 2.0, y: 2.0), (x: 4.0, y: 4.0)], + /// // centroid: (4.0, 4.0) + /// line_string![(x: 1.0, y: 1.0), (x: 3.0, y: 3.0), (x: 7.0, y: 7.0)], + /// ]); + /// + /// assert_eq!( + /// // ( 3.0 * (2.5, 2.5) + 6.0 * (4.0, 4.0) ) / 9.0 + /// Some(point!(x: 3.5, y: 3.5)), + /// multi_line_string.centroid(), + /// ); + /// ``` + fn centroid_trait(&self) -> Self::Output { + let mut operation = CentroidOperation::new(); + operation.add_multi_line_string(self); + operation.centroid() + } +} + +impl CentroidTrait for P +where + P: PolygonTraitExt, + T: GeoFloat, +{ + type Output = Option>; + + /// The Centroid of a [`Polygon`] is the mean of its points + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::{polygon, point}; + /// + /// let polygon = polygon![ + /// (x: 0.0f32, y: 0.0), + /// (x: 2.0, y: 0.0), + /// (x: 2.0, y: 1.0), + /// (x: 0.0, y: 1.0), + /// ]; + /// + /// assert_eq!( + /// Some(point!(x: 1.0, y: 0.5)), + /// polygon.centroid(), + /// ); + /// ``` + fn centroid_trait(&self) -> Self::Output { + let mut operation = CentroidOperation::new(); + operation.add_polygon(self); + operation.centroid() + } +} + +impl CentroidTrait for MP +where + MP: MultiPolygonTraitExt, + T: GeoFloat, +{ + type Output = Option>; + + /// The Centroid of a [`MultiPolygon`] is the mean of the centroids of its polygons, weighted + /// by the area of the polygons + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::{MultiPolygon, polygon, point}; + /// + /// let multi_polygon = MultiPolygon::new(vec![ + /// // centroid (1.0, 0.5) + /// polygon![ + /// (x: 0.0f32, y: 0.0), + /// (x: 2.0, y: 0.0), + /// (x: 2.0, y: 1.0), + /// (x: 0.0, y: 1.0), + /// ], + /// // centroid (-0.5, 0.0) + /// polygon![ + /// (x: 1.0, y: 1.0), + /// (x: -2.0, y: 1.0), + /// (x: -2.0, y: -1.0), + /// (x: 1.0, y: -1.0), + /// ] + /// ]); + /// + /// assert_eq!( + /// // ( 2.0 * (1.0, 0.5) + 6.0 * (-0.5, 0.0) ) / 8.0 + /// Some(point!(x: -0.125, y: 0.125)), + /// multi_polygon.centroid(), + /// ); + /// ``` + fn centroid_trait(&self) -> Self::Output { + let mut operation = CentroidOperation::new(); + operation.add_multi_polygon(self); + operation.centroid() + } +} + +impl CentroidTrait for R +where + R: RectTraitExt, + T: GeoFloat, +{ + type Output = Point; + + /// The Centroid of a [`Rect`] is the mean of its [`Point`]s + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::{Rect, point}; + /// + /// let rect = Rect::new( + /// point!(x: 0.0f32, y: 0.0), + /// point!(x: 1.0, y: 1.0), + /// ); + /// + /// assert_eq!( + /// point!(x: 0.5, y: 0.5), + /// rect.centroid(), + /// ); + /// ``` + fn centroid_trait(&self) -> Self::Output { + self.center().into() + } +} + +impl CentroidTrait for TT +where + T: GeoFloat, + TT: TriangleTraitExt, +{ + type Output = Point; + + /// The Centroid of a [`Triangle`] is the mean of its [`Point`]s + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::{Triangle, coord, point}; + /// + /// let triangle = Triangle::new( + /// coord!(x: 0.0f32, y: -1.0), + /// coord!(x: 3.0, y: 0.0), + /// coord!(x: 0.0, y: 1.0), + /// ); + /// + /// assert_eq!( + /// point!(x: 1.0, y: 0.0), + /// triangle.centroid(), + /// ); + /// ``` + fn centroid_trait(&self) -> Self::Output { + let mut operation = CentroidOperation::new(); + operation.add_triangle(self); + operation + .centroid() + .expect("triangle cannot have an empty centroid") + } +} + +impl CentroidTrait for P +where + T: GeoFloat, + P: PointTraitExt, +{ + type Output = Point; + + /// The Centroid of a [`Point`] is the point itself + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::point; + /// + /// let point = point!(x: 1.0f32, y: 2.0); + /// + /// assert_eq!( + /// point!(x: 1.0f32, y: 2.0), + /// point.centroid(), + /// ); + /// ``` + fn centroid_trait(&self) -> Self::Output { + self.geo_point() + .unwrap_or_else(|| Point::new(T::zero(), T::zero())) + } +} + +impl CentroidTrait for MP +where + T: GeoFloat, + MP: MultiPointTraitExt, +{ + type Output = Option>; + + /// The Centroid of a [`MultiPoint`] is the mean of all [`Point`]s + /// + /// # Example + /// + /// ``` + /// use geo::Centroid; + /// use geo::{MultiPoint, Point}; + /// + /// let empty: Vec = Vec::new(); + /// let empty_multi_points: MultiPoint<_> = empty.into(); + /// assert_eq!(empty_multi_points.centroid(), None); + /// + /// let points: MultiPoint<_> = vec![(5., 1.), (1., 3.), (3., 2.)].into(); + /// assert_eq!(points.centroid(), Some(Point::new(3., 2.))); + /// ``` + fn centroid_trait(&self) -> Self::Output { + let mut operation = CentroidOperation::new(); + operation.add_multi_point(self); + operation.centroid() + } +} + +impl CentroidTrait for G +where + T: GeoFloat, + G: GeometryTraitExt, +{ + type Output = Option>; + + /// The Centroid of a [`Geometry`] is the centroid of its enum variant + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::{Geometry, Rect, point}; + /// + /// let rect = Rect::new( + /// point!(x: 0.0f32, y: 0.0), + /// point!(x: 1.0, y: 1.0), + /// ); + /// let geometry = Geometry::from(rect.clone()); + /// + /// assert_eq!( + /// Some(rect.centroid()), + /// geometry.centroid(), + /// ); + /// + /// assert_eq!( + /// Some(point!(x: 0.5, y: 0.5)), + /// geometry.centroid(), + /// ); + /// ``` + fn centroid_trait(&self) -> Self::Output { + if self.is_collection() { + // Handle geometry collection by computing weighted centroid + let mut operation = CentroidOperation::new(); + for g_inner in self.geometries_ext() { + operation.add_geometry(g_inner.borrow()); + } + operation.centroid() + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => Some(g.centroid_trait()), + GeometryTypeExt::Line(g) => Some(g.centroid_trait()), + GeometryTypeExt::LineString(g) => g.centroid_trait(), + GeometryTypeExt::Polygon(g) => g.centroid_trait(), + GeometryTypeExt::MultiPoint(g) => g.centroid_trait(), + GeometryTypeExt::MultiLineString(g) => g.centroid_trait(), + GeometryTypeExt::MultiPolygon(g) => g.centroid_trait(), + GeometryTypeExt::Rect(g) => Some(g.centroid_trait()), + GeometryTypeExt::Triangle(g) => Some(g.centroid_trait()), + } + } + } +} + +impl CentroidTrait for GC +where + T: GeoFloat, + GC: GeometryCollectionTraitExt, +{ + type Output = Option>; + + /// The Centroid of a [`GeometryCollection`] is the mean of the centroids of elements, weighted + /// by the area of its elements. + /// + /// Note that this means, that elements which have no area are not considered when calculating + /// the centroid. + /// + /// # Examples + /// + /// ``` + /// use geo::Centroid; + /// use geo::{Geometry, GeometryCollection, Rect, Triangle, point, coord}; + /// + /// let rect_geometry = Geometry::from(Rect::new( + /// point!(x: 0.0f32, y: 0.0), + /// point!(x: 1.0, y: 1.0), + /// )); + /// + /// let triangle_geometry = Geometry::from(Triangle::new( + /// coord!(x: 0.0f32, y: -1.0), + /// coord!(x: 3.0, y: 0.0), + /// coord!(x: 0.0, y: 1.0), + /// )); + /// + /// let point_geometry = Geometry::from( + /// point!(x: 12351.0, y: 129815.0) + /// ); + /// + /// let geometry_collection = GeometryCollection::new_from( + /// vec![ + /// rect_geometry, + /// triangle_geometry, + /// point_geometry + /// ] + /// ); + /// + /// assert_eq!( + /// Some(point!(x: 0.875, y: 0.125)), + /// geometry_collection.centroid(), + /// ); + /// ``` + fn centroid_trait(&self) -> Self::Output { + let mut operation = CentroidOperation::new(); + operation.add_geometry_collection(self); + operation.centroid() + } +} + +struct CentroidOperation(Option>); +impl CentroidOperation { + fn new() -> Self { + CentroidOperation(None) + } + + fn centroid(&self) -> Option> { + self.0.as_ref().map(|weighted_centroid| { + Point::from(weighted_centroid.accumulated / weighted_centroid.weight) + }) + } + + fn centroid_dimensions(&self) -> Dimensions { + self.0 + .as_ref() + .map(|weighted_centroid| weighted_centroid.dimensions) + .unwrap_or(Empty) + } + + fn add_coord(&mut self, coord: Coord) { + self.add_centroid(ZeroDimensional, coord, T::one()); + } + + fn add_line(&mut self, line: &L) + where + L: LineTraitExt, + { + match line.dimensions() { + ZeroDimensional => self.add_coord(line.start_coord()), + OneDimensional => { + let weight = line.length_ext(&Euclidean); + self.add_centroid(OneDimensional, line.centroid().0, weight) + } + _ => unreachable!("Line must be zero or one dimensional"), + } + } + + fn add_line_string(&mut self, line_string: &LS) + where + LS: LineStringTraitExt, + { + if self.centroid_dimensions() > OneDimensional { + return; + } + + if line_string.num_coords() == 1 { + unsafe { self.add_coord(line_string.geo_coord_unchecked(0)) }; + return; + } + + for line in line_string.lines() { + self.add_line(&line); + } + } + + fn add_multi_line_string(&mut self, multi_line_string: &MLS) + where + MLS: MultiLineStringTraitExt, + { + if self.centroid_dimensions() > OneDimensional { + return; + } + + for element in multi_line_string.line_strings_ext() { + self.add_line_string(&element); + } + } + + fn add_polygon

(&mut self, polygon: &P) + where + P: PolygonTraitExt, + { + // Polygons which are completely covered by their interior rings have zero area, and + // represent a unique degeneracy into a line_string which cannot be handled by accumulating + // directly into `self`. Instead, we perform a sub-operation, inspect the result, and only + // then incorporate the result into `self. + + let mut exterior_operation = CentroidOperation::new(); + if let Some(exterior) = polygon.exterior_ext() { + exterior_operation.add_ring(&exterior); + } + + let mut interior_operation = CentroidOperation::new(); + for interior in polygon.interiors_ext() { + interior_operation.add_ring(&interior); + } + + if let Some(exterior_weighted_centroid) = exterior_operation.0 { + let mut poly_weighted_centroid = exterior_weighted_centroid; + if let Some(interior_weighted_centroid) = interior_operation.0 { + poly_weighted_centroid.sub_assign(interior_weighted_centroid); + if poly_weighted_centroid.weight.is_zero() { + // A polygon with no area `interiors` completely covers `exterior`, degenerating to a linestring + polygon.exterior_ext().iter().for_each(|exterior| { + self.add_line_string(exterior); + }); + return; + } + } + self.add_weighted_centroid(poly_weighted_centroid); + } + } + + fn add_multi_point(&mut self, multi_point: &MP) + where + MP: MultiPointTraitExt, + { + if self.centroid_dimensions() > ZeroDimensional { + return; + } + + for element in multi_point.coord_iter() { + self.add_coord(element); + } + } + + fn add_multi_polygon(&mut self, multi_polygon: &MP) + where + MP: MultiPolygonTraitExt, + { + for element in multi_polygon.polygons_ext() { + self.add_polygon(&element); + } + } + + fn add_geometry_collection(&mut self, geometry_collection: &GC) + where + GC: GeometryCollectionTraitExt, + { + for element in geometry_collection.geometries_ext() { + self.add_geometry(&element); + } + } + + fn add_rect(&mut self, rect: &R) + where + R: RectTraitExt, + { + match rect.dimensions() { + ZeroDimensional => self.add_coord(rect.min_coord()), + OneDimensional => { + // Degenerate rect is a line, treat it the same way we treat flat polygons + self.add_line(&Line::new(rect.min_coord(), rect.min_coord())); + self.add_line(&Line::new(rect.min_coord(), rect.max_coord())); + self.add_line(&Line::new(rect.max_coord(), rect.max_coord())); + self.add_line(&Line::new(rect.max_coord(), rect.min_coord())); + } + TwoDimensional => { + self.add_centroid(TwoDimensional, rect.centroid().0, rect.unsigned_area()) + } + Empty => unreachable!("Rect dimensions cannot be empty"), + } + } + + fn add_triangle(&mut self, triangle: &TT) + where + TT: TriangleTraitExt, + { + match triangle.dimensions() { + ZeroDimensional => self.add_coord(triangle.first_coord()), + OneDimensional => { + // Degenerate triangle is a line, treat it the same way we treat flat + // polygons + let l0_1 = Line::new(triangle.first_coord(), triangle.second_coord()); + let l1_2 = Line::new(triangle.second_coord(), triangle.third_coord()); + let l2_0 = Line::new(triangle.third_coord(), triangle.first_coord()); + self.add_line(&l0_1); + self.add_line(&l1_2); + self.add_line(&l2_0); + } + TwoDimensional => { + let centroid = + (triangle.first_coord() + triangle.second_coord() + triangle.third_coord()) + / T::from(3).unwrap(); + self.add_centroid(TwoDimensional, centroid, triangle.unsigned_area()); + } + Empty => unreachable!("Rect dimensions cannot be empty"), + } + } + + fn add_geometry(&mut self, geometry: &G) + where + G: GeometryTraitExt, + { + if geometry.is_collection() { + for g_inner in geometry.geometries_ext() { + self.add_geometry(g_inner.borrow()); + } + } else { + match geometry.as_type_ext() { + GeometryTypeExt::Point(g) => { + if let Some(coord) = g.geo_coord() { + self.add_coord(coord) + } + } + GeometryTypeExt::Line(g) => self.add_line(g), + GeometryTypeExt::LineString(g) => self.add_line_string(g), + GeometryTypeExt::Polygon(g) => self.add_polygon(g), + GeometryTypeExt::MultiPoint(g) => self.add_multi_point(g), + GeometryTypeExt::MultiLineString(g) => self.add_multi_line_string(g), + GeometryTypeExt::MultiPolygon(g) => self.add_multi_polygon(g), + GeometryTypeExt::Rect(g) => self.add_rect(g), + GeometryTypeExt::Triangle(g) => self.add_triangle(g), + } + } + } + + fn add_ring(&mut self, ring: &LS) + where + LS: LineStringTraitExt, + { + debug_assert!(ring.is_closed()); + + let area = get_linestring_area(ring); + if area == T::zero() { + match ring.dimensions() { + // empty ring doesn't contribute to centroid + Empty => {} + // degenerate ring is a point + ZeroDimensional => unsafe { self.add_coord(ring.geo_coord_unchecked(0)) }, + // zero-area ring is a line string + _ => self.add_line_string(ring), + } + return; + } + + // Since area is non-zero, we know the ring has at least one point + let shift = unsafe { ring.geo_coord_unchecked(0) }; + + let accumulated_coord = ring.lines().fold(Coord::zero(), |accum, line| { + use crate::MapCoords; + let line = line.map_coords(|c| c - shift); + let tmp = line.determinant(); + accum + (line.end + line.start) * tmp + }); + let six = T::from(6).unwrap(); + let centroid = accumulated_coord / (six * area) + shift; + let weight = area.abs(); + self.add_centroid(TwoDimensional, centroid, weight); + } + + fn add_centroid(&mut self, dimensions: Dimensions, centroid: Coord, weight: T) { + let weighted_centroid = WeightedCentroid { + dimensions, + weight, + accumulated: centroid * weight, + }; + self.add_weighted_centroid(weighted_centroid); + } + + fn add_weighted_centroid(&mut self, other: WeightedCentroid) { + match self.0.as_mut() { + Some(centroid) => centroid.add_assign(other), + None => self.0 = Some(other), + } + } +} + +// Aggregated state for accumulating the centroid of a geometry or collection of geometries. +struct WeightedCentroid { + weight: T, + accumulated: Coord, + /// Collections of Geometries can have different dimensionality. Centroids must be considered + /// separately by dimensionality. + /// + /// e.g. If I have several Points, adding a new `Point` will affect their centroid. + /// + /// However, because a Point is zero dimensional, it is infinitely small when compared to + /// any 2-D Polygon. Thus a Point will not affect the centroid of any GeometryCollection + /// containing a 2-D Polygon. + /// + /// So, when accumulating a centroid, we must track the dimensionality of the centroid + dimensions: Dimensions, +} + +impl WeightedCentroid { + fn add_assign(&mut self, b: WeightedCentroid) { + match self.dimensions.cmp(&b.dimensions) { + Ordering::Less => *self = b, + Ordering::Greater => {} + Ordering::Equal => { + self.accumulated = self.accumulated + b.accumulated; + self.weight = self.weight + b.weight; + } + } + } + + fn sub_assign(&mut self, b: WeightedCentroid) { + match self.dimensions.cmp(&b.dimensions) { + Ordering::Less => *self = b, + Ordering::Greater => {} + Ordering::Equal => { + self.accumulated = self.accumulated - b.accumulated; + self.weight = self.weight - b.weight; + } + } + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::{coord, line_string, point, polygon, wkt}; + + /// small helper to create a coordinate + fn c(x: T, y: T) -> Coord { + coord! { x: x, y: y } + } + + /// small helper to create a point + fn p(x: T, y: T) -> Point { + point! { x: x, y: y } + } + + // Tests: Centroid of LineString + #[test] + fn empty_linestring_test() { + let linestring: LineString = line_string![]; + let centroid = linestring.centroid(); + assert!(centroid.is_none()); + } + #[test] + fn linestring_one_point_test() { + let coord = coord! { + x: 40.02f64, + y: 116.34, + }; + let linestring = line_string![coord]; + let centroid = linestring.centroid(); + assert_eq!(centroid, Some(Point::from(coord))); + } + #[test] + fn linestring_test() { + let linestring = line_string![ + (x: 1., y: 1.), + (x: 7., y: 1.), + (x: 8., y: 1.), + (x: 9., y: 1.), + (x: 10., y: 1.), + (x: 11., y: 1.) + ]; + assert_eq!(linestring.centroid(), Some(point!(x: 6., y: 1. ))); + } + #[test] + fn linestring_with_repeated_point_test() { + let l1 = LineString::from(vec![p(1., 1.), p(1., 1.), p(1., 1.)]); + assert_eq!(l1.centroid(), Some(p(1., 1.))); + + let l2 = LineString::from(vec![p(2., 2.), p(2., 2.), p(2., 2.)]); + let mls = MultiLineString::new(vec![l1, l2]); + assert_eq!(mls.centroid(), Some(p(1.5, 1.5))); + } + // Tests: Centroid of MultiLineString + #[test] + fn empty_multilinestring_test() { + let mls: MultiLineString = MultiLineString::new(vec![]); + let centroid = mls.centroid(); + assert!(centroid.is_none()); + } + #[test] + fn multilinestring_with_empty_line_test() { + let mls: MultiLineString = MultiLineString::new(vec![line_string![]]); + let centroid = mls.centroid(); + assert!(centroid.is_none()); + } + #[test] + fn multilinestring_length_0_test() { + let coord = coord! { + x: 40.02f64, + y: 116.34, + }; + let mls: MultiLineString = MultiLineString::new(vec![ + line_string![coord], + line_string![coord], + line_string![coord], + ]); + assert_relative_eq!(mls.centroid().unwrap(), Point::from(coord)); + } + #[test] + fn multilinestring_one_line_test() { + let linestring = line_string![ + (x: 1., y: 1.), + (x: 7., y: 1.), + (x: 8., y: 1.), + (x: 9., y: 1.), + (x: 10., y: 1.), + (x: 11., y: 1.) + ]; + let mls: MultiLineString = MultiLineString::new(vec![linestring]); + assert_relative_eq!(mls.centroid().unwrap(), point! { x: 6., y: 1. }); + } + #[test] + fn multilinestring_test() { + let mls = wkt! { + MULTILINESTRING( + (0.0 0.0,1.0 10.0), + (1.0 10.0,2.0 0.0,3.0 1.0), + (-12.0 -100.0,7.0 8.0) + ) + }; + assert_relative_eq!( + mls.centroid().unwrap(), + point![x: -1.9097834383655845, y: -37.683866439745714] + ); + } + // Tests: Centroid of Polygon + #[test] + fn empty_polygon_test() { + let poly: Polygon = polygon![]; + assert!(poly.centroid().is_none()); + } + #[test] + fn polygon_one_point_test() { + let p = point![ x: 2., y: 1. ]; + let poly = polygon![p.0]; + assert_relative_eq!(poly.centroid().unwrap(), p); + } + + #[test] + fn centroid_polygon_numerical_stability() { + let polygon = { + use std::f64::consts::PI; + const NUM_VERTICES: usize = 10; + const ANGLE_INC: f64 = 2. * PI / NUM_VERTICES as f64; + + Polygon::new( + (0..NUM_VERTICES) + .map(|i| { + let angle = i as f64 * ANGLE_INC; + coord! { + x: angle.cos(), + y: angle.sin(), + } + }) + .collect::>() + .into(), + vec![], + ) + }; + + let centroid = polygon.centroid().unwrap(); + + let shift = coord! { x: 1.5e8, y: 1.5e8 }; + + use crate::map_coords::MapCoords; + let polygon = polygon.map_coords(|c| c + shift); + + let new_centroid = polygon.centroid().unwrap().map_coords(|c| c - shift); + debug!("centroid {:?}", centroid.0); + debug!("new_centroid {:?}", new_centroid.0); + assert_relative_eq!(centroid.0.x, new_centroid.0.x, max_relative = 0.0001); + assert_relative_eq!(centroid.0.y, new_centroid.0.y, max_relative = 0.0001); + } + + #[test] + fn polygon_test() { + let poly = polygon![ + (x: 0., y: 0.), + (x: 2., y: 0.), + (x: 2., y: 2.), + (x: 0., y: 2.), + (x: 0., y: 0.) + ]; + assert_relative_eq!(poly.centroid().unwrap(), point![x:1., y:1.]); + } + #[test] + fn polygon_hole_test() { + // hexagon + let p1 = wkt! { POLYGON( + (5.0 1.0,4.0 2.0,4.0 3.0,5.0 4.0,6.0 4.0,7.0 3.0,7.0 2.0,6.0 1.0,5.0 1.0), + (5.0 1.3,5.5 2.0,6.0 1.3,5.0 1.3), + (5.0 2.3,5.5 3.0,6.0 2.3,5.0 2.3) + ) }; + let centroid = p1.centroid().unwrap(); + assert_relative_eq!(centroid, point!(x: 5.5, y: 2.5518518518518523)); + } + #[test] + fn flat_polygon_test() { + let poly = wkt! { POLYGON((0. 1.,1. 1.,0. 1.)) }; + assert_eq!(poly.centroid(), Some(p(0.5, 1.))); + } + #[test] + fn multi_poly_with_flat_polygon_test() { + let multipoly = wkt! { MULTIPOLYGON(((0. 0.,1. 0.,0. 0.))) }; + assert_eq!(multipoly.centroid(), Some(p(0.5, 0.))); + } + #[test] + fn multi_poly_with_multiple_flat_polygon_test() { + let multipoly = wkt! { MULTIPOLYGON( + ((1. 1.,1. 3.,1. 1.)), + ((2. 2.,6. 2.,2. 2.)) + )}; + + assert_eq!(multipoly.centroid(), Some(p(3., 2.))); + } + #[test] + fn multi_poly_with_only_points_test() { + let p1 = wkt! { POLYGON((1. 1.,1. 1.,1. 1.)) }; + assert_eq!(p1.centroid(), Some(p(1., 1.))); + + let multipoly = wkt! { MULTIPOLYGON( + ((1. 1.,1. 1.,1. 1.)), + ((2. 2., 2. 2.,2. 2.)) + ) }; + assert_eq!(multipoly.centroid(), Some(p(1.5, 1.5))); + } + #[test] + fn multi_poly_with_one_ring_and_one_real_poly() { + // if the multipolygon is composed of a 'normal' polygon (with an area not null) + // and a ring (a polygon with a null area) + // the centroid of the multipolygon is the centroid of the 'normal' polygon + let normal = Polygon::new( + LineString::from(vec![p(1., 1.), p(1., 3.), p(3., 1.), p(1., 1.)]), + vec![], + ); + let flat = Polygon::new( + LineString::from(vec![p(2., 2.), p(6., 2.), p(2., 2.)]), + vec![], + ); + let multipoly = MultiPolygon::new(vec![normal.clone(), flat]); + assert_eq!(multipoly.centroid(), normal.centroid()); + } + #[test] + fn polygon_flat_interior_test() { + let poly = Polygon::new( + LineString::from(vec![p(0., 0.), p(0., 1.), p(1., 1.), p(1., 0.), p(0., 0.)]), + vec![LineString::from(vec![p(0., 0.), p(0., 1.), p(0., 0.)])], + ); + assert_eq!(poly.centroid(), Some(p(0.5, 0.5))); + } + #[test] + fn empty_interior_polygon_test() { + let poly = Polygon::new( + LineString::from(vec![p(0., 0.), p(0., 1.), p(1., 1.), p(1., 0.), p(0., 0.)]), + vec![LineString::new(vec![])], + ); + assert_eq!(poly.centroid(), Some(p(0.5, 0.5))); + } + #[test] + fn polygon_ring_test() { + let square = LineString::from(vec![p(0., 0.), p(0., 1.), p(1., 1.), p(1., 0.), p(0., 0.)]); + let poly = Polygon::new(square.clone(), vec![square]); + assert_eq!(poly.centroid(), Some(p(0.5, 0.5))); + } + #[test] + fn polygon_cell_test() { + // test the centroid of polygon with a null area + // this one a polygon with 2 interior polygon that makes a partition of the exterior + let square = LineString::from(vec![p(0., 0.), p(0., 2.), p(2., 2.), p(2., 0.), p(0., 0.)]); + let bottom = LineString::from(vec![p(0., 0.), p(2., 0.), p(2., 1.), p(0., 1.), p(0., 0.)]); + let top = LineString::from(vec![p(0., 1.), p(2., 1.), p(2., 2.), p(0., 2.), p(0., 1.)]); + let poly = Polygon::new(square, vec![top, bottom]); + assert_eq!(poly.centroid(), Some(p(1., 1.))); + } + // Tests: Centroid of MultiPolygon + #[test] + fn empty_multipolygon_polygon_test() { + assert!(MultiPolygon::::new(Vec::new()).centroid().is_none()); + } + + #[test] + fn multipolygon_one_polygon_test() { + let linestring = + LineString::from(vec![p(0., 0.), p(2., 0.), p(2., 2.), p(0., 2.), p(0., 0.)]); + let poly = Polygon::new(linestring, Vec::new()); + assert_eq!(MultiPolygon::new(vec![poly]).centroid(), Some(p(1., 1.))); + } + #[test] + fn multipolygon_two_polygons_test() { + let linestring = + LineString::from(vec![p(2., 1.), p(5., 1.), p(5., 3.), p(2., 3.), p(2., 1.)]); + let poly1 = Polygon::new(linestring, Vec::new()); + let linestring = + LineString::from(vec![p(7., 1.), p(8., 1.), p(8., 2.), p(7., 2.), p(7., 1.)]); + let poly2 = Polygon::new(linestring, Vec::new()); + let centroid = MultiPolygon::new(vec![poly1, poly2]).centroid().unwrap(); + assert_relative_eq!( + centroid, + point![x: 4.071428571428571, y: 1.9285714285714286] + ); + } + #[test] + fn multipolygon_two_polygons_of_opposite_clockwise_test() { + let linestring = LineString::from(vec![(0., 0.), (2., 0.), (2., 2.), (0., 2.), (0., 0.)]); + let poly1 = Polygon::new(linestring, Vec::new()); + let linestring = LineString::from(vec![(0., 0.), (-2., 0.), (-2., 2.), (0., 2.), (0., 0.)]); + let poly2 = Polygon::new(linestring, Vec::new()); + assert_relative_eq!( + MultiPolygon::new(vec![poly1, poly2]).centroid().unwrap(), + point![x: 0., y: 1.] + ); + } + #[test] + fn bounding_rect_test() { + let bounding_rect = Rect::new(coord! { x: 0., y: 50. }, coord! { x: 4., y: 100. }); + let point = point![x: 2., y: 75.]; + assert_eq!(point, bounding_rect.centroid()); + } + #[test] + fn line_test() { + let line1 = Line::new(c(0., 1.), c(1., 3.)); + assert_eq!(line1.centroid(), point![x: 0.5, y: 2.]); + } + #[test] + fn collection_weighting() { + let p0 = point!(x: 0.0, y: 0.0); + let p1 = point!(x: 2.0, y: 0.0); + let p2 = point!(x: 2.0, y: 2.0); + let p3 = point!(x: 0.0, y: 2.0); + + let multi_point = MultiPoint::new(vec![p0, p1, p2, p3]); + assert_eq!(multi_point.centroid().unwrap(), point!(x: 1.0, y: 1.0)); + + let collection = + GeometryCollection::new_from(vec![MultiPoint::new(vec![p1, p2, p3]).into(), p0.into()]); + + assert_eq!(collection.centroid().unwrap(), point!(x: 1.0, y: 1.0)); + } + #[test] + fn triangles() { + // boring triangle + assert_eq!( + Triangle::new(c(0., 0.), c(3., 0.), c(1.5, 3.)).centroid(), + point!(x: 1.5, y: 1.0) + ); + + // flat triangle + assert_eq!( + Triangle::new(c(0., 0.), c(3., 0.), c(1., 0.)).centroid(), + point!(x: 1.5, y: 0.0) + ); + + // flat triangle that's not axis-aligned + assert_eq!( + Triangle::new(c(0., 0.), c(3., 3.), c(1., 1.)).centroid(), + point!(x: 1.5, y: 1.5) + ); + + // triangle with some repeated points + assert_eq!( + Triangle::new(c(0., 0.), c(0., 0.), c(1., 0.)).centroid(), + point!(x: 0.5, y: 0.0) + ); + + // triangle with all repeated points + assert_eq!( + Triangle::new(c(0., 0.5), c(0., 0.5), c(0., 0.5)).centroid(), + point!(x: 0., y: 0.5) + ) + } + + #[test] + fn degenerate_triangle_like_ring() { + let triangle = Triangle::new(c(0., 0.), c(1., 1.), c(2., 2.)); + let poly: Polygon<_> = triangle.into(); + + let line = Line::new(c(0., 1.), c(1., 3.)); + + let g1 = GeometryCollection::new_from(vec![triangle.into(), line.into()]); + let g2 = GeometryCollection::new_from(vec![poly.into(), line.into()]); + assert_eq!(g1.centroid(), g2.centroid()); + } + + #[test] + fn degenerate_rect_like_ring() { + let rect = Rect::new(c(0., 0.), c(0., 4.)); + let poly: Polygon<_> = rect.into(); + + let line = Line::new(c(0., 1.), c(1., 3.)); + + let g1 = GeometryCollection::new_from(vec![rect.into(), line.into()]); + let g2 = GeometryCollection::new_from(vec![poly.into(), line.into()]); + assert_eq!(g1.centroid(), g2.centroid()); + } + + #[test] + fn rectangles() { + // boring rect + assert_eq!( + Rect::new(c(0., 0.), c(4., 4.)).centroid(), + point!(x: 2.0, y: 2.0) + ); + + // flat rect + assert_eq!( + Rect::new(c(0., 0.), c(4., 0.)).centroid(), + point!(x: 2.0, y: 0.0) + ); + + // rect with all repeated points + assert_eq!( + Rect::new(c(4., 4.), c(4., 4.)).centroid(), + point!(x: 4., y: 4.) + ); + + // collection with rect + let mut collection = GeometryCollection::new_from(vec![ + p(0., 0.).into(), + p(6., 0.).into(), + p(6., 6.).into(), + ]); + // sanity check + assert_eq!(collection.centroid().unwrap(), point!(x: 4., y: 2.)); + + // 0-d rect treated like point + collection.0.push(Rect::new(c(0., 6.), c(0., 6.)).into()); + assert_eq!(collection.centroid().unwrap(), point!(x: 3., y: 3.)); + + // 1-d rect treated like line. Since a line has higher dimensions than the rest of the + // collection, its centroid clobbers everything else in the collection. + collection.0.push(Rect::new(c(0., 0.), c(0., 2.)).into()); + assert_eq!(collection.centroid().unwrap(), point!(x: 0., y: 1.)); + + // 2-d has higher dimensions than the rest of the collection, so its centroid clobbers + // everything else in the collection. + collection + .0 + .push(Rect::new(c(10., 10.), c(11., 11.)).into()); + assert_eq!(collection.centroid().unwrap(), point!(x: 10.5, y: 10.5)); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/convert.rs b/rust/geo-generic-alg/src/algorithm/convert.rs new file mode 100644 index 00000000..88ab151b --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/convert.rs @@ -0,0 +1,75 @@ +use crate::{Coord, CoordNum, MapCoords}; + +/// Convert (infalliby) the type of a geometry’s coordinate value. +/// +/// # Examples +/// +/// ```rust +/// use geo::{Convert, LineString, line_string}; +/// +/// let line_string_32: LineString = line_string![ +/// (x: 5., y: 10.), +/// (x: 3., y: 1.), +/// (x: 8., y: 9.), +/// ]; +/// +/// let line_string_64: LineString = line_string_32.convert(); +/// ``` +/// +pub trait Convert { + type Output; + + fn convert(&self) -> Self::Output; +} +impl Convert for G +where + G: MapCoords, + U: From, +{ + type Output = >::Output; + + fn convert(&self) -> Self::Output { + self.map_coords(|Coord { x, y }| Coord { + x: x.into(), + y: y.into(), + }) + } +} + +/// Convert (fallibly) the type of a geometry’s coordinate value. +/// +/// # Examples +/// +/// ```rust +/// use geo::{TryConvert, LineString, line_string}; +/// +/// let line_string_64: LineString = line_string![ +/// (x: 5, y: 10), +/// (x: 3, y: 1), +/// (x: 8, y: 9), +/// ]; +/// +/// let line_string_32: Result, _> = line_string_64.try_convert(); +/// ``` +/// +pub trait TryConvert { + type Output; + + fn try_convert(&self) -> Self::Output; +} +impl TryConvert for G +where + G: MapCoords, + U: TryFrom, +{ + type Output = Result<>::Output, >::Error>; + + fn try_convert(&self) -> Self::Output { + self.try_map_coords(|Coord { x, y }| { + Ok(Coord { + x: x.try_into()?, + y: y.try_into()?, + }) + }) + } +} diff --git a/rust/geo-generic-alg/src/algorithm/convert_angle_unit.rs b/rust/geo-generic-alg/src/algorithm/convert_angle_unit.rs new file mode 100644 index 00000000..cbaa3dd1 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/convert_angle_unit.rs @@ -0,0 +1,84 @@ +use geo_types::Coord; +use geo_types::CoordFloat; + +use crate::{MapCoords, MapCoordsInPlace}; + +pub trait ToRadians: + Sized + MapCoords + MapCoordsInPlace +{ + fn to_radians(&self) -> Self { + self.map_coords(|Coord { x, y }| Coord { + x: x.to_radians(), + y: y.to_radians(), + }) + } + + fn to_radians_in_place(&mut self) { + self.map_coords_in_place(|Coord { x, y }| Coord { + x: x.to_radians(), + y: y.to_radians(), + }) + } +} +impl + MapCoordsInPlace> ToRadians for G {} + +pub trait ToDegrees: + Sized + MapCoords + MapCoordsInPlace +{ + fn to_degrees(&self) -> Self { + self.map_coords(|Coord { x, y }| Coord { + x: x.to_degrees(), + y: y.to_degrees(), + }) + } + + fn to_degrees_in_place(&mut self) { + self.map_coords_in_place(|Coord { x, y }| Coord { + x: x.to_degrees(), + y: y.to_degrees(), + }) + } +} +impl + MapCoordsInPlace> ToDegrees for G {} + +#[cfg(test)] +mod tests { + use std::f64::consts::PI; + + use approx::assert_relative_eq; + use geo_types::Line; + + use super::*; + + fn line_degrees_mock() -> Line { + Line::new((90.0, 180.), (0., -90.)) + } + + fn line_radians_mock() -> Line { + Line::new((PI / 2., PI), (0., -PI / 2.)) + } + + #[test] + fn converts_to_radians() { + assert_relative_eq!(line_radians_mock(), line_degrees_mock().to_radians()) + } + + #[test] + fn converts_to_radians_in_place() { + let mut line = line_degrees_mock(); + line.to_radians_in_place(); + assert_relative_eq!(line_radians_mock(), line) + } + + #[test] + fn converts_to_degrees() { + assert_relative_eq!(line_degrees_mock(), line_radians_mock().to_degrees()) + } + + #[test] + fn converts_to_degrees_in_place() { + let mut line = line_radians_mock(); + line.to_degrees_in_place(); + assert_relative_eq!(line_degrees_mock(), line) + } +} diff --git a/rust/geo-generic-alg/src/algorithm/coordinate_position.rs b/rust/geo-generic-alg/src/algorithm/coordinate_position.rs new file mode 100644 index 00000000..41310a70 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/coordinate_position.rs @@ -0,0 +1,892 @@ +use core::borrow::Borrow; +use std::cmp::Ordering; + +use crate::geometry::*; +use crate::intersects::{point_in_rect, value_in_between}; +use crate::kernels::*; +use crate::{BoundingRect, HasDimensions, Intersects}; +use crate::{GeoNum, GeometryCow}; +use geo_traits_ext::*; + +/// The position of a `Coord` relative to a `Geometry` +#[derive(PartialEq, Eq, Clone, Copy, Debug)] +pub enum CoordPos { + OnBoundary, + Inside, + Outside, +} + +/// Determine whether a `Coord` lies inside, outside, or on the boundary of a geometry. +/// +/// # Examples +/// +/// ```rust +/// use geo::{polygon, coord}; +/// use geo::coordinate_position::{CoordinatePosition, CoordPos}; +/// +/// let square_poly = polygon![(x: 0.0, y: 0.0), (x: 2.0, y: 0.0), (x: 2.0, y: 2.0), (x: 0.0, y: 2.0), (x: 0.0, y: 0.0)]; +/// +/// let inside_coord = coord! { x: 1.0, y: 1.0 }; +/// assert_eq!(square_poly.coordinate_position(&inside_coord), CoordPos::Inside); +/// +/// let boundary_coord = coord! { x: 0.0, y: 1.0 }; +/// assert_eq!(square_poly.coordinate_position(&boundary_coord), CoordPos::OnBoundary); +/// +/// let outside_coord = coord! { x: 5.0, y: 5.0 }; +/// assert_eq!(square_poly.coordinate_position(&outside_coord), CoordPos::Outside); +/// ``` +pub trait CoordinatePosition { + type Scalar: GeoNum; + fn coordinate_position(&self, coord: &Coord) -> CoordPos { + let mut is_inside = false; + let mut boundary_count = 0; + + self.calculate_coordinate_position(coord, &mut is_inside, &mut boundary_count); + + // “The boundary of an arbitrary collection of geometries whose interiors are disjoint + // consists of geometries drawn from the boundaries of the element geometries by + // application of the ‘mod 2’ union rule” + // + // ― OpenGIS Simple Feature Access § 6.1.15.1 + if boundary_count % 2 == 1 { + CoordPos::OnBoundary + } else if is_inside { + CoordPos::Inside + } else { + CoordPos::Outside + } + } + + // impls of this trait must: + // 1. set `is_inside = true` if `coord` is contained within the Interior of any component. + // 2. increment `boundary_count` for each component whose Boundary contains `coord`. + fn calculate_coordinate_position( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ); +} + +impl CoordinatePosition for G +where + G: GeoTraitExtWithTypeTag, + G: CoordinatePositionTrait, +{ + type Scalar = G::T; + + fn calculate_coordinate_position( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ) { + self.calculate_coordinate_position_trait(coord, is_inside, boundary_count); + } +} + +pub trait CoordinatePositionTrait { + type T: GeoNum; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ); +} + +impl CoordinatePositionTrait for C +where + T: GeoNum, + C: CoordTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + _boundary_count: &mut usize, + ) { + if &self.geo_coord() == coord { + *is_inside = true; + } + } +} + +impl CoordinatePositionTrait for P +where + T: GeoNum, + P: PointTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + _boundary_count: &mut usize, + ) { + if let Some(point_coord) = self.geo_coord() { + if &point_coord == coord { + *is_inside = true; + } + } + } +} + +impl CoordinatePositionTrait for L +where + T: GeoNum, + L: LineTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ) { + let start = self.start_coord(); + let end = self.end_coord(); + + // degenerate line is a point + if start == end { + self.start_ext() + .calculate_coordinate_position(coord, is_inside, boundary_count); + return; + } + + if coord == &start || coord == &end { + *boundary_count += 1; + } else if self.intersects(coord) { + *is_inside = true; + } + } +} + +impl CoordinatePositionTrait for LS +where + T: GeoNum, + LS: LineStringTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ) { + let num_coords = self.num_coords(); + if num_coords < 2 { + debug_assert!(false, "invalid line string with less than 2 coords"); + return; + } + + if num_coords == 2 { + // line string with two coords is just a line + unsafe { + let start = self.geo_coord_unchecked(0); + let end = self.geo_coord_unchecked(1); + Line::new(start, end).calculate_coordinate_position( + coord, + is_inside, + boundary_count, + ); + } + return; + } + + // optimization: return early if there's no chance of an intersection + // since bounding rect is not empty, we can safely `unwrap`. + if !self.bounding_rect().unwrap().intersects(coord) { + return; + } + + // A closed linestring has no boundary, per SFS + if !self.is_closed() { + // since we have at least two coords, first and last will exist + unsafe { + let first = self.geo_coord_unchecked(0); + let last = self.geo_coord_unchecked(num_coords - 1); + if coord == &first || coord == &last { + *boundary_count += 1; + return; + } + } + } + + if self.intersects(coord) { + // We've already checked for "Boundary" condition, so if there's an intersection at + // this point, coord must be on the interior + *is_inside = true + } + } +} + +impl CoordinatePositionTrait for TT +where + T: GeoNum, + TT: TriangleTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ) { + *is_inside = self + .to_lines() + .map(|l| { + let orientation = T::Ker::orient2d(l.start, l.end, *coord); + if orientation == Orientation::Collinear + && point_in_rect(*coord, l.start, l.end) + && coord.x != l.end.x + { + *boundary_count += 1; + } + orientation + }) + .windows(2) + .all(|win| win[0] == win[1] && win[0] != Orientation::Collinear); + } +} + +impl CoordinatePositionTrait for R +where + T: GeoNum, + R: RectTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ) { + let mut boundary = false; + let min = self.min_coord(); + + match coord.x.partial_cmp(&min.x).unwrap() { + Ordering::Less => return, + Ordering::Equal => boundary = true, + Ordering::Greater => {} + } + match coord.y.partial_cmp(&min.y).unwrap() { + Ordering::Less => return, + Ordering::Equal => boundary = true, + Ordering::Greater => {} + } + + let max = self.max_coord(); + + match max.x.partial_cmp(&coord.x).unwrap() { + Ordering::Less => return, + Ordering::Equal => boundary = true, + Ordering::Greater => {} + } + match max.y.partial_cmp(&coord.y).unwrap() { + Ordering::Less => return, + Ordering::Equal => boundary = true, + Ordering::Greater => {} + } + + if boundary { + *boundary_count += 1; + } else { + *is_inside = true; + } + } +} + +impl CoordinatePositionTrait for MP +where + T: GeoNum, + MP: MultiPointTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + _boundary_count: &mut usize, + ) { + if self + .points_ext() + .any(|p| p.geo_coord().is_some_and(|c| &c == coord)) + { + *is_inside = true; + } + } +} + +impl CoordinatePositionTrait for P +where + T: GeoNum, + P: PolygonTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ) { + let Some(exterior) = self.exterior_ext() else { + return; + }; + + if self.is_empty() { + return; + } + + match coord_pos_relative_to_ring(*coord, &exterior) { + CoordPos::Outside => {} + CoordPos::OnBoundary => { + *boundary_count += 1; + } + CoordPos::Inside => { + for hole in self.interiors_ext() { + match coord_pos_relative_to_ring(*coord, &hole) { + CoordPos::Outside => {} + CoordPos::OnBoundary => { + *boundary_count += 1; + return; + } + CoordPos::Inside => { + return; + } + } + } + // the coord is *outside* the interior holes, so it's *inside* the polygon + *is_inside = true; + } + } + } +} + +impl CoordinatePositionTrait for MLS +where + T: GeoNum, + MLS: MultiLineStringTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ) { + for line_string in self.line_strings_ext() { + line_string.calculate_coordinate_position_trait(coord, is_inside, boundary_count); + } + } +} + +impl CoordinatePositionTrait for MP +where + T: GeoNum, + MP: MultiPolygonTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ) { + for polygon in self.polygons_ext() { + polygon.calculate_coordinate_position_trait(coord, is_inside, boundary_count); + } + } +} + +impl CoordinatePositionTrait for GC +where + T: GeoNum, + GC: GeometryCollectionTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ) { + for geometry in self.geometries_ext() { + geometry.calculate_coordinate_position_trait(coord, is_inside, boundary_count); + } + } +} + +fn geometry_calculate_coordinate_position( + g: &G, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, +) where + T: GeoNum, + G: GeometryTraitExt, +{ + if g.is_collection() { + for g_inner in g.geometries_ext() { + geometry_calculate_coordinate_position( + g_inner.borrow(), + coord, + is_inside, + boundary_count, + ); + } + } else { + match g.as_type_ext() { + GeometryTypeExt::Point(g) => { + g.calculate_coordinate_position_trait(coord, is_inside, boundary_count) + } + GeometryTypeExt::Line(g) => { + g.calculate_coordinate_position_trait(coord, is_inside, boundary_count) + } + GeometryTypeExt::LineString(g) => { + g.calculate_coordinate_position_trait(coord, is_inside, boundary_count) + } + GeometryTypeExt::Polygon(g) => { + g.calculate_coordinate_position_trait(coord, is_inside, boundary_count) + } + GeometryTypeExt::MultiPoint(g) => { + g.calculate_coordinate_position_trait(coord, is_inside, boundary_count) + } + GeometryTypeExt::MultiLineString(g) => { + g.calculate_coordinate_position_trait(coord, is_inside, boundary_count) + } + GeometryTypeExt::MultiPolygon(g) => { + g.calculate_coordinate_position_trait(coord, is_inside, boundary_count) + } + GeometryTypeExt::Rect(g) => { + g.calculate_coordinate_position_trait(coord, is_inside, boundary_count) + } + GeometryTypeExt::Triangle(g) => { + g.calculate_coordinate_position_trait(coord, is_inside, boundary_count) + } + } + } +} + +impl CoordinatePositionTrait for G +where + T: GeoNum, + G: GeometryTraitExt, +{ + type T = T; + + fn calculate_coordinate_position_trait( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize, + ) { + geometry_calculate_coordinate_position(self, coord, is_inside, boundary_count); + } +} + +impl CoordinatePosition for GeometryCow<'_, T> { + type Scalar = T; + + crate::geometry_cow_delegate_impl! { + fn calculate_coordinate_position( + &self, + coord: &Coord, + is_inside: &mut bool, + boundary_count: &mut usize) -> (); + } +} + +/// Calculate the position of a `Coord` relative to a +/// closed `LineString`. +pub fn coord_pos_relative_to_ring(coord: Coord, linestring: &LS) -> CoordPos +where + T: GeoNum, + LS: LineStringTraitExt, +{ + debug_assert!(linestring.is_closed()); + + // LineString without points + if linestring.num_coords() == 0 { + return CoordPos::Outside; + } + if linestring.num_coords() == 1 { + // If LineString has one point, it will not generate + // any lines. So, we handle this edge case separately. + return if coord == unsafe { linestring.geo_coord_unchecked(0) } { + CoordPos::OnBoundary + } else { + CoordPos::Outside + }; + } + + // Use winding number algorithm with on boundary short-cicuit + // See: https://en.wikipedia.org/wiki/Point_in_polygon#Winding_number_algorithm + let mut winding_number = 0; + for line in linestring.lines() { + // Edge Crossing Rules: + // 1. an upward edge includes its starting endpoint, and excludes its final endpoint; + // 2. a downward edge excludes its starting endpoint, and includes its final endpoint; + // 3. horizontal edges are excluded + // 4. the edge-ray intersection point must be strictly right of the coord. + if line.start.y <= coord.y { + if line.end.y >= coord.y { + let o = T::Ker::orient2d(line.start, line.end, coord); + if o == Orientation::CounterClockwise && line.end.y != coord.y { + winding_number += 1 + } else if o == Orientation::Collinear + && value_in_between(coord.x, line.start.x, line.end.x) + { + return CoordPos::OnBoundary; + } + }; + } else if line.end.y <= coord.y { + let o = T::Ker::orient2d(line.start, line.end, coord); + if o == Orientation::Clockwise { + winding_number -= 1 + } else if o == Orientation::Collinear + && value_in_between(coord.x, line.start.x, line.end.x) + { + return CoordPos::OnBoundary; + } + } + } + if winding_number == 0 { + CoordPos::Outside + } else { + CoordPos::Inside + } +} + +#[cfg(test)] +mod test { + use geo_types::coord; + + use super::*; + use crate::{line_string, point, polygon}; + + #[test] + fn test_empty_poly() { + let square_poly: Polygon = Polygon::new(LineString::new(vec![]), vec![]); + assert_eq!( + square_poly.coordinate_position(&Coord::zero()), + CoordPos::Outside + ); + } + + #[test] + fn test_simple_poly() { + let square_poly = polygon![(x: 0.0, y: 0.0), (x: 2.0, y: 0.0), (x: 2.0, y: 2.0), (x: 0.0, y: 2.0), (x: 0.0, y: 0.0)]; + + let inside_coord = coord! { x: 1.0, y: 1.0 }; + assert_eq!( + square_poly.coordinate_position(&inside_coord), + CoordPos::Inside + ); + + let vertex_coord = coord! { x: 0.0, y: 0.0 }; + assert_eq!( + square_poly.coordinate_position(&vertex_coord), + CoordPos::OnBoundary + ); + + let boundary_coord = coord! { x: 0.0, y: 1.0 }; + assert_eq!( + square_poly.coordinate_position(&boundary_coord), + CoordPos::OnBoundary + ); + + let outside_coord = coord! { x: 5.0, y: 5.0 }; + assert_eq!( + square_poly.coordinate_position(&outside_coord), + CoordPos::Outside + ); + } + + #[test] + fn test_poly_interior() { + let poly = polygon![ + exterior: [ + (x: 11., y: 11.), + (x: 20., y: 11.), + (x: 20., y: 20.), + (x: 11., y: 20.), + (x: 11., y: 11.), + ], + interiors: [ + [ + (x: 13., y: 13.), + (x: 13., y: 17.), + (x: 17., y: 17.), + (x: 17., y: 13.), + (x: 13., y: 13.), + ] + ], + ]; + + let inside_hole = coord! { x: 14.0, y: 14.0 }; + assert_eq!(poly.coordinate_position(&inside_hole), CoordPos::Outside); + + let outside_poly = coord! { x: 30.0, y: 30.0 }; + assert_eq!(poly.coordinate_position(&outside_poly), CoordPos::Outside); + + let on_outside_border = coord! { x: 20.0, y: 15.0 }; + assert_eq!( + poly.coordinate_position(&on_outside_border), + CoordPos::OnBoundary + ); + + let on_inside_border = coord! { x: 13.0, y: 15.0 }; + assert_eq!( + poly.coordinate_position(&on_inside_border), + CoordPos::OnBoundary + ); + + let inside_coord = coord! { x: 12.0, y: 12.0 }; + assert_eq!(poly.coordinate_position(&inside_coord), CoordPos::Inside); + } + + #[test] + fn test_simple_line() { + use crate::point; + let line = Line::new(point![x: 0.0, y: 0.0], point![x: 10.0, y: 10.0]); + + let start = coord! { x: 0.0, y: 0.0 }; + assert_eq!(line.coordinate_position(&start), CoordPos::OnBoundary); + + let end = coord! { x: 10.0, y: 10.0 }; + assert_eq!(line.coordinate_position(&end), CoordPos::OnBoundary); + + let interior = coord! { x: 5.0, y: 5.0 }; + assert_eq!(line.coordinate_position(&interior), CoordPos::Inside); + + let outside = coord! { x: 6.0, y: 5.0 }; + assert_eq!(line.coordinate_position(&outside), CoordPos::Outside); + } + + #[test] + fn test_degenerate_line() { + let line = Line::new(point![x: 0.0, y: 0.0], point![x: 0.0, y: 0.0]); + + let start = coord! { x: 0.0, y: 0.0 }; + assert_eq!(line.coordinate_position(&start), CoordPos::Inside); + + let outside = coord! { x: 10.0, y: 10.0 }; + assert_eq!(line.coordinate_position(&outside), CoordPos::Outside); + } + + #[test] + fn test_point() { + let p1 = point![x: 2.0, y: 0.0]; + + let c1 = coord! { x: 2.0, y: 0.0 }; + let c2 = coord! { x: 3.0, y: 3.0 }; + + assert_eq!(p1.coordinate_position(&c1), CoordPos::Inside); + assert_eq!(p1.coordinate_position(&c2), CoordPos::Outside); + + assert_eq!(c1.coordinate_position(&c1), CoordPos::Inside); + assert_eq!(c1.coordinate_position(&c2), CoordPos::Outside); + } + + #[test] + fn test_simple_line_string() { + let line_string = + line_string![(x: 0.0, y: 0.0), (x: 1.0, y: 1.0), (x: 2.0, y: 0.0), (x: 3.0, y: 0.0)]; + + let start = Coord::zero(); + assert_eq!( + line_string.coordinate_position(&start), + CoordPos::OnBoundary + ); + + let midpoint = coord! { x: 0.5, y: 0.5 }; + assert_eq!(line_string.coordinate_position(&midpoint), CoordPos::Inside); + + let vertex = coord! { x: 2.0, y: 0.0 }; + assert_eq!(line_string.coordinate_position(&vertex), CoordPos::Inside); + + let end = coord! { x: 3.0, y: 0.0 }; + assert_eq!(line_string.coordinate_position(&end), CoordPos::OnBoundary); + + let outside = coord! { x: 3.0, y: 1.0 }; + assert_eq!(line_string.coordinate_position(&outside), CoordPos::Outside); + } + + #[test] + fn test_degenerate_line_strings() { + let line_string = line_string![(x: 0.0, y: 0.0), (x: 0.0, y: 0.0)]; + + let start = Coord::zero(); + assert_eq!(line_string.coordinate_position(&start), CoordPos::Inside); + + let line_string = line_string![(x: 0.0, y: 0.0), (x: 2.0, y: 0.0)]; + + let start = Coord::zero(); + assert_eq!( + line_string.coordinate_position(&start), + CoordPos::OnBoundary + ); + } + + #[test] + fn test_closed_line_string() { + let line_string = line_string![(x: 0.0, y: 0.0), (x: 1.0, y: 1.0), (x: 2.0, y: 0.0), (x: 3.0, y: 2.0), (x: 0.0, y: 2.0), (x: 0.0, y: 0.0)]; + + // sanity check + assert!(line_string.is_closed()); + + // closed line strings have no boundary + let start = Coord::zero(); + assert_eq!(line_string.coordinate_position(&start), CoordPos::Inside); + + let midpoint = coord! { x: 0.5, y: 0.5 }; + assert_eq!(line_string.coordinate_position(&midpoint), CoordPos::Inside); + + let outside = coord! { x: 3.0, y: 1.0 }; + assert_eq!(line_string.coordinate_position(&outside), CoordPos::Outside); + } + + #[test] + fn test_boundary_rule() { + let multi_line_string = MultiLineString::new(vec![ + // first two lines have same start point but different end point + line_string![(x: 0.0, y: 0.0), (x: 1.0, y: 1.0)], + line_string![(x: 0.0, y: 0.0), (x: -1.0, y: -1.0)], + // third line has its own start point, but it's end touches the middle of first line + line_string![(x: 0.0, y: 1.0), (x: 0.5, y: 0.5)], + // fourth and fifth have independent start points, but both end at the middle of the + // second line + line_string![(x: 0.0, y: -1.0), (x: -0.5, y: -0.5)], + line_string![(x: 0.0, y: -2.0), (x: -0.5, y: -0.5)], + ]); + + let outside_of_all = coord! { x: 123.0, y: 123.0 }; + assert_eq!( + multi_line_string.coordinate_position(&outside_of_all), + CoordPos::Outside + ); + + let end_of_one_line = coord! { x: -1.0, y: -1.0 }; + assert_eq!( + multi_line_string.coordinate_position(&end_of_one_line), + CoordPos::OnBoundary + ); + + // in boundary of first and second, so considered *not* in the boundary by mod 2 rule + let shared_start = Coord::zero(); + assert_eq!( + multi_line_string.coordinate_position(&shared_start), + CoordPos::Outside + ); + + // *in* the first line, on the boundary of the third line + let one_end_plus_midpoint = coord! { x: 0.5, y: 0.5 }; + assert_eq!( + multi_line_string.coordinate_position(&one_end_plus_midpoint), + CoordPos::OnBoundary + ); + + // *in* the first line, on the *boundary* of the fourth and fifth line + let two_ends_plus_midpoint = coord! { x: -0.5, y: -0.5 }; + assert_eq!( + multi_line_string.coordinate_position(&two_ends_plus_midpoint), + CoordPos::Inside + ); + } + + #[test] + fn test_rect() { + let rect = Rect::new((0.0, 0.0), (10.0, 10.0)); + assert_eq!( + rect.coordinate_position(&coord! { x: 5.0, y: 5.0 }), + CoordPos::Inside + ); + assert_eq!( + rect.coordinate_position(&coord! { x: 0.0, y: 5.0 }), + CoordPos::OnBoundary + ); + assert_eq!( + rect.coordinate_position(&coord! { x: 15.0, y: 15.0 }), + CoordPos::Outside + ); + } + + #[test] + fn test_triangle() { + let triangle = Triangle::new((0.0, 0.0).into(), (5.0, 10.0).into(), (10.0, 0.0).into()); + assert_eq!( + triangle.coordinate_position(&coord! { x: 5.0, y: 5.0 }), + CoordPos::Inside + ); + assert_eq!( + triangle.coordinate_position(&coord! { x: 2.5, y: 5.0 }), + CoordPos::OnBoundary + ); + assert_eq!( + triangle.coordinate_position(&coord! { x: 2.49, y: 5.0 }), + CoordPos::Outside + ); + } + + #[test] + fn test_collection() { + let triangle = Triangle::new((0.0, 0.0).into(), (5.0, 10.0).into(), (10.0, 0.0).into()); + let rect = Rect::new((0.0, 0.0), (10.0, 10.0)); + let collection = GeometryCollection::new_from(vec![triangle.into(), rect.into()]); + let geom = Geometry::GeometryCollection(collection.clone()); + + // outside of both + assert_eq!( + collection.coordinate_position(&coord! { x: 15.0, y: 15.0 }), + CoordPos::Outside + ); + assert_eq!( + geom.coordinate_position(&coord! { x: 15.0, y: 15.0 }), + CoordPos::Outside + ); + + // inside both + assert_eq!( + collection.coordinate_position(&coord! { x: 5.0, y: 5.0 }), + CoordPos::Inside + ); + assert_eq!( + geom.coordinate_position(&coord! { x: 5.0, y: 5.0 }), + CoordPos::Inside + ); + + // inside one, boundary of other + assert_eq!( + collection.coordinate_position(&coord! { x: 2.5, y: 5.0 }), + CoordPos::OnBoundary + ); + assert_eq!( + geom.coordinate_position(&coord! { x: 2.5, y: 5.0 }), + CoordPos::OnBoundary + ); + + // boundary of both + assert_eq!( + collection.coordinate_position(&coord! { x: 5.0, y: 10.0 }), + CoordPos::Outside + ); + assert_eq!( + geom.coordinate_position(&coord! { x: 5.0, y: 10.0 }), + CoordPos::Outside + ); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/coords_iter.rs b/rust/geo-generic-alg/src/algorithm/coords_iter.rs new file mode 100644 index 00000000..97b5d0df --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/coords_iter.rs @@ -0,0 +1,1531 @@ +use std::borrow::Borrow; +use std::option; +use std::slice; + +use geo_traits::*; +use geo_traits_ext::*; + +use crate::geometry::*; +use crate::{coord, CoordNum}; + +use std::{iter, marker}; + +type CoordinateChainOnce = iter::Chain>, iter::Once>>; + +/// Iterate over geometry coordinates. +pub trait CoordsIter { + type Iter<'a>: Iterator> + where + Self: 'a; + type ExteriorIter<'a>: Iterator> + where + Self: 'a; + type Scalar: CoordNum; + + /// Iterate over all exterior and (if any) interior coordinates of a geometry. + /// + /// # Examples + /// + /// ``` + /// use geo::coords_iter::CoordsIter; + /// + /// let multi_point = geo::MultiPoint::new(vec![ + /// geo::point!(x: -10., y: 0.), + /// geo::point!(x: 20., y: 20.), + /// geo::point!(x: 30., y: 40.), + /// ]); + /// + /// let mut iter = multi_point.coords_iter(); + /// assert_eq!(Some(geo::coord! { x: -10., y: 0. }), iter.next()); + /// assert_eq!(Some(geo::coord! { x: 20., y: 20. }), iter.next()); + /// assert_eq!(Some(geo::coord! { x: 30., y: 40. }), iter.next()); + /// assert_eq!(None, iter.next()); + /// ``` + fn coords_iter(&self) -> Self::Iter<'_>; + + /// Return the number of coordinates in a geometry. + /// + /// # Examples + /// + /// ``` + /// use geo::coords_iter::CoordsIter; + /// use geo::line_string; + /// + /// let ls = line_string![ + /// (x: 1., y: 2.), + /// (x: 23., y: 82.), + /// (x: -1., y: 0.), + /// ]; + /// + /// assert_eq!(3, ls.coords_count()); + /// ``` + fn coords_count(&self) -> usize; + + /// Iterate over all exterior coordinates of a geometry. + /// + /// # Examples + /// + /// ``` + /// use geo::coords_iter::CoordsIter; + /// use geo::polygon; + /// + /// // a diamond shape + /// let polygon = polygon![ + /// exterior: [ + /// (x: 1.0, y: 0.0), + /// (x: 2.0, y: 1.0), + /// (x: 1.0, y: 2.0), + /// (x: 0.0, y: 1.0), + /// (x: 1.0, y: 0.0), + /// ], + /// interiors: [ + /// [ + /// (x: 1.0, y: 0.5), + /// (x: 0.5, y: 1.0), + /// (x: 1.0, y: 1.5), + /// (x: 1.5, y: 1.0), + /// (x: 1.0, y: 0.5), + /// ], + /// ], + /// ]; + /// + /// let mut iter = polygon.exterior_coords_iter(); + /// assert_eq!(Some(geo::coord! { x: 1., y: 0. }), iter.next()); + /// assert_eq!(Some(geo::coord! { x: 2., y: 1. }), iter.next()); + /// assert_eq!(Some(geo::coord! { x: 1., y: 2. }), iter.next()); + /// assert_eq!(Some(geo::coord! { x: 0., y: 1. }), iter.next()); + /// assert_eq!(Some(geo::coord! { x: 1., y: 0. }), iter.next()); + /// assert_eq!(None, iter.next()); + /// ``` + fn exterior_coords_iter(&self) -> Self::ExteriorIter<'_>; +} + +impl CoordsIter for G +where + G: GeoTraitExtWithTypeTag + CoordsIterTrait, +{ + type Iter<'a> + = G::Iter<'a> + where + G: 'a; + type ExteriorIter<'a> + = G::ExteriorIter<'a> + where + G: 'a; + type Scalar = G::Scalar; + + fn coords_iter(&self) -> Self::Iter<'_> { + self.coords_iter_trait() + } + + fn coords_count(&self) -> usize { + self.coords_count_trait() + } + + fn exterior_coords_iter(&self) -> Self::ExteriorIter<'_> { + self.exterior_coords_iter_trait() + } +} + +pub trait CoordsIterTrait { + type Scalar: CoordNum; + + type Iter<'a>: Iterator> + where + Self: 'a; + + type ExteriorIter<'a>: Iterator> + where + Self: 'a; + + fn coords_iter_trait(&self) -> Self::Iter<'_>; + + fn coords_count_trait(&self) -> usize; + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_>; +} + +// ┌──────────────────────────┐ +// │ Implementation for Coord │ +// └──────────────────────────┘ + +impl CoordsIterTrait for C +where + T: CoordNum, + C: CoordTraitExt, +{ + type Iter<'a> + = iter::Once> + where + Self: 'a; + + type ExteriorIter<'a> + = iter::Once> + where + Self: 'a; + + type Scalar = T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + iter::once(self.geo_coord()) + } + + fn coords_count_trait(&self) -> usize { + 1 + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + self.coords_iter_trait() + } +} + +// ┌──────────────────────────┐ +// │ Implementation for Point │ +// └──────────────────────────┘ + +impl CoordsIterTrait for P +where + T: CoordNum, + P: PointTraitExt, +{ + type Iter<'a> + = option::IntoIter> + where + Self: 'a; + + type ExteriorIter<'a> + = Self::Iter<'a> + where + Self: 'a; + + type Scalar = T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + self.geo_coord().into_iter() + } + + fn coords_count_trait(&self) -> usize { + self.coord().map_or(0, |_| 1) + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + self.geo_coord().into_iter() + } +} + +// ┌─────────────────────────┐ +// │ Implementation for Line │ +// └─────────────────────────┘ + +impl CoordsIterTrait for L +where + T: CoordNum, + L: LineTraitExt, +{ + type Iter<'a> + = iter::Chain>, iter::Once>> + where + Self: 'a; + + type ExteriorIter<'a> + = Self::Iter<'a> + where + Self: 'a; + + type Scalar = T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + iter::once(self.start_coord()).chain(iter::once(self.end_coord())) + } + + fn coords_count_trait(&self) -> usize { + 2 + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + self.coords_iter_trait() + } +} + +// ┌───────────────────────────────┐ +// │ Implementation for LineString │ +// └───────────────────────────────┘ + +pub struct LineStringCoordIter +where + LS: LineStringTraitExt, + LSB: Borrow, +{ + ls: Option, + idx: usize, + limit: usize, + _marker: marker::PhantomData, +} + +impl LineStringCoordIter +where + LS: LineStringTraitExt, + LSB: Borrow, +{ + fn new(ls_opt: Option) -> Self { + match &ls_opt { + Some(ls) => { + let limit = ls.borrow().num_coords(); + Self { + ls: ls_opt, + idx: 0, + limit, + _marker: marker::PhantomData, + } + } + None => Self { + ls: None, + idx: 0, + limit: 0, + _marker: marker::PhantomData, + }, + } + } +} + +impl Iterator for LineStringCoordIter +where + LS: LineStringTraitExt, + LSB: Borrow, +{ + type Item = Coord; + + fn next(&mut self) -> Option { + if self.idx >= self.limit { + None + } else { + let coord = unsafe { + // unwrap should be safe here. If ls is None, limit is 0, and we would not reach here. + // We also have self.idx < self.limit, so we are not accessing out of bounds. + self.ls + .as_ref() + .unwrap() + .borrow() + .geo_coord_unchecked(self.idx) + }; + self.idx += 1; + Some(coord) + } + } +} + +impl CoordsIterTrait for LS +where + T: CoordNum, + LS: LineStringTraitExt, +{ + type Iter<'a> + = LineStringCoordIter + where + Self: 'a; + + type ExteriorIter<'a> + = Self::Iter<'a> + where + Self: 'a; + + type Scalar = T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + LineStringCoordIter::new(Some(self)) + } + + fn coords_count_trait(&self) -> usize { + self.num_coords() + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + self.coords_iter_trait() + } +} + +// ┌────────────────────────────┐ +// │ Implementation for Polygon │ +// └────────────────────────────┘ + +/// State for the PolygonIter +enum PolygonIterState { + Exterior, + Interior(usize), // Holds the current interior ring index + Done, +} + +/// Helper iterator for Polygon coordinates (exterior + interiors) +pub struct PolygonCoordIter<'a, P, BP> +where + P: PolygonTraitExt, + BP: Borrow

, +{ + polygon: BP, + state: PolygonIterState, + ring_idx: usize, + /// Current coordinate index within the current ring + coord_index: usize, + ring_size: usize, + marker: marker::PhantomData<&'a P>, +} + +impl PolygonCoordIter<'_, P, BP> +where + P: PolygonTraitExt, + BP: Borrow

, +{ + fn new(polygon: BP) -> Self { + let ring_size; + let ring_idx; + let initial_state = if let Some(exterior) = polygon.borrow().exterior_ext() { + ring_size = exterior.num_coords(); + ring_idx = 0; + PolygonIterState::Exterior + } else if let Some(interior) = polygon.borrow().interior_ext(0) { + ring_size = interior.num_coords(); + ring_idx = 1; + PolygonIterState::Interior(0) + } else { + ring_size = 0; + ring_idx = 0; + PolygonIterState::Done + }; + + Self { + polygon, + state: initial_state, + ring_idx, + coord_index: 0, + ring_size, + marker: marker::PhantomData, + } + } + + fn start_interior_ring(&mut self, ring_idx: usize, num_coords: usize) { + self.state = PolygonIterState::Interior(ring_idx); + self.ring_idx = ring_idx; + self.coord_index = 0; + self.ring_size = num_coords; + } +} + +impl Iterator for PolygonCoordIter<'_, P, BP> +where + P: PolygonTraitExt, + BP: Borrow

, +{ + type Item = Coord; + + fn next(&mut self) -> Option { + let (ring_idx, ring_size) = { + let ring_opt = if self.ring_idx == 0 { + self.polygon.borrow().exterior_ext() + } else { + self.polygon.borrow().interior_ext(self.ring_idx - 1) + }; + if let Some(ring) = ring_opt { + if self.coord_index < self.ring_size { + let coord = unsafe { ring.geo_coord_unchecked(self.coord_index) }; + self.coord_index += 1; + return Some(coord); + } else { + // Finished this ring, move to next + match self.state { + PolygonIterState::Exterior => { + let interior_opt = self.polygon.borrow().interior_ext(0); + match interior_opt { + Some(interior) => (1, interior.num_coords()), + None => return None, + } + } + PolygonIterState::Interior(ring_idx) => { + let interior_opt = self.polygon.borrow().interior_ext(ring_idx + 1); + match interior_opt { + Some(interior) => (ring_idx + 2, interior.num_coords()), + None => return None, + } + } + PolygonIterState::Done => return None, + } + } + } else { + // No more rings + return None; + } + }; + + self.start_interior_ring(ring_idx, ring_size); + self.next() + } +} + +impl CoordsIterTrait for P +where + T: CoordNum, + P: PolygonTraitExt, +{ + type Iter<'a> + = PolygonCoordIter<'a, P, &'a P> + where + Self: 'a; + + type ExteriorIter<'a> + = LineStringCoordIter, P::RingTypeExt<'a>> + where + Self: 'a; + + type Scalar = T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + PolygonCoordIter::new(self) + } + + // Return the number of coordinates in the `Polygon`. + fn coords_count_trait(&self) -> usize { + self.exterior_ext() + .map_or(0, |exterior| exterior.num_coords()) + + self.interiors_ext().map(|i| i.num_coords()).sum::() + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + let exterior_opt = self.exterior_ext(); + LineStringCoordIter::new(exterior_opt) + } +} + +// ┌───────────────────────────────┐ +// │ Implementation for MultiPoint │ +// └───────────────────────────────┘ + +pub struct MultiPointCoordIter<'a, MP> +where + MP: MultiPointTraitExt, +{ + mp: &'a MP, + idx: usize, + limit: usize, +} + +impl<'a, MP> MultiPointCoordIter<'a, MP> +where + MP: MultiPointTraitExt, +{ + fn new(mp: &'a MP) -> Self { + let limit = mp.num_points(); + Self { mp, idx: 0, limit } + } +} + +impl Iterator for MultiPointCoordIter<'_, MP> +where + MP: MultiPointTraitExt, +{ + type Item = Coord; + + fn next(&mut self) -> Option { + loop { + if self.idx >= self.limit { + return None; + } + let coord = unsafe { self.mp.geo_coord_unchecked(self.idx) }; + self.idx += 1; + if coord.is_some() { + return coord; + } + } + } +} + +impl CoordsIterTrait for MP +where + T: CoordNum, + MP: MultiPointTraitExt, +{ + type Iter<'a> + = MultiPointCoordIter<'a, MP> + where + Self: 'a; + + type ExteriorIter<'a> + = Self::Iter<'a> + where + Self: 'a; + + type Scalar = T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + MultiPointCoordIter::new(self) + } + + fn coords_count_trait(&self) -> usize { + self.points_ext() + .filter_map(|p| p.coord_ext().map(|_c| 1)) + .count() + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + self.coords_iter_trait() + } +} + +// ┌────────────────────────────────────┐ +// │ Implementation for MultiLineString │ +// └────────────────────────────────────┘ + +pub struct MultiLineStringCoordIter<'a, MLS> +where + MLS: MultiLineStringTraitExt, +{ + ml: &'a MLS, + idx_ls: usize, + ls_opt: Option>, + idx: usize, + limit: usize, +} + +impl<'a, T, MLS> MultiLineStringCoordIter<'a, MLS> +where + T: CoordNum, + MLS: MultiLineStringTraitExt, +{ + fn new(ml: &'a MLS) -> Self { + match ml.line_string_ext(0) { + Some(ls) => { + let limit = ls.num_coords(); + Self { + ml, + idx_ls: 0, + ls_opt: Some(ls), + idx: 0, + limit, + } + } + None => Self { + ml, + idx_ls: 0, + ls_opt: None, + idx: 0, + limit: 0, + }, + } + } +} + +impl Iterator for MultiLineStringCoordIter<'_, MLS> +where + T: CoordNum, + MLS: MultiLineStringTraitExt, +{ + type Item = Coord; + + fn next(&mut self) -> Option { + loop { + if self.idx < self.limit { + // When idx < limit, ls_opt is guaranteed to exist. limit is the number of coordinates + // in ls_opt and we have idx < limit, so the geo_coord_unchecked is guaranteed to be safe. + let coord = unsafe { self.ls_opt.as_ref().unwrap().geo_coord_unchecked(self.idx) }; + self.idx += 1; + return Some(coord); + } else { + // Head to the next line string + let ls_opt = self.ml.line_string_ext(self.idx_ls + 1); + match &ls_opt { + Some(ls) => { + self.idx = 0; + self.limit = ls.num_coords(); + self.ls_opt = ls_opt; + self.idx_ls += 1; + } + None => return None, + } + } + } + } +} + +impl CoordsIterTrait for MLS +where + T: CoordNum, + MLS: MultiLineStringTraitExt, +{ + type Iter<'a> + = MultiLineStringCoordIter<'a, MLS> + where + Self: 'a; + + type ExteriorIter<'a> + = Self::Iter<'a> + where + Self: 'a; + + type Scalar = T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + MultiLineStringCoordIter::new(self) + } + + fn coords_count_trait(&self) -> usize { + self.line_strings_ext().map(|ls| ls.num_coords()).sum() + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + self.coords_iter_trait() + } +} + +// ┌─────────────────────────────────┐ +// │ Implementation for MultiPolygon │ +// └─────────────────────────────────┘ + +pub struct MultiPolygonCoordIter<'a, MP> +where + MP: MultiPolygonTraitExt, +{ + mp: &'a MP, + idx_poly: usize, + poly_iter: Option, MP::PolygonTypeExt<'a>>>, +} + +impl<'a, T, MP> MultiPolygonCoordIter<'a, MP> +where + T: CoordNum, + MP: MultiPolygonTraitExt, +{ + fn new(mp: &'a MP) -> Self { + match mp.polygon_ext(0) { + Some(poly) => Self { + mp, + idx_poly: 0, + poly_iter: Some(PolygonCoordIter::new(poly)), + }, + None => Self { + mp, + idx_poly: 0, + poly_iter: None, + }, + } + } +} + +impl Iterator for MultiPolygonCoordIter<'_, MP> +where + T: CoordNum, + MP: MultiPolygonTraitExt, +{ + type Item = Coord; + + fn next(&mut self) -> Option { + match self.poly_iter.as_mut() { + Some(iter) => { + let coord = iter.next(); + if coord.is_some() { + coord + } else { + self.idx_poly += 1; + match self.mp.polygon_ext(self.idx_poly) { + Some(poly) => { + self.poly_iter = Some(PolygonCoordIter::new(poly)); + self.next() + } + None => None, + } + } + } + None => None, + } + } +} + +pub struct MultiPolygonExteriorCoordIter<'a, MP> +where + MP: MultiPolygonTraitExt, +{ + mp: &'a MP, + current_poly: Option>, + idx_poly: usize, + idx: usize, + limit: usize, +} + +impl<'a, T, MP> MultiPolygonExteriorCoordIter<'a, MP> +where + T: CoordNum, + MP: MultiPolygonTraitExt, +{ + fn new(mp: &'a MP) -> Self { + match mp.polygon_ext(0) { + Some(poly) => { + // limit will be zero if the exterior ring doesn't exist. + let limit = poly.exterior_ext().map_or(0, |ring| ring.num_coords()); + Self { + mp, + idx_poly: 0, + idx: 0, + limit, + current_poly: Some(poly), + } + } + None => Self { + mp, + idx_poly: 0, + idx: 0, + limit: 0, + current_poly: None, + }, + } + } +} + +impl Iterator for MultiPolygonExteriorCoordIter<'_, MP> +where + T: CoordNum, + MP: MultiPolygonTraitExt, +{ + type Item = Coord; + + fn next(&mut self) -> Option { + if self.idx < self.limit { + let coord = unsafe { + // When idx < limit, current_poly and the exterior ring are guaranteed to exist. + // This is because if either of them doesn't exist, limit would be 0, and we won't + // reach here in this case. + self.current_poly + .as_ref() + .unwrap() + .exterior_ext() + .unwrap() + .geo_coord_unchecked(self.idx) + }; + self.idx += 1; + Some(coord) + } else { + self.idx_poly += 1; + match self.mp.polygon_ext(self.idx_poly) { + Some(poly) => { + self.idx = 0; + // limit will be zero if the exterior ring doesn't exist. + self.limit = poly.exterior_ext().map_or(0, |ring| ring.num_coords()); + self.current_poly = Some(poly); + self.next() + } + None => None, + } + } + } +} + +impl CoordsIterTrait for MP +where + T: CoordNum, + MP: MultiPolygonTraitExt, +{ + type Iter<'a> + = MultiPolygonCoordIter<'a, MP> + where + Self: 'a; + + type ExteriorIter<'a> + = MultiPolygonExteriorCoordIter<'a, MP> + where + Self: 'a; + + type Scalar = T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + MultiPolygonCoordIter::new(self) + } + + fn coords_count_trait(&self) -> usize { + // self.0.iter().map(|polygon| polygon.coords_count()).sum() + self.polygons_ext().map(|p| p.coords_count_trait()).sum() + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + MultiPolygonExteriorCoordIter::new(self) + } +} + +// ┌───────────────────────────────────────┐ +// │ Implementation for GeometryCollection │ +// └───────────────────────────────────────┘ + +impl CoordsIterTrait for GC +where + GC: GeometryCollectionTraitExt, +{ + type Iter<'a> + = std::vec::IntoIter> + where + Self: 'a; + + type ExteriorIter<'a> + = std::vec::IntoIter> + where + Self: 'a; + + type Scalar = GC::T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + // Boxing is likely necessary here due to heterogeneous nature + // and complexity of tracking state across different geometry types + // without significant code complexity or allocations anyway. + let mut all_coords: Vec> = Vec::new(); + for g in self.geometries_ext() { + all_coords.extend(g.coords_iter_trait()); + } + all_coords.into_iter() + } + + /// Return the number of coordinates in the `GeometryCollection`. + fn coords_count_trait(&self) -> usize { + self.geometries_ext().map(|g| g.coords_count_trait()).sum() + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + let mut all_coords: Vec> = Vec::new(); + for g in self.geometries_ext() { + all_coords.extend(g.exterior_coords_iter_trait()); + } + all_coords.into_iter() + } +} + +// ┌─────────────────────────┐ +// │ Implementation for Rect │ +// └─────────────────────────┘ + +type RectIter = + iter::Chain, iter::Once>>, iter::Once>>; + +impl CoordsIterTrait for TT +where + T: CoordNum, + TT: RectTraitExt, +{ + type Iter<'a> + = RectIter + where + Self: 'a; + type ExteriorIter<'a> + = Self::Iter<'a> + where + Self: 'a; + type Scalar = T; + + /// Iterates over the coordinates in CCW order + fn coords_iter_trait(&self) -> Self::Iter<'_> { + let max = self.max_coord(); + let min = self.min_coord(); + iter::once(coord! { + x: max.x, + y: min.y, + }) + .chain(iter::once(coord! { + x: max.x, + y: max.y, + })) + .chain(iter::once(coord! { + x: min.x, + y: max.y, + })) + .chain(iter::once(coord! { + x: min.x, + y: min.y, + })) + } + + /// Return the number of coordinates in the `Rect`. + /// + /// Note: Although a `Rect` is represented by two coordinates, it is + /// spatially represented by four, so this method returns `4`. + fn coords_count_trait(&self) -> usize { + 4 + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + self.coords_iter_trait() + } +} + +// ┌─────────────────────────────┐ +// │ Implementation for Triangle │ +// └─────────────────────────────┘ + +impl CoordsIterTrait for TT +where + T: CoordNum, + TT: TriangleTraitExt, +{ + type Iter<'a> + = iter::Chain, iter::Once>> + where + Self: 'a; + type ExteriorIter<'a> + = Self::Iter<'a> + where + Self: 'a; + type Scalar = T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + iter::once(self.first_coord()) + .chain(iter::once(self.second_coord())) + .chain(iter::once(self.third_coord())) + } + + /// Return the number of coordinates in the `Triangle`. + fn coords_count_trait(&self) -> usize { + 3 + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + self.coords_iter_trait() + } +} + +// ┌─────────────────────────────┐ +// │ Implementation for Geometry │ +// └─────────────────────────────┘ + +impl CoordsIterTrait for G +where + T: CoordNum, + G: GeometryTraitExt, +{ + type Iter<'a> + = GeometryTraitCoordsIter<'a, G> + where + Self: 'a; + type ExteriorIter<'a> + = GeometryTraitExteriorCoordsIter<'a, G> + where + Self: 'a; + type Scalar = T; + + fn coords_iter_trait(&self) -> Self::Iter<'_> { + if self.is_collection() { + // Boxing is likely necessary here due to heterogeneous nature + // and complexity of tracking state across different geometry types + // without significant code complexity or allocations anyway. + let mut all_coords: Vec> = Vec::new(); + for g in self.geometries_ext() { + all_coords.extend(g.borrow().coords_iter_trait()); + } + let iter = all_coords.into_iter(); + GeometryTraitCoordsIter::GeometryCollection(iter) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => GeometryTraitCoordsIter::Point(g.coords_iter_trait()), + GeometryTypeExt::Line(g) => GeometryTraitCoordsIter::Line(g.coords_iter_trait()), + GeometryTypeExt::LineString(g) => { + GeometryTraitCoordsIter::LineString(g.coords_iter_trait()) + } + GeometryTypeExt::Polygon(g) => { + GeometryTraitCoordsIter::Polygon(g.coords_iter_trait()) + } + GeometryTypeExt::MultiPoint(g) => { + GeometryTraitCoordsIter::MultiPoint(g.coords_iter_trait()) + } + GeometryTypeExt::MultiLineString(g) => { + GeometryTraitCoordsIter::MultiLineString(g.coords_iter_trait()) + } + GeometryTypeExt::MultiPolygon(g) => { + GeometryTraitCoordsIter::MultiPolygon(g.coords_iter_trait()) + } + GeometryTypeExt::Rect(g) => GeometryTraitCoordsIter::Rect(g.coords_iter_trait()), + GeometryTypeExt::Triangle(g) => { + GeometryTraitCoordsIter::Triangle(g.coords_iter_trait()) + } + } + } + } + + /// Return the number of coordinates in the `Geometry`. + fn coords_count_trait(&self) -> usize { + if self.is_collection() { + self.geometries_ext() + .map(|g_inner| g_inner.borrow().coords_count_trait()) + .sum() + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => g.coords_count_trait(), + GeometryTypeExt::Line(g) => g.coords_count_trait(), + GeometryTypeExt::LineString(g) => g.coords_count_trait(), + GeometryTypeExt::Polygon(g) => g.coords_count_trait(), + GeometryTypeExt::MultiPoint(g) => g.coords_count_trait(), + GeometryTypeExt::MultiLineString(g) => g.coords_count_trait(), + GeometryTypeExt::MultiPolygon(g) => g.coords_count_trait(), + GeometryTypeExt::Rect(g) => g.coords_count_trait(), + GeometryTypeExt::Triangle(g) => g.coords_count_trait(), + } + } + } + + fn exterior_coords_iter_trait(&self) -> Self::ExteriorIter<'_> { + if self.is_collection() { + let mut all_coords: Vec> = Vec::new(); + for g in self.geometries_ext() { + all_coords.extend(g.borrow().exterior_coords_iter_trait()); + } + let iter = all_coords.into_iter(); + GeometryTraitExteriorCoordsIter::GeometryCollection(iter) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => { + GeometryTraitExteriorCoordsIter::Point(g.exterior_coords_iter_trait()) + } + GeometryTypeExt::Line(g) => { + GeometryTraitExteriorCoordsIter::Line(g.exterior_coords_iter_trait()) + } + GeometryTypeExt::LineString(g) => { + GeometryTraitExteriorCoordsIter::LineString(g.exterior_coords_iter_trait()) + } + GeometryTypeExt::Polygon(g) => { + GeometryTraitExteriorCoordsIter::Polygon(g.exterior_coords_iter_trait()) + } + GeometryTypeExt::MultiPoint(g) => { + GeometryTraitExteriorCoordsIter::MultiPoint(g.exterior_coords_iter_trait()) + } + GeometryTypeExt::MultiLineString(g) => { + GeometryTraitExteriorCoordsIter::MultiLineString(g.exterior_coords_iter_trait()) + } + GeometryTypeExt::MultiPolygon(g) => { + GeometryTraitExteriorCoordsIter::MultiPolygon(g.exterior_coords_iter_trait()) + } + GeometryTypeExt::Rect(g) => { + GeometryTraitExteriorCoordsIter::Rect(g.exterior_coords_iter_trait()) + } + GeometryTypeExt::Triangle(g) => { + GeometryTraitExteriorCoordsIter::Triangle(g.exterior_coords_iter_trait()) + } + } + } + } +} + +// ┌──────────────────────────┐ +// │ Implementation for Array │ +// └──────────────────────────┘ + +pub trait CoordsSeqIter { + type Iter<'a>: Iterator> + where + Self: 'a; + type ExteriorIter<'a>: Iterator> + where + Self: 'a; + type Scalar: CoordNum; + + /// Iterate over all exterior and (if any) interior coordinates of a geometry. + fn coords_iter(&self) -> Self::Iter<'_>; + + /// Return the number of coordinates in a geometry. + fn coords_count(&self) -> usize; + + /// Iterate over all exterior coordinates of a geometry. + fn exterior_coords_iter(&self) -> Self::ExteriorIter<'_>; +} + +impl CoordsSeqIter for [Coord; N] { + type Iter<'a> + = iter::Copied>> + where + T: 'a; + type ExteriorIter<'a> + = Self::Iter<'a> + where + T: 'a; + type Scalar = T; + + fn coords_iter(&self) -> Self::Iter<'_> { + self.iter().copied() + } + + fn coords_count(&self) -> usize { + N + } + + fn exterior_coords_iter(&self) -> Self::ExteriorIter<'_> { + self.coords_iter() + } +} + +// ┌──────────────────────────┐ +// │ Implementation for Slice │ +// └──────────────────────────┘ + +impl<'a, T: CoordNum> CoordsSeqIter for &'a [Coord] { + type Iter<'b> + = iter::Copied>> + where + T: 'b, + 'a: 'b; + type ExteriorIter<'b> + = Self::Iter<'b> + where + T: 'b, + 'a: 'b; + type Scalar = T; + + fn coords_iter(&self) -> Self::Iter<'_> { + self.iter().copied() + } + + fn coords_count(&self) -> usize { + self.len() + } + + fn exterior_coords_iter(&self) -> Self::ExteriorIter<'_> { + self.coords_iter() + } +} + +// Utility to transform Geometry into Iterator +#[doc(hidden)] +pub enum GeometryTraitCoordsIter<'a, G> +where + G: GeometryTraitExt + 'a, +{ + Point( as CoordsIterTrait>::Iter<'a>), + Line( as CoordsIterTrait>::Iter<'a>), + LineString( as CoordsIterTrait>::Iter<'a>), + Polygon( as CoordsIterTrait>::Iter<'a>), + MultiPoint( as CoordsIterTrait>::Iter<'a>), + MultiLineString( + as CoordsIterTrait>::Iter<'a>, + ), + MultiPolygon( as CoordsIterTrait>::Iter<'a>), + GeometryCollection(std::vec::IntoIter>), + Rect( as CoordsIterTrait>::Iter<'a>), + Triangle( as CoordsIterTrait>::Iter<'a>), +} + +impl<'a, G> Iterator for GeometryTraitCoordsIter<'a, G> +where + G: GeometryTraitExt + 'a, +{ + type Item = Coord; + + fn next(&mut self) -> Option { + match self { + GeometryTraitCoordsIter::Point(g) => g.next(), + GeometryTraitCoordsIter::Line(g) => g.next(), + GeometryTraitCoordsIter::LineString(g) => g.next(), + GeometryTraitCoordsIter::Polygon(g) => g.next(), + GeometryTraitCoordsIter::MultiPoint(g) => g.next(), + GeometryTraitCoordsIter::MultiLineString(g) => g.next(), + GeometryTraitCoordsIter::MultiPolygon(g) => g.next(), + GeometryTraitCoordsIter::GeometryCollection(g) => g.next(), + GeometryTraitCoordsIter::Rect(g) => g.next(), + GeometryTraitCoordsIter::Triangle(g) => g.next(), + } + } + + fn size_hint(&self) -> (usize, Option) { + match self { + GeometryTraitCoordsIter::Point(g) => g.size_hint(), + GeometryTraitCoordsIter::Line(g) => g.size_hint(), + GeometryTraitCoordsIter::LineString(g) => g.size_hint(), + GeometryTraitCoordsIter::Polygon(g) => g.size_hint(), + GeometryTraitCoordsIter::MultiPoint(g) => g.size_hint(), + GeometryTraitCoordsIter::MultiLineString(g) => g.size_hint(), + GeometryTraitCoordsIter::MultiPolygon(g) => g.size_hint(), + GeometryTraitCoordsIter::GeometryCollection(g) => g.size_hint(), + GeometryTraitCoordsIter::Rect(g) => g.size_hint(), + GeometryTraitCoordsIter::Triangle(g) => g.size_hint(), + } + } +} + +// Utility to transform Geometry into Iterator +#[doc(hidden)] +pub enum GeometryTraitExteriorCoordsIter<'a, G> +where + G: GeometryTraitExt + 'a, +{ + Point( as CoordsIterTrait>::ExteriorIter<'a>), + Line( as CoordsIterTrait>::ExteriorIter<'a>), + LineString( as CoordsIterTrait>::ExteriorIter<'a>), + Polygon( as CoordsIterTrait>::ExteriorIter<'a>), + MultiPoint( as CoordsIterTrait>::ExteriorIter<'a>), + MultiLineString( + as CoordsIterTrait>::ExteriorIter<'a>, + ), + MultiPolygon( + as CoordsIterTrait>::ExteriorIter<'a>, + ), + GeometryCollection(std::vec::IntoIter>), + Rect( as CoordsIterTrait>::ExteriorIter<'a>), + Triangle( as CoordsIterTrait>::ExteriorIter<'a>), +} + +impl<'a, G> Iterator for GeometryTraitExteriorCoordsIter<'a, G> +where + G: GeometryTraitExt + 'a, +{ + type Item = Coord; + + fn next(&mut self) -> Option { + match self { + GeometryTraitExteriorCoordsIter::Point(g) => g.next(), + GeometryTraitExteriorCoordsIter::Line(g) => g.next(), + GeometryTraitExteriorCoordsIter::LineString(g) => g.next(), + GeometryTraitExteriorCoordsIter::Polygon(g) => g.next(), + GeometryTraitExteriorCoordsIter::MultiPoint(g) => g.next(), + GeometryTraitExteriorCoordsIter::MultiLineString(g) => g.next(), + GeometryTraitExteriorCoordsIter::MultiPolygon(g) => g.next(), + GeometryTraitExteriorCoordsIter::GeometryCollection(g) => g.next(), + GeometryTraitExteriorCoordsIter::Rect(g) => g.next(), + GeometryTraitExteriorCoordsIter::Triangle(g) => g.next(), + } + } + + fn size_hint(&self) -> (usize, Option) { + match self { + GeometryTraitExteriorCoordsIter::Point(g) => g.size_hint(), + GeometryTraitExteriorCoordsIter::Line(g) => g.size_hint(), + GeometryTraitExteriorCoordsIter::LineString(g) => g.size_hint(), + GeometryTraitExteriorCoordsIter::Polygon(g) => g.size_hint(), + GeometryTraitExteriorCoordsIter::MultiPoint(g) => g.size_hint(), + GeometryTraitExteriorCoordsIter::MultiLineString(g) => g.size_hint(), + GeometryTraitExteriorCoordsIter::MultiPolygon(g) => g.size_hint(), + GeometryTraitExteriorCoordsIter::GeometryCollection(g) => g.size_hint(), + GeometryTraitExteriorCoordsIter::Rect(g) => g.size_hint(), + GeometryTraitExteriorCoordsIter::Triangle(g) => g.size_hint(), + } + } +} + +#[cfg(test)] +mod test { + use super::CoordsIter; + use super::CoordsSeqIter; + use crate::{ + coord, line_string, point, polygon, Coord, Geometry, GeometryCollection, Line, LineString, + MultiLineString, MultiPoint, MultiPolygon, Point, Polygon, Rect, Triangle, + }; + + #[test] + fn test_point() { + let (point, expected_coords) = create_point(); + + let actual_coords = point.coords_iter().collect::>(); + + assert_eq!(expected_coords, actual_coords); + } + + #[test] + fn test_line() { + let line = Line::new(coord! { x: 1., y: 2. }, coord! { x: 2., y: 3. }); + + let coords = line.coords_iter().collect::>(); + + assert_eq!( + vec![coord! { x: 1., y: 2. }, coord! { x: 2., y: 3. },], + coords + ); + } + + #[test] + fn test_line_string() { + let (line_string, expected_coords) = create_line_string(); + + let actual_coords = line_string.coords_iter().collect::>(); + + assert_eq!(expected_coords, actual_coords); + } + + #[test] + fn test_polygon() { + let (polygon, expected_coords) = create_polygon(); + + let actual_coords = polygon.coords_iter().collect::>(); + + assert_eq!(expected_coords, actual_coords); + } + + #[test] + fn test_multi_point() { + let mut expected_coords = vec![]; + let (point, mut coords) = create_point(); + expected_coords.append(&mut coords.clone()); + expected_coords.append(&mut coords); + + let actual_coords = MultiPoint::new(vec![point, point]) + .coords_iter() + .collect::>(); + + assert_eq!(expected_coords, actual_coords); + } + + #[test] + fn test_multi_line_string() { + let mut expected_coords = vec![]; + let (line_string, mut coords) = create_line_string(); + expected_coords.append(&mut coords.clone()); + expected_coords.append(&mut coords); + + let actual_coords = MultiLineString::new(vec![line_string.clone(), line_string]) + .coords_iter() + .collect::>(); + + assert_eq!(expected_coords, actual_coords); + } + + #[test] + fn test_multi_polygon() { + let mut expected_coords = vec![]; + let (polygon, mut coords) = create_polygon(); + expected_coords.append(&mut coords.clone()); + expected_coords.append(&mut coords); + + let actual_coords = MultiPolygon::new(vec![polygon.clone(), polygon]) + .coords_iter() + .collect::>(); + + assert_eq!(expected_coords, actual_coords); + } + + #[test] + fn test_geometry() { + let (line_string, expected_coords) = create_line_string(); + + let actual_coords = Geometry::LineString(line_string) + .coords_iter() + .collect::>(); + + assert_eq!(expected_coords, actual_coords); + } + + #[test] + fn test_rect() { + let (rect, expected_coords) = create_rect(); + + let actual_coords = rect.coords_iter().collect::>(); + + assert_eq!(expected_coords, actual_coords); + } + + #[test] + fn test_triangle() { + let (triangle, expected_coords) = create_triangle(); + + let actual_coords = triangle.coords_iter().collect::>(); + + assert_eq!(expected_coords, actual_coords); + } + + #[test] + fn test_geometry_collection() { + let mut expected_coords = vec![]; + let (line_string, mut coords) = create_line_string(); + expected_coords.append(&mut coords); + let (polygon, mut coords) = create_polygon(); + expected_coords.append(&mut coords); + + let collection = GeometryCollection::new_from(vec![ + Geometry::LineString(line_string), + Geometry::Polygon(polygon), + ]); + let geom = Geometry::GeometryCollection(collection.clone()); + + let actual_coords = collection.coords_iter().collect::>(); + assert_eq!(expected_coords, actual_coords); + + let actual_coords = geom.coords_iter().collect::>(); + assert_eq!(expected_coords, actual_coords); + } + + #[test] + fn test_array() { + let coords = [ + coord! { x: 1., y: 2. }, + coord! { x: 3., y: 4. }, + coord! { x: 5., y: 6. }, + ]; + + let actual_coords = coords.coords_iter().collect::>(); + + assert_eq!(coords.to_vec(), actual_coords); + } + + #[test] + fn test_slice() { + let coords = &[ + coord! { x: 1., y: 2. }, + coord! { x: 3., y: 4. }, + coord! { x: 5., y: 6. }, + ]; + + let actual_coords = coords.coords_iter().collect::>(); + + assert_eq!(coords.to_vec(), actual_coords); + } + + #[test] + fn test_coord() { + let c = coord! { x: 1., y: 2. }; + let actual_coords = c.coords_iter().collect::>(); + assert_eq!(vec![c], actual_coords); + } + + fn create_point() -> (Point, Vec) { + (point!(x: 1., y: 2.), vec![coord! { x: 1., y: 2. }]) + } + + fn create_triangle() -> (Triangle, Vec) { + ( + Triangle::new( + coord! { x: 1., y: 2. }, + coord! { x: 3., y: 4. }, + coord! { x: 5., y: 6. }, + ), + vec![ + coord! { x: 1., y: 2. }, + coord! { x: 3., y: 4. }, + coord! { x: 5., y: 6. }, + ], + ) + } + + fn create_rect() -> (Rect, Vec) { + ( + Rect::new(coord! { x: 1., y: 2. }, coord! { x: 3., y: 4. }), + vec![ + coord! { x: 3., y: 2. }, + coord! { x: 3., y: 4. }, + coord! { x: 1., y: 4. }, + coord! { x: 1., y: 2. }, + ], + ) + } + + fn create_line_string() -> (LineString, Vec) { + ( + line_string![ + (x: 1., y: 2.), + (x: 2., y: 3.), + ], + vec![coord! { x: 1., y: 2. }, coord! { x: 2., y: 3. }], + ) + } + + fn create_polygon() -> (Polygon, Vec) { + ( + polygon!( + exterior: [(x: 0., y: 0.), (x: 5., y: 10.), (x: 10., y: 0.), (x: 0., y: 0.)], + interiors: [[(x: 1., y: 1.), (x: 9., y: 1.), (x: 5., y: 9.), (x: 1., y: 1.)]], + ), + vec![ + coord! { x: 0.0, y: 0.0 }, + coord! { x: 5.0, y: 10.0 }, + coord! { x: 10.0, y: 0.0 }, + coord! { x: 0.0, y: 0.0 }, + coord! { x: 1.0, y: 1.0 }, + coord! { x: 9.0, y: 1.0 }, + coord! { x: 5.0, y: 9.0 }, + coord! { x: 1.0, y: 1.0 }, + ], + ) + } +} diff --git a/rust/geo-generic-alg/src/algorithm/dimensions.rs b/rust/geo-generic-alg/src/algorithm/dimensions.rs new file mode 100644 index 00000000..78f2cd16 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/dimensions.rs @@ -0,0 +1,773 @@ +use core::borrow::Borrow; +use geo_traits_ext::*; + +use crate::Orientation::Collinear; +use crate::{CoordNum, GeoNum, GeometryCow}; + +/// Geometries can have 0, 1, or two dimensions. Or, in the case of an [`empty`](#is_empty) +/// geometry, a special `Empty` dimensionality. +/// +/// # Examples +/// +/// ``` +/// use geo_types::{Point, Rect, line_string}; +/// use geo::dimensions::{HasDimensions, Dimensions}; +/// +/// let point = Point::new(0.0, 5.0); +/// let line_string = line_string![(x: 0.0, y: 0.0), (x: 5.0, y: 5.0), (x: 0.0, y: 5.0)]; +/// let rect = Rect::new((0.0, 0.0), (10.0, 10.0)); +/// assert_eq!(Dimensions::ZeroDimensional, point.dimensions()); +/// assert_eq!(Dimensions::OneDimensional, line_string.dimensions()); +/// assert_eq!(Dimensions::TwoDimensional, rect.dimensions()); +/// +/// assert!(point.dimensions() < line_string.dimensions()); +/// assert!(rect.dimensions() > line_string.dimensions()); +/// ``` +#[derive(Debug, Clone, Copy, PartialEq, Eq, Ord, PartialOrd)] +pub enum Dimensions { + /// Some geometries, like a `MultiPoint` or `GeometryCollection` may have no elements - thus no + /// dimensions. Note that this is distinct from being `ZeroDimensional`, like a `Point`. + Empty, + /// Dimension of a point + ZeroDimensional, + /// Dimension of a line or curve + OneDimensional, + /// Dimension of a surface + TwoDimensional, +} + +/// Operate on the dimensionality of geometries. +pub trait HasDimensions { + /// Some geometries, like a `MultiPoint`, can have zero coordinates - we call these `empty`. + /// + /// Types like `Point` and `Rect`, which have at least one coordinate by construction, can + /// never be considered empty. + /// ``` + /// use geo_types::{Point, coord, LineString}; + /// use geo::HasDimensions; + /// + /// let line_string = LineString::new(vec![ + /// coord! { x: 0., y: 0. }, + /// coord! { x: 10., y: 0. }, + /// ]); + /// assert!(!line_string.is_empty()); + /// + /// let empty_line_string: LineString = LineString::new(vec![]); + /// assert!(empty_line_string.is_empty()); + /// + /// let point = Point::new(0.0, 0.0); + /// assert!(!point.is_empty()); + /// ``` + fn is_empty(&self) -> bool; + + /// The dimensions of some geometries are fixed, e.g. a Point always has 0 dimensions. However + /// for others, the dimensionality depends on the specific geometry instance - for example + /// typical `Rect`s are 2-dimensional, but it's possible to create degenerate `Rect`s which + /// have either 1 or 0 dimensions. + /// + /// ## Examples + /// + /// ``` + /// use geo_types::{GeometryCollection, Rect, Point}; + /// use geo::dimensions::{Dimensions, HasDimensions}; + /// + /// // normal rectangle + /// let rect = Rect::new((0.0, 0.0), (10.0, 10.0)); + /// assert_eq!(Dimensions::TwoDimensional, rect.dimensions()); + /// + /// // "rectangle" with zero height degenerates to a line + /// let degenerate_line_rect = Rect::new((0.0, 10.0), (10.0, 10.0)); + /// assert_eq!(Dimensions::OneDimensional, degenerate_line_rect.dimensions()); + /// + /// // "rectangle" with zero height and zero width degenerates to a point + /// let degenerate_point_rect = Rect::new((10.0, 10.0), (10.0, 10.0)); + /// assert_eq!(Dimensions::ZeroDimensional, degenerate_point_rect.dimensions()); + /// + /// // collections inherit the greatest dimensionality of their elements + /// let geometry_collection = GeometryCollection::new_from(vec![degenerate_line_rect.into(), degenerate_point_rect.into()]); + /// assert_eq!(Dimensions::OneDimensional, geometry_collection.dimensions()); + /// + /// let point = Point::new(10.0, 10.0); + /// assert_eq!(Dimensions::ZeroDimensional, point.dimensions()); + /// + /// // An `Empty` dimensionality is distinct from, and less than, being 0-dimensional + /// let empty_collection = GeometryCollection::::new_from(vec![]); + /// assert_eq!(Dimensions::Empty, empty_collection.dimensions()); + /// assert!(empty_collection.dimensions() < point.dimensions()); + /// ``` + fn dimensions(&self) -> Dimensions; + + /// The dimensions of the `Geometry`'s boundary, as used by OGC-SFA. + /// + /// ## Examples + /// + /// ``` + /// use geo_types::{GeometryCollection, Rect, Point}; + /// use geo::dimensions::{Dimensions, HasDimensions}; + /// + /// // a point has no boundary + /// let point = Point::new(10.0, 10.0); + /// assert_eq!(Dimensions::Empty, point.boundary_dimensions()); + /// + /// // a typical rectangle has a *line* (one dimensional) boundary + /// let rect = Rect::new((0.0, 0.0), (10.0, 10.0)); + /// assert_eq!(Dimensions::OneDimensional, rect.boundary_dimensions()); + /// + /// // a "rectangle" with zero height degenerates to a line, whose boundary is two points + /// let degenerate_line_rect = Rect::new((0.0, 10.0), (10.0, 10.0)); + /// assert_eq!(Dimensions::ZeroDimensional, degenerate_line_rect.boundary_dimensions()); + /// + /// // a "rectangle" with zero height and zero width degenerates to a point, + /// // and points have no boundary + /// let degenerate_point_rect = Rect::new((10.0, 10.0), (10.0, 10.0)); + /// assert_eq!(Dimensions::Empty, degenerate_point_rect.boundary_dimensions()); + /// + /// // collections inherit the greatest dimensionality of their elements + /// let geometry_collection = GeometryCollection::new_from(vec![degenerate_line_rect.into(), degenerate_point_rect.into()]); + /// assert_eq!(Dimensions::ZeroDimensional, geometry_collection.boundary_dimensions()); + /// + /// let geometry_collection = GeometryCollection::::new_from(vec![]); + /// assert_eq!(Dimensions::Empty, geometry_collection.boundary_dimensions()); + /// ``` + fn boundary_dimensions(&self) -> Dimensions; +} + +impl HasDimensions for GeometryCow<'_, C> { + crate::geometry_cow_delegate_impl! { + fn is_empty(&self) -> bool; + fn dimensions(&self) -> Dimensions; + fn boundary_dimensions(&self) -> Dimensions; + } +} + +impl HasDimensions for G +where + G: GeoTraitExtWithTypeTag + HasDimensionsTrait, +{ + fn is_empty(&self) -> bool { + self.is_empty_trait() + } + + fn dimensions(&self) -> Dimensions { + self.dimensions_trait() + } + + fn boundary_dimensions(&self) -> Dimensions { + self.boundary_dimensions_trait() + } +} + +trait HasDimensionsTrait { + fn is_empty_trait(&self) -> bool; + fn dimensions_trait(&self) -> Dimensions; + fn boundary_dimensions_trait(&self) -> Dimensions; +} + +impl HasDimensionsTrait for G +where + G: GeometryTraitExt, +{ + fn is_empty_trait(&self) -> bool { + if self.is_collection() { + if self.num_geometries_ext() == 0 { + true + } else { + self.geometries_ext() + .all(|g_inner| g_inner.borrow().is_empty_trait()) + } + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => g.is_empty_trait(), + GeometryTypeExt::Line(g) => g.is_empty_trait(), + GeometryTypeExt::LineString(g) => g.is_empty_trait(), + GeometryTypeExt::Polygon(g) => g.is_empty_trait(), + GeometryTypeExt::MultiPoint(g) => g.is_empty_trait(), + GeometryTypeExt::MultiLineString(g) => g.is_empty_trait(), + GeometryTypeExt::MultiPolygon(g) => g.is_empty_trait(), + GeometryTypeExt::Rect(g) => g.is_empty_trait(), + GeometryTypeExt::Triangle(g) => g.is_empty_trait(), + } + } + } + + fn dimensions_trait(&self) -> Dimensions { + if self.is_collection() { + let mut max = Dimensions::Empty; + for geom in self.geometries_ext() { + let dimensions = geom.borrow().dimensions_trait(); + if dimensions == Dimensions::TwoDimensional { + // short-circuit since we know none can be larger + return Dimensions::TwoDimensional; + } + max = max.max(dimensions); + } + max + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => g.dimensions_trait(), + GeometryTypeExt::Line(g) => g.dimensions_trait(), + GeometryTypeExt::LineString(g) => g.dimensions_trait(), + GeometryTypeExt::Polygon(g) => g.dimensions_trait(), + GeometryTypeExt::MultiPoint(g) => g.dimensions_trait(), + GeometryTypeExt::MultiLineString(g) => g.dimensions_trait(), + GeometryTypeExt::MultiPolygon(g) => g.dimensions_trait(), + GeometryTypeExt::Rect(g) => g.dimensions_trait(), + GeometryTypeExt::Triangle(g) => g.dimensions_trait(), + } + } + } + + fn boundary_dimensions_trait(&self) -> Dimensions { + if self.is_collection() { + let mut max = Dimensions::Empty; + for geom in self.geometries_ext() { + let d = geom.borrow().boundary_dimensions_trait(); + + if d == Dimensions::OneDimensional { + return Dimensions::OneDimensional; + } + + max = max.max(d); + } + max + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => g.boundary_dimensions_trait(), + GeometryTypeExt::Line(g) => g.boundary_dimensions_trait(), + GeometryTypeExt::LineString(g) => g.boundary_dimensions_trait(), + GeometryTypeExt::Polygon(g) => g.boundary_dimensions_trait(), + GeometryTypeExt::MultiPoint(g) => g.boundary_dimensions_trait(), + GeometryTypeExt::MultiLineString(g) => g.boundary_dimensions_trait(), + GeometryTypeExt::MultiPolygon(g) => g.boundary_dimensions_trait(), + GeometryTypeExt::Rect(g) => g.boundary_dimensions_trait(), + GeometryTypeExt::Triangle(g) => g.boundary_dimensions_trait(), + } + } + } +} + +impl HasDimensionsTrait for P +where + P: PointTraitExt, +{ + fn is_empty_trait(&self) -> bool { + false + } + + fn dimensions_trait(&self) -> Dimensions { + Dimensions::ZeroDimensional + } + + fn boundary_dimensions_trait(&self) -> Dimensions { + Dimensions::Empty + } +} + +impl HasDimensionsTrait for L +where + L: LineTraitExt, +{ + fn is_empty_trait(&self) -> bool { + false + } + + fn dimensions_trait(&self) -> Dimensions { + if self.start_coord() == self.end_coord() { + // degenerate line is a point + Dimensions::ZeroDimensional + } else { + Dimensions::OneDimensional + } + } + + fn boundary_dimensions_trait(&self) -> Dimensions { + if self.start_coord() == self.end_coord() { + // degenerate line is a point, which has no boundary + Dimensions::Empty + } else { + Dimensions::ZeroDimensional + } + } +} + +impl HasDimensionsTrait for LS +where + LS: LineStringTraitExt, +{ + fn is_empty_trait(&self) -> bool { + self.num_coords() == 0 + } + + fn dimensions_trait(&self) -> Dimensions { + if self.num_coords() == 0 { + return Dimensions::Empty; + } + + // There should be at least 1 coordinate since num_coords is not 0. + let first = unsafe { self.geo_coord_unchecked(0) }; + if self.coord_iter().any(|coord| first != coord) { + Dimensions::OneDimensional + } else { + // all coords are the same - i.e. a point + Dimensions::ZeroDimensional + } + } + + /// ``` + /// use geo_types::line_string; + /// use geo::dimensions::{HasDimensions, Dimensions}; + /// + /// let ls = line_string![(x: 0., y: 0.), (x: 0., y: 1.), (x: 1., y: 1.)]; + /// assert_eq!(Dimensions::ZeroDimensional, ls.boundary_dimensions()); + /// + /// let ls = line_string![(x: 0., y: 0.), (x: 0., y: 1.), (x: 1., y: 1.), (x: 0., y: 0.)]; + /// assert_eq!(Dimensions::Empty, ls.boundary_dimensions()); + ///``` + fn boundary_dimensions_trait(&self) -> Dimensions { + if self.is_closed() { + return Dimensions::Empty; + } + + match self.dimensions_trait() { + Dimensions::Empty | Dimensions::ZeroDimensional => Dimensions::Empty, + Dimensions::OneDimensional => Dimensions::ZeroDimensional, + Dimensions::TwoDimensional => unreachable!("line_string cannot be 2 dimensional"), + } + } +} + +impl HasDimensionsTrait for P +where + P: PolygonTraitExt, +{ + fn is_empty_trait(&self) -> bool { + self.exterior_ext() + .map_or(true, |exterior| exterior.is_empty_trait()) + } + + fn dimensions_trait(&self) -> Dimensions { + if let Some(exterior) = self.exterior_ext() { + let mut coords = exterior.coord_iter(); + + let Some(first) = coords.next() else { + // No coordinates - the polygon is empty + return Dimensions::Empty; + }; + + let Some(second) = coords.find(|next| *next != first) else { + // All coordinates in the polygon are the same point + return Dimensions::ZeroDimensional; + }; + + let Some(_third) = coords.find(|next| *next != first && *next != second) else { + // There are only two distinct coordinates in the Polygon - it's collapsed to a line + return Dimensions::OneDimensional; + }; + + Dimensions::TwoDimensional + } else { + Dimensions::Empty + } + } + + fn boundary_dimensions_trait(&self) -> Dimensions { + match self.dimensions_trait() { + Dimensions::Empty | Dimensions::ZeroDimensional => Dimensions::Empty, + Dimensions::OneDimensional => Dimensions::ZeroDimensional, + Dimensions::TwoDimensional => Dimensions::OneDimensional, + } + } +} + +impl HasDimensionsTrait for MP +where + MP: MultiPointTraitExt, +{ + fn is_empty_trait(&self) -> bool { + self.num_points() == 0 + } + + fn dimensions_trait(&self) -> Dimensions { + if self.num_points() == 0 { + return Dimensions::Empty; + } + + Dimensions::ZeroDimensional + } + + fn boundary_dimensions_trait(&self) -> Dimensions { + Dimensions::Empty + } +} + +impl HasDimensionsTrait for MLS +where + MLS: MultiLineStringTraitExt, +{ + fn is_empty_trait(&self) -> bool { + self.line_strings_ext().all(|ls| ls.is_empty_trait()) + } + + fn dimensions_trait(&self) -> Dimensions { + let mut max = Dimensions::Empty; + for line in self.line_strings_ext() { + match line.dimensions_trait() { + Dimensions::Empty => {} + Dimensions::ZeroDimensional => max = Dimensions::ZeroDimensional, + Dimensions::OneDimensional => { + // return early since we know multi line string dimensionality cannot exceed + // 1-d + return Dimensions::OneDimensional; + } + Dimensions::TwoDimensional => unreachable!("MultiLineString cannot be 2d"), + } + } + max + } + + fn boundary_dimensions_trait(&self) -> Dimensions { + if self.is_closed() { + return Dimensions::Empty; + } + + match self.dimensions_trait() { + Dimensions::Empty | Dimensions::ZeroDimensional => Dimensions::Empty, + Dimensions::OneDimensional => Dimensions::ZeroDimensional, + Dimensions::TwoDimensional => unreachable!("line_string cannot be 2 dimensional"), + } + } +} + +impl HasDimensionsTrait for MP +where + MP: MultiPolygonTraitExt, +{ + fn is_empty_trait(&self) -> bool { + self.polygons_ext().all(|p| p.is_empty_trait()) + } + + fn dimensions_trait(&self) -> Dimensions { + let mut max = Dimensions::Empty; + for geom in self.polygons_ext() { + let dimensions = geom.dimensions_trait(); + if dimensions == Dimensions::TwoDimensional { + // short-circuit since we know none can be larger + return Dimensions::TwoDimensional; + } + max = max.max(dimensions) + } + max + } + + fn boundary_dimensions_trait(&self) -> Dimensions { + match self.dimensions_trait() { + Dimensions::Empty | Dimensions::ZeroDimensional => Dimensions::Empty, + Dimensions::OneDimensional => Dimensions::ZeroDimensional, + Dimensions::TwoDimensional => Dimensions::OneDimensional, + } + } +} + +impl HasDimensionsTrait for GC +where + GC: GeometryCollectionTraitExt, +{ + fn is_empty_trait(&self) -> bool { + if self.num_geometries() == 0 { + true + } else { + self.geometries_ext().all(|g| g.is_empty_trait()) + } + } + + fn dimensions_trait(&self) -> Dimensions { + let mut max = Dimensions::Empty; + for geom in self.geometries_ext() { + let dimensions = geom.dimensions_trait(); + if dimensions == Dimensions::TwoDimensional { + // short-circuit since we know none can be larger + return Dimensions::TwoDimensional; + } + max = max.max(dimensions); + } + max + } + + fn boundary_dimensions_trait(&self) -> Dimensions { + let mut max = Dimensions::Empty; + for geom in self.geometries_ext() { + let d = geom.boundary_dimensions_trait(); + + if d == Dimensions::OneDimensional { + return Dimensions::OneDimensional; + } + + max = max.max(d); + } + max + } +} + +impl HasDimensionsTrait for R +where + R: RectTraitExt, +{ + fn is_empty_trait(&self) -> bool { + false + } + + fn dimensions_trait(&self) -> Dimensions { + if self.min_coord() == self.max_coord() { + // degenerate rectangle is a point + Dimensions::ZeroDimensional + } else if self.min_coord().x == self.max_coord().x + || self.min_coord().y == self.max_coord().y + { + // degenerate rectangle is a line + Dimensions::OneDimensional + } else { + Dimensions::TwoDimensional + } + } + + fn boundary_dimensions_trait(&self) -> Dimensions { + match self.dimensions_trait() { + Dimensions::Empty => { + unreachable!("even a degenerate rect should be at least 0-Dimensional") + } + Dimensions::ZeroDimensional => Dimensions::Empty, + Dimensions::OneDimensional => Dimensions::ZeroDimensional, + Dimensions::TwoDimensional => Dimensions::OneDimensional, + } + } +} + +impl HasDimensionsTrait for T +where + T: TriangleTraitExt, +{ + fn is_empty_trait(&self) -> bool { + false + } + + fn dimensions_trait(&self) -> Dimensions { + use crate::Kernel; + let (c0, c1, c2) = (self.first_coord(), self.second_coord(), self.third_coord()); + if Collinear == C::Ker::orient2d(c0, c1, c2) { + if c0 == c1 && c1 == c2 { + // degenerate triangle is a point + Dimensions::ZeroDimensional + } else { + // degenerate triangle is a line + Dimensions::OneDimensional + } + } else { + Dimensions::TwoDimensional + } + } + + fn boundary_dimensions_trait(&self) -> Dimensions { + match self.dimensions_trait() { + Dimensions::Empty => { + unreachable!("even a degenerate triangle should be at least 0-dimensional") + } + Dimensions::ZeroDimensional => Dimensions::Empty, + Dimensions::OneDimensional => Dimensions::ZeroDimensional, + Dimensions::TwoDimensional => Dimensions::OneDimensional, + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use geo_types::*; + + const ONE: Coord = crate::coord!(x: 1.0, y: 1.0); + use crate::wkt; + + #[test] + fn point() { + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(POINT(1.0 1.0)).dimensions_trait() + ); + } + + #[test] + fn line_string() { + assert_eq!( + Dimensions::OneDimensional, + wkt!(LINESTRING(1.0 1.0,2.0 2.0,3.0 3.0)).dimensions_trait() + ); + } + + #[test] + fn polygon() { + assert_eq!( + Dimensions::TwoDimensional, + wkt!(POLYGON((1.0 1.0,2.0 2.0,3.0 3.0,1.0 1.0))).dimensions_trait() + ); + } + + #[test] + fn multi_point() { + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(MULTIPOINT(1.0 1.0)).dimensions_trait() + ); + } + + #[test] + fn multi_line_string() { + assert_eq!( + Dimensions::OneDimensional, + wkt!(MULTILINESTRING((1.0 1.0,2.0 2.0,3.0 3.0))).dimensions_trait() + ); + } + + #[test] + fn multi_polygon() { + assert_eq!( + Dimensions::TwoDimensional, + wkt!(MULTIPOLYGON(((1.0 1.0,2.0 2.0,3.0 3.0,1.0 1.0)))).dimensions_trait() + ); + } + + mod empty { + use super::*; + #[test] + fn empty_line_string() { + assert_eq!( + Dimensions::Empty, + (wkt!(LINESTRING EMPTY) as LineString).dimensions_trait() + ); + } + + #[test] + fn empty_polygon() { + assert_eq!( + Dimensions::Empty, + (wkt!(POLYGON EMPTY) as Polygon).dimensions_trait() + ); + } + + #[test] + fn empty_multi_point() { + assert_eq!( + Dimensions::Empty, + (wkt!(MULTIPOINT EMPTY) as MultiPoint).dimensions_trait() + ); + } + + #[test] + fn empty_multi_line_string() { + assert_eq!( + Dimensions::Empty, + (wkt!(MULTILINESTRING EMPTY) as MultiLineString).dimensions_trait() + ); + } + + #[test] + fn multi_line_string_with_empty_line_string() { + let empty_line_string = wkt!(LINESTRING EMPTY) as LineString; + let multi_line_string = MultiLineString::new(vec![empty_line_string]); + assert_eq!(Dimensions::Empty, multi_line_string.dimensions_trait()); + } + + #[test] + fn empty_multi_polygon() { + assert_eq!( + Dimensions::Empty, + (wkt!(MULTIPOLYGON EMPTY) as MultiPolygon).dimensions_trait() + ); + } + + #[test] + fn multi_polygon_with_empty_polygon() { + let empty_polygon = (wkt!(POLYGON EMPTY) as Polygon); + let multi_polygon = MultiPolygon::new(vec![empty_polygon]); + assert_eq!(Dimensions::Empty, multi_polygon.dimensions_trait()); + } + } + + mod dimensional_collapse { + use super::*; + + #[test] + fn line_collapsed_to_point() { + assert_eq!( + Dimensions::ZeroDimensional, + Line::new(ONE, ONE).dimensions_trait() + ); + } + + #[test] + fn line_string_collapsed_to_point() { + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(LINESTRING(1.0 1.0)).dimensions_trait() + ); + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(LINESTRING(1.0 1.0,1.0 1.0)).dimensions_trait() + ); + } + + #[test] + fn polygon_collapsed_to_point() { + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(POLYGON((1.0 1.0))).dimensions_trait() + ); + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(POLYGON((1.0 1.0,1.0 1.0))).dimensions_trait() + ); + } + + #[test] + fn polygon_collapsed_to_line() { + assert_eq!( + Dimensions::OneDimensional, + wkt!(POLYGON((1.0 1.0,2.0 2.0))).dimensions_trait() + ); + } + + #[test] + fn multi_line_string_with_line_string_collapsed_to_point() { + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(MULTILINESTRING((1.0 1.0))).dimensions_trait() + ); + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(MULTILINESTRING((1.0 1.0,1.0 1.0))).dimensions_trait() + ); + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(MULTILINESTRING((1.0 1.0),(1.0 1.0))).dimensions_trait() + ); + } + + #[test] + fn multi_polygon_with_polygon_collapsed_to_point() { + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(MULTIPOLYGON(((1.0 1.0)))).dimensions_trait() + ); + assert_eq!( + Dimensions::ZeroDimensional, + wkt!(MULTIPOLYGON(((1.0 1.0,1.0 1.0)))).dimensions_trait() + ); + } + + #[test] + fn multi_polygon_with_polygon_collapsed_to_line() { + assert_eq!( + Dimensions::OneDimensional, + wkt!(MULTIPOLYGON(((1.0 1.0,2.0 2.0)))).dimensions_trait() + ); + } + } +} diff --git a/rust/geo-generic-alg/src/algorithm/euclidean_length.rs b/rust/geo-generic-alg/src/algorithm/euclidean_length.rs new file mode 100644 index 00000000..4c832327 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/euclidean_length.rs @@ -0,0 +1,550 @@ +use core::borrow::Borrow; +use std::iter::Sum; + +use crate::CoordFloat; +use geo_traits_ext::*; + +/// Calculation of the length +#[deprecated( + since = "0.29.0", + note = "Please use the `Euclidean.length(&line)` via the `Length` trait instead." +)] +pub trait EuclideanLength { + /// Calculation of the length of a Line + /// + /// # Examples + /// + /// ``` + /// use geo::EuclideanLength; + /// use geo::line_string; + /// + /// let line_string = line_string![ + /// (x: 40.02f64, y: 116.34), + /// (x: 42.02f64, y: 116.34), + /// ]; + /// + /// assert_eq!( + /// 2., + /// line_string.euclidean_length(), + /// ) + /// ``` + fn euclidean_length(&self) -> T; +} + +#[allow(deprecated)] +impl EuclideanLength for G +where + T: CoordFloat + Sum, + G: GeoTraitExtWithTypeTag + EuclideanLengthTrait, +{ + fn euclidean_length(&self) -> T { + self.euclidean_length_trait() + } +} + +trait EuclideanLengthTrait +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T; +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for L +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + let start_coord = self.start_coord(); + let end_coord = self.end_coord(); + let delta = start_coord - end_coord; + delta.x.hypot(delta.y) + } +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for LS +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + let mut length = T::zero(); + for line in self.lines() { + let start_coord = line.start_coord(); + let end_coord = line.end_coord(); + let delta = start_coord - end_coord; + length = length + delta.x.hypot(delta.y); + } + length + } +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for MLS +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + let mut length = T::zero(); + for line_string in self.line_strings_ext() { + length = length + line_string.euclidean_length_trait(); + } + length + } +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for P +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + // Length is a 1D concept, doesn't apply to 2D polygons + // Return zero, similar to how Area returns zero for linear geometries + T::zero() + } +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for P +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + // A point has no length dimension + T::zero() + } +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for MP +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + // Points have no length dimension + T::zero() + } +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for MPG +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + // Length is a 1D concept, doesn't apply to 2D polygons + T::zero() + } +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for R +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + // Length is a 1D concept, doesn't apply to 2D rectangles + T::zero() + } +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for TR +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + // Length is a 1D concept, doesn't apply to 2D triangles + T::zero() + } +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for GC +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + // Sum the lengths of all geometries in the collection + // Linear geometries (lines, linestrings) will contribute their actual length + // Non-linear geometries (points, polygons) will contribute zero + self.geometries_ext() + .map(|g| g.euclidean_length_trait()) + .fold(T::zero(), |acc, next| acc + next) + } +} + +#[allow(deprecated)] +impl> EuclideanLengthTrait for G +where + T: CoordFloat + Sum, +{ + fn euclidean_length_trait(&self) -> T { + if self.is_collection() { + self.geometries_ext() + .map(|g_inner| g_inner.borrow().euclidean_length_trait()) + .fold(T::zero(), |acc, next| acc + next) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(_) => T::zero(), + GeometryTypeExt::Line(line) => line.euclidean_length_trait(), + GeometryTypeExt::LineString(ls) => ls.euclidean_length_trait(), + GeometryTypeExt::Polygon(_) => T::zero(), + GeometryTypeExt::MultiPoint(_) => T::zero(), + GeometryTypeExt::MultiLineString(mls) => mls.euclidean_length_trait(), + GeometryTypeExt::MultiPolygon(_) => T::zero(), + GeometryTypeExt::Rect(_) => T::zero(), + GeometryTypeExt::Triangle(_) => T::zero(), + } + } + } +} + +#[cfg(test)] +mod test { + use crate::line_string; + #[allow(deprecated)] + use crate::EuclideanLength; + use crate::{coord, Line, MultiLineString}; + + #[allow(deprecated)] + #[test] + fn empty_linestring_test() { + let linestring = line_string![]; + assert_relative_eq!(0.0_f64, linestring.euclidean_length()); + } + #[allow(deprecated)] + #[test] + fn linestring_one_point_test() { + let linestring = line_string![(x: 0., y: 0.)]; + assert_relative_eq!(0.0_f64, linestring.euclidean_length()); + } + #[allow(deprecated)] + #[test] + fn linestring_test() { + let linestring = line_string![ + (x: 1., y: 1.), + (x: 7., y: 1.), + (x: 8., y: 1.), + (x: 9., y: 1.), + (x: 10., y: 1.), + (x: 11., y: 1.) + ]; + assert_relative_eq!(10.0_f64, linestring.euclidean_length()); + } + #[allow(deprecated)] + #[test] + fn multilinestring_test() { + let mline = MultiLineString::new(vec![ + line_string![ + (x: 1., y: 0.), + (x: 7., y: 0.), + (x: 8., y: 0.), + (x: 9., y: 0.), + (x: 10., y: 0.), + (x: 11., y: 0.) + ], + line_string![ + (x: 0., y: 0.), + (x: 0., y: 5.) + ], + ]); + assert_relative_eq!(15.0_f64, mline.euclidean_length()); + } + #[allow(deprecated)] + #[test] + fn line_test() { + let line0 = Line::new(coord! { x: 0., y: 0. }, coord! { x: 0., y: 1. }); + let line1 = Line::new(coord! { x: 0., y: 0. }, coord! { x: 3., y: 4. }); + assert_relative_eq!(line0.euclidean_length(), 1.); + assert_relative_eq!(line1.euclidean_length(), 5.); + } + + #[allow(deprecated)] + #[test] + fn polygon_returns_zero_test() { + use crate::{polygon, Polygon}; + let polygon: Polygon = polygon![ + (x: 0., y: 0.), + (x: 4., y: 0.), + (x: 4., y: 4.), + (x: 0., y: 4.), + (x: 0., y: 0.), + ]; + // Length doesn't apply to 2D polygons, should return zero + assert_relative_eq!(polygon.euclidean_length(), 0.0); + } + + #[allow(deprecated)] + #[test] + fn point_returns_zero_test() { + use crate::Point; + let point = Point::new(3.0, 4.0); + // Points have no length dimension + assert_relative_eq!(point.euclidean_length(), 0.0); + } + + #[allow(deprecated)] + #[test] + fn comprehensive_test_scenarios() { + use crate::{line_string, polygon}; + use crate::{ + Geometry, GeometryCollection, MultiLineString, MultiPoint, MultiPolygon, Point, + }; + + // Test cases matching the Python pytest scenarios + + // POINT EMPTY - represented as Point with NaN coordinates + // Note: In Rust we can't easily create "empty" points, so we test regular point + + // LINESTRING EMPTY + let empty_linestring: crate::LineString = line_string![]; + assert_relative_eq!(empty_linestring.euclidean_length(), 0.0); + + // POINT (0 0) + let point = Point::new(0.0, 0.0); + assert_relative_eq!(point.euclidean_length(), 0.0); + + // LINESTRING (0 0, 0 1) - length should be 1 + let linestring = line_string![(x: 0., y: 0.), (x: 0., y: 1.)]; + assert_relative_eq!(linestring.euclidean_length(), 1.0); + + // MULTIPOINT ((0 0), (1 1)) - should be 0 + let multipoint = MultiPoint::new(vec![Point::new(0.0, 0.0), Point::new(1.0, 1.0)]); + assert_relative_eq!(multipoint.euclidean_length(), 0.0); + + // MULTILINESTRING ((0 0, 1 1), (1 1, 2 2)) - should be ~2.828427 + // Distance from (0,0) to (1,1) = sqrt(2) ≈ 1.4142135623730951 + // Distance from (1,1) to (2,2) = sqrt(2) ≈ 1.4142135623730951 + // Total ≈ 2.8284271247461903 + let multilinestring = MultiLineString::new(vec![ + line_string![(x: 0., y: 0.), (x: 1., y: 1.)], + line_string![(x: 1., y: 1.), (x: 2., y: 2.)], + ]); + assert_relative_eq!( + multilinestring.euclidean_length(), + 2.8284271247461903, + epsilon = 1e-10 + ); + + // POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)) - should be 0 (perimeter not included) + let polygon = polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]; + assert_relative_eq!(polygon.euclidean_length(), 0.0); + + // MULTIPOLYGON - should be 0 + let multipolygon = MultiPolygon::new(vec![ + polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ], + polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ], + ]); + assert_relative_eq!(multipolygon.euclidean_length(), 0.0); + + // GEOMETRYCOLLECTION (LINESTRING (0 0, 1 1), POLYGON (...), LINESTRING (0 0, 1 1)) + // Should sum only the linestrings: 2 * sqrt(2) ≈ 2.8284271247461903 + let collection = GeometryCollection::new_from(vec![ + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), // sqrt(2) + Geometry::Polygon(polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]), // contributes 0 + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), // sqrt(2) + ]); + // Now correctly sums only the linear geometries: 2 * sqrt(2) ≈ 2.8284271247461903 + // The polygon contributes 0 to the total + assert_relative_eq!( + collection.euclidean_length(), + 2.8284271247461903, + epsilon = 1e-10 + ); + assert_relative_eq!( + Geometry::GeometryCollection(collection).euclidean_length(), + 2.8284271247461903, + epsilon = 1e-10 + ); + } + + // Individual test functions matching pytest parametrized scenarios + + #[allow(deprecated)] + #[test] + fn test_point_empty() { + use crate::Point; + // POINT EMPTY -> 0 (represented as empty coordinates or NaN in Rust context) + let point = Point::new(f64::NAN, f64::NAN); + // NaN coordinates still result in zero length for points + assert_relative_eq!(point.euclidean_length(), 0.0); + } + + #[allow(deprecated)] + #[test] + fn test_linestring_empty() { + // LINESTRING EMPTY -> 0 + let empty_linestring: crate::LineString = line_string![]; + assert_relative_eq!(empty_linestring.euclidean_length(), 0.0); + } + + #[allow(deprecated)] + #[test] + fn test_point_0_0() { + use crate::Point; + // POINT (0 0) -> 0 + let point = Point::new(0.0, 0.0); + assert_relative_eq!(point.euclidean_length(), 0.0); + } + + #[allow(deprecated)] + #[test] + fn test_linestring_0_0_to_0_1() { + // LINESTRING (0 0, 0 1) -> 1 + let linestring = line_string![(x: 0., y: 0.), (x: 0., y: 1.)]; + assert_relative_eq!(linestring.euclidean_length(), 1.0); + } + + #[allow(deprecated)] + #[test] + fn test_multipoint() { + // MULTIPOINT ((0 0), (1 1)) -> 0 + use crate::{MultiPoint, Point}; + let multipoint = MultiPoint::new(vec![Point::new(0.0, 0.0), Point::new(1.0, 1.0)]); + assert_relative_eq!(multipoint.euclidean_length(), 0.0); + } + + #[allow(deprecated)] + #[test] + fn test_multilinestring_diagonal() { + // MULTILINESTRING ((0 0, 1 1), (1 1, 2 2)) -> 2.8284271247461903 + use crate::MultiLineString; + let multilinestring = MultiLineString::new(vec![ + line_string![(x: 0., y: 0.), (x: 1., y: 1.)], // sqrt(2) + line_string![(x: 1., y: 1.), (x: 2., y: 2.)], // sqrt(2) + ]); + assert_relative_eq!( + multilinestring.euclidean_length(), + 2.8284271247461903, + epsilon = 1e-10 + ); + } + + #[allow(deprecated)] + #[test] + fn test_polygon_unit_square() { + // POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)) -> 0 (perimeters aren't included) + use crate::polygon; + let polygon = polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]; + assert_relative_eq!(polygon.euclidean_length(), 0.0); + } + + #[allow(deprecated)] + #[test] + fn test_multipolygon_double_unit_squares() { + // MULTIPOLYGON (((0 0, 1 0, 1 1, 0 1, 0 0)), ((0 0, 1 0, 1 1, 0 1, 0 0))) -> 0 + use crate::{polygon, MultiPolygon}; + let multipolygon = MultiPolygon::new(vec![ + polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ], + polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ], + ]); + assert_relative_eq!(multipolygon.euclidean_length(), 0.0); + } + + #[allow(deprecated)] + #[test] + fn test_geometrycollection_mixed() { + // GEOMETRYCOLLECTION (LINESTRING (0 0, 1 1), POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)), LINESTRING (0 0, 1 1)) + // Expected: 2.8284271247461903 (only linestrings contribute) + use crate::{polygon, Geometry, GeometryCollection}; + let collection = GeometryCollection::new_from(vec![ + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), // sqrt(2) ≈ 1.4142135623730951 + Geometry::Polygon(polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]), // contributes 0 + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), // sqrt(2) ≈ 1.4142135623730951 + ]); + // Now correctly returns the expected sum of only the linear geometries + // Expected: 2.8284271247461903 (sum of the two linestring lengths, polygon contributes 0) + assert_relative_eq!( + collection.euclidean_length(), + 2.8284271247461903, + epsilon = 1e-10 + ); + + // For now, let's test that individual geometries work correctly + let linestring1 = line_string![(x: 0., y: 0.), (x: 1., y: 1.)]; + let linestring2 = line_string![(x: 0., y: 0.), (x: 1., y: 1.)]; + let expected_total = linestring1.euclidean_length() + linestring2.euclidean_length(); + assert_relative_eq!(expected_total, 2.8284271247461903, epsilon = 1e-10); + } + + #[allow(deprecated)] + #[test] + fn test_geometrycollection_pytest_exact_scenario() { + // Exact match for the Python pytest scenario: + // GEOMETRYCOLLECTION (LINESTRING (0 0, 1 1), POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)), LINESTRING (0 0, 1 1)) + // Expected: 2.8284271247461903 + use crate::{polygon, Geometry, GeometryCollection}; + + let collection = GeometryCollection::new_from(vec![ + // LINESTRING (0 0, 1 1) - length = sqrt(2) ≈ 1.4142135623730951 + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), + // POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)) - contributes 0 (perimeter not included) + Geometry::Polygon(polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]), + // LINESTRING (0 0, 1 1) - length = sqrt(2) ≈ 1.4142135623730951 + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), + ]); + + // Total length = sqrt(2) + 0 + sqrt(2) = 2 * sqrt(2) ≈ 2.8284271247461903 + assert_relative_eq!( + collection.euclidean_length(), + 2.8284271247461903, + epsilon = 1e-10 + ); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/extremes.rs b/rust/geo-generic-alg/src/algorithm/extremes.rs new file mode 100644 index 00000000..893be016 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/extremes.rs @@ -0,0 +1,131 @@ +use crate::CoordsIter; +use crate::{Coord, CoordNum}; + +/// Find the extreme coordinates and indices of a geometry. +/// +/// # Examples +/// +/// ``` +/// use geo::extremes::Extremes; +/// use geo::polygon; +/// +/// // a diamond shape +/// let polygon = polygon![ +/// (x: 1.0, y: 0.0), +/// (x: 2.0, y: 1.0), +/// (x: 1.0, y: 2.0), +/// (x: 0.0, y: 1.0), +/// (x: 1.0, y: 0.0), +/// ]; +/// +/// let extremes = polygon.extremes().unwrap(); +/// +/// assert_eq!(extremes.y_max.index, 2); +/// assert_eq!(extremes.y_max.coord.x, 1.); +/// assert_eq!(extremes.y_max.coord.y, 2.); +/// ``` +pub trait Extremes<'a, T: CoordNum> { + fn extremes(&'a self) -> Option>; +} + +#[derive(Debug, PartialEq, Eq)] +pub struct Extreme { + pub index: usize, + pub coord: Coord, +} + +#[derive(Debug, PartialEq, Eq)] +pub struct Outcome { + pub x_min: Extreme, + pub y_min: Extreme, + pub x_max: Extreme, + pub y_max: Extreme, +} + +impl<'a, T, G> Extremes<'a, T> for G +where + G: CoordsIter, + T: CoordNum, +{ + fn extremes(&'a self) -> Option> { + let mut iter = self.exterior_coords_iter().enumerate(); + + let mut outcome = iter.next().map(|(index, coord)| Outcome { + x_min: Extreme { index, coord }, + y_min: Extreme { index, coord }, + x_max: Extreme { index, coord }, + y_max: Extreme { index, coord }, + })?; + + for (index, coord) in iter { + if coord.x < outcome.x_min.coord.x { + outcome.x_min = Extreme { coord, index }; + } + + if coord.y < outcome.y_min.coord.y { + outcome.y_min = Extreme { coord, index }; + } + + if coord.x > outcome.x_max.coord.x { + outcome.x_max = Extreme { coord, index }; + } + + if coord.y > outcome.y_max.coord.y { + outcome.y_max = Extreme { coord, index }; + } + } + + Some(outcome) + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::{coord, polygon, MultiPoint}; + + #[test] + fn polygon() { + // a diamond shape + let polygon = polygon![ + (x: 1.0, y: 0.0), + (x: 2.0, y: 1.0), + (x: 1.0, y: 2.0), + (x: 0.0, y: 1.0), + (x: 1.0, y: 0.0), + ]; + + let actual = polygon.extremes(); + + assert_eq!( + Some(Outcome { + x_min: Extreme { + index: 3, + coord: coord! { x: 0.0, y: 1.0 } + }, + y_min: Extreme { + index: 0, + coord: coord! { x: 1.0, y: 0.0 } + }, + x_max: Extreme { + index: 1, + coord: coord! { x: 2.0, y: 1.0 } + }, + y_max: Extreme { + index: 2, + coord: coord! { x: 1.0, y: 2.0 } + } + }), + actual + ); + } + + #[test] + fn empty() { + let multi_point: MultiPoint = MultiPoint::new(vec![]); + + let actual = multi_point.extremes(); + + assert!(actual.is_none()); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/intersects/collections.rs b/rust/geo-generic-alg/src/algorithm/intersects/collections.rs new file mode 100644 index 00000000..26103e8b --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/intersects/collections.rs @@ -0,0 +1,144 @@ +use core::borrow::Borrow; +use geo_traits_ext::*; + +use super::has_disjoint_bboxes; +use super::IntersectsTrait; +use crate::GeoNum; + +macro_rules! impl_intersects_geometry { + ($rhs_type:ident, $rhs_tag:ident) => { + impl IntersectsTrait for LHS + where + T: GeoNum, + LHS: GeometryTraitExt, + RHS: $rhs_type, + { + fn intersects_trait(&self, rhs: &RHS) -> bool { + if self.is_collection() { + self.geometries_ext() + .any(|lhs_inner| lhs_inner.borrow().intersects_trait(rhs)) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(g) => g.intersects_trait(rhs), + GeometryTypeExt::Line(g) => g.intersects_trait(rhs), + GeometryTypeExt::LineString(g) => g.intersects_trait(rhs), + GeometryTypeExt::Polygon(g) => g.intersects_trait(rhs), + GeometryTypeExt::MultiPoint(g) => g.intersects_trait(rhs), + GeometryTypeExt::MultiLineString(g) => g.intersects_trait(rhs), + GeometryTypeExt::MultiPolygon(g) => g.intersects_trait(rhs), + GeometryTypeExt::Rect(g) => g.intersects_trait(rhs), + GeometryTypeExt::Triangle(g) => g.intersects_trait(rhs), + } + } + } + } + }; +} + +impl_intersects_geometry!(CoordTraitExt, CoordTag); +impl_intersects_geometry!(PointTraitExt, PointTag); +impl_intersects_geometry!(LineStringTraitExt, LineStringTag); +impl_intersects_geometry!(PolygonTraitExt, PolygonTag); +impl_intersects_geometry!(MultiPointTraitExt, MultiPointTag); +impl_intersects_geometry!(MultiLineStringTraitExt, MultiLineStringTag); +impl_intersects_geometry!(MultiPolygonTraitExt, MultiPolygonTag); +impl_intersects_geometry!(GeometryTraitExt, GeometryTag); +impl_intersects_geometry!(GeometryCollectionTraitExt, GeometryCollectionTag); +impl_intersects_geometry!(LineTraitExt, LineTag); +impl_intersects_geometry!(RectTraitExt, RectTag); +impl_intersects_geometry!(TriangleTraitExt, TriangleTag); + +symmetric_intersects_trait_impl!( + GeoNum, + CoordTraitExt, + CoordTag, + GeometryTraitExt, + GeometryTag +); +symmetric_intersects_trait_impl!(GeoNum, LineTraitExt, LineTag, GeometryTraitExt, GeometryTag); +symmetric_intersects_trait_impl!(GeoNum, RectTraitExt, RectTag, GeometryTraitExt, GeometryTag); +symmetric_intersects_trait_impl!( + GeoNum, + TriangleTraitExt, + TriangleTag, + GeometryTraitExt, + GeometryTag +); +symmetric_intersects_trait_impl!( + GeoNum, + PolygonTraitExt, + PolygonTag, + GeometryTraitExt, + GeometryTag +); + +// Generate implementations for GeometryCollection by delegating to the Geometry implementation +macro_rules! impl_intersects_geometry_collection_from_geometry { + ($rhs_type:ident, $rhs_tag:ident) => { + impl IntersectsTrait for LHS + where + T: GeoNum, + LHS: GeometryCollectionTraitExt, + RHS: $rhs_type, + { + fn intersects_trait(&self, rhs: &RHS) -> bool { + if has_disjoint_bboxes(self, rhs) { + return false; + } + self.geometries_ext().any(|geom| geom.intersects_trait(rhs)) + } + } + }; +} + +impl_intersects_geometry_collection_from_geometry!(CoordTraitExt, CoordTag); +impl_intersects_geometry_collection_from_geometry!(PointTraitExt, PointTag); +impl_intersects_geometry_collection_from_geometry!(LineStringTraitExt, LineStringTag); +impl_intersects_geometry_collection_from_geometry!(PolygonTraitExt, PolygonTag); +impl_intersects_geometry_collection_from_geometry!(MultiPointTraitExt, MultiPointTag); +impl_intersects_geometry_collection_from_geometry!(MultiLineStringTraitExt, MultiLineStringTag); +impl_intersects_geometry_collection_from_geometry!(MultiPolygonTraitExt, MultiPolygonTag); +impl_intersects_geometry_collection_from_geometry!(GeometryTraitExt, GeometryTag); +impl_intersects_geometry_collection_from_geometry!( + GeometryCollectionTraitExt, + GeometryCollectionTag +); +impl_intersects_geometry_collection_from_geometry!(LineTraitExt, LineTag); +impl_intersects_geometry_collection_from_geometry!(RectTraitExt, RectTag); +impl_intersects_geometry_collection_from_geometry!(TriangleTraitExt, TriangleTag); + +symmetric_intersects_trait_impl!( + GeoNum, + CoordTraitExt, + CoordTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_intersects_trait_impl!( + GeoNum, + LineTraitExt, + LineTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_intersects_trait_impl!( + GeoNum, + RectTraitExt, + RectTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_intersects_trait_impl!( + GeoNum, + TriangleTraitExt, + TriangleTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_intersects_trait_impl!( + GeoNum, + PolygonTraitExt, + PolygonTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); diff --git a/rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs b/rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs new file mode 100644 index 00000000..d00d0c6e --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs @@ -0,0 +1,27 @@ +use geo_traits_ext::{CoordTag, CoordTraitExt, PointTag, PointTraitExt}; + +use super::IntersectsTrait; +use crate::*; + +impl IntersectsTrait for LHS +where + T: CoordNum, + LHS: CoordTraitExt, + RHS: CoordTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + self.geo_coord() == rhs.geo_coord() + } +} + +// The other side of this is handled via a blanket impl. +impl IntersectsTrait for LHS +where + T: CoordNum, + LHS: CoordTraitExt, + RHS: PointTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + rhs.geo_coord().is_some_and(|c| self.geo_coord() == c) + } +} diff --git a/rust/geo-generic-alg/src/algorithm/intersects/line.rs b/rust/geo-generic-alg/src/algorithm/intersects/line.rs new file mode 100644 index 00000000..f8f50c37 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/intersects/line.rs @@ -0,0 +1,99 @@ +use geo_traits_ext::*; + +use super::{point_in_rect, IntersectsTrait}; +use crate::*; + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: LineTraitExt, + RHS: CoordTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + let start = self.start_coord(); + let end = self.end_coord(); + let rhs = rhs.geo_coord(); + + // First we check if the point is collinear with the line. + T::Ker::orient2d(start, end, rhs) == Orientation::Collinear + // In addition, the point must have _both_ coordinates + // within the start and end bounds. + && point_in_rect(rhs, start, end) + } +} + +symmetric_intersects_trait_impl!(GeoNum, CoordTraitExt, CoordTag, LineTraitExt, LineTag); +symmetric_intersects_trait_impl!(GeoNum, LineTraitExt, LineTag, PointTraitExt, PointTag); + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: LineTraitExt, + RHS: LineTraitExt, +{ + fn intersects_trait(&self, line: &RHS) -> bool { + let start_ext = self.start_ext(); + let self_start = self.start_coord(); + let self_end = self.end_coord(); + let line_start = line.start_coord(); + let line_end = line.end_coord(); + + // Special case: self is equiv. to a point. + if self_start == self_end { + return line.intersects_trait(&start_ext); + } + + // Precondition: start and end are distinct. + + // Check if orientation of rhs.{start,end} are different + // with respect to self.{start,end}. + let check_1_1 = T::Ker::orient2d(self_start, self_end, line_start); + let check_1_2 = T::Ker::orient2d(self_start, self_end, line_end); + + if check_1_1 != check_1_2 { + // Since the checks are different, + // rhs.{start,end} are distinct, and rhs is not + // collinear with self. Thus, there is exactly + // one point on the infinite extensions of rhs, + // that is collinear with self. + + // By continuity, this point is not on the + // exterior of rhs. Now, check the same with + // self, rhs swapped. + + let check_2_1 = T::Ker::orient2d(line_start, line_end, self_start); + let check_2_2 = T::Ker::orient2d(line_start, line_end, self_end); + + // By similar argument, there is (exactly) one + // point on self, collinear with rhs. Thus, + // those two have to be same, and lies (interior + // or boundary, but not exterior) on both lines. + check_2_1 != check_2_2 + } else if check_1_1 == Orientation::Collinear { + // Special case: collinear line segments. + + // Equivalent to 4 point-line intersection + // checks, but removes the calls to the kernel + // predicates. + point_in_rect(line_start, self_start, self_end) + || point_in_rect(line_end, self_start, self_end) + || point_in_rect(self_end, line_start, line_end) + || point_in_rect(self_end, line_start, line_end) + } else { + false + } + } +} + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: LineTraitExt, + RHS: TriangleTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + self.intersects_trait(&rhs.to_polygon()) + } +} + +symmetric_intersects_trait_impl!(GeoNum, TriangleTraitExt, TriangleTag, LineTraitExt, LineTag); diff --git a/rust/geo-generic-alg/src/algorithm/intersects/line_string.rs b/rust/geo-generic-alg/src/algorithm/intersects/line_string.rs new file mode 100644 index 00000000..af8bd612 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/intersects/line_string.rs @@ -0,0 +1,129 @@ +use geo_traits_ext::*; + +use super::{has_disjoint_bboxes, IntersectsTrait}; +use crate::*; + +// Generate implementations for LineString by delegating to Line +macro_rules! impl_intersects_line_string_from_line { + ($rhs_type:ident, $rhs_tag:ident) => { + impl IntersectsTrait for LHS + where + T: GeoNum, + LHS: LineStringTraitExt, + RHS: $rhs_type, + { + fn intersects_trait(&self, rhs: &RHS) -> bool { + if has_disjoint_bboxes(self, rhs) { + return false; + } + self.lines().any(|l| l.intersects_trait(rhs)) + } + } + }; +} + +impl_intersects_line_string_from_line!(CoordTraitExt, CoordTag); +impl_intersects_line_string_from_line!(PointTraitExt, PointTag); +impl_intersects_line_string_from_line!(LineStringTraitExt, LineStringTag); +impl_intersects_line_string_from_line!(PolygonTraitExt, PolygonTag); +impl_intersects_line_string_from_line!(MultiPointTraitExt, MultiPointTag); +impl_intersects_line_string_from_line!(MultiLineStringTraitExt, MultiLineStringTag); +impl_intersects_line_string_from_line!(MultiPolygonTraitExt, MultiPolygonTag); +impl_intersects_line_string_from_line!(GeometryTraitExt, GeometryTag); +impl_intersects_line_string_from_line!(GeometryCollectionTraitExt, GeometryCollectionTag); +impl_intersects_line_string_from_line!(LineTraitExt, LineTag); +impl_intersects_line_string_from_line!(RectTraitExt, RectTag); +impl_intersects_line_string_from_line!(TriangleTraitExt, TriangleTag); + +symmetric_intersects_trait_impl!( + GeoNum, + CoordTraitExt, + CoordTag, + LineStringTraitExt, + LineStringTag +); +symmetric_intersects_trait_impl!( + GeoNum, + LineTraitExt, + LineTag, + LineStringTraitExt, + LineStringTag +); +symmetric_intersects_trait_impl!( + GeoNum, + RectTraitExt, + RectTag, + LineStringTraitExt, + LineStringTag +); +symmetric_intersects_trait_impl!( + GeoNum, + TriangleTraitExt, + TriangleTag, + LineStringTraitExt, + LineStringTag +); + +// Generate implementations for MultiLineString by delegating to LineString +macro_rules! impl_intersects_multi_line_string_from_line_string { + ($rhs_type:ident, $rhs_tag:ident) => { + impl IntersectsTrait for LHS + where + T: GeoNum, + LHS: MultiLineStringTraitExt, + RHS: $rhs_type, + { + fn intersects_trait(&self, rhs: &RHS) -> bool { + if has_disjoint_bboxes(self, rhs) { + return false; + } + self.line_strings_ext().any(|ls| ls.intersects_trait(rhs)) + } + } + }; +} + +impl_intersects_multi_line_string_from_line_string!(CoordTraitExt, CoordTag); +impl_intersects_multi_line_string_from_line_string!(PointTraitExt, PointTag); +impl_intersects_multi_line_string_from_line_string!(LineStringTraitExt, LineStringTag); +impl_intersects_multi_line_string_from_line_string!(PolygonTraitExt, PolygonTag); +impl_intersects_multi_line_string_from_line_string!(MultiPointTraitExt, MultiPointTag); +impl_intersects_multi_line_string_from_line_string!(MultiLineStringTraitExt, MultiLineStringTag); +impl_intersects_multi_line_string_from_line_string!(MultiPolygonTraitExt, MultiPolygonTag); +impl_intersects_multi_line_string_from_line_string!(GeometryTraitExt, GeometryTag); +impl_intersects_multi_line_string_from_line_string!( + GeometryCollectionTraitExt, + GeometryCollectionTag +); +impl_intersects_multi_line_string_from_line_string!(LineTraitExt, LineTag); +impl_intersects_multi_line_string_from_line_string!(RectTraitExt, RectTag); +impl_intersects_multi_line_string_from_line_string!(TriangleTraitExt, TriangleTag); + +symmetric_intersects_trait_impl!( + GeoNum, + CoordTraitExt, + CoordTag, + MultiLineStringTraitExt, + MultiLineStringTag +); +symmetric_intersects_trait_impl!( + GeoNum, + LineTraitExt, + LineTag, + MultiLineStringTraitExt, + MultiLineStringTag +); +symmetric_intersects_trait_impl!( + GeoNum, + RectTraitExt, + RectTag, + MultiLineStringTraitExt, + MultiLineStringTag +); +symmetric_intersects_trait_impl!( + GeoNum, + TriangleTraitExt, + TriangleTag, + MultiLineStringTraitExt, + MultiLineStringTag +); diff --git a/rust/geo-generic-alg/src/algorithm/intersects/mod.rs b/rust/geo-generic-alg/src/algorithm/intersects/mod.rs new file mode 100644 index 00000000..bae78135 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/intersects/mod.rs @@ -0,0 +1,734 @@ +use geo_traits_ext::GeoTraitExtWithTypeTag; + +use crate::BoundingRect; +use crate::*; + +/// Checks if the geometry Self intersects the geometry Rhs. +/// More formally, either boundary or interior of Self has +/// non-empty (set-theoretic) intersection with the boundary +/// or interior of Rhs. In other words, the [DE-9IM] +/// intersection matrix for (Self, Rhs) is _not_ `FF*FF****`. +/// +/// This predicate is symmetric: `a.intersects(b)` iff +/// `b.intersects(a)`. +/// +/// [DE-9IM]: https://en.wikipedia.org/wiki/DE-9IM +/// +/// # Examples +/// +/// ``` +/// use geo::Intersects; +/// use geo::line_string; +/// +/// let line_string_a = line_string![ +/// (x: 3., y: 2.), +/// (x: 7., y: 6.), +/// ]; +/// +/// let line_string_b = line_string![ +/// (x: 3., y: 4.), +/// (x: 8., y: 4.), +/// ]; +/// +/// let line_string_c = line_string![ +/// (x: 9., y: 2.), +/// (x: 11., y: 5.), +/// ]; +/// +/// assert!(line_string_a.intersects(&line_string_b)); +/// assert!(!line_string_a.intersects(&line_string_c)); +/// ``` +pub trait Intersects { + fn intersects(&self, rhs: &Rhs) -> bool; +} + +pub trait IntersectsTrait { + fn intersects_trait(&self, rhs: &Rhs) -> bool; +} + +impl Intersects for LHS +where + LHS: GeoTraitExtWithTypeTag, + RHS: GeoTraitExtWithTypeTag, + LHS: IntersectsTrait, +{ + fn intersects(&self, rhs: &RHS) -> bool { + self.intersects_trait(rhs) + } +} + +macro_rules! symmetric_intersects_trait_impl { + ($num_type:ident, $lhs_type:ident, $lhs_tag:ident, $rhs_type:ident, $rhs_tag:ident) => { + impl IntersectsTrait<$lhs_tag, $rhs_tag, RHS> for LHS + where + T: $num_type, + LHS: $lhs_type, + RHS: $rhs_type, + { + fn intersects_trait(&self, rhs: &RHS) -> bool { + rhs.intersects_trait(self) + } + } + }; +} + +mod collections; +mod coordinate; +mod line; +mod line_string; +mod point; +mod polygon; +mod rect; +mod triangle; + +// Helper function to check value lies between min and max. +// Only makes sense if min <= max (or always false) +#[inline] +fn value_in_range(value: T, min: T, max: T) -> bool +where + T: std::cmp::PartialOrd, +{ + value >= min && value <= max +} + +// Helper function to check value lies between two bounds, +// where the ordering of the bounds is not known +#[inline] +pub(crate) fn value_in_between(value: T, bound_1: T, bound_2: T) -> bool +where + T: std::cmp::PartialOrd, +{ + if bound_1 < bound_2 { + value_in_range(value, bound_1, bound_2) + } else { + value_in_range(value, bound_2, bound_1) + } +} + +// Helper function to check point lies inside rect given by +// bounds. The first bound need not be min. +#[inline] +pub(crate) fn point_in_rect(value: Coord, bound_1: Coord, bound_2: Coord) -> bool +where + T: CoordNum, +{ + value_in_between(value.x, bound_1.x, bound_2.x) + && value_in_between(value.y, bound_1.y, bound_2.y) +} + +// A cheap bbox check to see if we can skip the more expensive intersection computation +fn has_disjoint_bboxes(a: &A, b: &B) -> bool +where + T: CoordNum, + A: BoundingRect, + B: BoundingRect, +{ + let mut disjoint_bbox = false; + if let Some(a_bbox) = a.bounding_rect().into() { + if let Some(b_bbox) = b.bounding_rect().into() { + if !a_bbox.intersects(&b_bbox) { + disjoint_bbox = true; + } + } + } + disjoint_bbox +} + +#[cfg(test)] +mod test { + use geo_types::{Coord, GeometryCollection}; + + use crate::Intersects; + use crate::{ + coord, line_string, polygon, Geometry, Line, LineString, MultiLineString, MultiPoint, + MultiPolygon, Point, Polygon, Rect, + }; + + /// Tests: intersection LineString and LineString + #[test] + fn empty_linestring1_test() { + let linestring = line_string![(x: 3., y: 2.), (x: 7., y: 6.)]; + assert!(!line_string![].intersects(&linestring)); + } + #[test] + fn empty_linestring2_test() { + let linestring = line_string![(x: 3., y: 2.), (x: 7., y: 6.)]; + assert!(!linestring.intersects(&LineString::new(Vec::new()))); + } + #[test] + fn empty_all_linestring_test() { + let empty: LineString = line_string![]; + assert!(!empty.intersects(&empty)); + } + #[test] + fn intersect_linestring_test() { + let ls1 = line_string![(x: 3., y: 2.), (x: 7., y: 6.)]; + let ls2 = line_string![(x: 3., y: 4.), (x: 8., y: 4.)]; + assert!(ls1.intersects(&ls2)); + } + #[test] + fn parallel_linestrings_test() { + let ls1 = line_string![(x: 3., y: 2.), (x: 7., y: 6.)]; + let ls2 = line_string![(x: 3., y: 1.), (x: 7., y: 5.)]; + assert!(!ls1.intersects(&ls2)); + } + /// Tests: intersection LineString and Polygon + #[test] + fn linestring_in_polygon_test() { + let poly = polygon![ + (x: 0., y: 0.), + (x: 5., y: 0.), + (x: 5., y: 6.), + (x: 0., y: 6.), + (x: 0., y: 0.), + ]; + let ls = line_string![(x: 2., y: 2.), (x: 3., y: 3.)]; + assert!(poly.intersects(&ls)); + } + #[test] + fn linestring_on_boundary_polygon_test() { + let poly = Polygon::new( + LineString::from(vec![(0., 0.), (5., 0.), (5., 6.), (0., 6.), (0., 0.)]), + Vec::new(), + ); + assert!(poly.intersects(&LineString::from(vec![(0., 0.), (5., 0.)]))); + assert!(poly.intersects(&LineString::from(vec![(5., 0.), (5., 6.)]))); + assert!(poly.intersects(&LineString::from(vec![(5., 6.), (0., 6.)]))); + assert!(poly.intersects(&LineString::from(vec![(0., 6.), (0., 0.)]))); + } + #[test] + fn intersect_linestring_polygon_test() { + let poly = Polygon::new( + LineString::from(vec![(0., 0.), (5., 0.), (5., 6.), (0., 6.), (0., 0.)]), + Vec::new(), + ); + assert!(poly.intersects(&LineString::from(vec![(2., 2.), (6., 6.)]))); + } + #[test] + fn linestring_outside_polygon_test() { + let poly = Polygon::new( + LineString::from(vec![(0., 0.), (5., 0.), (5., 6.), (0., 6.), (0., 0.)]), + Vec::new(), + ); + assert!(!poly.intersects(&LineString::from(vec![(7., 2.), (9., 4.)]))); + } + #[test] + fn linestring_in_inner_polygon_test() { + let e = LineString::from(vec![(0., 0.), (5., 0.), (5., 6.), (0., 6.), (0., 0.)]); + let v = vec![LineString::from(vec![ + (1., 1.), + (4., 1.), + (4., 4.), + (1., 4.), + (1., 1.), + ])]; + let poly = Polygon::new(e, v); + assert!(!poly.intersects(&LineString::from(vec![(2., 2.), (3., 3.)]))); + assert!(poly.intersects(&LineString::from(vec![(2., 2.), (4., 4.)]))); + } + #[test] + fn linestring_traverse_polygon_test() { + let e = LineString::from(vec![(0., 0.), (5., 0.), (5., 6.), (0., 6.), (0., 0.)]); + let v = vec![LineString::from(vec![ + (1., 1.), + (4., 1.), + (4., 4.), + (1., 4.), + (1., 1.), + ])]; + let poly = Polygon::new(e, v); + assert!(poly.intersects(&LineString::from(vec![(2., 0.5), (2., 5.)]))); + } + #[test] + fn linestring_in_inner_with_2_inner_polygon_test() { + // (8,9) + // (2,8) | (14,8) + // ------------------------------------|------------------------------------------ + // | | | + // | (4,7) (6,7) | | + // | ------------------ | (11,7) | + // | | | | + // | (4,6) (7,6) | (9,6) | (12,6) | + // | ---------------------- | ----------------|--------- | + // | | | | | | | | + // | | (6,5) | | | | | | + // | | / | | | | | | + // | | / | | | | | | + // | | (5,4) | | | | | | + // | | | | | | | | + // | ---------------------- | ----------------|--------- | + // | (4,3) (7,3) | (9,3) | (12,3) | + // | | (11,2.5) | + // | | | + // ------------------------------------|------------------------------------------ + // (2,2) | (14,2) + // (8,1) + // + let e = LineString::from(vec![(2., 2.), (14., 2.), (14., 8.), (2., 8.), (2., 2.)]); + let v = vec![ + LineString::from(vec![(4., 3.), (7., 3.), (7., 6.), (4., 6.), (4., 3.)]), + LineString::from(vec![(9., 3.), (12., 3.), (12., 6.), (9., 6.), (9., 3.)]), + ]; + let poly = Polygon::new(e, v); + assert!(!poly.intersects(&LineString::from(vec![(5., 4.), (6., 5.)]))); + assert!(poly.intersects(&LineString::from(vec![(11., 2.5), (11., 7.)]))); + assert!(poly.intersects(&LineString::from(vec![(4., 7.), (6., 7.)]))); + assert!(poly.intersects(&LineString::from(vec![(8., 1.), (8., 9.)]))); + } + #[test] + fn polygons_do_not_intersect() { + let p1 = Polygon::new( + LineString::from(vec![(1., 3.), (3., 3.), (3., 5.), (1., 5.), (1., 3.)]), + Vec::new(), + ); + let p2 = Polygon::new( + LineString::from(vec![ + (10., 30.), + (30., 30.), + (30., 50.), + (10., 50.), + (10., 30.), + ]), + Vec::new(), + ); + + assert!(!p1.intersects(&p2)); + assert!(!p2.intersects(&p1)); + } + #[test] + fn polygons_overlap() { + let p1 = Polygon::new( + LineString::from(vec![(1., 3.), (3., 3.), (3., 5.), (1., 5.), (1., 3.)]), + Vec::new(), + ); + let p2 = Polygon::new( + LineString::from(vec![(2., 3.), (4., 3.), (4., 7.), (2., 7.), (2., 3.)]), + Vec::new(), + ); + + assert!(p1.intersects(&p2)); + assert!(p2.intersects(&p1)); + } + #[test] + fn polygon_contained() { + let p1 = Polygon::new( + LineString::from(vec![(1., 3.), (4., 3.), (4., 6.), (1., 6.), (1., 3.)]), + Vec::new(), + ); + let p2 = Polygon::new( + LineString::from(vec![(2., 4.), (3., 4.), (3., 5.), (2., 5.), (2., 4.)]), + Vec::new(), + ); + + assert!(p1.intersects(&p2)); + assert!(p2.intersects(&p1)); + } + #[test] + fn polygons_conincident() { + let p1 = Polygon::new( + LineString::from(vec![(1., 3.), (4., 3.), (4., 6.), (1., 6.), (1., 3.)]), + Vec::new(), + ); + let p2 = Polygon::new( + LineString::from(vec![(1., 3.), (4., 3.), (4., 6.), (1., 6.), (1., 3.)]), + Vec::new(), + ); + + assert!(p1.intersects(&p2)); + assert!(p2.intersects(&p1)); + } + #[test] + fn polygon_intersects_bounding_rect_test() { + // Polygon poly = + // + // (0,8) (12,8) + // ┌──────────────────────┐ + // │ (7,7) (11,7) │ + // │ ┌──────┐ │ + // │ │ │ │ + // │ │(hole)│ │ + // │ │ │ │ + // │ │ │ │ + // │ └──────┘ │ + // │ (7,4) (11,4) │ + // │ │ + // │ │ + // │ │ + // │ │ + // │ │ + // └──────────────────────┘ + // (0,0) (12,0) + let poly = Polygon::new( + LineString::from(vec![(0., 0.), (12., 0.), (12., 8.), (0., 8.), (0., 0.)]), + vec![LineString::from(vec![ + (7., 4.), + (11., 4.), + (11., 7.), + (7., 7.), + (7., 4.), + ])], + ); + let b1 = Rect::new(coord! { x: 11., y: 1. }, coord! { x: 13., y: 2. }); + let b2 = Rect::new(coord! { x: 2., y: 2. }, coord! { x: 8., y: 5. }); + let b3 = Rect::new(coord! { x: 8., y: 5. }, coord! { x: 10., y: 6. }); + let b4 = Rect::new(coord! { x: 1., y: 1. }, coord! { x: 3., y: 3. }); + // overlaps + assert!(poly.intersects(&b1)); + // contained in exterior, overlaps with hole + assert!(poly.intersects(&b2)); + // completely contained in the hole + assert!(!poly.intersects(&b3)); + // completely contained in the polygon + assert!(poly.intersects(&b4)); + // conversely, + assert!(b1.intersects(&poly)); + assert!(b2.intersects(&poly)); + assert!(!b3.intersects(&poly)); + assert!(b4.intersects(&poly)); + } + #[test] + fn bounding_rect_test() { + let bounding_rect_xl = + Rect::new(coord! { x: -100., y: -200. }, coord! { x: 100., y: 200. }); + let bounding_rect_sm = Rect::new(coord! { x: -10., y: -20. }, coord! { x: 10., y: 20. }); + let bounding_rect_s2 = Rect::new(coord! { x: 0., y: 0. }, coord! { x: 20., y: 30. }); + // confirmed using GEOS + assert!(bounding_rect_xl.intersects(&bounding_rect_sm)); + assert!(bounding_rect_sm.intersects(&bounding_rect_xl)); + assert!(bounding_rect_sm.intersects(&bounding_rect_s2)); + assert!(bounding_rect_s2.intersects(&bounding_rect_sm)); + } + #[test] + fn rect_intersection_consistent_with_poly_intersection_test() { + let bounding_rect_xl = + Rect::new(coord! { x: -100., y: -200. }, coord! { x: 100., y: 200. }); + let bounding_rect_sm = Rect::new(coord! { x: -10., y: -20. }, coord! { x: 10., y: 20. }); + let bounding_rect_s2 = Rect::new(coord! { x: 0., y: 0. }, coord! { x: 20., y: 30. }); + + assert!(bounding_rect_xl.to_polygon().intersects(&bounding_rect_sm)); + assert!(bounding_rect_xl.intersects(&bounding_rect_sm.to_polygon())); + assert!(bounding_rect_xl + .to_polygon() + .intersects(&bounding_rect_sm.to_polygon())); + + assert!(bounding_rect_sm.to_polygon().intersects(&bounding_rect_xl)); + assert!(bounding_rect_sm.intersects(&bounding_rect_xl.to_polygon())); + assert!(bounding_rect_sm + .to_polygon() + .intersects(&bounding_rect_xl.to_polygon())); + + assert!(bounding_rect_sm.to_polygon().intersects(&bounding_rect_s2)); + assert!(bounding_rect_sm.intersects(&bounding_rect_s2.to_polygon())); + assert!(bounding_rect_sm + .to_polygon() + .intersects(&bounding_rect_s2.to_polygon())); + + assert!(bounding_rect_s2.to_polygon().intersects(&bounding_rect_sm)); + assert!(bounding_rect_s2.intersects(&bounding_rect_sm.to_polygon())); + assert!(bounding_rect_s2 + .to_polygon() + .intersects(&bounding_rect_sm.to_polygon())); + } + #[test] + fn point_intersects_line_test() { + let p0 = Point::new(2., 4.); + // vertical line + let line1 = Line::from([(2., 0.), (2., 5.)]); + // point on line, but outside line segment + let line2 = Line::from([(0., 6.), (1.5, 4.5)]); + // point on line + let line3 = Line::from([(0., 6.), (3., 3.)]); + // point above line with positive slope + let line4 = Line::from([(1., 2.), (5., 3.)]); + // point below line with positive slope + let line5 = Line::from([(1., 5.), (5., 6.)]); + // point above line with negative slope + let line6 = Line::from([(1., 2.), (5., -3.)]); + // point below line with negative slope + let line7 = Line::from([(1., 6.), (5., 5.)]); + assert!(line1.intersects(&p0)); + assert!(p0.intersects(&line1)); + assert!(!line2.intersects(&p0)); + assert!(!p0.intersects(&line2)); + assert!(line3.intersects(&p0)); + assert!(p0.intersects(&line3)); + assert!(!line4.intersects(&p0)); + assert!(!p0.intersects(&line4)); + assert!(!line5.intersects(&p0)); + assert!(!p0.intersects(&line5)); + assert!(!line6.intersects(&p0)); + assert!(!p0.intersects(&line6)); + assert!(!line7.intersects(&p0)); + assert!(!p0.intersects(&line7)); + } + #[test] + fn line_intersects_line_test() { + let line0 = Line::from([(0., 0.), (3., 4.)]); + let line1 = Line::from([(2., 0.), (2., 5.)]); + let line2 = Line::from([(0., 7.), (5., 4.)]); + let line3 = Line::from([(0., 0.), (-3., -4.)]); + assert!(line0.intersects(&line0)); + assert!(line0.intersects(&line1)); + assert!(!line0.intersects(&line2)); + assert!(line0.intersects(&line3)); + + assert!(line1.intersects(&line0)); + assert!(line1.intersects(&line1)); + assert!(!line1.intersects(&line2)); + assert!(!line1.intersects(&line3)); + + assert!(!line2.intersects(&line0)); + assert!(!line2.intersects(&line1)); + assert!(line2.intersects(&line2)); + assert!(!line1.intersects(&line3)); + } + #[test] + fn line_intersects_linestring_test() { + let line0 = Line::from([(0., 0.), (3., 4.)]); + let linestring0 = LineString::from(vec![(0., 1.), (1., 0.), (2., 0.)]); + let linestring1 = LineString::from(vec![(0.5, 0.2), (1., 0.), (2., 0.)]); + assert!(line0.intersects(&linestring0)); + assert!(!line0.intersects(&linestring1)); + assert!(linestring0.intersects(&line0)); + assert!(!linestring1.intersects(&line0)); + } + #[test] + fn line_intersects_polygon_test() { + let line0 = Line::from([(0.5, 0.5), (2., 1.)]); + let poly0 = Polygon::new( + LineString::from(vec![(0., 0.), (1., 2.), (1., 0.), (0., 0.)]), + vec![], + ); + let poly1 = Polygon::new( + LineString::from(vec![(1., -1.), (2., -1.), (2., -2.), (1., -1.)]), + vec![], + ); + // line contained in the hole + let poly2 = Polygon::new( + LineString::from(vec![(-1., -1.), (-1., 10.), (10., -1.), (-1., -1.)]), + vec![LineString::from(vec![ + (0., 0.), + (3., 4.), + (3., 0.), + (0., 0.), + ])], + ); + assert!(line0.intersects(&poly0)); + assert!(poly0.intersects(&line0)); + + assert!(!line0.intersects(&poly1)); + assert!(!poly1.intersects(&line0)); + + assert!(!line0.intersects(&poly2)); + assert!(!poly2.intersects(&line0)); + } + #[test] + // See https://github.com/georust/geo/issues/419 + fn rect_test_419() { + let a = Rect::new( + coord! { + x: 9.228515625, + y: 46.83013364044739, + }, + coord! { + x: 9.2724609375, + y: 46.86019101567026, + }, + ); + let b = Rect::new( + coord! { + x: 9.17953, + y: 46.82018, + }, + coord! { + x: 9.26309, + y: 46.88099, + }, + ); + assert!(a.intersects(&b)); + assert!(b.intersects(&a)); + } + + #[test] + fn test_geom_collection_collection() { + let collection0 = Geometry::GeometryCollection(GeometryCollection::new_from(vec![ + Geometry::Point(Point::new(0., 0.)), + Geometry::Point(Point::new(1., 1.)), + ])); + let collection1 = Geometry::GeometryCollection(GeometryCollection::new_from(vec![ + Geometry::Point(Point::new(0., 0.)), + Geometry::Point(Point::new(2., 2.)), + ])); + let collection2 = Geometry::GeometryCollection(GeometryCollection::new_from(vec![ + Geometry::Point(Point::new(3., 3.)), + Geometry::Point(Point::new(4., 4.)), + ])); + assert!(collection0.intersects(&collection1)); + assert!(collection1.intersects(&collection0)); + assert!(!collection0.intersects(&collection2)); + assert!(!collection2.intersects(&collection0)); + } + + #[test] + fn compile_test_geom_geom() { + // This test should check existence of all + // combinations of geometry types. + let geom: Geometry<_> = Line::from([(0.5, 0.5), (2., 1.)]).into(); + assert!(geom.intersects(&geom)); + } + + #[test] + fn exhaustive_compile_test() { + use geo_types::{GeometryCollection, Triangle}; + let c: Coord = coord! { x: 0., y: 0. }; + let pt: Point = Point::new(0., 0.); + let ln: Line = Line::new((0., 0.), (1., 1.)); + let ls = line_string![(0., 0.).into(), (1., 1.).into()]; + let poly = Polygon::new(LineString::from(vec![(0., 0.), (1., 1.), (1., 0.)]), vec![]); + let rect = Rect::new(coord! { x: 10., y: 20. }, coord! { x: 30., y: 10. }); + let tri = Triangle::new( + coord! { x: 0., y: 0. }, + coord! { x: 10., y: 20. }, + coord! { x: 20., y: -10. }, + ); + let geom = Geometry::Point(pt); + let gc = GeometryCollection::new_from(vec![geom.clone()]); + let multi_point = MultiPoint::new(vec![pt]); + let multi_ls = MultiLineString::new(vec![ls.clone()]); + let multi_poly = MultiPolygon::new(vec![poly.clone()]); + + let _ = c.intersects(&pt); + let _ = c.intersects(&ln); + let _ = c.intersects(&ls); + let _ = c.intersects(&poly); + let _ = c.intersects(&rect); + let _ = c.intersects(&tri); + let _ = c.intersects(&geom); + let _ = c.intersects(&gc); + let _ = c.intersects(&multi_point); + let _ = c.intersects(&multi_ls); + let _ = c.intersects(&multi_poly); + + let _ = pt.intersects(&pt); + let _ = pt.intersects(&ln); + let _ = pt.intersects(&ls); + let _ = pt.intersects(&poly); + let _ = pt.intersects(&rect); + let _ = pt.intersects(&tri); + let _ = pt.intersects(&geom); + let _ = pt.intersects(&gc); + let _ = pt.intersects(&multi_point); + let _ = pt.intersects(&multi_ls); + let _ = pt.intersects(&multi_poly); + let _ = ln.intersects(&pt); + let _ = ln.intersects(&ln); + let _ = ln.intersects(&ls); + let _ = ln.intersects(&poly); + let _ = ln.intersects(&rect); + let _ = ln.intersects(&tri); + let _ = ln.intersects(&geom); + let _ = ln.intersects(&gc); + let _ = ln.intersects(&multi_point); + let _ = ln.intersects(&multi_ls); + let _ = ln.intersects(&multi_poly); + let _ = ls.intersects(&pt); + let _ = ls.intersects(&ln); + let _ = ls.intersects(&ls); + let _ = ls.intersects(&poly); + let _ = ls.intersects(&rect); + let _ = ls.intersects(&tri); + let _ = ls.intersects(&geom); + let _ = ls.intersects(&gc); + let _ = ls.intersects(&multi_point); + let _ = ls.intersects(&multi_ls); + let _ = ls.intersects(&multi_poly); + let _ = poly.intersects(&pt); + let _ = poly.intersects(&ln); + let _ = poly.intersects(&ls); + let _ = poly.intersects(&poly); + let _ = poly.intersects(&rect); + let _ = poly.intersects(&tri); + let _ = poly.intersects(&geom); + let _ = poly.intersects(&gc); + let _ = poly.intersects(&multi_point); + let _ = poly.intersects(&multi_ls); + let _ = poly.intersects(&multi_poly); + let _ = rect.intersects(&pt); + let _ = rect.intersects(&ln); + let _ = rect.intersects(&ls); + let _ = rect.intersects(&poly); + let _ = rect.intersects(&rect); + let _ = rect.intersects(&tri); + let _ = rect.intersects(&geom); + let _ = rect.intersects(&gc); + let _ = rect.intersects(&multi_point); + let _ = rect.intersects(&multi_ls); + let _ = rect.intersects(&multi_poly); + let _ = tri.intersects(&pt); + let _ = tri.intersects(&ln); + let _ = tri.intersects(&ls); + let _ = tri.intersects(&poly); + let _ = tri.intersects(&rect); + let _ = tri.intersects(&tri); + let _ = tri.intersects(&geom); + let _ = tri.intersects(&gc); + let _ = tri.intersects(&multi_point); + let _ = tri.intersects(&multi_ls); + let _ = tri.intersects(&multi_poly); + let _ = geom.intersects(&pt); + let _ = geom.intersects(&ln); + let _ = geom.intersects(&ls); + let _ = geom.intersects(&poly); + let _ = geom.intersects(&rect); + let _ = geom.intersects(&tri); + let _ = geom.intersects(&geom); + let _ = geom.intersects(&gc); + let _ = geom.intersects(&multi_point); + let _ = geom.intersects(&multi_ls); + let _ = geom.intersects(&multi_poly); + let _ = gc.intersects(&pt); + let _ = gc.intersects(&ln); + let _ = gc.intersects(&ls); + let _ = gc.intersects(&poly); + let _ = gc.intersects(&rect); + let _ = gc.intersects(&tri); + let _ = gc.intersects(&geom); + let _ = gc.intersects(&gc); + let _ = gc.intersects(&multi_point); + let _ = gc.intersects(&multi_ls); + let _ = gc.intersects(&multi_poly); + let _ = multi_point.intersects(&pt); + let _ = multi_point.intersects(&ln); + let _ = multi_point.intersects(&ls); + let _ = multi_point.intersects(&poly); + let _ = multi_point.intersects(&rect); + let _ = multi_point.intersects(&tri); + let _ = multi_point.intersects(&geom); + let _ = multi_point.intersects(&gc); + let _ = multi_point.intersects(&multi_point); + let _ = multi_point.intersects(&multi_ls); + let _ = multi_point.intersects(&multi_poly); + let _ = multi_ls.intersects(&pt); + let _ = multi_ls.intersects(&ln); + let _ = multi_ls.intersects(&ls); + let _ = multi_ls.intersects(&poly); + let _ = multi_ls.intersects(&rect); + let _ = multi_ls.intersects(&tri); + let _ = multi_ls.intersects(&geom); + let _ = multi_ls.intersects(&gc); + let _ = multi_ls.intersects(&multi_point); + let _ = multi_ls.intersects(&multi_ls); + let _ = multi_ls.intersects(&multi_poly); + let _ = multi_poly.intersects(&pt); + let _ = multi_poly.intersects(&ln); + let _ = multi_poly.intersects(&ls); + let _ = multi_poly.intersects(&poly); + let _ = multi_poly.intersects(&rect); + let _ = multi_poly.intersects(&tri); + let _ = multi_poly.intersects(&geom); + let _ = multi_poly.intersects(&gc); + let _ = multi_poly.intersects(&multi_point); + let _ = multi_poly.intersects(&multi_ls); + let _ = multi_poly.intersects(&multi_poly); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/intersects/point.rs b/rust/geo-generic-alg/src/algorithm/intersects/point.rs new file mode 100644 index 00000000..164390e3 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/intersects/point.rs @@ -0,0 +1,91 @@ +use geo_traits_ext::*; + +use super::IntersectsTrait; +use crate::*; + +// Generate implementations for Point by delegating to Coord +macro_rules! impl_intersects_point_from_coord { + ($num_type:ident, $rhs_type:ident, $rhs_tag:ident) => { + impl IntersectsTrait for LHS + where + T: $num_type, + LHS: PointTraitExt, + RHS: $rhs_type, + { + fn intersects_trait(&self, rhs: &RHS) -> bool { + self.coord_ext().is_some_and(|c| c.intersects_trait(rhs)) + } + } + }; +} + +impl_intersects_point_from_coord!(CoordNum, CoordTraitExt, CoordTag); +impl_intersects_point_from_coord!(CoordNum, PointTraitExt, PointTag); +impl_intersects_point_from_coord!(GeoNum, LineStringTraitExt, LineStringTag); +impl_intersects_point_from_coord!(GeoNum, PolygonTraitExt, PolygonTag); +impl_intersects_point_from_coord!(CoordNum, MultiPointTraitExt, MultiPointTag); +impl_intersects_point_from_coord!(GeoNum, MultiLineStringTraitExt, MultiLineStringTag); +impl_intersects_point_from_coord!(GeoNum, MultiPolygonTraitExt, MultiPolygonTag); +impl_intersects_point_from_coord!(GeoNum, GeometryTraitExt, GeometryTag); +impl_intersects_point_from_coord!(GeoNum, GeometryCollectionTraitExt, GeometryCollectionTag); +impl_intersects_point_from_coord!(GeoNum, LineTraitExt, LineTag); +impl_intersects_point_from_coord!(CoordNum, RectTraitExt, RectTag); +impl_intersects_point_from_coord!(GeoNum, TriangleTraitExt, TriangleTag); + +// Generate implementations for MultiPoint by delegating to Point +macro_rules! impl_intersects_multipoint_from_point { + ($num_type:ident, $rhs_type:ident, $rhs_tag:ident) => { + impl IntersectsTrait for LHS + where + T: $num_type, + LHS: MultiPointTraitExt, + RHS: $rhs_type, + { + fn intersects_trait(&self, rhs: &RHS) -> bool { + self.points_ext().any(|p| p.intersects_trait(rhs)) + } + } + }; +} + +impl_intersects_multipoint_from_point!(CoordNum, CoordTraitExt, CoordTag); +impl_intersects_multipoint_from_point!(CoordNum, PointTraitExt, PointTag); +impl_intersects_multipoint_from_point!(GeoNum, LineStringTraitExt, LineStringTag); +impl_intersects_multipoint_from_point!(GeoNum, PolygonTraitExt, PolygonTag); +impl_intersects_multipoint_from_point!(CoordNum, MultiPointTraitExt, MultiPointTag); +impl_intersects_multipoint_from_point!(GeoNum, MultiLineStringTraitExt, MultiLineStringTag); +impl_intersects_multipoint_from_point!(GeoNum, MultiPolygonTraitExt, MultiPolygonTag); +impl_intersects_multipoint_from_point!(GeoNum, GeometryTraitExt, GeometryTag); +impl_intersects_multipoint_from_point!(GeoNum, GeometryCollectionTraitExt, GeometryCollectionTag); +impl_intersects_multipoint_from_point!(GeoNum, LineTraitExt, LineTag); +impl_intersects_multipoint_from_point!(CoordNum, RectTraitExt, RectTag); +impl_intersects_multipoint_from_point!(GeoNum, TriangleTraitExt, TriangleTag); + +symmetric_intersects_trait_impl!( + CoordNum, + CoordTraitExt, + CoordTag, + MultiPointTraitExt, + MultiPointTag +); +symmetric_intersects_trait_impl!( + GeoNum, + LineTraitExt, + LineTag, + MultiPointTraitExt, + MultiPointTag +); +symmetric_intersects_trait_impl!( + GeoNum, + TriangleTraitExt, + TriangleTag, + MultiPointTraitExt, + MultiPointTag +); +symmetric_intersects_trait_impl!( + GeoNum, + PolygonTraitExt, + PolygonTag, + MultiPointTraitExt, + MultiPointTag +); diff --git a/rust/geo-generic-alg/src/algorithm/intersects/polygon.rs b/rust/geo-generic-alg/src/algorithm/intersects/polygon.rs new file mode 100644 index 00000000..fb37d71a --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/intersects/polygon.rs @@ -0,0 +1,193 @@ +use super::{has_disjoint_bboxes, IntersectsTrait}; +use crate::coordinate_position::CoordPos; +use crate::CoordinatePosition; +use crate::GeoNum; +use geo_traits_ext::*; + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: PolygonTraitExt, + RHS: CoordTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + self.coordinate_position(&rhs.geo_coord()) != CoordPos::Outside + } +} + +symmetric_intersects_trait_impl!(GeoNum, CoordTraitExt, CoordTag, PolygonTraitExt, PolygonTag); +symmetric_intersects_trait_impl!(GeoNum, PolygonTraitExt, PolygonTag, PointTraitExt, PointTag); + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: PolygonTraitExt, + RHS: LineTraitExt, +{ + fn intersects_trait(&self, line: &RHS) -> bool { + // Check if line intersects any part of the polygon + if let Some(exterior) = self.exterior_ext() { + exterior.intersects_trait(line) + || self + .interiors_ext() + .any(|inner| inner.intersects_trait(line)) + || self.intersects_trait(&line.start_ext()) + || self.intersects_trait(&line.end_ext()) + } else { + false + } + } +} + +symmetric_intersects_trait_impl!(GeoNum, LineTraitExt, LineTag, PolygonTraitExt, PolygonTag); +symmetric_intersects_trait_impl!( + GeoNum, + PolygonTraitExt, + PolygonTag, + LineStringTraitExt, + LineStringTag +); +symmetric_intersects_trait_impl!( + GeoNum, + PolygonTraitExt, + PolygonTag, + MultiLineStringTraitExt, + MultiLineStringTag +); + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: PolygonTraitExt, + RHS: RectTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + self.intersects_trait(&rhs.to_polygon()) + } +} + +symmetric_intersects_trait_impl!(GeoNum, RectTraitExt, RectTag, PolygonTraitExt, PolygonTag); + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: PolygonTraitExt, + RHS: TriangleTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + self.intersects_trait(&rhs.to_polygon()) + } +} + +symmetric_intersects_trait_impl!( + GeoNum, + TriangleTraitExt, + TriangleTag, + PolygonTraitExt, + PolygonTag +); + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: PolygonTraitExt, + RHS: PolygonTraitExt, +{ + fn intersects_trait(&self, polygon: &RHS) -> bool { + if has_disjoint_bboxes(self, polygon) { + return false; + } + + if let (Some(self_exterior), Some(polygon_exterior)) = + (self.exterior_ext(), polygon.exterior_ext()) + { + // self intersects (or contains) any line in polygon + self.intersects_trait(&polygon_exterior) || + polygon.interiors_ext().any(|inner_line_string| self.intersects_trait(&inner_line_string)) || + // self is contained inside polygon + polygon.intersects_trait(&self_exterior) + } else { + false + } + } +} + +// Generate implementations for MultiPolygon by delegating to the Polygon implementation + +macro_rules! impl_intersects_multi_polygon_from_polygon { + ($rhs_type:ident, $rhs_tag:ident) => { + impl IntersectsTrait for LHS + where + T: GeoNum, + LHS: MultiPolygonTraitExt, + RHS: $rhs_type, + { + fn intersects_trait(&self, rhs: &RHS) -> bool { + if has_disjoint_bboxes(self, rhs) { + return false; + } + self.polygons_ext().any(|p| p.intersects_trait(rhs)) + } + } + }; +} + +impl_intersects_multi_polygon_from_polygon!(CoordTraitExt, CoordTag); +impl_intersects_multi_polygon_from_polygon!(PointTraitExt, PointTag); +impl_intersects_multi_polygon_from_polygon!(LineStringTraitExt, LineStringTag); +impl_intersects_multi_polygon_from_polygon!(PolygonTraitExt, PolygonTag); +impl_intersects_multi_polygon_from_polygon!(MultiPointTraitExt, MultiPointTag); +impl_intersects_multi_polygon_from_polygon!(MultiLineStringTraitExt, MultiLineStringTag); +impl_intersects_multi_polygon_from_polygon!(MultiPolygonTraitExt, MultiPolygonTag); +impl_intersects_multi_polygon_from_polygon!(GeometryTraitExt, GeometryTag); +impl_intersects_multi_polygon_from_polygon!(GeometryCollectionTraitExt, GeometryCollectionTag); +impl_intersects_multi_polygon_from_polygon!(LineTraitExt, LineTag); +impl_intersects_multi_polygon_from_polygon!(RectTraitExt, RectTag); +impl_intersects_multi_polygon_from_polygon!(TriangleTraitExt, TriangleTag); + +symmetric_intersects_trait_impl!( + GeoNum, + CoordTraitExt, + CoordTag, + MultiPolygonTraitExt, + MultiPolygonTag +); +symmetric_intersects_trait_impl!( + GeoNum, + LineTraitExt, + LineTag, + MultiPolygonTraitExt, + MultiPolygonTag +); +symmetric_intersects_trait_impl!( + GeoNum, + RectTraitExt, + RectTag, + MultiPolygonTraitExt, + MultiPolygonTag +); +symmetric_intersects_trait_impl!( + GeoNum, + TriangleTraitExt, + TriangleTag, + MultiPolygonTraitExt, + MultiPolygonTag +); +symmetric_intersects_trait_impl!( + GeoNum, + PolygonTraitExt, + PolygonTag, + MultiPolygonTraitExt, + MultiPolygonTag +); + +#[cfg(test)] +mod tests { + use crate::*; + #[test] + fn geom_intersects_geom() { + let a = Geometry::::from(polygon![]); + let b = Geometry::from(polygon![]); + assert!(!a.intersects(&b)); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/intersects/rect.rs b/rust/geo-generic-alg/src/algorithm/intersects/rect.rs new file mode 100644 index 00000000..0969afbb --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/intersects/rect.rs @@ -0,0 +1,97 @@ +use geo_traits::CoordTrait; +use geo_traits_ext::*; + +use super::IntersectsTrait; +use crate::*; + +impl IntersectsTrait for LHS +where + T: CoordNum, + LHS: RectTraitExt, + RHS: CoordTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + let lhs_x = rhs.x(); + let lhs_y = rhs.y(); + + lhs_x >= self.min().x() + && lhs_y >= self.min().y() + && lhs_x <= self.max().x() + && lhs_y <= self.max().y() + } +} + +symmetric_intersects_trait_impl!(CoordNum, CoordTraitExt, CoordTag, RectTraitExt, RectTag); +symmetric_intersects_trait_impl!(CoordNum, RectTraitExt, RectTag, PointTraitExt, PointTag); +symmetric_intersects_trait_impl!( + CoordNum, + RectTraitExt, + RectTag, + MultiPointTraitExt, + MultiPointTag +); + +impl IntersectsTrait for LHS +where + T: CoordNum, + LHS: RectTraitExt, + RHS: RectTraitExt, +{ + fn intersects_trait(&self, other: &RHS) -> bool { + if self.max().x() < other.min().x() { + return false; + } + + if self.max().y() < other.min().y() { + return false; + } + + if self.min().x() > other.max().x() { + return false; + } + + if self.min().y() > other.max().y() { + return false; + } + + true + } +} + +// Same logic as polygon x line, but avoid an allocation. +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: RectTraitExt, + RHS: LineTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + let lt = self.min_coord(); + let rb = self.max_coord(); + let lb = Coord::from((lt.x, rb.y)); + let rt = Coord::from((rb.x, lt.y)); + + // If either rhs.{start,end} lies inside Rect, then true + self.intersects_trait(&rhs.start_ext()) + || self.intersects_trait(&rhs.end_ext()) + || Line::new(lt, rt).intersects_trait(rhs) + || Line::new(rt, rb).intersects_trait(rhs) + || Line::new(lb, rb).intersects_trait(rhs) + || Line::new(lt, lb).intersects_trait(rhs) + } +} + +symmetric_intersects_trait_impl!(GeoNum, LineTraitExt, LineTag, RectTraitExt, RectTag); + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: RectTraitExt, + RHS: TriangleTraitExt, +{ + fn intersects_trait(&self, other: &RHS) -> bool { + self.intersects_trait(&other.to_polygon()) + } +} + +symmetric_intersects_trait_impl!(GeoNum, TriangleTraitExt, TriangleTag, RectTraitExt, RectTag); diff --git a/rust/geo-generic-alg/src/algorithm/intersects/triangle.rs b/rust/geo-generic-alg/src/algorithm/intersects/triangle.rs new file mode 100644 index 00000000..0ede78b2 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/intersects/triangle.rs @@ -0,0 +1,71 @@ +use super::IntersectsTrait; +use crate::*; +use geo_traits_ext::*; + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: TriangleTraitExt, + RHS: CoordTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + let rhs = rhs.geo_coord(); + + let mut orientations = self + .to_lines() + .map(|l| T::Ker::orient2d(l.start, l.end, rhs)); + + orientations.sort(); + + !orientations + .windows(2) + .any(|win| win[0] != win[1] && win[1] != Orientation::Collinear) + + // // neglecting robust predicates, hence faster + // let p0x = self.0.x.to_f64().unwrap(); + // let p0y = self.0.y.to_f64().unwrap(); + // let p1x = self.1.x.to_f64().unwrap(); + // let p1y = self.1.y.to_f64().unwrap(); + // let p2x = self.2.x.to_f64().unwrap(); + // let p2y = self.2.y.to_f64().unwrap(); + + // let px = rhs.x.to_f64().unwrap(); + // let py = rhs.y.to_f64().unwrap(); + + // let s = (p0x - p2x) * (py - p2y) - (p0y - p2y) * (px - p2x); + // let t = (p1x - p0x) * (py - p0y) - (p1y - p0y) * (px - p0x); + + // if (s < 0.) != (t < 0.) && s != 0. && t != 0. { + // return false; + // } + + // let d = (p2x - p1x) * (py - p1y) - (p2y - p1y) * (px - p1x); + // d == 0. || (d < 0.) == (s + t <= 0.) + } +} + +symmetric_intersects_trait_impl!( + GeoNum, + CoordTraitExt, + CoordTag, + TriangleTraitExt, + TriangleTag +); +symmetric_intersects_trait_impl!( + GeoNum, + TriangleTraitExt, + TriangleTag, + PointTraitExt, + PointTag +); + +impl IntersectsTrait for LHS +where + T: GeoNum, + LHS: TriangleTraitExt, + RHS: TriangleTraitExt, +{ + fn intersects_trait(&self, rhs: &RHS) -> bool { + self.to_polygon().intersects_trait(&rhs.to_polygon()) + } +} diff --git a/rust/geo-generic-alg/src/algorithm/kernels/mod.rs b/rust/geo-generic-alg/src/algorithm/kernels/mod.rs new file mode 100644 index 00000000..814c4575 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/kernels/mod.rs @@ -0,0 +1,63 @@ +use num_traits::Zero; +use std::cmp::Ordering; + +use crate::{coord, Coord, CoordNum}; + +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)] +pub enum Orientation { + CounterClockwise, + Clockwise, + Collinear, +} + +impl Orientation { + /// Helper to convert orientation-2d into an ordering. + #[inline] + pub(crate) fn as_ordering(&self) -> Ordering { + match self { + Orientation::CounterClockwise => Ordering::Less, + Orientation::Clockwise => Ordering::Greater, + Orientation::Collinear => Ordering::Equal, + } + } +} + +/// Kernel trait to provide predicates to operate on +/// different scalar types. +pub trait Kernel { + /// Gives the orientation of 3 2-dimensional points: + /// ccw, cw or collinear (None) + fn orient2d(p: Coord, q: Coord, r: Coord) -> Orientation { + let res = (q.x - p.x) * (r.y - q.y) - (q.y - p.y) * (r.x - q.x); + if res > Zero::zero() { + Orientation::CounterClockwise + } else if res < Zero::zero() { + Orientation::Clockwise + } else { + Orientation::Collinear + } + } + + fn square_euclidean_distance(p: Coord, q: Coord) -> T { + (p.x - q.x) * (p.x - q.x) + (p.y - q.y) * (p.y - q.y) + } + + /// Compute the sign of the dot product of `u` and `v` using + /// robust predicates. The output is `CounterClockwise` if + /// the sign is positive, `Clockwise` if negative, and + /// `Collinear` if zero. + fn dot_product_sign(u: Coord, v: Coord) -> Orientation { + let zero = Coord::zero(); + let vdash = coord! { + x: T::zero() - v.y, + y: v.x, + }; + Self::orient2d(zero, u, vdash) + } +} + +pub mod robust; +pub use self::robust::RobustKernel; + +pub mod simple; +pub use self::simple::SimpleKernel; diff --git a/rust/geo-generic-alg/src/algorithm/kernels/robust.rs b/rust/geo-generic-alg/src/algorithm/kernels/robust.rs new file mode 100644 index 00000000..b41df55a --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/kernels/robust.rs @@ -0,0 +1,44 @@ +use super::{CoordNum, Kernel, Orientation}; +use crate::Coord; + +use num_traits::{Float, NumCast}; + +/// Robust kernel that uses [fast robust +/// predicates](//www.cs.cmu.edu/~quake/robust.html) to +/// provide robust floating point predicates. Should only be +/// used with types that can _always_ be casted to `f64` +/// _without loss in precision_. +#[derive(Default, Debug)] +pub struct RobustKernel; + +impl Kernel for RobustKernel +where + T: CoordNum + Float, +{ + fn orient2d(p: Coord, q: Coord, r: Coord) -> Orientation { + use robust::{orient2d, Coord}; + + let orientation = orient2d( + Coord { + x: ::from(p.x).unwrap(), + y: ::from(p.y).unwrap(), + }, + Coord { + x: ::from(q.x).unwrap(), + y: ::from(q.y).unwrap(), + }, + Coord { + x: ::from(r.x).unwrap(), + y: ::from(r.y).unwrap(), + }, + ); + + if orientation < 0. { + Orientation::Clockwise + } else if orientation > 0. { + Orientation::CounterClockwise + } else { + Orientation::Collinear + } + } +} diff --git a/rust/geo-generic-alg/src/algorithm/kernels/simple.rs b/rust/geo-generic-alg/src/algorithm/kernels/simple.rs new file mode 100644 index 00000000..9bb75ed8 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/kernels/simple.rs @@ -0,0 +1,10 @@ +use super::Kernel; +use crate::CoordNum; + +/// Simple kernel provides the direct implementation of the +/// predicates. These are meant to be used with exact +/// arithmetic signed types (eg. i32, i64). +#[derive(Default, Debug)] +pub struct SimpleKernel; + +impl Kernel for SimpleKernel {} diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs b/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs new file mode 100644 index 00000000..c1f4653a --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs @@ -0,0 +1,15 @@ +/// Calculate the minimum distance between two geometries. +pub trait Distance { + /// Note that not all implementations support all geometry combinations, but at least `Point` to `Point` + /// is supported. + /// See [specific implementations](#implementors) for details. + /// + /// # Units + /// + /// - `origin`, `destination`: geometry where the units of x/y depend on the trait implementation. + /// - returns: depends on the trait implementation. + fn distance(&self, origin: Origin, destination: Destination) -> F; +} + +// Re-export the DistanceExt trait from the refactored euclidean metric space +pub use super::metric_spaces::euclidean::DistanceExt; diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/length.rs b/rust/geo-generic-alg/src/algorithm/line_measures/length.rs new file mode 100644 index 00000000..dc007d0c --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/line_measures/length.rs @@ -0,0 +1,809 @@ +use super::Distance; +use crate::{CoordFloat, Line, LineString, MultiLineString, Point}; +use geo_traits::{CoordTrait, PolygonTrait}; +use geo_traits_ext::*; +use std::borrow::Borrow; + +/// Extension trait that enables the modern Length and Perimeter API for WKB and other generic geometry types. +/// +/// This provides the same API as the concrete `LengthMeasurable` implementations but works with +/// any geometry type that implements the geo-traits-ext pattern. +/// +/// # Examples +/// ``` +/// use geo_generic_alg::algorithm::line_measures::{LengthMeasurableExt, Euclidean}; +/// use geo_types::{LineString, coord}; +/// let ls = LineString::new(vec![ +/// coord! { x: 0., y: 0. }, +/// coord! { x: 3., y: 4. }, +/// coord! { x: 3., y: 5. }, +/// ]); +/// let length = ls.length_ext(&Euclidean); +/// assert_eq!(length, 6.0); +/// ``` +pub trait LengthMeasurableExt { + /// Calculate the length using the given metric space. + /// + /// For 1D geometries (Line, LineString, MultiLineString), returns the actual length. + /// For 0D and 2D geometries, returns zero. + fn length_ext(&self, metric_space: &impl Distance, Point>) -> F; + + /// Calculate the perimeter using the given metric space. + /// + /// For 2D geometries (Polygon, MultiPolygon, Rect, Triangle), returns the perimeter. + /// For 1D geometries (Line, LineString, MultiLineString), returns zero. + /// For 0D geometries (Point, MultiPoint), returns zero. + fn perimeter_ext(&self, metric_space: &impl Distance, Point>) -> F; +} + +// Implementation for WKB and other generic geometries using the type-tag pattern +impl LengthMeasurableExt for G +where + F: CoordFloat, + G: GeoTraitExtWithTypeTag + LengthMeasurableTrait, +{ + fn length_ext(&self, metric_space: &impl Distance, Point>) -> F { + self.length_trait(metric_space) + } + + fn perimeter_ext(&self, metric_space: &impl Distance, Point>) -> F { + self.perimeter_trait(metric_space) + } +} + +// Internal trait that handles the actual length and perimeter computation for different geometry types +trait LengthMeasurableTrait +where + F: CoordFloat, +{ + fn length_trait(&self, metric_space: &impl Distance, Point>) -> F; + fn perimeter_trait(&self, metric_space: &impl Distance, Point>) -> F; +} + +// Implementation for Line geometries +impl> LengthMeasurableTrait for L +where + F: CoordFloat, +{ + fn length_trait(&self, metric_space: &impl Distance, Point>) -> F { + let start = Point::new(self.start_coord().x, self.start_coord().y); + let end = Point::new(self.end_coord().x, self.end_coord().y); + metric_space.distance(start, end) + } + + fn perimeter_trait(&self, _metric_space: &impl Distance, Point>) -> F { + // For 1D geometries like lines, perimeter should be 0 according to PostGIS/OGC standards + F::zero() + } +} + +// Implementation for LineString geometries +impl> LengthMeasurableTrait for LS +where + F: CoordFloat, +{ + fn length_trait(&self, metric_space: &impl Distance, Point>) -> F { + let mut length = F::zero(); + for line in self.lines() { + let start = Point::new(line.start_coord().x, line.start_coord().y); + let end = Point::new(line.end_coord().x, line.end_coord().y); + length = length + metric_space.distance(start, end); + } + length + } + + fn perimeter_trait(&self, _metric_space: &impl Distance, Point>) -> F { + // For 1D geometries like linestrings, perimeter should be 0 according to PostGIS/OGC standards + F::zero() + } +} + +// Implementation for MultiLineString geometries +impl> LengthMeasurableTrait for MLS +where + F: CoordFloat, +{ + fn length_trait(&self, metric_space: &impl Distance, Point>) -> F { + let mut length = F::zero(); + for line_string in self.line_strings_ext() { + length = length + line_string.length_trait(metric_space); + } + length + } + + fn perimeter_trait(&self, _metric_space: &impl Distance, Point>) -> F { + // For 1D geometries like multilinestrings, perimeter should be 0 according to PostGIS/OGC standards + F::zero() + } +} + +// For geometry types that don't have a meaningful length (return zero) +impl> LengthMeasurableTrait for P +where + F: CoordFloat, +{ + fn length_trait(&self, _metric_space: &impl Distance, Point>) -> F { + F::zero() + } + + fn perimeter_trait(&self, _metric_space: &impl Distance, Point>) -> F { + F::zero() + } +} + +impl> LengthMeasurableTrait for MP +where + F: CoordFloat, +{ + fn length_trait(&self, _metric_space: &impl Distance, Point>) -> F { + F::zero() + } + + fn perimeter_trait(&self, _metric_space: &impl Distance, Point>) -> F { + F::zero() + } +} + +// Helper function to calculate the perimeter of a linestring using a metric space +fn linestring_perimeter_with_metric>( + linestring: &LS, + metric_space: &impl Distance, Point>, +) -> F +where + F: CoordFloat, +{ + let mut perimeter = F::zero(); + for line in linestring.lines() { + let start_coord = line.start_coord(); + let end_coord = line.end_coord(); + let start_point = Point::new(start_coord.x(), start_coord.y()); + let end_point = Point::new(end_coord.x(), end_coord.y()); + perimeter = perimeter + metric_space.distance(start_point, end_point); + } + perimeter +} + +// Helper function to calculate the perimeter of a ring using the basic LineStringTrait +fn ring_perimeter_with_metric( + ring: &LS, + metric_space: &impl Distance, Point>, +) -> F +where + F: CoordFloat, + LS: geo_traits::LineStringTrait, +{ + let mut perimeter = F::zero(); + let num_coords = ring.num_coords(); + if num_coords > 1 { + for i in 0..(num_coords - 1) { + let start_coord = ring.coord(i).unwrap(); + let end_coord = ring.coord(i + 1).unwrap(); + let start_point = Point::new(start_coord.x(), start_coord.y()); + let end_point = Point::new(end_coord.x(), end_coord.y()); + perimeter = perimeter + metric_space.distance(start_point, end_point); + } + } + perimeter +} + +impl> LengthMeasurableTrait for P +where + F: CoordFloat, +{ + fn length_trait(&self, _metric_space: &impl Distance, Point>) -> F { + // Length is a 1D concept, doesn't apply to 2D polygons + F::zero() + } + + fn perimeter_trait(&self, metric_space: &impl Distance, Point>) -> F { + // For polygons, return the perimeter (length of the boundary) + let mut total_perimeter = match self.exterior_ext() { + Some(exterior) => linestring_perimeter_with_metric(&exterior, metric_space), + None => F::zero(), + }; + + // Add interior rings perimeter + for interior in self.interiors_ext() { + total_perimeter = + total_perimeter + linestring_perimeter_with_metric(&interior, metric_space); + } + + total_perimeter + } +} + +impl> LengthMeasurableTrait for MP +where + F: CoordFloat, +{ + fn length_trait(&self, _metric_space: &impl Distance, Point>) -> F { + // Length is a 1D concept, doesn't apply to 2D multipolygons + F::zero() + } + + fn perimeter_trait(&self, metric_space: &impl Distance, Point>) -> F { + // For multipolygons, return the sum of all polygon perimeters + let mut total_perimeter = F::zero(); + for polygon in self.polygons() { + // Calculate perimeter for each polygon + let mut polygon_perimeter = match polygon.exterior() { + Some(exterior) => ring_perimeter_with_metric(&exterior, metric_space), + None => F::zero(), + }; + + // Add interior rings perimeter + for interior in polygon.interiors() { + polygon_perimeter = + polygon_perimeter + ring_perimeter_with_metric(&interior, metric_space); + } + + total_perimeter = total_perimeter + polygon_perimeter; + } + total_perimeter + } +} + +impl> LengthMeasurableTrait for R +where + F: CoordFloat, +{ + fn length_trait(&self, _metric_space: &impl Distance, Point>) -> F { + // Length is a 1D concept, doesn't apply to 2D rectangles + F::zero() + } + + fn perimeter_trait(&self, _metric_space: &impl Distance, Point>) -> F { + // For rectangles, return the perimeter + let width = self.width(); + let height = self.height(); + let two = F::one() + F::one(); + two * (width + height) + } +} + +impl> LengthMeasurableTrait for T +where + F: CoordFloat, +{ + fn length_trait(&self, _metric_space: &impl Distance, Point>) -> F { + // Length is a 1D concept, doesn't apply to 2D triangles + F::zero() + } + + fn perimeter_trait(&self, metric_space: &impl Distance, Point>) -> F { + // For triangles, return the perimeter (sum of all three sides) + let coord0 = self.first_coord(); + let coord1 = self.second_coord(); + let coord2 = self.third_coord(); + + let p0 = Point::new(coord0.x, coord0.y); + let p1 = Point::new(coord1.x, coord1.y); + let p2 = Point::new(coord2.x, coord2.y); + + let side1 = metric_space.distance(p0, p1); + let side2 = metric_space.distance(p1, p2); + let side3 = metric_space.distance(p2, p0); + + side1 + side2 + side3 + } +} + +// Implementation for GeometryCollection with runtime type dispatch +impl> LengthMeasurableTrait + for GC +where + F: CoordFloat, +{ + fn length_trait(&self, metric_space: &impl Distance, Point>) -> F { + self.geometries_ext() + .map(|g| g.borrow().length_trait(metric_space)) + .fold(F::zero(), |acc, next| acc + next) + } + + fn perimeter_trait(&self, metric_space: &impl Distance, Point>) -> F { + self.geometries_ext() + .map(|g| g.borrow().perimeter_trait(metric_space)) + .fold(F::zero(), |acc, next| acc + next) + } +} + +impl> LengthMeasurableTrait for G +where + F: CoordFloat, +{ + fn length_trait(&self, metric_space: &impl Distance, Point>) -> F { + if self.is_collection() { + self.geometries_ext() + .map(|g_inner| g_inner.borrow().length_trait(metric_space)) + .fold(F::zero(), |acc, next| acc + next) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(_) => F::zero(), + GeometryTypeExt::Line(line) => line.length_trait(metric_space), + GeometryTypeExt::LineString(ls) => ls.length_trait(metric_space), + GeometryTypeExt::Polygon(_) => F::zero(), + GeometryTypeExt::MultiPoint(_) => F::zero(), + GeometryTypeExt::MultiLineString(mls) => mls.length_trait(metric_space), + GeometryTypeExt::MultiPolygon(_) => F::zero(), + GeometryTypeExt::Rect(_) => F::zero(), + GeometryTypeExt::Triangle(_) => F::zero(), + } + } + } + + fn perimeter_trait(&self, metric_space: &impl Distance, Point>) -> F { + if self.is_collection() { + self.geometries_ext() + .map(|g_inner| g_inner.borrow().perimeter_trait(metric_space)) + .fold(F::zero(), |acc, next| acc + next) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(_) => F::zero(), + GeometryTypeExt::Line(_) => F::zero(), // 1D geometry - no perimeter + GeometryTypeExt::LineString(_) => F::zero(), // 1D geometry - no perimeter + GeometryTypeExt::Polygon(polygon) => polygon.perimeter_trait(metric_space), + GeometryTypeExt::MultiPoint(_) => F::zero(), + GeometryTypeExt::MultiLineString(_) => F::zero(), // 1D geometry - no perimeter + GeometryTypeExt::MultiPolygon(mp) => mp.perimeter_trait(metric_space), + GeometryTypeExt::Rect(rect) => rect.perimeter_trait(metric_space), + GeometryTypeExt::Triangle(triangle) => triangle.perimeter_trait(metric_space), + } + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::Euclidean; + + // Tests for LengthMeasurableExt - adapted from euclidean_length.rs + mod length_measurable_ext_tests { + use super::*; + use crate::{ + coord, line_string, polygon, Geometry, GeometryCollection, Line, MultiLineString, + MultiPoint, MultiPolygon, Point, Polygon, + }; + + #[test] + fn empty_linestring_test() { + let linestring = line_string![]; + assert_relative_eq!(0.0_f64, linestring.length_ext(&Euclidean)); + } + + #[test] + fn linestring_one_point_test() { + let linestring = line_string![(x: 0., y: 0.)]; + assert_relative_eq!(0.0_f64, linestring.length_ext(&Euclidean)); + } + + #[test] + fn linestring_test() { + let linestring = line_string![ + (x: 1., y: 1.), + (x: 7., y: 1.), + (x: 8., y: 1.), + (x: 9., y: 1.), + (x: 10., y: 1.), + (x: 11., y: 1.) + ]; + assert_relative_eq!(10.0_f64, linestring.length_ext(&Euclidean)); + } + + #[test] + fn multilinestring_test() { + let mline = MultiLineString::new(vec![ + line_string![ + (x: 1., y: 0.), + (x: 7., y: 0.), + (x: 8., y: 0.), + (x: 9., y: 0.), + (x: 10., y: 0.), + (x: 11., y: 0.) + ], + line_string![ + (x: 0., y: 0.), + (x: 0., y: 5.) + ], + ]); + assert_relative_eq!(15.0_f64, mline.length_ext(&Euclidean)); + } + + #[test] + fn line_test() { + let line0 = Line::new(coord! { x: 0., y: 0. }, coord! { x: 0., y: 1. }); + let line1 = Line::new(coord! { x: 0., y: 0. }, coord! { x: 3., y: 4. }); + assert_relative_eq!(line0.length_ext(&Euclidean), 1.); + assert_relative_eq!(line1.length_ext(&Euclidean), 5.); + } + + #[test] + fn polygon_length_and_perimeter_test() { + let polygon: Polygon = polygon![ + (x: 0., y: 0.), + (x: 4., y: 0.), + (x: 4., y: 4.), + (x: 0., y: 4.), + (x: 0., y: 0.), + ]; + // For polygons, length_ext returns zero (length is a 1D concept) + assert_relative_eq!(polygon.length_ext(&Euclidean), 0.0); + // For polygons, perimeter_ext returns the perimeter: 4 + 4 + 4 + 4 = 16 + assert_relative_eq!(polygon.perimeter_ext(&Euclidean), 16.0); + } + + #[test] + fn point_returns_zero_test() { + let point = Point::new(3.0, 4.0); + // Points have no length dimension + assert_relative_eq!(point.length_ext(&Euclidean), 0.0); + } + + #[test] + fn comprehensive_length_test_scenarios() { + // Test cases for length calculations - should return actual length only for 1D geometries + + // LINESTRING EMPTY + let empty_linestring: crate::LineString = line_string![]; + assert_relative_eq!(empty_linestring.length_ext(&Euclidean), 0.0); + + // POINT (0 0) - 0D geometry + let point = Point::new(0.0, 0.0); + assert_relative_eq!(point.length_ext(&Euclidean), 0.0); + + // LINESTRING (0 0, 0 1) - 1D geometry, length should be 1 + let linestring = line_string![(x: 0., y: 0.), (x: 0., y: 1.)]; + assert_relative_eq!(linestring.length_ext(&Euclidean), 1.0); + + // MULTIPOINT ((0 0), (1 1)) - 0D geometry, should be 0 + let multipoint = MultiPoint::new(vec![Point::new(0.0, 0.0), Point::new(1.0, 1.0)]); + assert_relative_eq!(multipoint.length_ext(&Euclidean), 0.0); + + // MULTILINESTRING ((0 0, 1 1), (1 1, 2 2)) - 1D geometry, should be ~2.828427 + let multilinestring = MultiLineString::new(vec![ + line_string![(x: 0., y: 0.), (x: 1., y: 1.)], + line_string![(x: 1., y: 1.), (x: 2., y: 2.)], + ]); + assert_relative_eq!( + multilinestring.length_ext(&Euclidean), + 2.8284271247461903, + epsilon = 1e-10 + ); + + // POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)) - 2D geometry, length should be 0 + let polygon = polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]; + assert_relative_eq!(polygon.length_ext(&Euclidean), 0.0); + + // MULTIPOLYGON - 2D geometry, length should be 0 + let multipolygon = MultiPolygon::new(vec![ + polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ], + polygon![ + (x: 2., y: 2.), + (x: 3., y: 2.), + (x: 3., y: 3.), + (x: 2., y: 3.), + (x: 2., y: 2.), + ], + ]); + assert_relative_eq!(multipolygon.length_ext(&Euclidean), 0.0); + + // RECT - 2D geometry, length should be 0 + let rect = crate::Rect::new(coord! { x: 0., y: 0. }, coord! { x: 3., y: 4. }); + assert_relative_eq!(rect.length_ext(&Euclidean), 0.0); + + // TRIANGLE - 2D geometry, length should be 0 + let triangle = crate::Triangle::new( + coord! { x: 0., y: 0. }, + coord! { x: 3., y: 0. }, + coord! { x: 0., y: 4. }, + ); + assert_relative_eq!(triangle.length_ext(&Euclidean), 0.0); + + // GEOMETRYCOLLECTION - should sum only the 1D geometries (linestrings) + let collection = GeometryCollection::new_from(vec![ + Geometry::Point(Point::new(0.0, 0.0)), // contributes 0 + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), // sqrt(2) ≈ 1.414 + Geometry::Polygon(polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]), // contributes 0 to length + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), // sqrt(2) ≈ 1.414 + ]); + assert_relative_eq!( + collection.length_ext(&Euclidean), + 2.8284271247461903, // 2*sqrt(2) only from linestrings + epsilon = 1e-10 + ); + + // GEOMETRY representation of GEOMETRYCOLLECTION + assert_relative_eq!( + Geometry::GeometryCollection(collection.clone()).length_ext(&Euclidean), + 2.8284271247461903, // 2*sqrt(2) only from linestrings + epsilon = 1e-10 + ); + } + + #[test] + fn comprehensive_perimeter_test_scenarios() { + // Test cases for perimeter calculations + + // LINESTRING EMPTY - no perimeter + let empty_linestring: crate::LineString = line_string![]; + assert_relative_eq!(empty_linestring.perimeter_ext(&Euclidean), 0.0); + + // POINT (0 0) - 0D geometry, no perimeter + let point = Point::new(0.0, 0.0); + assert_relative_eq!(point.perimeter_ext(&Euclidean), 0.0); + + // LINESTRING (0 0, 0 1) - 1D geometry, perimeter should be 0 + let linestring = line_string![(x: 0., y: 0.), (x: 0., y: 1.)]; + assert_relative_eq!(linestring.perimeter_ext(&Euclidean), 0.0); + + // MULTIPOINT ((0 0), (1 1)) - 0D geometry, no perimeter + let multipoint = MultiPoint::new(vec![Point::new(0.0, 0.0), Point::new(1.0, 1.0)]); + assert_relative_eq!(multipoint.perimeter_ext(&Euclidean), 0.0); + + // MULTILINESTRING ((0 0, 1 1), (1 1, 2 2)) - 1D geometry, perimeter should be 0 + let multilinestring = MultiLineString::new(vec![ + line_string![(x: 0., y: 0.), (x: 1., y: 1.)], + line_string![(x: 1., y: 1.), (x: 2., y: 2.)], + ]); + assert_relative_eq!(multilinestring.perimeter_ext(&Euclidean), 0.0); + + // POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)) - 2D geometry, actual perimeter + let polygon = polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]; + assert_relative_eq!(polygon.perimeter_ext(&Euclidean), 4.0); + + // MULTIPOLYGON - 2D geometry, sum of all polygon perimeters + let multipolygon = MultiPolygon::new(vec![ + polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ], + polygon![ + (x: 2., y: 2.), + (x: 3., y: 2.), + (x: 3., y: 3.), + (x: 2., y: 3.), + (x: 2., y: 2.), + ], + ]); + assert_relative_eq!(multipolygon.perimeter_ext(&Euclidean), 8.0); + + // RECT - 2D geometry, perimeter = 2*(width + height) + let rect = crate::Rect::new(coord! { x: 0., y: 0. }, coord! { x: 3., y: 4. }); + assert_relative_eq!(rect.perimeter_ext(&Euclidean), 14.0); // 2*(3+4) = 14 + + // TRIANGLE - 2D geometry, sum of all three sides + let triangle = crate::Triangle::new( + coord! { x: 0., y: 0. }, + coord! { x: 3., y: 0. }, + coord! { x: 0., y: 4. }, + ); + assert_relative_eq!(triangle.perimeter_ext(&Euclidean), 12.0); // 3 + 4 + 5 = 12 + + // GEOMETRYCOLLECTION - should sum perimeters from all geometries + let collection = GeometryCollection::new_from(vec![ + Geometry::Point(Point::new(0.0, 0.0)), // contributes 0 + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), // contributes 0 (1D geometry) + Geometry::Polygon(polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]), // perimeter = 4.0 + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), // contributes 0 (1D geometry) + ]); + assert_relative_eq!( + collection.perimeter_ext(&Euclidean), + 4.0, // only polygon perimeter counts + epsilon = 1e-10 + ); + + // GEOMETRY representation of GEOMETRYCOLLECTION + assert_relative_eq!( + Geometry::GeometryCollection(collection).perimeter_ext(&Euclidean), + 4.0, // only polygon perimeter counts + epsilon = 1e-10 + ); + } + + #[test] + fn test_polygon_with_holes() { + // Test polygon with interior rings (holes) + let polygon = Polygon::new( + LineString::new(vec![ + coord! { x: 0., y: 0. }, + coord! { x: 10., y: 0. }, + coord! { x: 10., y: 10. }, + coord! { x: 0., y: 10. }, + coord! { x: 0., y: 0. }, + ]), + vec![LineString::new(vec![ + coord! { x: 2., y: 2. }, + coord! { x: 8., y: 2. }, + coord! { x: 8., y: 8. }, + coord! { x: 2., y: 8. }, + coord! { x: 2., y: 2. }, + ])], + ); + // Length should be 0 (2D geometry) + assert_relative_eq!(polygon.length_ext(&Euclidean), 0.0); + // Exterior perimeter: 40 (10+10+10+10), Interior perimeter: 24 (6+6+6+6) + assert_relative_eq!(polygon.perimeter_ext(&Euclidean), 64.0); + } + + #[test] + fn test_triangle_perimeter() { + use crate::Triangle; + // Right triangle with sides 3, 4, 5 + let triangle = Triangle::new( + coord! { x: 0., y: 0. }, + coord! { x: 3., y: 0. }, + coord! { x: 0., y: 4. }, + ); + // Length should be 0 (2D geometry) + assert_relative_eq!(triangle.length_ext(&Euclidean), 0.0); + // Perimeter should be 3 + 4 + 5 = 12 + assert_relative_eq!(triangle.perimeter_ext(&Euclidean), 12.0); + } + + #[test] + fn test_rect_perimeter() { + use crate::Rect; + // Rectangle 3x4 + let rect = Rect::new(coord! { x: 0., y: 0. }, coord! { x: 3., y: 4. }); + // Length should be 0 (2D geometry) + assert_relative_eq!(rect.length_ext(&Euclidean), 0.0); + // Perimeter should be 2*(3+4) = 14 + assert_relative_eq!(rect.perimeter_ext(&Euclidean), 14.0); + } + + #[test] + fn test_postgis_compliance_perimeter_scenarios() { + // Test cases based on PostGIS ST_Perimeter behavior to ensure compliance + // These test cases mirror the pytest.mark.parametrize scenarios + + // POINT EMPTY - should return 0 + // Note: We can't easily test empty point, so we test a regular point + let point = Point::new(0.0, 0.0); + assert_relative_eq!(point.perimeter_ext(&Euclidean), 0.0); + + // LINESTRING EMPTY - should return 0 + let empty_linestring: crate::LineString = line_string![]; + assert_relative_eq!(empty_linestring.perimeter_ext(&Euclidean), 0.0); + + // POINT (0 0) - should return 0 + let point_origin = Point::new(0.0, 0.0); + assert_relative_eq!(point_origin.perimeter_ext(&Euclidean), 0.0); + + // LINESTRING (0 0, 0 1) - should return 0 (1D geometry has no perimeter) + let linestring_simple = line_string![(x: 0., y: 0.), (x: 0., y: 1.)]; + assert_relative_eq!(linestring_simple.perimeter_ext(&Euclidean), 0.0); + + // MULTIPOINT ((0 0), (1 1)) - should return 0 + let multipoint = MultiPoint::new(vec![Point::new(0.0, 0.0), Point::new(1.0, 1.0)]); + assert_relative_eq!(multipoint.perimeter_ext(&Euclidean), 0.0); + + // MULTILINESTRING ((0 0, 1 1), (1 1, 2 2)) - should return 0 (1D geometry has no perimeter) + let multilinestring = MultiLineString::new(vec![ + line_string![(x: 0., y: 0.), (x: 1., y: 1.)], + line_string![(x: 1., y: 1.), (x: 2., y: 2.)], + ]); + assert_relative_eq!(multilinestring.perimeter_ext(&Euclidean), 0.0); + + // POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)) - should return 4 (perimeter of unit square) + let polygon_unit_square = polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]; + assert_relative_eq!(polygon_unit_square.perimeter_ext(&Euclidean), 4.0); + + // MULTIPOLYGON (((0 0, 1 0, 1 1, 0 1, 0 0)), ((0 0, 1 0, 1 1, 0 1, 0 0))) - should return 8 (two unit squares) + let multipolygon_two_unit_squares = MultiPolygon::new(vec![ + polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ], + polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ], + ]); + assert_relative_eq!(multipolygon_two_unit_squares.perimeter_ext(&Euclidean), 8.0); + + // GEOMETRYCOLLECTION (POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)), LINESTRING (0 0, 1 1), POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))) + // Should return 8 (only polygons contribute to perimeter: 4 + 0 + 4 = 8) + let geometry_collection_mixed = GeometryCollection::new_from(vec![ + Geometry::Polygon(polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]), // contributes 4 + Geometry::LineString(line_string![(x: 0., y: 0.), (x: 1., y: 1.)]), // contributes 0 (1D geometry) + Geometry::Polygon(polygon![ + (x: 0., y: 0.), + (x: 1., y: 0.), + (x: 1., y: 1.), + (x: 0., y: 1.), + (x: 0., y: 0.), + ]), // contributes 4 + ]); + assert_relative_eq!(geometry_collection_mixed.perimeter_ext(&Euclidean), 8.0); + } + + #[test] + fn test_perimeter_vs_length_distinction() { + // This test ensures we correctly distinguish between length and perimeter + // according to PostGIS/OGC standards + + let linestring = line_string![(x: 0., y: 0.), (x: 3., y: 4.)]; // length = 5.0 + let polygon = polygon![(x: 0., y: 0.), (x: 3., y: 0.), (x: 3., y: 4.), (x: 0., y: 4.), (x: 0., y: 0.)]; // perimeter = 14.0 + + // For 1D geometries: length > 0, perimeter = 0 + assert_relative_eq!(linestring.length_ext(&Euclidean), 5.0); + assert_relative_eq!(linestring.perimeter_ext(&Euclidean), 0.0); + + // For 2D geometries: length = 0, perimeter > 0 + assert_relative_eq!(polygon.length_ext(&Euclidean), 0.0); + assert_relative_eq!(polygon.perimeter_ext(&Euclidean), 14.0); + } + + #[test] + fn test_empty_geometry_perimeter() { + // Test empty geometries return 0 perimeter + + // Empty LineString + let empty_ls: crate::LineString = line_string![]; + assert_relative_eq!(empty_ls.perimeter_ext(&Euclidean), 0.0); + + // Empty MultiLineString + let empty_mls = MultiLineString::::new(vec![]); + assert_relative_eq!(empty_mls.perimeter_ext(&Euclidean), 0.0); + + // Empty MultiPoint + let empty_mp = MultiPoint::::new(vec![]); + assert_relative_eq!(empty_mp.perimeter_ext(&Euclidean), 0.0); + + // Empty GeometryCollection + let empty_gc = GeometryCollection::::new_from(vec![]); + assert_relative_eq!(empty_gc.perimeter_ext(&Euclidean), 0.0); + } + } +} diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs new file mode 100644 index 00000000..8d390032 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs @@ -0,0 +1,2241 @@ +use crate::{CoordFloat, GeoFloat, Point}; +use num_traits::{Bounded, Float}; +use std::borrow::Borrow; + +// Import all the utility functions from utils module +use super::utils::{ + distance_coord_to_line_generic, + // Symmetric distance functions generated by macro + distance_line_to_line_generic, + distance_line_to_linestring_generic, + distance_line_to_polygon_generic, + distance_linestring_to_polygon_generic, + distance_point_to_linestring_generic, + distance_point_to_point_generic, + distance_point_to_polygon_generic, + distance_polygon_to_polygon_generic, +}; + +// ┌──────────────────────────────────────────────────────────┐ +// │ Generic Trait Distance Extension │ +// └──────────────────────────────────────────────────────────┘ + +use geo_traits_ext::*; + +/// Extension trait for generic geometry types to calculate distances directly +/// using Euclidean metric space without conversion overhead +/// Supports both same-type and cross-type distance calculations +pub trait DistanceExt { + /// Calculate Euclidean distance using generic traits without conversion overhead + fn distance_ext(&self, other: &Rhs) -> F; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ Generic trait macro implementations │ +// └──────────────────────────────────────────────────────────┘ + +/// Generic trait version of polygon-like geometry distance implementation +/// Follows the same pattern as impl_euclidean_distance_for_polygonlike_geometry! +macro_rules! impl_distance_ext_for_polygonlike_geometry_trait { + ($polygonlike_trait:ident, $polygonlike_tag:ident, [$(($geometry_trait:ident, $geometry_tag:ident)),*]) => { + // Self-to-self distance implementation + impl GenericDistanceTrait for LHS + where + F: GeoFloat, + LHS: $polygonlike_trait, + RHS: $polygonlike_trait, + { + fn generic_distance_trait(&self, rhs: &RHS) -> F { + let poly1 = self.to_polygon(); + let poly2 = rhs.to_polygon(); + distance_polygon_to_polygon_generic(&poly1, &poly2) + } + } + }; +} + +// Separate macro to generate individual implementations for each geometry type +macro_rules! impl_polygonlike_to_geometry_distance { + ($polygonlike_trait:ident, $polygonlike_tag:ident, $geometry_trait:ident, $geometry_tag:ident) => { + impl GenericDistanceTrait for PL + where + F: GeoFloat, + PL: $polygonlike_trait, + G: $geometry_trait, + { + fn generic_distance_trait(&self, rhs: &G) -> F { + let poly = self.to_polygon(); + impl_polygonlike_to_geometry_distance!(@call_distance poly, rhs, $geometry_tag) + } + } + }; + + (@call_distance $poly:expr, $rhs:expr, PointTag) => { + distance_point_to_polygon_generic($rhs, &$poly) + }; + (@call_distance $poly:expr, $rhs:expr, LineTag) => { + distance_line_to_polygon_generic($rhs, &$poly) + }; + (@call_distance $poly:expr, $rhs:expr, LineStringTag) => { + distance_linestring_to_polygon_generic($rhs, &$poly) + }; + (@call_distance $poly:expr, $rhs:expr, PolygonTag) => { + distance_polygon_to_polygon_generic(&$poly, $rhs) + }; + (@call_distance $poly:expr, $rhs:expr, RectTag) => { + { + let poly2 = $rhs.to_polygon(); + distance_polygon_to_polygon_generic(&$poly, &poly2) + } + }; + (@call_distance $poly:expr, $rhs:expr, TriangleTag) => { + { + let poly2 = $rhs.to_polygon(); + distance_polygon_to_polygon_generic(&$poly, &poly2) + } + }; + (@call_distance $poly:expr, $rhs:expr, MultiPointTag) => { + { + let mut min_dist: F = Bounded::max_value(); + for coord in $rhs.coord_iter() { + let point = Point::from(coord); + let dist = distance_point_to_polygon_generic(&point, &$poly); + min_dist = min_dist.min(dist); + } + if min_dist == Bounded::max_value() { + F::zero() + } else { + min_dist + } + } + }; + (@call_distance $poly:expr, $rhs:expr, MultiLineStringTag) => { + { + let mut min_dist: F = Bounded::max_value(); + for line_string in $rhs.line_strings_ext() { + let dist = distance_linestring_to_polygon_generic(&line_string, &$poly); + min_dist = min_dist.min(dist); + } + if min_dist == Bounded::max_value() { + F::zero() + } else { + min_dist + } + } + }; + (@call_distance $poly:expr, $rhs:expr, MultiPolygonTag) => { + { + let mut min_dist: F = Bounded::max_value(); + for polygon in $rhs.polygons_ext() { + let dist = distance_polygon_to_polygon_generic(&$poly, &polygon); + min_dist = min_dist.min(dist); + } + if min_dist == Bounded::max_value() { + F::zero() + } else { + min_dist + } + } + }; +} + +/// Generic trait version of multi-geometry distance implementation +/// Follows the same pattern as impl_euclidean_distance_for_iter_geometry! +macro_rules! impl_distance_ext_for_iter_geometry_trait { + ($iter_trait:ident, $iter_tag:ident, $member_method:ident) => { + impl GenericDistanceTrait for LHS + where + F: GeoFloat, + LHS: $iter_trait, + RHS: $iter_trait, + { + fn generic_distance_trait(&self, rhs: &RHS) -> F { + let mut min_dist: F = Float::max_value(); + for member1 in self.$member_method() { + for member2 in rhs.$member_method() { + let dist = member1.distance_ext(&member2); + min_dist = min_dist.min(dist); + } + } + if min_dist == Float::max_value() { + F::zero() + } else { + min_dist + } + } + } + }; +} + +// Array-based macro for systematic implementation generation +macro_rules! impl_cross_type_array { + // Generate multi-geometry self-implementations + (self_multi_geometries: [$(($trait:ident, $tag:ident, $method:ident)),+]) => { + $( + impl_distance_ext_for_iter_geometry_trait!($trait, $tag, $method); + )+ + }; + + // Generate single-to-multi implementations with Point to MultiPoint skip + (single_to_multi: $single_trait:ident, $single_tag:ident => [$(($multi_trait:ident, $multi_tag:ident, $method:ident)),+]) => { + $( + impl_cross_type_array!(@single_to_multi_check $single_trait, $single_tag, $multi_trait, $multi_tag, $method); + )+ + }; + + // Skip Point to MultiPoint (special implementation exists) + (@single_to_multi_check PointTraitExt, PointTag, MultiPointTraitExt, MultiPointTag, $method:ident) => {}; + + // Generate for all other combinations + (@single_to_multi_check $single_trait:ident, $single_tag:ident, $multi_trait:ident, $multi_tag:ident, $method:ident) => { + impl_single_to_multi_geometry_distance!($single_trait, $single_tag, $multi_trait, $multi_tag, $method); + }; + + // Generate symmetric implementations for single-to-multi + (symmetric_single_to_multi: $single_trait:ident, $single_tag:ident => [$(($multi_trait:ident, $multi_tag:ident)),+]) => { + $( + symmetric_distance_ext_trait_impl!(GeoFloat, $multi_trait, $multi_tag, $single_trait, $single_tag); + )+ + }; +} + +/// Macro for implementing cross-type distance calculations from single geometry to multi-geometry types +macro_rules! impl_single_to_multi_geometry_distance { + ($single_trait:ident, $single_tag:ident, $multi_trait:ident, $multi_tag:ident, $member_method:ident) => { + impl GenericDistanceTrait for S + where + F: GeoFloat, + S: $single_trait, + M: $multi_trait, + { + fn generic_distance_trait(&self, rhs: &M) -> F { + let mut min_dist: F = Bounded::max_value(); + for member in rhs.$member_method() { + let dist = self.distance_ext(&member); + min_dist = min_dist.min(dist); + } + if min_dist == Bounded::max_value() { + F::zero() + } else { + min_dist + } + } + } + }; +} + +// Implementation of DistanceExt for cross-type generic trait geometries using the two type-tag pattern +impl DistanceExt for LHS +where + F: GeoFloat, + LHS: GeoTraitExtWithTypeTag, + RHS: GeoTraitExtWithTypeTag, + LHS: GenericDistanceTrait, +{ + fn distance_ext(&self, other: &RHS) -> F { + self.generic_distance_trait(other) + } +} + +// ┌────────────────────────────────────────────────────────────┐ +// │ Internal trait for cross-type distance calculations │ +// └────────────────────────────────────────────────────────────┘ + +// Internal trait for cross-type distance calculations without conversion +trait GenericDistanceTrait +where + F: GeoFloat, +{ + fn generic_distance_trait(&self, rhs: &Rhs) -> F; +} +macro_rules! symmetric_distance_ext_trait_impl { + ($num_type:ident, $lhs_type:ident, $lhs_tag:ident, $rhs_type:ident, $rhs_tag:ident) => { + impl GenericDistanceTrait for LHS + where + F: $num_type, + LHS: $lhs_type, + RHS: $rhs_type, + { + fn generic_distance_trait(&self, rhs: &RHS) -> F { + rhs.generic_distance_trait(self) + } + } + }; +} + +// ┌────────────────────────────────────────────────────────────┐ +// │ Implementations for Coord (generic traits) │ +// └────────────────────────────────────────────────────────────┘ + +// Coord-to-Coord direct distance implementation +impl GenericDistanceTrait for LHS +where + F: GeoFloat, + LHS: CoordTraitExt, + RHS: CoordTraitExt, +{ + fn generic_distance_trait(&self, rhs: &RHS) -> F { + let delta = self.geo_coord() - rhs.geo_coord(); + delta.x.hypot(delta.y) + } +} + +// Coord-to-Point distance implementation +// The other side (Point-to-Coord) is handled via a symmetric impl or blanket impl +impl GenericDistanceTrait for LHS +where + F: GeoFloat, + LHS: CoordTraitExt, + RHS: PointTraitExt, +{ + fn generic_distance_trait(&self, rhs: &RHS) -> F { + if let Some(rhs_coord) = rhs.coord_ext() { + let delta = self.geo_coord() - rhs_coord.geo_coord(); + delta.x.hypot(delta.y) + } else { + F::zero() + } + } +} + +// Coord-to-Line distance implementation +impl GenericDistanceTrait for LHS +where + F: GeoFloat, + LHS: CoordTraitExt, + RHS: LineTraitExt, +{ + fn generic_distance_trait(&self, rhs: &RHS) -> F { + distance_coord_to_line_generic(self, rhs) + } +} + +// ┌────────────────────────────────────────────────────────────┐ +// │ Implementations for Point (generic traits) │ +// └────────────────────────────────────────────────────────────┘ + +// Point-to-Point direct distance implementation +impl GenericDistanceTrait for LHS +where + F: GeoFloat, + LHS: PointTraitExt, + RHS: PointTraitExt, +{ + fn generic_distance_trait(&self, rhs: &RHS) -> F { + distance_point_to_point_generic(self, rhs) + } +} + +// Point-to-Line distance implementation +impl GenericDistanceTrait for P +where + F: GeoFloat, + P: PointTraitExt, + L: LineTraitExt, +{ + fn generic_distance_trait(&self, rhs: &L) -> F { + if let Some(coord) = self.coord_ext() { + distance_coord_to_line_generic(&coord, rhs) + } else { + F::zero() + } + } +} + +// Point-to-LineString distance implementation +impl GenericDistanceTrait for P +where + F: GeoFloat, + P: PointTraitExt, + LS: LineStringTraitExt, +{ + fn generic_distance_trait(&self, rhs: &LS) -> F { + distance_point_to_linestring_generic(self, rhs) + } +} + +// Point-to-Polygon distance implementation +impl GenericDistanceTrait for P +where + F: GeoFloat, + P: PointTraitExt, + Poly: PolygonTraitExt, +{ + fn generic_distance_trait(&self, rhs: &Poly) -> F { + distance_point_to_polygon_generic(self, rhs) + } +} + +// Point to MultiPoint distance implementation +impl GenericDistanceTrait for P +where + F: GeoFloat, + P: PointTraitExt, + MP: MultiPointTraitExt, +{ + fn generic_distance_trait(&self, rhs: &MP) -> F { + if let Some(point_coord) = self.geo_coord() { + let mut min_dist: F = Bounded::max_value(); + for coord in rhs.coord_iter() { + let dist = point_coord.distance_ext(&coord); + min_dist = min_dist.min(dist); + } + if min_dist == Bounded::max_value() { + F::zero() + } else { + min_dist + } + } else { + F::zero() + } + } +} + +// ┌────────────────────────────────────────────────────────────┐ +// │ Implementations for Line (generic traits) │ +// └────────────────────────────────────────────────────────────┘ + +// Symmetric Line distance implementations +symmetric_distance_ext_trait_impl!(GeoFloat, LineTraitExt, LineTag, CoordTraitExt, CoordTag); +symmetric_distance_ext_trait_impl!(GeoFloat, LineTraitExt, LineTag, PointTraitExt, PointTag); + +// Line-to-Line direct distance implementation +impl GenericDistanceTrait for LHS +where + F: GeoFloat, + LHS: LineTraitExt, + RHS: LineTraitExt, +{ + fn generic_distance_trait(&self, rhs: &RHS) -> F { + distance_line_to_line_generic(self, rhs) + } +} + +// Line-to-LineString distance implementation +impl GenericDistanceTrait for L +where + F: GeoFloat, + L: LineTraitExt, + LS: LineStringTraitExt, +{ + fn generic_distance_trait(&self, rhs: &LS) -> F { + distance_line_to_linestring_generic(self, rhs) + } +} + +// Line-to-Polygon distance implementation +impl GenericDistanceTrait for L +where + F: GeoFloat, + L: LineTraitExt, + Poly: PolygonTraitExt, +{ + fn generic_distance_trait(&self, rhs: &Poly) -> F { + distance_line_to_polygon_generic(self, rhs) + } +} + +// ┌────────────────────────────────────────────────────────────┐ +// │ Implementations for LineString (generic traits) │ +// └────────────────────────────────────────────────────────────┘ + +// Symmetric LineString distance implementations +// LineString-to-Point (symmetric to Point-to-LineString) +symmetric_distance_ext_trait_impl!( + GeoFloat, + LineStringTraitExt, + LineStringTag, + PointTraitExt, + PointTag +); + +// LineString-to-Line (symmetric to Line-to-LineString) +symmetric_distance_ext_trait_impl!( + GeoFloat, + LineStringTraitExt, + LineStringTag, + LineTraitExt, + LineTag +); + +// LineString-to-LineString distance implementation +// This general implementation supports both same-type (LS to LS) and different-type (LS1 to LS2) +impl GenericDistanceTrait for LS1 +where + F: GeoFloat, + LS1: LineStringTraitExt, + LS2: LineStringTraitExt, +{ + fn generic_distance_trait(&self, rhs: &LS2) -> F { + let mut min_dist: F = Float::max_value(); + for line1 in self.lines() { + for line2 in rhs.lines() { + // Line-to-line distance using endpoints + let d1 = distance_coord_to_line_generic(&line1.start_coord(), &line2); + let d2 = distance_coord_to_line_generic(&line1.end_coord(), &line2); + let d3 = distance_coord_to_line_generic(&line2.start_coord(), &line1); + let d4 = distance_coord_to_line_generic(&line2.end_coord(), &line1); + let line_dist = d1.min(d2).min(d3).min(d4); + min_dist = min_dist.min(line_dist); + } + } + if min_dist == Float::max_value() { + F::zero() + } else { + min_dist + } + } +} + +// LineString-to-Polygon distance implementation +impl GenericDistanceTrait for LS +where + F: GeoFloat, + LS: LineStringTraitExt, + Poly: PolygonTraitExt, +{ + fn generic_distance_trait(&self, rhs: &Poly) -> F { + distance_linestring_to_polygon_generic(self, rhs) + } +} + +// ┌────────────────────────────────────────────────────────────┐ +// │ Implementations for Polygon (generic traits) │ +// └────────────────────────────────────────────────────────────┘ + +// Symmetric Polygon distance implementations +// Polygon-to-Point (symmetric to Point-to-Polygon) +symmetric_distance_ext_trait_impl!( + GeoFloat, + PolygonTraitExt, + PolygonTag, + PointTraitExt, + PointTag +); + +// Polygon-to-Line (symmetric to Line-to-Polygon) +symmetric_distance_ext_trait_impl!(GeoFloat, PolygonTraitExt, PolygonTag, LineTraitExt, LineTag); + +// Polygon-to-LineString (symmetric to LineString-to-Polygon) +symmetric_distance_ext_trait_impl!( + GeoFloat, + PolygonTraitExt, + PolygonTag, + LineStringTraitExt, + LineStringTag +); + +// Polygon-to-Polygon distance implementation +// This general implementation supports both same-type (P to P) and different-type (P1 to P2) +impl GenericDistanceTrait for P1 +where + F: GeoFloat, + P1: PolygonTraitExt, + P2: PolygonTraitExt, +{ + fn generic_distance_trait(&self, rhs: &P2) -> F { + distance_polygon_to_polygon_generic(self, rhs) + } +} + +// ┌────────────────────────────────────────────────────────────┐ +// │ Implementations for Rect and Triangle (generic traits) │ +// └────────────────────────────────────────────────────────────┘ + +// Triangle implementations +impl_distance_ext_for_polygonlike_geometry_trait!(TriangleTraitExt, TriangleTag, []); +impl_polygonlike_to_geometry_distance!(TriangleTraitExt, TriangleTag, PointTraitExt, PointTag); +impl_polygonlike_to_geometry_distance!(TriangleTraitExt, TriangleTag, LineTraitExt, LineTag); +impl_polygonlike_to_geometry_distance!( + TriangleTraitExt, + TriangleTag, + LineStringTraitExt, + LineStringTag +); +impl_polygonlike_to_geometry_distance!(TriangleTraitExt, TriangleTag, PolygonTraitExt, PolygonTag); +impl_polygonlike_to_geometry_distance!(TriangleTraitExt, TriangleTag, RectTraitExt, RectTag); +impl_polygonlike_to_geometry_distance!( + TriangleTraitExt, + TriangleTag, + MultiPointTraitExt, + MultiPointTag +); +impl_polygonlike_to_geometry_distance!( + TriangleTraitExt, + TriangleTag, + MultiLineStringTraitExt, + MultiLineStringTag +); +impl_polygonlike_to_geometry_distance!( + TriangleTraitExt, + TriangleTag, + MultiPolygonTraitExt, + MultiPolygonTag +); + +// Symmetric implementations for Triangle +symmetric_distance_ext_trait_impl!( + GeoFloat, + PointTraitExt, + PointTag, + TriangleTraitExt, + TriangleTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + LineTraitExt, + LineTag, + TriangleTraitExt, + TriangleTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + LineStringTraitExt, + LineStringTag, + TriangleTraitExt, + TriangleTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + PolygonTraitExt, + PolygonTag, + TriangleTraitExt, + TriangleTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + RectTraitExt, + RectTag, + TriangleTraitExt, + TriangleTag +); + +// Rect implementations +impl_distance_ext_for_polygonlike_geometry_trait!(RectTraitExt, RectTag, []); +impl_polygonlike_to_geometry_distance!(RectTraitExt, RectTag, PointTraitExt, PointTag); +impl_polygonlike_to_geometry_distance!(RectTraitExt, RectTag, LineTraitExt, LineTag); +impl_polygonlike_to_geometry_distance!(RectTraitExt, RectTag, LineStringTraitExt, LineStringTag); +impl_polygonlike_to_geometry_distance!(RectTraitExt, RectTag, PolygonTraitExt, PolygonTag); +impl_polygonlike_to_geometry_distance!(RectTraitExt, RectTag, MultiPointTraitExt, MultiPointTag); +impl_polygonlike_to_geometry_distance!( + RectTraitExt, + RectTag, + MultiLineStringTraitExt, + MultiLineStringTag +); +impl_polygonlike_to_geometry_distance!( + RectTraitExt, + RectTag, + MultiPolygonTraitExt, + MultiPolygonTag +); + +// Symmetric implementations for Rect (excluding Triangle which is already handled above) +symmetric_distance_ext_trait_impl!(GeoFloat, PointTraitExt, PointTag, RectTraitExt, RectTag); +symmetric_distance_ext_trait_impl!(GeoFloat, LineTraitExt, LineTag, RectTraitExt, RectTag); +symmetric_distance_ext_trait_impl!( + GeoFloat, + LineStringTraitExt, + LineStringTag, + RectTraitExt, + RectTag +); +symmetric_distance_ext_trait_impl!(GeoFloat, PolygonTraitExt, PolygonTag, RectTraitExt, RectTag); + +// ┌────────────────────────────────────────────────────────────┐ +// │ Implementations for multi-geometry types (generic traits) │ +// └────────────────────────────────────────────────────────────┘ + +// Multi-geometry self-implementations +impl_cross_type_array!(self_multi_geometries: [ + (MultiPointTraitExt, MultiPointTag, points_ext), + (MultiLineStringTraitExt, MultiLineStringTag, line_strings_ext), + (MultiPolygonTraitExt, MultiPolygonTag, polygons_ext) +]); + +// Single-geometry to multi-geometry implementations +impl_cross_type_array!(single_to_multi: PointTraitExt, PointTag => [ + (MultiPointTraitExt, MultiPointTag, points_ext), + (MultiLineStringTraitExt, MultiLineStringTag, line_strings_ext), + (MultiPolygonTraitExt, MultiPolygonTag, polygons_ext) +]); + +impl_cross_type_array!(single_to_multi: LineTraitExt, LineTag => [ + (MultiPointTraitExt, MultiPointTag, points_ext), + (MultiLineStringTraitExt, MultiLineStringTag, line_strings_ext), + (MultiPolygonTraitExt, MultiPolygonTag, polygons_ext) +]); + +impl_cross_type_array!(single_to_multi: LineStringTraitExt, LineStringTag => [ + (MultiPointTraitExt, MultiPointTag, points_ext), + (MultiLineStringTraitExt, MultiLineStringTag, line_strings_ext), + (MultiPolygonTraitExt, MultiPolygonTag, polygons_ext) +]); + +impl_cross_type_array!(single_to_multi: PolygonTraitExt, PolygonTag => [ + (MultiPointTraitExt, MultiPointTag, points_ext), + (MultiLineStringTraitExt, MultiLineStringTag, line_strings_ext), + (MultiPolygonTraitExt, MultiPolygonTag, polygons_ext) +]); + +// Multi-geometry to multi-geometry implementations +impl_single_to_multi_geometry_distance!( + MultiPointTraitExt, + MultiPointTag, + MultiLineStringTraitExt, + MultiLineStringTag, + line_strings_ext +); +impl_single_to_multi_geometry_distance!( + MultiPointTraitExt, + MultiPointTag, + MultiPolygonTraitExt, + MultiPolygonTag, + polygons_ext +); +impl_single_to_multi_geometry_distance!( + MultiLineStringTraitExt, + MultiLineStringTag, + MultiPointTraitExt, + MultiPointTag, + points_ext +); +impl_single_to_multi_geometry_distance!( + MultiLineStringTraitExt, + MultiLineStringTag, + MultiPolygonTraitExt, + MultiPolygonTag, + polygons_ext +); +impl_single_to_multi_geometry_distance!( + MultiPolygonTraitExt, + MultiPolygonTag, + MultiPointTraitExt, + MultiPointTag, + points_ext +); +impl_single_to_multi_geometry_distance!( + MultiPolygonTraitExt, + MultiPolygonTag, + MultiLineStringTraitExt, + MultiLineStringTag, + line_strings_ext +); + +// Symmetric implementations +impl_cross_type_array!(symmetric_single_to_multi: PointTraitExt, PointTag => [ + (MultiPointTraitExt, MultiPointTag), + (MultiLineStringTraitExt, MultiLineStringTag), + (MultiPolygonTraitExt, MultiPolygonTag) +]); + +impl_cross_type_array!(symmetric_single_to_multi: LineTraitExt, LineTag => [ + (MultiPointTraitExt, MultiPointTag), + (MultiLineStringTraitExt, MultiLineStringTag), + (MultiPolygonTraitExt, MultiPolygonTag) +]); + +impl_cross_type_array!(symmetric_single_to_multi: LineStringTraitExt, LineStringTag => [ + (MultiPointTraitExt, MultiPointTag), + (MultiLineStringTraitExt, MultiLineStringTag), + (MultiPolygonTraitExt, MultiPolygonTag) +]); + +impl_cross_type_array!(symmetric_single_to_multi: PolygonTraitExt, PolygonTag => [ + (MultiPointTraitExt, MultiPointTag), + (MultiLineStringTraitExt, MultiLineStringTag), + (MultiPolygonTraitExt, MultiPolygonTag) +]); + +impl_cross_type_array!(symmetric_single_to_multi: RectTraitExt, RectTag => [ + (MultiPointTraitExt, MultiPointTag), + (MultiLineStringTraitExt, MultiLineStringTag), + (MultiPolygonTraitExt, MultiPolygonTag) +]); + +impl_cross_type_array!(symmetric_single_to_multi: TriangleTraitExt, TriangleTag => [ + (MultiPointTraitExt, MultiPointTag), + (MultiLineStringTraitExt, MultiLineStringTag), + (MultiPolygonTraitExt, MultiPolygonTag) +]); + +// ┌────────────────────────────────────────────────────────────┐ +// │ Implementation for GeometryCollection (generic traits) │ +// └────────────────────────────────────────────────────────────┘ + +// Generate implementations for GeometryCollection by delegating to the Geometry implementation +macro_rules! impl_distance_geometry_collection_from_geometry { + ($rhs_type:ident, $rhs_tag:ident) => { + impl GenericDistanceTrait for LHS + where + F: GeoFloat, + LHS: GeometryCollectionTraitExt, + RHS: $rhs_type, + { + fn generic_distance_trait(&self, rhs: &RHS) -> F { + use num_traits::Bounded; + + // Use distance_ext which will route through the appropriate implementations + // The key insight is that this works for all geometry types except GeometryCollection, + // where we need special handling to avoid infinite recursion + self.geometries_ext() + .map(|geom| geom.distance_ext(rhs)) + .fold(Bounded::max_value(), |acc, dist| acc.min(dist)) + } + } + }; +} + +impl_distance_geometry_collection_from_geometry!(PointTraitExt, PointTag); +impl_distance_geometry_collection_from_geometry!(LineTraitExt, LineTag); +impl_distance_geometry_collection_from_geometry!(LineStringTraitExt, LineStringTag); +impl_distance_geometry_collection_from_geometry!(PolygonTraitExt, PolygonTag); +impl_distance_geometry_collection_from_geometry!(MultiPointTraitExt, MultiPointTag); +impl_distance_geometry_collection_from_geometry!(MultiLineStringTraitExt, MultiLineStringTag); +impl_distance_geometry_collection_from_geometry!(MultiPolygonTraitExt, MultiPolygonTag); +impl_distance_geometry_collection_from_geometry!(RectTraitExt, RectTag); +impl_distance_geometry_collection_from_geometry!(TriangleTraitExt, TriangleTag); + +impl GenericDistanceTrait for LHS +where + F: GeoFloat, + LHS: GeometryCollectionTraitExt, + RHS: GeometryCollectionTraitExt, +{ + fn generic_distance_trait(&self, rhs: &RHS) -> F { + let mut min_distance = ::max_value(); + for lhs_geom in self.geometries_ext() { + for rhs_geom in rhs.geometries_ext() { + let distance = lhs_geom.distance_ext(&rhs_geom); + min_distance = min_distance.min(distance); + + // Early exit optimization + if distance == F::zero() { + return F::zero(); + } + } + } + + min_distance + } +} + +symmetric_distance_ext_trait_impl!( + GeoFloat, + PointTraitExt, + PointTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + LineTraitExt, + LineTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + LineStringTraitExt, + LineStringTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + PolygonTraitExt, + PolygonTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + MultiPointTraitExt, + MultiPointTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + MultiLineStringTraitExt, + MultiLineStringTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + MultiPolygonTraitExt, + MultiPolygonTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + RectTraitExt, + RectTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + TriangleTraitExt, + TriangleTag, + GeometryCollectionTraitExt, + GeometryCollectionTag +); + +// ┌────────────────────────────────────────────────────────────┐ +// │ Implementation for Geometry (generic traits) │ +// └────────────────────────────────────────────────────────────┘ + +// Generate implementations for Geometry with other types using conversion +macro_rules! impl_distance_geometry_to_type { + ($rhs_type:ident, $rhs_tag:ident) => { + impl GenericDistanceTrait for LHS + where + F: GeoFloat, + LHS: GeometryTraitExt, + RHS: $rhs_type, + { + fn generic_distance_trait(&self, rhs: &RHS) -> F { + if self.is_collection() { + let mut min_distance = ::max_value(); + for lhs_geom in self.geometries_ext() { + let lhs_geom = lhs_geom.borrow(); + let distance = lhs_geom.generic_distance_trait(rhs); + min_distance = min_distance.min(distance); + + // Early exit optimization + if distance == F::zero() { + return F::zero(); + } + } + min_distance + } else { + match self.as_type_ext() { + geo_traits_ext::GeometryTypeExt::Point(g) => g.generic_distance_trait(rhs), + geo_traits_ext::GeometryTypeExt::Line(g) => g.generic_distance_trait(rhs), + geo_traits_ext::GeometryTypeExt::LineString(g) => { + g.generic_distance_trait(rhs) + } + geo_traits_ext::GeometryTypeExt::Polygon(g) => { + g.generic_distance_trait(rhs) + } + geo_traits_ext::GeometryTypeExt::MultiPoint(g) => { + g.generic_distance_trait(rhs) + } + geo_traits_ext::GeometryTypeExt::MultiLineString(g) => { + g.generic_distance_trait(rhs) + } + geo_traits_ext::GeometryTypeExt::MultiPolygon(g) => { + g.generic_distance_trait(rhs) + } + geo_traits_ext::GeometryTypeExt::Rect(g) => g.generic_distance_trait(rhs), + geo_traits_ext::GeometryTypeExt::Triangle(g) => { + g.generic_distance_trait(rhs) + } + } + } + } + } + }; +} + +impl_distance_geometry_to_type!(PointTraitExt, PointTag); +impl_distance_geometry_to_type!(LineTraitExt, LineTag); +impl_distance_geometry_to_type!(LineStringTraitExt, LineStringTag); +impl_distance_geometry_to_type!(PolygonTraitExt, PolygonTag); +impl_distance_geometry_to_type!(MultiPointTraitExt, MultiPointTag); +impl_distance_geometry_to_type!(MultiLineStringTraitExt, MultiLineStringTag); +impl_distance_geometry_to_type!(MultiPolygonTraitExt, MultiPolygonTag); +impl_distance_geometry_to_type!(RectTraitExt, RectTag); +impl_distance_geometry_to_type!(TriangleTraitExt, TriangleTag); +impl_distance_geometry_to_type!(GeometryCollectionTraitExt, GeometryCollectionTag); + +symmetric_distance_ext_trait_impl!( + GeoFloat, + PointTraitExt, + PointTag, + GeometryTraitExt, + GeometryTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + LineTraitExt, + LineTag, + GeometryTraitExt, + GeometryTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + LineStringTraitExt, + LineStringTag, + GeometryTraitExt, + GeometryTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + PolygonTraitExt, + PolygonTag, + GeometryTraitExt, + GeometryTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + MultiPointTraitExt, + MultiPointTag, + GeometryTraitExt, + GeometryTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + MultiLineStringTraitExt, + MultiLineStringTag, + GeometryTraitExt, + GeometryTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + MultiPolygonTraitExt, + MultiPolygonTag, + GeometryTraitExt, + GeometryTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + RectTraitExt, + RectTag, + GeometryTraitExt, + GeometryTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + TriangleTraitExt, + TriangleTag, + GeometryTraitExt, + GeometryTag +); +symmetric_distance_ext_trait_impl!( + GeoFloat, + GeometryCollectionTraitExt, + GeometryCollectionTag, + GeometryTraitExt, + GeometryTag +); + +impl GenericDistanceTrait for LHS +where + F: GeoFloat, + LHS: GeometryTraitExt, + RHS: GeometryTraitExt, +{ + fn generic_distance_trait(&self, rhs: &RHS) -> F { + if self.is_collection() { + let mut min_distance = ::max_value(); + for lhs_geom in self.geometries_ext() { + let lhs_geom = lhs_geom.borrow(); + let distance = lhs_geom.generic_distance_trait(rhs); + min_distance = min_distance.min(distance); + + // Early exit optimization + if distance == F::zero() { + return F::zero(); + } + } + min_distance + } else { + match self.as_type_ext() { + geo_traits_ext::GeometryTypeExt::Point(g) => g.generic_distance_trait(rhs), + geo_traits_ext::GeometryTypeExt::Line(g) => g.generic_distance_trait(rhs), + geo_traits_ext::GeometryTypeExt::LineString(g) => g.generic_distance_trait(rhs), + geo_traits_ext::GeometryTypeExt::Polygon(g) => g.generic_distance_trait(rhs), + geo_traits_ext::GeometryTypeExt::MultiPoint(g) => g.generic_distance_trait(rhs), + geo_traits_ext::GeometryTypeExt::MultiLineString(g) => { + g.generic_distance_trait(rhs) + } + geo_traits_ext::GeometryTypeExt::MultiPolygon(g) => g.generic_distance_trait(rhs), + geo_traits_ext::GeometryTypeExt::Rect(g) => g.generic_distance_trait(rhs), + geo_traits_ext::GeometryTypeExt::Triangle(g) => g.generic_distance_trait(rhs), + } + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use geo::orient::{Direction, Orient}; + use crate::{Line, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon}; + use geo_types::{coord, polygon, private_utils::line_segment_distance}; + + mod distance_cross_validation_tests { + use geo::{Coord, Distance, Euclidean, Geometry, GeometryCollection, Rect, Triangle}; + + use super::*; + + #[test] + fn line_segment_distance_test() { + let o1 = Point::new(8.0, 0.0); + let o2 = Point::new(5.5, 0.0); + let o3 = Point::new(5.0, 0.0); + let o4 = Point::new(4.5, 1.5); + + let p1 = Point::new(7.2, 2.0); + let p2 = Point::new(6.0, 1.0); + + // Test original implementation + let dist = line_segment_distance(o1, p1, p2); + let dist2 = line_segment_distance(o2, p1, p2); + let dist3 = line_segment_distance(o3, p1, p2); + let dist4 = line_segment_distance(o4, p1, p2); + // Results agree with Shapely + assert_relative_eq!(dist, 2.0485900789263356); + assert_relative_eq!(dist2, 1.118033988749895); + assert_relative_eq!(dist3, std::f64::consts::SQRT_2); // workaround clippy::correctness error approx_constant (1.4142135623730951) + assert_relative_eq!(dist4, 1.5811388300841898); + // Point is on the line + let zero_dist = line_segment_distance(p1, p1, p2); + assert_relative_eq!(zero_dist, 0.0); + + // Test generic implementation + if let (Some(p1_coord), Some(p2_coord)) = (p1.coord_ext(), p2.coord_ext()) { + let line_seg = Line::new(p1_coord, p2_coord); + + if let Some(o1_coord) = o1.coord_ext() { + let generic_dist = distance_coord_to_line_generic(&o1_coord, &line_seg); + assert_relative_eq!(generic_dist, 2.0485900789263356); + assert_relative_eq!(dist, generic_dist); + } + if let Some(o2_coord) = o2.coord_ext() { + let generic_dist2 = distance_coord_to_line_generic(&o2_coord, &line_seg); + assert_relative_eq!(generic_dist2, 1.118033988749895); + assert_relative_eq!(dist2, generic_dist2); + } + if let Some(o3_coord) = o3.coord_ext() { + let generic_dist3 = distance_coord_to_line_generic(&o3_coord, &line_seg); + assert_relative_eq!(generic_dist3, std::f64::consts::SQRT_2); + assert_relative_eq!(dist3, generic_dist3); + } + if let Some(o4_coord) = o4.coord_ext() { + let generic_dist4 = distance_coord_to_line_generic(&o4_coord, &line_seg); + assert_relative_eq!(generic_dist4, 1.5811388300841898); + assert_relative_eq!(dist4, generic_dist4); + } + if let Some(p1_coord_zero) = p1.coord_ext() { + let generic_zero_dist = + distance_coord_to_line_generic(&p1_coord_zero, &line_seg); + assert_relative_eq!(generic_zero_dist, 0.0); + assert_relative_eq!(zero_dist, generic_zero_dist); + } + } + } + #[test] + // Point to Polygon, outside point + fn point_polygon_distance_outside_test() { + // an octagon + let points = vec![ + (5., 1.), + (4., 2.), + (4., 3.), + (5., 4.), + (6., 4.), + (7., 3.), + (7., 2.), + (6., 1.), + (5., 1.), + ]; + let ls = LineString::from(points); + let poly = Polygon::new(ls, vec![]); + // A Random point outside the octagon + let p = Point::new(2.5, 0.5); + + // Test original implementation + let dist = Euclidean.distance(&p, &poly); + assert_relative_eq!(dist, 2.1213203435596424); + + // Test generic implementation + let generic_dist = p.distance_ext(&poly); + assert_relative_eq!(generic_dist, 2.1213203435596424); + + // Ensure both implementations agree + assert_relative_eq!(dist, generic_dist); + } + #[test] + // Point to Polygon, inside point + fn point_polygon_distance_inside_test() { + // an octagon + let points = vec![ + (5., 1.), + (4., 2.), + (4., 3.), + (5., 4.), + (6., 4.), + (7., 3.), + (7., 2.), + (6., 1.), + (5., 1.), + ]; + let ls = LineString::from(points); + let poly = Polygon::new(ls, vec![]); + // A Random point inside the octagon + let p = Point::new(5.5, 2.1); + + // Test original implementation + let dist = Euclidean.distance(&p, &poly); + assert_relative_eq!(dist, 0.0); + + // Test generic implementation + let generic_dist = p.distance_ext(&poly); + assert_relative_eq!(generic_dist, 0.0); + + // Ensure both implementations agree + assert_relative_eq!(dist, generic_dist); + } + #[test] + // Point to Polygon, on boundary + fn point_polygon_distance_boundary_test() { + // an octagon + let points = vec![ + (5., 1.), + (4., 2.), + (4., 3.), + (5., 4.), + (6., 4.), + (7., 3.), + (7., 2.), + (6., 1.), + (5., 1.), + ]; + let ls = LineString::from(points); + let poly = Polygon::new(ls, vec![]); + // A point on the octagon + let p = Point::new(5.0, 1.0); + + // Test original implementation + let dist = Euclidean.distance(&p, &poly); + assert_relative_eq!(dist, 0.0); + + // Test generic implementation + let generic_dist = p.distance_ext(&poly); + assert_relative_eq!(generic_dist, 0.0); + + // Ensure both implementations agree + assert_relative_eq!(dist, generic_dist); + } + #[test] + // Point to Polygon, on boundary + fn point_polygon_boundary_test2() { + let exterior = LineString::from(vec![ + (0., 0.), + (0., 0.0004), + (0.0004, 0.0004), + (0.0004, 0.), + (0., 0.), + ]); + + let poly = Polygon::new(exterior, vec![]); + let bugged_point = Point::new(0.0001, 0.); + + // Test original implementation + let distance = Euclidean.distance(&poly, &bugged_point); + assert_relative_eq!(distance, 0.); + + // Test generic implementation + let generic_distance = poly.distance_ext(&bugged_point); + assert_relative_eq!(generic_distance, 0.); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + #[test] + // Point to Polygon, empty Polygon + fn point_polygon_empty_test() { + // an empty Polygon + let points = vec![]; + let ls = LineString::new(points); + let poly = Polygon::new(ls, vec![]); + // A point on the octagon + let p = Point::new(2.5, 0.5); + + // Test original implementation + let dist = Euclidean.distance(&p, &poly); + assert_relative_eq!(dist, 0.0); + + // Test generic implementation + let generic_dist = p.distance_ext(&poly); + assert_relative_eq!(generic_dist, 0.0); + + // Ensure both implementations agree + assert_relative_eq!(dist, generic_dist); + } + #[test] + // Point to Polygon with an interior ring + fn point_polygon_interior_cutout_test() { + // an octagon + let ext_points = vec![ + (4., 1.), + (5., 2.), + (5., 3.), + (4., 4.), + (3., 4.), + (2., 3.), + (2., 2.), + (3., 1.), + (4., 1.), + ]; + // cut out a triangle inside octagon + let int_points = vec![(3.5, 3.5), (4.4, 1.5), (2.6, 1.5), (3.5, 3.5)]; + let ls_ext = LineString::from(ext_points); + let ls_int = LineString::from(int_points); + let poly = Polygon::new(ls_ext, vec![ls_int]); + // A point inside the cutout triangle + let p = Point::new(3.5, 2.5); + + // Test original implementation + let dist = Euclidean.distance(&p, &poly); + // 0.41036467732879783 <-- Shapely + assert_relative_eq!(dist, 0.41036467732879767); + + // Test generic implementation + let generic_dist = p.distance_ext(&poly); + assert_relative_eq!(generic_dist, 0.41036467732879767); + + // Ensure both implementations agree + assert_relative_eq!(dist, generic_dist); + } + + #[test] + fn line_distance_multipolygon_do_not_intersect_test() { + // checks that the distance from the multipolygon + // is equal to the distance from the closest polygon + // taken in isolation, whatever that distance is + let ls1 = LineString::from(vec![ + (0.0, 0.0), + (10.0, 0.0), + (10.0, 10.0), + (5.0, 15.0), + (0.0, 10.0), + (0.0, 0.0), + ]); + let ls2 = LineString::from(vec![ + (0.0, 30.0), + (0.0, 25.0), + (10.0, 25.0), + (10.0, 30.0), + (0.0, 30.0), + ]); + let ls3 = LineString::from(vec![ + (15.0, 30.0), + (15.0, 25.0), + (20.0, 25.0), + (20.0, 30.0), + (15.0, 30.0), + ]); + let pol1 = Polygon::new(ls1, vec![]); + let pol2 = Polygon::new(ls2, vec![]); + let pol3 = Polygon::new(ls3, vec![]); + let mp = MultiPolygon::new(vec![pol1.clone(), pol2, pol3]); + let pnt1 = Point::new(0.0, 15.0); + let pnt2 = Point::new(10.0, 20.0); + let ln = Line::new(pnt1.0, pnt2.0); + + // Test original implementation + let dist_mp_ln = Euclidean.distance(&ln, &mp); + let dist_pol1_ln = Euclidean.distance(&ln, &pol1); + assert_relative_eq!(dist_mp_ln, dist_pol1_ln); + + // Test generic implementation - compare line to polygon + let generic_dist_pol1_ln = ln.distance_ext(&pol1); + assert_relative_eq!(generic_dist_pol1_ln, dist_pol1_ln); + + // Ensure both implementations agree for the single polygon case + assert_relative_eq!(dist_pol1_ln, generic_dist_pol1_ln); + } + + #[test] + fn point_distance_multipolygon_test() { + let ls1 = LineString::from(vec![(0.0, 0.0), (1.0, 10.0), (2.0, 0.0), (0.0, 0.0)]); + let ls2 = LineString::from(vec![(3.0, 0.0), (4.0, 10.0), (5.0, 0.0), (3.0, 0.0)]); + let p1 = Polygon::new(ls1, vec![]); + let p2 = Polygon::new(ls2, vec![]); + let mp = MultiPolygon::new(vec![p1.clone(), p2.clone()]); + let p = Point::new(50.0, 50.0); + + // Test original implementation + let distance = Euclidean.distance(&p, &mp); + assert_relative_eq!(distance, 60.959002616512684); + + // Test generic implementation + let generic_dist = mp.distance_ext(&p); + assert_relative_eq!(generic_dist, 60.959002616512684); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_dist); + } + #[test] + // Point to LineString + fn point_linestring_distance_test() { + // like an octagon, but missing the lowest horizontal segment + let points = vec![ + (5., 1.), + (4., 2.), + (4., 3.), + (5., 4.), + (6., 4.), + (7., 3.), + (7., 2.), + (6., 1.), + ]; + let ls = LineString::from(points); + // A Random point "inside" the LineString + let p = Point::new(5.5, 2.1); + + // Test original implementation + let dist = Euclidean.distance(&p, &ls); + assert_relative_eq!(dist, 1.1313708498984762); + + // Test generic implementation + let generic_dist = p.distance_ext(&ls); + assert_relative_eq!(generic_dist, 1.1313708498984762); + + // Ensure both implementations agree + assert_relative_eq!(dist, generic_dist); + } + #[test] + // Point to LineString, point lies on the LineString + fn point_linestring_contains_test() { + // like an octagon, but missing the lowest horizontal segment + let points = vec![ + (5., 1.), + (4., 2.), + (4., 3.), + (5., 4.), + (6., 4.), + (7., 3.), + (7., 2.), + (6., 1.), + ]; + let ls = LineString::from(points); + // A point which lies on the LineString + let p = Point::new(5.0, 4.0); + + // Test original implementation + let dist = Euclidean.distance(&p, &ls); + assert_relative_eq!(dist, 0.0); + + // Test generic implementation + let generic_dist = p.distance_ext(&ls); + assert_relative_eq!(generic_dist, 0.0); + + // Ensure both implementations agree + assert_relative_eq!(dist, generic_dist); + } + #[test] + // Point to LineString, closed triangle + fn point_linestring_triangle_test() { + let points = vec![(3.5, 3.5), (4.4, 2.0), (2.6, 2.0), (3.5, 3.5)]; + let ls = LineString::from(points); + let p = Point::new(3.5, 2.5); + + // Test original implementation + let dist = Euclidean.distance(&p, &ls); + assert_relative_eq!(dist, 0.5); + + // Test generic implementation + let generic_dist = p.distance_ext(&ls); + assert_relative_eq!(generic_dist, 0.5); + + // Ensure both implementations agree + assert_relative_eq!(dist, generic_dist); + } + #[test] + // Point to LineString, empty LineString + fn point_linestring_empty_test() { + let points = vec![]; + let ls = LineString::new(points); + let p = Point::new(5.0, 4.0); + + // Test original implementation + let dist = Euclidean.distance(&p, &ls); + assert_relative_eq!(dist, 0.0); + + // Test generic implementation + let generic_dist = p.distance_ext(&ls); + assert_relative_eq!(generic_dist, 0.0); + + // Ensure both implementations agree + assert_relative_eq!(dist, generic_dist); + } + #[test] + fn distance_multilinestring_test() { + let v1 = LineString::from(vec![(0.0, 0.0), (1.0, 10.0)]); + let v2 = LineString::from(vec![(1.0, 10.0), (2.0, 0.0), (3.0, 1.0)]); + let mls = MultiLineString::new(vec![v1.clone(), v2.clone()]); + let p = Point::new(50.0, 50.0); + + // Test original implementation + let distance = Euclidean.distance(&p, &mls); + assert_relative_eq!(distance, 63.25345840347388); + + // Test generic implementation + let generic_dist = p.distance_ext(&mls); + assert_relative_eq!(generic_dist, 63.25345840347388); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_dist); + } + #[test] + fn distance1_test() { + let p1 = Point::new(0., 0.); + let p2 = Point::new(1., 0.); + + // Test original implementation + let distance = Euclidean.distance(&p1, &p2); + assert_relative_eq!(distance, 1.); + + // Test generic implementation + let generic_distance = distance_point_to_point_generic(&p1, &p2); + assert_relative_eq!(generic_distance, 1.); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + #[test] + fn distance2_test() { + let p1 = Point::new(-72.1235, 42.3521); + let p2 = Point::new(72.1260, 70.612); + + // Test original implementation + let dist = Euclidean.distance(&p1, &p2); + assert_relative_eq!(dist, 146.99163308930207); + + // Test generic implementation + let generic_dist = distance_point_to_point_generic(&p1, &p2); + assert_relative_eq!(generic_dist, 146.99163308930207); + + // Ensure both implementations agree + assert_relative_eq!(dist, generic_dist); + } + #[test] + fn distance_multipoint_test() { + let v = vec![ + Point::new(0.0, 10.0), + Point::new(1.0, 1.0), + Point::new(10.0, 0.0), + Point::new(1.0, -1.0), + Point::new(0.0, -10.0), + Point::new(-1.0, -1.0), + Point::new(-10.0, 0.0), + Point::new(-1.0, 1.0), + Point::new(0.0, 10.0), + ]; + let mp = MultiPoint::new(v.clone()); + let p = Point::new(50.0, 50.0); + + // Test original implementation + let distance = Euclidean.distance(&p, &mp); + assert_relative_eq!(distance, 64.03124237432849); + + let generic_dist = mp.distance_ext(&p); + // Ensure both implementations agree + assert_relative_eq!(distance, generic_dist); + } + #[test] + fn distance_line_test() { + let line0 = Line::from([(0., 0.), (5., 0.)]); + let p0 = Point::new(2., 3.); + let p1 = Point::new(3., 0.); + let p2 = Point::new(6., 0.); + + // Test original implementation + let dist_line_p0 = Euclidean.distance(&line0, &p0); + let dist_p0_line = Euclidean.distance(&p0, &line0); + assert_relative_eq!(dist_line_p0, 3.); + assert_relative_eq!(dist_p0_line, 3.); + + let dist_line_p1 = Euclidean.distance(&line0, &p1); + let dist_p1_line = Euclidean.distance(&p1, &line0); + assert_relative_eq!(dist_line_p1, 0.); + assert_relative_eq!(dist_p1_line, 0.); + + let dist_line_p2 = Euclidean.distance(&line0, &p2); + let dist_p2_line = Euclidean.distance(&p2, &line0); + assert_relative_eq!(dist_line_p2, 1.); + assert_relative_eq!(dist_p2_line, 1.); + + // Test generic implementation + let generic_dist_p0 = if let Some(coord) = p0.coord_ext() { + distance_coord_to_line_generic(&coord, &line0) + } else { + 0.0 + }; + let generic_dist_p1 = if let Some(coord) = p1.coord_ext() { + distance_coord_to_line_generic(&coord, &line0) + } else { + 0.0 + }; + let generic_dist_p2 = if let Some(coord) = p2.coord_ext() { + distance_coord_to_line_generic(&coord, &line0) + } else { + 0.0 + }; + + assert_relative_eq!(generic_dist_p0, 3.); + assert_relative_eq!(generic_dist_p1, 0.); + assert_relative_eq!(generic_dist_p2, 1.); + + // Ensure both implementations agree + assert_relative_eq!(dist_line_p0, generic_dist_p0); + assert_relative_eq!(dist_p0_line, generic_dist_p0); + assert_relative_eq!(dist_line_p1, generic_dist_p1); + assert_relative_eq!(dist_p1_line, generic_dist_p1); + assert_relative_eq!(dist_line_p2, generic_dist_p2); + assert_relative_eq!(dist_p2_line, generic_dist_p2); + } + #[test] + fn distance_line_line_test() { + let line0 = Line::from([(0., 0.), (5., 0.)]); + let line1 = Line::from([(2., 1.), (7., 2.)]); + + // Test original implementation + let distance01 = Euclidean.distance(&line0, &line1); + let distance10 = Euclidean.distance(&line1, &line0); + assert_relative_eq!(distance01, 1.); + assert_relative_eq!(distance10, 1.); + + // Test generic implementation + let generic_distance01 = line0.distance_ext(&line1); + let generic_distance10 = line1.distance_ext(&line0); + assert_relative_eq!(generic_distance01, 1.); + assert_relative_eq!(generic_distance10, 1.); + + // Ensure both implementations agree + assert_relative_eq!(distance01, generic_distance01); + assert_relative_eq!(distance10, generic_distance10); + } + #[test] + // See https://github.com/georust/geo/issues/476 + fn distance_line_polygon_test() { + let line = Line::new( + coord! { + x: -0.17084137691985102, + y: 0.8748085493016657, + }, + coord! { + x: -0.17084137691985102, + y: 0.09858870312437906, + }, + ); + let poly: Polygon = polygon![ + coord! { + x: -0.10781391405721802, + y: -0.15433610862574643, + }, + coord! { + x: -0.7855276236615211, + y: 0.23694208404779793, + }, + coord! { + x: -0.7855276236615214, + y: -0.5456143012992907, + }, + coord! { + x: -0.10781391405721802, + y: -0.15433610862574643, + }, + ]; + + // Test original implementation + let distance = Euclidean.distance(&line, &poly); + assert_eq!(distance, 0.18752558079168907); + + // Test generic implementation + let generic_distance = line.distance_ext(&poly); + assert_relative_eq!(generic_distance, 0.18752558079168907); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + #[test] + // test edge-vertex minimum distance + fn test_minimum_polygon_distance() { + let points_raw = [ + (126., 232.), + (126., 212.), + (112., 202.), + (97., 204.), + (87., 215.), + (87., 232.), + (100., 246.), + (118., 247.), + ]; + let points = points_raw + .iter() + .map(|e| Point::new(e.0, e.1)) + .collect::>(); + let poly1 = Polygon::new(LineString::from(points), vec![]); + + let points_raw_2 = [ + (188., 231.), + (189., 207.), + (174., 196.), + (164., 196.), + (147., 220.), + (158., 242.), + (177., 242.), + ]; + let points2 = points_raw_2 + .iter() + .map(|e| Point::new(e.0, e.1)) + .collect::>(); + let poly2 = Polygon::new(LineString::from(points2), vec![]); + + // Test generic implementation + let generic_dist = poly1.exterior().distance_ext(poly2.exterior()); + assert_relative_eq!(generic_dist, 21.0); + } + #[test] + // test vertex-vertex minimum distance + fn test_minimum_polygon_distance_2() { + let points_raw = [ + (118., 200.), + (153., 179.), + (106., 155.), + (88., 190.), + (118., 200.), + ]; + let points = points_raw + .iter() + .map(|e| Point::new(e.0, e.1)) + .collect::>(); + let poly1 = Polygon::new(LineString::from(points), vec![]); + + let points_raw_2 = [ + (242., 186.), + (260., 146.), + (182., 175.), + (216., 193.), + (242., 186.), + ]; + let points2 = points_raw_2 + .iter() + .map(|e| Point::new(e.0, e.1)) + .collect::>(); + let poly2 = Polygon::new(LineString::from(points2), vec![]); + + // Test generic implementation + let generic_dist = poly1.exterior().distance_ext(poly2.exterior()); + assert_relative_eq!(generic_dist, 29.274562336608895); + } + #[test] + // test edge-edge minimum distance + fn test_minimum_polygon_distance_3() { + let points_raw = [ + (182., 182.), + (182., 168.), + (138., 160.), + (136., 193.), + (182., 182.), + ]; + let points = points_raw + .iter() + .map(|e| Point::new(e.0, e.1)) + .collect::>(); + let poly1 = Polygon::new(LineString::from(points), vec![]); + + let points_raw_2 = [ + (232., 196.), + (234., 150.), + (194., 165.), + (194., 191.), + (232., 196.), + ]; + let points2 = points_raw_2 + .iter() + .map(|e| Point::new(e.0, e.1)) + .collect::>(); + let poly2 = Polygon::new(LineString::from(points2), vec![]); + + // Test generic implementation + let generic_dist = poly1.exterior().distance_ext(poly2.exterior()); + assert_relative_eq!(generic_dist, 12.0); + } + #[test] + fn test_large_polygon_distance() { + let ls = geo_test_fixtures::norway_main::(); + let poly1 = Polygon::new(ls, vec![]); + let vec2 = vec![ + (4.921875, 66.33750501996518), + (3.69140625, 65.21989393613207), + (6.15234375, 65.07213008560697), + (4.921875, 66.33750501996518), + ]; + let poly2 = Polygon::new(vec2.into(), vec![]); + + // Test original implementation + let distance = Euclidean.distance(&poly1, &poly2); + // GEOS says 2.2864896295566055 + assert_relative_eq!(distance, 2.2864896295566055); + + // Test generic implementation + let generic_distance = poly1.distance_ext(&poly2); + assert_relative_eq!(generic_distance, 2.2864896295566055); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + #[test] + // A polygon inside another polygon's ring; they're disjoint in the DE-9IM sense: + // FF2FF1212 + fn test_poly_in_ring() { + let shell = geo_test_fixtures::shell::(); + let ring = geo_test_fixtures::ring::(); + let poly_in_ring = geo_test_fixtures::poly_in_ring::(); + // inside is "inside" outside's ring, but they are disjoint + let outside = Polygon::new(shell, vec![ring]); + let inside = Polygon::new(poly_in_ring, vec![]); + + // Test original implementation + let distance = Euclidean.distance(&outside, &inside); + assert_relative_eq!(distance, 5.992772737231033); + + // Test generic implementation + let generic_distance = outside.distance_ext(&inside); + assert_relative_eq!(generic_distance, 5.992772737231033); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + #[test] + // two ring LineStrings; one encloses the other but they neither touch nor intersect + fn test_linestring_distance() { + let ring = geo_test_fixtures::ring::(); + let poly_in_ring = geo_test_fixtures::poly_in_ring::(); + + // Test original implementation + let distance = Euclidean.distance(&ring, &poly_in_ring); + assert_relative_eq!(distance, 5.992772737231033); + + // Test generic implementation + let generic_distance = ring.distance_ext(&poly_in_ring); + assert_relative_eq!(generic_distance, 5.992772737231033); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + #[test] + // Line-Polygon test: closest point on Polygon is NOT nearest to a Line end-point + fn test_line_polygon_simple() { + let line = Line::from([(0.0, 0.0), (0.0, 3.0)]); + let v = vec![(5.0, 1.0), (5.0, 2.0), (0.25, 1.5), (5.0, 1.0)]; + let poly = Polygon::new(v.into(), vec![]); + + // Test original implementation + let distance = Euclidean.distance(&line, &poly); + assert_relative_eq!(distance, 0.25); + + // Test generic implementation + let generic_distance = line.distance_ext(&poly); + assert_relative_eq!(generic_distance, 0.25); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + #[test] + // Line-Polygon test: Line intersects Polygon + fn test_line_polygon_intersects() { + let line = Line::from([(0.5, 0.0), (0.0, 3.0)]); + let v = vec![(5.0, 1.0), (5.0, 2.0), (0.25, 1.5), (5.0, 1.0)]; + let poly = Polygon::new(v.into(), vec![]); + + // Test original implementation + let distance = Euclidean.distance(&line, &poly); + assert_relative_eq!(distance, 0.0); + + // Test generic implementation + let generic_distance = line.distance_ext(&poly); + assert_relative_eq!(generic_distance, 0.0); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + #[test] + // Line-Polygon test: Line contained by interior ring + fn test_line_polygon_inside_ring() { + let line = Line::from([(4.4, 1.5), (4.45, 1.5)]); + let v = vec![(5.0, 1.0), (5.0, 2.0), (0.25, 1.0), (5.0, 1.0)]; + let v2 = vec![(4.5, 1.2), (4.5, 1.8), (3.5, 1.2), (4.5, 1.2)]; + let poly = Polygon::new(v.into(), vec![v2.into()]); + + // Test original implementation + let distance = Euclidean.distance(&line, &poly); + assert_relative_eq!(distance, 0.04999999999999982); + + // Test generic implementation + let generic_distance = line.distance_ext(&poly); + assert_relative_eq!(generic_distance, 0.04999999999999982); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + #[test] + // LineString-Line test + fn test_linestring_line_distance() { + let line = Line::from([(0.0, 0.0), (0.0, 2.0)]); + let ls: LineString<_> = vec![(3.0, 0.0), (1.0, 1.0), (3.0, 2.0)].into(); + + // Test original implementation + let distance = Euclidean.distance(&ls, &line); + assert_relative_eq!(distance, 1.0); + + // Test generic implementation + let generic_distance = ls.distance_ext(&line); + assert_relative_eq!(generic_distance, 1.0); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + + #[test] + // Triangle-Point test: point on vertex + fn test_triangle_point_on_vertex_distance() { + let triangle = Triangle::from([(0.0, 0.0), (2.0, 0.0), (2.0, 2.0)]); + let point = Point::new(0.0, 0.0); + + // Test original implementation + let distance = Euclidean.distance(&triangle, &point); + assert_relative_eq!(distance, 0.0); + + // Test generic implementation + let generic_distance = triangle.distance_ext(&point); + assert_relative_eq!(generic_distance, 0.0); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + + #[test] + // Triangle-Point test: point on edge + fn test_triangle_point_on_edge_distance() { + let triangle = Triangle::from([(0.0, 0.0), (2.0, 0.0), (2.0, 2.0)]); + let point = Point::new(1.5, 0.0); + + // Test original implementation + let distance = Euclidean.distance(&triangle, &point); + assert_relative_eq!(distance, 0.0); + + // Test generic implementation + let generic_distance = triangle.distance_ext(&point); + assert_relative_eq!(generic_distance, 0.0); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + + #[test] + // Triangle-Point test + fn test_triangle_point_distance() { + let triangle = Triangle::from([(0.0, 0.0), (2.0, 0.0), (2.0, 2.0)]); + let point = Point::new(2.0, 3.0); + + // Test original implementation + let distance = Euclidean.distance(&triangle, &point); + assert_relative_eq!(distance, 1.0); + + // Test generic implementation + let generic_distance = triangle.distance_ext(&point); + assert_relative_eq!(generic_distance, 1.0); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + + #[test] + // Triangle-Point test: point within triangle + fn test_triangle_point_inside_distance() { + let triangle = Triangle::from([(0.0, 0.0), (2.0, 0.0), (2.0, 2.0)]); + let point = Point::new(1.0, 0.5); + + // Test original implementation + let distance = Euclidean.distance(&triangle, &point); + assert_relative_eq!(distance, 0.0); + + // Test generic implementation + let generic_distance = triangle.distance_ext(&point); + assert_relative_eq!(generic_distance, 0.0); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + + #[test] + fn convex_and_nearest_neighbour_comparison() { + let ls1: LineString = vec![ + Coord::from((57.39453770777941, 307.60533608924663)), + Coord::from((67.1800355576469, 309.6654408997451)), + Coord::from((84.89693692793338, 225.5101593908847)), + Coord::from((75.1114390780659, 223.45005458038628)), + Coord::from((57.39453770777941, 307.60533608924663)), + ] + .into(); + let first_polygon: Polygon = Polygon::new(ls1, vec![]); + let ls2: LineString = vec![ + Coord::from((138.11769866645008, -45.75134112915392)), + Coord::from((130.50230476949187, -39.270154833870336)), + Coord::from((184.94426964987397, 24.699153900578573)), + Coord::from((192.55966354683218, 18.217967605294987)), + Coord::from((138.11769866645008, -45.75134112915392)), + ] + .into(); + let second_polygon = Polygon::new(ls2, vec![]); + + // Test original implementation + let distance = Euclidean.distance(&first_polygon, &second_polygon); + assert_relative_eq!(distance, 224.35357967013238); + + // Test generic implementation + let generic_distance = first_polygon.distance_ext(&second_polygon); + assert_relative_eq!(generic_distance, 224.35357967013238); + + // Ensure both implementations agree + assert_relative_eq!(distance, generic_distance); + } + #[test] + fn fast_path_regression() { + // this test will fail if the fast path algorithm is reintroduced without being fixed + let p1 = polygon!( + (x: 0_f64, y: 0_f64), + (x: 300_f64, y: 0_f64), + (x: 300_f64, y: 100_f64), + (x: 0_f64, y: 100_f64), + ) + .orient(Direction::Default); + let p2 = polygon!( + (x: 100_f64, y: 150_f64), + (x: 150_f64, y: 200_f64), + (x: 50_f64, y: 200_f64), + ) + .orient(Direction::Default); + let p3 = polygon!( + (x: 0_f64, y: 0_f64), + (x: 300_f64, y: 0_f64), + (x: 300_f64, y: 100_f64), + (x: 0_f64, y: 100_f64), + ) + .orient(Direction::Reversed); + let p4 = polygon!( + (x: 100_f64, y: 150_f64), + (x: 150_f64, y: 200_f64), + (x: 50_f64, y: 200_f64), + ) + .orient(Direction::Reversed); + + // Test original implementation + let distance_p1_p2 = Euclidean.distance(&p1, &p2); + let distance_p3_p4 = Euclidean.distance(&p3, &p4); + let distance_p1_p4 = Euclidean.distance(&p1, &p4); + let distance_p2_p3 = Euclidean.distance(&p2, &p3); + assert_eq!(distance_p1_p2, 50.0f64); + assert_eq!(distance_p3_p4, 50.0f64); + assert_eq!(distance_p1_p4, 50.0f64); + assert_eq!(distance_p2_p3, 50.0f64); + + // Test generic implementation + let generic_distance_p1_p2 = p1.distance_ext(&p2); + let generic_distance_p3_p4 = p3.distance_ext(&p4); + let generic_distance_p1_p4 = p1.distance_ext(&p4); + let generic_distance_p2_p3 = p2.distance_ext(&p3); + assert_relative_eq!(generic_distance_p1_p2, 50.0f64); + assert_relative_eq!(generic_distance_p3_p4, 50.0f64); + assert_relative_eq!(generic_distance_p1_p4, 50.0f64); + assert_relative_eq!(generic_distance_p2_p3, 50.0f64); + + // Ensure both implementations agree + assert_relative_eq!(distance_p1_p2, generic_distance_p1_p2); + assert_relative_eq!(distance_p3_p4, generic_distance_p3_p4); + assert_relative_eq!(distance_p1_p4, generic_distance_p1_p4); + assert_relative_eq!(distance_p2_p3, generic_distance_p2_p3); + } + #[test] + fn rect_to_polygon_distance_test() { + // Test that Rect to Polygon distance works + let rect = Rect::new((0.0, 0.0), (2.0, 2.0)); + let poly_points = vec![(3., 0.), (5., 0.), (5., 2.), (3., 2.), (3., 0.)]; + let poly = Polygon::new(LineString::from(poly_points), vec![]); + + // Test original implementation (both directions) + let dist1 = Euclidean.distance(&rect, &poly); + let dist2 = Euclidean.distance(&poly, &rect); + assert_relative_eq!(dist1, 1.0); + assert_relative_eq!(dist2, 1.0); + assert_relative_eq!(dist1, dist2); // Verify symmetry + + // Test generic implementation + let rect_as_poly = rect.to_polygon(); + let generic_dist1 = rect_as_poly.distance_ext(&poly); + let generic_dist2 = poly.distance_ext(&rect_as_poly); + assert_relative_eq!(generic_dist1, 1.0); + assert_relative_eq!(generic_dist2, 1.0); + + // Ensure both implementations agree + assert_relative_eq!(dist1, generic_dist1); + assert_relative_eq!(dist2, generic_dist2); + } + + #[test] + fn all_types_geometry_collection_test() { + let p = Point::new(0.0, 0.0); + let line = Line::from([(-1.0, -1.0), (-2.0, -2.0)]); + let ls = LineString::from(vec![(0.0, 0.0), (1.0, 10.0), (2.0, 0.0)]); + let poly = Polygon::new( + LineString::from(vec![(0.0, 0.0), (1.0, 10.0), (2.0, 0.0), (0.0, 0.0)]), + vec![], + ); + let tri = Triangle::from([(0.0, 0.0), (1.0, 10.0), (2.0, 0.0)]); + let rect = Rect::new((0.0, 0.0), (-1.0, -1.0)); + + let ls1 = LineString::from(vec![(0.0, 0.0), (1.0, 10.0), (2.0, 0.0), (0.0, 0.0)]); + let ls2 = LineString::from(vec![(3.0, 0.0), (4.0, 10.0), (5.0, 0.0), (3.0, 0.0)]); + let p1 = Polygon::new(ls1, vec![]); + let p2 = Polygon::new(ls2, vec![]); + let mpoly = MultiPolygon::new(vec![p1, p2]); + + let v = vec![ + Point::new(0.0, 10.0), + Point::new(1.0, 1.0), + Point::new(10.0, 0.0), + Point::new(1.0, -1.0), + Point::new(0.0, -10.0), + Point::new(-1.0, -1.0), + Point::new(-10.0, 0.0), + Point::new(-1.0, 1.0), + Point::new(0.0, 10.0), + ]; + let mpoint = MultiPoint::new(v); + + let v1 = LineString::from(vec![(0.0, 0.0), (1.0, 10.0)]); + let v2 = LineString::from(vec![(1.0, 10.0), (2.0, 0.0), (3.0, 1.0)]); + let mls = MultiLineString::new(vec![v1, v2]); + + let gc = GeometryCollection(vec![ + Geometry::Point(p), + Geometry::Line(line), + Geometry::LineString(ls), + Geometry::Polygon(poly), + Geometry::MultiPoint(mpoint), + Geometry::MultiLineString(mls), + Geometry::MultiPolygon(mpoly), + Geometry::Triangle(tri), + Geometry::Rect(rect), + ]); + + // Test original implementations + let test_p = Point::new(50., 50.); + let distance_p_gc = Euclidean.distance(&test_p, &gc); + assert_relative_eq!(distance_p_gc, 60.959002616512684); + + let test_multipoint = MultiPoint::new(vec![test_p]); + let distance_mp_gc = Euclidean.distance(&test_multipoint, &gc); + assert_relative_eq!(distance_mp_gc, 60.959002616512684); + + let test_line = Line::from([(50., 50.), (60., 60.)]); + let distance_line_gc = Euclidean.distance(&test_line, &gc); + assert_relative_eq!(distance_line_gc, 60.959002616512684); + + let test_ls = LineString::from(vec![(50., 50.), (60., 60.), (70., 70.)]); + let distance_ls_gc = Euclidean.distance(&test_ls, &gc); + assert_relative_eq!(distance_ls_gc, 60.959002616512684); + + let test_mls = MultiLineString::new(vec![test_ls]); + let distance_mls_gc = Euclidean.distance(&test_mls, &gc); + assert_relative_eq!(distance_mls_gc, 60.959002616512684); + + let test_poly = Polygon::new( + LineString::from(vec![ + (50., 50.), + (60., 50.), + (60., 60.), + (55., 55.), + (50., 50.), + ]), + vec![], + ); + let distance_poly_gc = Euclidean.distance(&test_poly, &gc); + assert_relative_eq!(distance_poly_gc, 60.959002616512684); + + let test_multipoly = MultiPolygon::new(vec![test_poly]); + let distance_multipoly_gc = Euclidean.distance(&test_multipoly, &gc); + assert_relative_eq!(distance_multipoly_gc, 60.959002616512684); + + let test_tri = Triangle::from([(50., 50.), (60., 50.), (55., 55.)]); + let distance_tri_gc = Euclidean.distance(&test_tri, &gc); + assert_relative_eq!(distance_tri_gc, 60.959002616512684); + + let test_rect = Rect::new(coord! { x: 50., y: 50. }, coord! { x: 60., y: 60. }); + let distance_rect_gc = Euclidean.distance(&test_rect, &gc); + assert_relative_eq!(distance_rect_gc, 60.959002616512684); + + let test_gc = GeometryCollection(vec![Geometry::Rect(test_rect)]); + let distance_gc_gc = Euclidean.distance(&test_gc, &gc); + assert_relative_eq!(distance_gc_gc, 60.959002616512684); + } + + #[test] + fn test_original_issue_verification() { + let point = Point::new(0.0, 0.0); + let linestring = LineString::from(vec![(0.0, 0.0), (1.0, 1.0)]); + + let gc1 = GeometryCollection(vec![ + Geometry::Point(point), + Geometry::LineString(linestring.clone()), + ]); + + let gc2 = GeometryCollection(vec![ + Geometry::Point(point), + Geometry::LineString(linestring), + ]); + + // Test the concrete Distance API + let distance = Euclidean.distance(&gc1, &gc2); + assert_eq!( + distance, 0.0, + "Distance between identical GeometryCollections should be 0" + ); + + // Test the generic distance_ext API directly + use crate::line_measures::DistanceExt; + let distance_ext = gc1.distance_ext(&gc2); + assert_eq!(distance_ext, 0.0, "Generic distance should also be 0"); + } + + #[test] + fn test_force_generic_trait_recursion() { + let point = Point::new(0.0, 0.0); + let linestring = LineString::from(vec![(0.0, 0.0), (1.0, 1.0)]); + + let gc1 = GeometryCollection(vec![ + Geometry::Point(point), + Geometry::LineString(linestring.clone()), + ]); + + let gc2 = GeometryCollection(vec![ + Geometry::Point(point), + Geometry::LineString(linestring), + ]); + + let distance_result = gc1.distance_ext(&gc2); + assert_eq!(distance_result, 0.0); + + let geom_gc1 = Geometry::GeometryCollection(gc1.clone()); + let geom_gc2 = Geometry::GeometryCollection(gc2.clone()); + let distance_result = geom_gc1.distance_ext(&geom_gc2); + assert_eq!(distance_result, 0.0); + + let distance_result = geom_gc1.distance_ext(&gc2); + assert_eq!(distance_result, 0.0); + + let distance_result = gc1.distance_ext(&geom_gc2); + assert_eq!(distance_result, 0.0); + } + } +} diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs new file mode 100644 index 00000000..7b27a16d --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs @@ -0,0 +1,78 @@ +mod distance; +mod utils; +pub use distance::DistanceExt; +use geo_types::{Coord, CoordFloat, Point}; + +use crate::line_measures::distance::Distance; + +/// Operations on the [Euclidean plane] measure distance with the pythagorean formula - +/// what you'd measure with a ruler. +/// +/// If you have lon/lat points, use the [`Haversine`], [`Geodesic`], or other [metric spaces] - +/// Euclidean methods will give nonsense results. +/// +/// If you wish to use Euclidean operations with lon/lat, the coordinates must first be transformed +/// using the [`Transform::transform`](crate::Transform::transform) / [`Transform::transform_crs_to_crs`](crate::Transform::transform_crs_to_crs) methods or their +/// immutable variants. Use of these requires the proj feature +/// +/// [Euclidean plane]: https://en.wikipedia.org/wiki/Euclidean_plane +/// [`Transform`]: crate::Transform +/// [`Haversine`]: super::Haversine +/// [`Geodesic`]: super::Geodesic +/// [metric spaces]: super +pub struct Euclidean; + +// ┌───────────────────────────┐ +// │ Implementations for Coord │ +// └───────────────────────────┘ + +impl Distance, Coord> for Euclidean { + fn distance(&self, origin: Coord, destination: Coord) -> F { + let delta = origin - destination; + delta.x.hypot(delta.y) + } +} + +// ┌───────────────────────────┐ +// │ Implementations for Point │ +// └───────────────────────────┘ + +/// Calculate the Euclidean distance (a.k.a. pythagorean distance) between two Points +impl Distance, Point> for Euclidean { + /// Calculate the Euclidean distance (a.k.a. pythagorean distance) between two Points + /// + /// # Units + /// - `origin`, `destination`: Point where the units of x/y represent non-angular units + /// — e.g. meters or miles, not lon/lat. For lon/lat points, use the + /// [`Haversine`] or [`Geodesic`] [metric spaces]. + /// - returns: distance in the same units as the `origin` and `destination` points + /// + /// # Example + /// ``` + /// use geo::{Euclidean, Distance}; + /// use geo::Point; + /// // web mercator + /// let new_york_city = Point::new(-8238310.24, 4942194.78); + /// // web mercator + /// let london = Point::new(-14226.63, 6678077.70); + /// let distance: f64 = Euclidean.distance(new_york_city, london); + /// + /// assert_eq!( + /// 8_405_286., // meters in web mercator + /// distance.round() + /// ); + /// ``` + /// + /// [`Haversine`]: crate::line_measures::metric_spaces::Haversine + /// [`Geodesic`]: crate::line_measures::metric_spaces::Geodesic + /// [metric spaces]: crate::line_measures::metric_spaces + fn distance(&self, origin: Point, destination: Point) -> F { + self.distance(origin.0, destination.0) + } +} + +impl Distance, &Point> for Euclidean { + fn distance(&self, origin: &Point, destination: &Point) -> F { + self.distance(*origin, *destination) + } +} diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs new file mode 100644 index 00000000..788bad11 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs @@ -0,0 +1,2364 @@ +use crate::algorithm::Intersects; +use crate::coordinate_position::{coord_pos_relative_to_ring, CoordPos}; +use crate::geometry::*; +use crate::{CoordFloat, GeoFloat, GeoNum}; +use geo_traits::{CoordTrait, LineStringTrait}; +use geo_traits_ext::{ + LineStringTraitExt, LineTraitExt, PointTraitExt, PolygonTraitExt, TriangleTraitExt, +}; +use num_traits::{Bounded, Float}; + +// ┌────────────────────────────────────────────────────────────┐ +// │ Helper functions for generic distance calculations │ +// └────────────────────────────────────────────────────────────┘ + +pub fn nearest_neighbour_distance(geom1: &LineString, geom2: &LineString) -> F { + let mut min_distance: F = Bounded::max_value(); + + // Primary computation: line-to-line distances + for line1 in geom1.lines() { + for line2 in geom2.lines() { + let line_distance = distance_line_to_line_generic(&line1, &line2); + min_distance = min_distance.min(line_distance); + + // Early exit if we found an intersection + if line_distance == F::zero() { + return F::zero(); + } + } + } + + // Check points of geom2 against lines of geom1 + for point in geom2.points() { + if let Some(coord) = point.coord_ext() { + for line1 in geom1.lines() { + let dist = distance_coord_to_line_generic(&coord, &line1); + min_distance = min_distance.min(dist); + } + } + } + + // Check points of geom1 against lines of geom2 + for point in geom1.points() { + if let Some(coord) = point.coord_ext() { + for line2 in geom2.lines() { + let dist = distance_coord_to_line_generic(&coord, &line2); + min_distance = min_distance.min(dist); + } + } + } + + min_distance +} + +pub fn ring_contains_coord(ring: &LineString, c: Coord) -> bool { + match coord_pos_relative_to_ring(c, ring) { + CoordPos::Inside => true, + CoordPos::OnBoundary | CoordPos::Outside => false, + } +} + +/// Generic point-to-point Euclidean distance calculation. +/// +/// # Algorithm Equivalence to Concrete Implementation +/// +/// This function is algorithmically identical to the concrete `Distance, Coord>` implementation. +/// +/// **Equivalence Details:** +/// - **Same mathematical formula**: Both use Euclidean distance `sqrt(Δx² + Δy²)` via `hypot()` +/// - **Same calculation steps**: Extract coordinates, compute deltas, apply `hypot()` +/// - **Same edge case handling**: Both return 0 for invalid/empty points +/// - **Same numerical precision**: Both use identical `hypot()` implementation +/// +/// The only difference is the abstraction layer - this generic version works with any +/// type implementing `PointTraitExt`, while concrete works with `Coord` directly. +pub fn distance_point_to_point_generic(p1: &P1, p2: &P2) -> F +where + F: CoordFloat, + P1: PointTraitExt, + P2: PointTraitExt, +{ + if let (Some(c1), Some(c2)) = (p1.coord(), p2.coord()) { + let delta_x = c1.x() - c2.x(); + let delta_y = c1.y() - c2.y(); + delta_x.hypot(delta_y) + } else { + F::zero() + } +} + +/// Generic coordinate-to-line-segment distance calculation. +/// +/// # Algorithm Equivalence to Concrete Implementation +/// +/// This function is algorithmically identical to the concrete `line_segment_distance` function +/// in `geo-types/src/private_utils.rs`. +/// +/// **Equivalence Details:** +/// - **Same parametric approach**: Both compute parameter `r` to find the closest point on the line +/// - **Same boundary handling**: Both check if `r <= 0` (closest to start) or `r >= 1` (closest to end) +/// - **Same degenerate case**: Both handle zero-length lines by computing direct point distance +/// - **Same perpendicular distance formula**: Both use cross product formula `s.abs() * dx.hypot(dy)` for interior points +/// - **Same numerical precision**: Both use identical calculations and `hypot()` calls +/// +/// The concrete implementation uses `line_euclidean_length()` helper for endpoint distances, +/// while this uses inline `delta.hypot()` - both compute the same Euclidean distance. +pub fn distance_coord_to_line_generic(coord: &C, line: &L) -> F +where + F: CoordFloat, + C: CoordTrait, + L: LineTraitExt, +{ + let point_x = coord.x(); + let point_y = coord.y(); + let start = line.start_coord(); + let end = line.end_coord(); + + // Handle degenerate case: line segment is a point + if start.x == end.x && start.y == end.y { + let delta_x = point_x - start.x; + let delta_y = point_y - start.y; + return delta_x.hypot(delta_y); + } + + let dx = end.x - start.x; + let dy = end.y - start.y; + let d_squared = dx * dx + dy * dy; + let r = ((point_x - start.x) * dx + (point_y - start.y) * dy) / d_squared; + + if r <= F::zero() { + // Closest point is the start point + let delta_x = point_x - start.x; + let delta_y = point_y - start.y; + return delta_x.hypot(delta_y); + } + if r >= F::one() { + // Closest point is the end point + let delta_x = point_x - end.x; + let delta_y = point_y - end.y; + return delta_x.hypot(delta_y); + } + + // Closest point is on the line segment - use perpendicular distance + let s = ((start.y - point_y) * dx - (start.x - point_x) * dy) / d_squared; + s.abs() * dx.hypot(dy) +} + +/// Generic point-to-linestring distance calculation. +/// +/// # Algorithm Equivalence to Concrete Implementation +/// +/// This function is algorithmically identical to the concrete `point_line_string_euclidean_distance` function +/// in `geo-types/src/private_utils.rs`. +/// +/// **Equivalence Details:** +/// - **Same containment check optimization**: Both check if point intersects/is contained in the linestring first +/// - **Same early exit**: Both return 0 immediately if point is on the linestring +/// - **Same iteration approach**: Both iterate through all line segments to find minimum distance +/// - **Same distance calculation**: Both use point-to-line-segment distance for each segment +/// - **Same empty handling**: Both return 0 for empty linestrings +/// +/// The concrete implementation uses `line_string_contains_point()` while this uses `intersects()` trait method, +/// but both perform the same containment check. The iteration pattern and minimum distance logic are identical. +pub fn distance_point_to_linestring_generic(point: &P, linestring: &LS) -> F +where + F: GeoFloat, + P: PointTraitExt, + LS: LineStringTraitExt, +{ + if let Some(coord) = point.coord() { + // Early exit optimization: if point is on the linestring, distance is 0 + // Check if the point is contained in the linestring using intersects + if linestring.intersects(point) { + return F::zero(); + } + + let mut lines = linestring.lines(); + if let Some(first_line) = lines.next() { + let mut min_distance = distance_coord_to_line_generic(&coord, &first_line); + for line in lines { + min_distance = min_distance.min(distance_coord_to_line_generic(&coord, &line)); + } + min_distance + } else { + F::zero() + } + } else { + F::zero() + } +} + +/// Point to Polygon distance +/// +/// # Algorithm Equivalence +/// +/// This generic implementation is algorithmically identical to the concrete +/// `Distance, &Polygon>` implementation: +/// +/// 1. **Intersection Check**: First checks if the point intersects the polygon +/// using the same `Intersects` trait, returning zero for any intersection +/// (boundary or interior). +/// +/// 2. **Ring Distance Calculation**: If no intersection, computes minimum distance +/// by iterating through all polygon rings (exterior and all interior holes). +/// +/// 3. **Minimum Selection**: Uses the same fold pattern to find the minimum +/// distance across all rings, starting with F::max_value(). +/// +/// The only difference is the generic trait-based interface for accessing +/// polygon components, while the core distance logic remains identical. +pub fn distance_point_to_polygon_generic(point: &P, polygon: &Poly) -> F +where + F: GeoFloat, + P: PointTraitExt, + Poly: PolygonTraitExt, +{ + // Check if the polygon is empty + if polygon.exterior_ext().is_none() { + return F::zero(); + } + + // If the point intersects the polygon (is inside or on boundary), distance is 0 + if polygon.intersects(point) { + return F::zero(); + } + + // Point is outside the polygon, calculate minimum distance to edges + if let (Some(coord), Some(exterior)) = (point.coord_ext(), polygon.exterior_ext()) { + let mut min_dist: F = Float::max_value(); + + // Calculate minimum distance to exterior ring - single loop + for line in exterior.lines() { + let dist = distance_coord_to_line_generic(&coord, &line); + min_dist = min_dist.min(dist); + } + + // Only check interior rings if they exist + if polygon.interiors_ext().next().is_some() { + for interior in polygon.interiors_ext() { + for line in interior.lines() { + let dist = distance_coord_to_line_generic(&coord, &line); + min_dist = min_dist.min(dist); + } + } + } + + min_dist + } else { + F::zero() + } +} + +/// Line to Line distance +/// +/// # Algorithm Equivalence +/// +/// This generic implementation is algorithmically identical to the concrete +/// `Distance, &Line>` implementation: +/// +/// 1. **Intersection Check**: First uses the `Intersects` trait to check if the +/// lines intersect, returning zero if they do. +/// +/// 2. **Four-Point Distance**: If no intersection, computes the minimum distance +/// by checking all four possible point-to-line segment distances: +/// +/// 3. **Minimum Selection**: Uses the same chained min() operations to find +/// the shortest distance among all four calculations. +/// +/// The generic trait interface provides the same coordinate access while +/// maintaining identical distance computation logic. +pub fn distance_line_to_line_generic(line1: &L1, line2: &L2) -> F +where + F: GeoFloat, + L1: LineTraitExt, + L2: LineTraitExt, +{ + let start1 = line1.start_coord(); + let end1 = line1.end_coord(); + let start2 = line2.start_coord(); + let end2 = line2.end_coord(); + + // Check if lines intersect using generic intersects + if line1.intersects(line2) { + return F::zero(); + } + + // Find minimum distance between all endpoint combinations + let dist1 = distance_coord_to_line_generic(&start1, line2); + let dist2 = distance_coord_to_line_generic(&end1, line2); + let dist3 = distance_coord_to_line_generic(&start2, line1); + let dist4 = distance_coord_to_line_generic(&end2, line1); + + dist1.min(dist2).min(dist3).min(dist4) +} + +/// Line to LineString distance +/// +/// # Algorithm Equivalence +/// +/// This generic implementation is algorithmically identical to the concrete +/// `Distance, &LineString>` implementation: +/// +/// 1. **Segment Iteration**: Maps over each line segment in the LineString +/// using the same `lines()` iterator approach. +/// +/// 2. **Line-to-Line Distance**: For each segment, calls the same line-to-line +/// distance function that handles intersection detection and four-point +/// distance calculations. +/// +/// 3. **Minimum Selection**: Uses the same fold pattern with F::max_value() +/// as the starting accumulator and min() reduction to find the shortest +/// distance across all segments. +/// +/// The generic trait interface provides equivalent LineString iteration while +/// maintaining identical distance computation logic. +pub fn distance_line_to_linestring_generic(line: &L, linestring: &LS) -> F +where + F: GeoFloat, + L: LineTraitExt, + LS: LineStringTraitExt, +{ + linestring + .lines() + .map(|ls_line| distance_line_to_line_generic(line, &ls_line)) + .fold(Float::max_value(), |acc, dist| acc.min(dist)) +} + +/// Line to Polygon distance +/// +/// # Algorithm Equivalence +/// +/// This generic implementation is algorithmically identical to the concrete +/// `Distance, &Polygon>` implementation: +/// +/// 1. **Line-to-LineString Conversion**: Converts the line segment into a +/// two-point LineString containing the start and end coordinates. +/// +/// 2. **Delegation to LineString-Polygon**: Uses the same delegation pattern +/// as the concrete implementation by calling the LineString-to-Polygon +/// distance function. +/// +/// 3. **Identical Logic Path**: This ensures the same containment checks, +/// intersection detection, and ring distance calculations are applied +/// as in the concrete implementation. +/// +/// The conversion approach maintains algorithmic equivalence while leveraging +/// the more comprehensive LineString-to-Polygon distance logic. +pub fn distance_line_to_polygon_generic(line: &L, polygon: &Poly) -> F +where + F: GeoFloat, + L: LineTraitExt, + Poly: PolygonTraitExt, +{ + // Convert line to linestring and use existing linestring-to-polygon function + let line_coords = vec![line.start_coord(), line.end_coord()]; + let line_as_ls = LineString::from(line_coords); + distance_linestring_to_polygon_generic(&line_as_ls, polygon) +} + +/// LineString to LineString distance +/// +/// # Algorithm Equivalence +/// +/// This generic implementation is algorithmically identical to the concrete +/// `Distance, &LineString>` implementation: +/// +/// 1. **Cartesian Product**: Uses flat_map to create all possible combinations +/// of line segments between the two LineStrings, matching the nested +/// iteration pattern of the concrete implementation. +/// +/// 2. **Line-to-Line Distance**: For each segment pair, applies the same +/// line-to-line distance function with intersection detection and +/// four-point distance calculations. +/// +/// 3. **Minimum Selection**: Uses the same fold pattern with F::max_value() +/// as the starting accumulator and min() reduction to find the shortest +/// distance across all segment combinations. +/// +/// The generic trait interface provides equivalent segment iteration while +/// maintaining identical pairwise distance computation logic. +pub fn distance_linestring_to_linestring_generic(ls1: &LS1, ls2: &LS2) -> F +where + F: GeoFloat, + LS1: LineStringTraitExt, + LS2: LineStringTraitExt, +{ + ls1.lines() + .flat_map(|line1| { + ls2.lines() + .map(move |line2| distance_line_to_line_generic(&line1, &line2)) + }) + .fold(Float::max_value(), |acc, dist| acc.min(dist)) +} + +/// LineString to Polygon distance +/// +/// # Algorithm Equivalence +/// +/// This generic implementation is algorithmically identical to the concrete +/// `Distance, &Polygon>` implementation: +/// +/// 1. **Intersection Check**: First uses the `Intersects` trait to check if +/// the LineString intersects the polygon, returning zero if they do. +/// +/// 2. **Containment-Based Logic**: Implements the same containment logic as +/// the concrete implementation: +/// - If polygon has holes AND first point of LineString is inside exterior +/// ring, only check distance to interior rings (holes) +/// - Otherwise, check distance to exterior ring only +/// +/// 3. **Ray Casting Algorithm**: Uses identical ray casting point-in-polygon +/// test to determine if the first LineString point is inside the exterior. +/// +/// 4. **Direct Nested Loop Approach**: Unlike simpler functions that use +/// `nearest_neighbour_distance`, this function implements the distance +/// calculation directly with nested loops over LineString and polygon +/// ring segments. This matches the concrete implementation's approach +/// which requires the specialized containment logic for polygons with holes. +/// +/// 5. **Early Exit**: Includes the same zero-distance early exit optimization +/// when any line segments intersect during the nested iteration. +/// +/// Note: +/// The direct nested loop approach (rather than delegating to helper functions) +/// is necessary to maintain the exact containment-based ring selection logic +/// that the concrete implementation uses for polygons with holes. +/// We have seen sufficient performance improvements in benchmarks by avoiding +/// the overhead of additional function calls and iterator abstractions. +/// +pub fn distance_linestring_to_polygon_generic(linestring: &LS, polygon: &Poly) -> F +where + F: GeoFloat, + LS: LineStringTraitExt, + Poly: PolygonTraitExt, +{ + // Early intersect check + if polygon.intersects(linestring) { + return F::zero(); + } + + if let Some(exterior) = polygon.exterior_ext() { + // Check containment logic: if polygon has holes AND first point of LineString is inside exterior ring, + // then only consider distance to holes (interior rings). Otherwise, consider distance to exterior. + let has_holes = polygon.interiors_ext().next().is_some(); + + let first_point_inside = if has_holes { + // Check if first point of LineString is inside the exterior ring + if let Some(first_coord) = linestring.coords().next() { + // Simple point-in-polygon test using ray casting + let point_x = first_coord.x(); + let point_y = first_coord.y(); + let mut inside = false; + let ring_coords: Vec<_> = exterior.coords().collect(); + let n = ring_coords.len(); + + if n > 0 { + let mut j = n - 1; + for i in 0..n { + let xi = ring_coords[i].x(); + let yi = ring_coords[i].y(); + let xj = ring_coords[j].x(); + let yj = ring_coords[j].y(); + + if ((yi > point_y) != (yj > point_y)) + && (point_x < (xj - xi) * (point_y - yi) / (yj - yi) + xi) + { + inside = !inside; + } + j = i; + } + } + inside + } else { + false // Empty LineString + } + } else { + false + }; + + if has_holes && first_point_inside { + // LineString is inside polygon: only check distance to interior rings (holes) + let mut min_dist: F = Float::max_value(); + for interior in polygon.interiors_ext() { + for line1 in linestring.lines() { + for line2 in interior.lines() { + let line_dist = distance_line_to_line_generic(&line1, &line2); + min_dist = min_dist.min(line_dist); + + if line_dist == F::zero() { + return F::zero(); + } + } + } + } + min_dist + } else { + // LineString is outside polygon or polygon has no holes: check distance to exterior ring only + let mut min_dist: F = Float::max_value(); + for line1 in linestring.lines() { + for line2 in exterior.lines() { + let line_dist = distance_line_to_line_generic(&line1, &line2); + min_dist = min_dist.min(line_dist); + + if line_dist == F::zero() { + return F::zero(); + } + } + } + min_dist + } + } else { + F::zero() + } +} + +/// Polygon to Polygon distance +/// +/// # Algorithm Equivalence +/// +/// This generic implementation is algorithmically identical to the concrete +/// `Distance, &Polygon>` implementation: +/// +/// 1. **Intersection Check**: First uses the `Intersects` trait to check if +/// the polygons intersect, returning zero if they do. +/// +/// 2. **Fast Path Optimization**: If neither polygon has holes, directly +/// delegates to LineString-to-LineString distance between exterior rings. +/// +/// 3. **Symmetric Containment Logic**: Implements the same bidirectional +/// containment checks as the concrete implementation: +/// - If polygon1 has holes AND polygon2's first point is inside polygon1's +/// exterior, check distance from polygon2's exterior to polygon1's holes +/// - If polygon2 has holes AND polygon1's first point is inside polygon2's +/// exterior, check distance from polygon1's exterior to polygon2's holes +/// +/// 4. **Mixed Approach**: Uses `nearest_neighbour_distance` for the contained +/// polygon cases (for efficiency when checking against multiple holes), +/// but delegates to `distance_linestring_to_linestring_generic` for the +/// default exterior-to-exterior case. +/// +/// 5. **Point-in-Polygon Test**: Uses the same `ring_contains_coord` helper +/// function for containment detection as the concrete implementation. +/// +/// The mixed approach (using both helper functions and direct delegation) +/// matches the concrete implementation's optimization strategy for different +/// geometric configurations. +pub fn distance_polygon_to_polygon_generic(polygon1: &P1, polygon2: &P2) -> F +where + F: GeoFloat, + P1: PolygonTraitExt, + P2: PolygonTraitExt, +{ + // Check if polygons intersect using generic intersects + if polygon1.intersects(polygon2) { + return F::zero(); + } + + if let (Some(ext1), Some(ext2)) = (polygon1.exterior_ext(), polygon2.exterior_ext()) { + let has_interiors1 = polygon1.interiors_ext().next().is_some(); + let has_interiors2 = polygon2.interiors_ext().next().is_some(); + + // Fast path: if no interiors in either polygon, skip containment logic entirely + if !has_interiors1 && !has_interiors2 { + return distance_linestring_to_linestring_generic(&ext1, &ext2); + } + + // Symmetric containment logic matching concrete implementation exactly + // Check if polygon_b is contained within polygon_a (has holes) + if has_interiors1 { + if let Some(first_coord_b) = ext2.coords_ext().next() { + let ext1_ls = LineString::from( + ext1.coords_ext() + .map(|c| (c.x(), c.y())) + .collect::>(), + ); + + let coord_b = Coord::from((first_coord_b.x(), first_coord_b.y())); + if ring_contains_coord(&ext1_ls, coord_b) { + // polygon_b is inside polygon_a: check distance to polygon_a's holes + let ext2_concrete = LineString::from( + ext2.coords_ext() + .map(|c| (c.x(), c.y())) + .collect::>(), + ); + + let mut mindist: F = Float::max_value(); + for ring in polygon1.interiors_ext() { + let ring_concrete = LineString::from( + ring.coords_ext() + .map(|c| (c.x(), c.y())) + .collect::>(), + ); + mindist = + mindist.min(nearest_neighbour_distance(&ext2_concrete, &ring_concrete)); + } + return mindist; + } + } + } + + // Check if polygon_a is contained within polygon_b (has holes) + if has_interiors2 { + if let Some(first_coord_a) = ext1.coords_ext().next() { + let ext2_ls = LineString::from( + ext2.coords_ext() + .map(|c| (c.x(), c.y())) + .collect::>(), + ); + + let coord_a = Coord::from((first_coord_a.x(), first_coord_a.y())); + if ring_contains_coord(&ext2_ls, coord_a) { + // polygon_a is inside polygon_b: check distance to polygon_b's holes + let ext1_concrete = LineString::from( + ext1.coords_ext() + .map(|c| (c.x(), c.y())) + .collect::>(), + ); + + let mut mindist: F = Float::max_value(); + for ring in polygon2.interiors_ext() { + let ring_concrete = LineString::from( + ring.coords_ext() + .map(|c| (c.x(), c.y())) + .collect::>(), + ); + mindist = + mindist.min(nearest_neighbour_distance(&ext1_concrete, &ring_concrete)); + } + return mindist; + } + } + } + + // Default case - distance between exterior rings + distance_linestring_to_linestring_generic(&ext1, &ext2) + } else { + F::zero() + } +} + +/// Triangle to Point distance +pub fn distance_triangle_to_point_generic(triangle: &T, point: &P) -> F +where + F: GeoFloat, + T: TriangleTraitExt, + P: PointTraitExt, +{ + // Convert triangle to polygon and use existing point-to-polygon function + let tri_poly = triangle.to_polygon(); + distance_point_to_polygon_generic(point, &tri_poly) +} + +// ┌────────────────────────────────────────────────────────────┐ +// │ Symmetric Distance Function Generator Macro │ +// └────────────────────────────────────────────────────────────┘ + +/// Macro to generate symmetric distance functions +/// For distance operations that are symmetric (distance(a, b) == distance(b, a)), +/// this macro generates the reverse function that calls the primary implementation +macro_rules! symmetric_distance_generic_impl { + ($func_name_ab:ident, $func_name_ba:ident, $trait_a:ident, $trait_b:ident) => { + #[allow(dead_code)] + pub fn $func_name_ba(b: &B, a: &A) -> F + where + F: GeoFloat, + A: $trait_a, + B: $trait_b, + { + $func_name_ab(a, b) + } + }; +} + +// Generate symmetric distance functions +symmetric_distance_generic_impl!( + distance_point_to_linestring_generic, + distance_linestring_to_point_generic, + PointTraitExt, + LineStringTraitExt +); + +symmetric_distance_generic_impl!( + distance_point_to_polygon_generic, + distance_polygon_to_point_generic, + PointTraitExt, + PolygonTraitExt +); + +symmetric_distance_generic_impl!( + distance_linestring_to_polygon_generic, + distance_polygon_to_linestring_generic, + LineStringTraitExt, + PolygonTraitExt +); + +symmetric_distance_generic_impl!( + distance_line_to_linestring_generic, + distance_linestring_to_line_generic, + LineTraitExt, + LineStringTraitExt +); + +symmetric_distance_generic_impl!( + distance_line_to_polygon_generic, + distance_polygon_to_line_generic, + LineTraitExt, + PolygonTraitExt +); + +symmetric_distance_generic_impl!( + distance_triangle_to_point_generic, + distance_point_to_triangle_generic, + TriangleTraitExt, + PointTraitExt +); + +#[cfg(test)] +mod tests { + use super::*; + use geo::algorithm::line_measures::{Distance, Euclidean}; + use crate::{coord, Line, LineString, Point, Polygon, Triangle}; + use approx::assert_relative_eq; + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for point_distance_generic function │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_point_distance_generic_basic() { + let p1 = Point::new(0.0, 0.0); + let p2 = Point::new(3.0, 4.0); + + let distance = distance_point_to_point_generic(&p1, &p2); + assert_relative_eq!(distance, 5.0); // 3-4-5 triangle + + // Test symmetry + let distance_reverse = distance_point_to_point_generic(&p2, &p1); + assert_relative_eq!(distance, distance_reverse); + } + + #[test] + fn test_point_distance_generic_same_point() { + let p = Point::new(2.5, -1.5); + let distance = distance_point_to_point_generic(&p, &p); + assert_relative_eq!(distance, 0.0); + } + + #[test] + fn test_point_distance_generic_negative_coordinates() { + let p1 = Point::new(-2.0, -3.0); + let p2 = Point::new(1.0, 1.0); + + let distance = distance_point_to_point_generic(&p1, &p2); + assert_relative_eq!(distance, 5.0); // sqrt((1-(-2))^2 + (1-(-3))^2) = sqrt(9+16) = 5 + } + + #[test] + fn test_point_distance_generic_empty_points() { + // Test with empty points (no coordinates) + let empty_point: Point = Point::new(f64::NAN, f64::NAN); + let regular_point = Point::new(1.0, 1.0); + + // When either point has no valid coordinates, distance should be 0 + let distance = distance_point_to_point_generic(&empty_point, ®ular_point); + assert!(distance.is_nan() || distance == 0.0); // Implementation dependent + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for line_segment_distance_generic function │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_line_segment_distance_generic_point_on_line() { + let coord = coord! { x: 2.0, y: 0.0 }; + let line = Line::new(coord! { x: 0.0, y: 0.0 }, coord! { x: 4.0, y: 0.0 }); + + let distance = distance_coord_to_line_generic(&coord, &line); + assert_relative_eq!(distance, 0.0); + } + + #[test] + fn test_line_segment_distance_generic_perpendicular() { + let coord = coord! { x: 2.0, y: 3.0 }; + let line = Line::new(coord! { x: 0.0, y: 0.0 }, coord! { x: 4.0, y: 0.0 }); + + let distance = distance_coord_to_line_generic(&coord, &line); + assert_relative_eq!(distance, 3.0); + } + + #[test] + fn test_line_segment_distance_generic_beyond_endpoint() { + let coord = coord! { x: 6.0, y: 0.0 }; + let line = Line::new(coord! { x: 0.0, y: 0.0 }, coord! { x: 4.0, y: 0.0 }); + + let distance = distance_coord_to_line_generic(&coord, &line); + assert_relative_eq!(distance, 2.0); // Distance to closest endpoint (4,0) + } + + #[test] + fn test_line_segment_distance_generic_before_startpoint() { + let coord = coord! { x: -2.0, y: 0.0 }; + let line = Line::new(coord! { x: 0.0, y: 0.0 }, coord! { x: 4.0, y: 0.0 }); + + let distance = distance_coord_to_line_generic(&coord, &line); + assert_relative_eq!(distance, 2.0); // Distance to start point (0,0) + } + + #[test] + fn test_line_segment_distance_generic_zero_length_line() { + let coord = coord! { x: 2.0, y: 3.0 }; + let line = Line::new(coord! { x: 1.0, y: 1.0 }, coord! { x: 1.0, y: 1.0 }); + + let distance = distance_coord_to_line_generic(&coord, &line); + let expected = ((2.0 - 1.0).powi(2) + (3.0 - 1.0).powi(2)).sqrt(); + assert_relative_eq!(distance, expected); + } + + #[test] + fn test_line_segment_distance_generic_diagonal_line() { + let coord = coord! { x: 0.0, y: 2.0 }; + let line = Line::new(coord! { x: 0.0, y: 0.0 }, coord! { x: 2.0, y: 2.0 }); + + let distance = distance_coord_to_line_generic(&coord, &line); + // Point (0,2) to line from (0,0) to (2,2) - should be sqrt(2) + assert_relative_eq!(distance, std::f64::consts::SQRT_2, epsilon = 1e-10); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for nearest_neighbour_distance function │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_nearest_neighbour_distance_basic() { + let ls1 = LineString::from(vec![(0.0, 0.0), (2.0, 0.0), (2.0, 2.0)]); + let ls2 = LineString::from(vec![(3.0, 0.0), (5.0, 0.0), (5.0, 2.0)]); + + let distance = nearest_neighbour_distance(&ls1, &ls2); + assert_relative_eq!(distance, 1.0); // Distance between (2,0)-(2,2) and (3,0)-(5,0) + } + + #[test] + fn test_nearest_neighbour_distance_intersecting() { + let ls1 = LineString::from(vec![(0.0, 0.0), (4.0, 0.0)]); + let ls2 = LineString::from(vec![(2.0, -1.0), (2.0, 1.0)]); + + let distance = nearest_neighbour_distance(&ls1, &ls2); + // The linestrings intersect at (2,0), so distance should be 0.0 + assert_relative_eq!(distance, 0.0); + } + + #[test] + fn test_nearest_neighbour_distance_parallel_lines() { + let ls1 = LineString::from(vec![(0.0, 0.0), (4.0, 0.0)]); + let ls2 = LineString::from(vec![(0.0, 2.0), (4.0, 2.0)]); + + let distance = nearest_neighbour_distance(&ls1, &ls2); + assert_relative_eq!(distance, 2.0); // Perpendicular distance between parallel lines + } + + #[test] + fn test_nearest_neighbour_distance_single_segment_each() { + let ls1 = LineString::from(vec![(0.0, 0.0), (1.0, 0.0)]); + let ls2 = LineString::from(vec![(2.0, 1.0), (3.0, 1.0)]); + + let distance = nearest_neighbour_distance(&ls1, &ls2); + let expected = ((2.0 - 1.0).powi(2) + (1.0 - 0.0).powi(2)).sqrt(); + assert_relative_eq!(distance, expected); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for ring_contains_coord function │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_ring_contains_coord_inside() { + let ring = LineString::from(vec![ + (0.0, 0.0), + (4.0, 0.0), + (4.0, 4.0), + (0.0, 4.0), + (0.0, 0.0), + ]); + let coord = coord! { x: 2.0, y: 2.0 }; + + assert!(ring_contains_coord(&ring, coord)); + } + + #[test] + fn test_ring_contains_coord_outside() { + let ring = LineString::from(vec![ + (0.0, 0.0), + (4.0, 0.0), + (4.0, 4.0), + (0.0, 4.0), + (0.0, 0.0), + ]); + let coord = coord! { x: 5.0, y: 2.0 }; + + assert!(!ring_contains_coord(&ring, coord)); + } + + #[test] + fn test_ring_contains_coord_on_boundary() { + let ring = LineString::from(vec![ + (0.0, 0.0), + (4.0, 0.0), + (4.0, 4.0), + (0.0, 4.0), + (0.0, 0.0), + ]); + let coord = coord! { x: 2.0, y: 0.0 }; + + assert!(!ring_contains_coord(&ring, coord)); // On boundary = false + } + + #[test] + fn test_ring_contains_coord_triangle() { + let ring = LineString::from(vec![(0.0, 0.0), (3.0, 0.0), (1.5, 2.0), (0.0, 0.0)]); + let inside_coord = coord! { x: 1.5, y: 0.5 }; + let outside_coord = coord! { x: 3.0, y: 3.0 }; + + assert!(ring_contains_coord(&ring, inside_coord)); + assert!(!ring_contains_coord(&ring, outside_coord)); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for distance_point_to_linestring_generic │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_distance_point_to_linestring_generic_basic() { + let point = Point::new(1.0, 2.0); + let linestring = LineString::from(vec![(0.0, 0.0), (2.0, 0.0), (2.0, 2.0)]); + + let distance = distance_point_to_linestring_generic(&point, &linestring); + assert_relative_eq!(distance, 1.0); // Distance to closest segment + } + + #[test] + fn test_distance_point_to_linestring_generic_empty() { + let point = Point::new(1.0, 2.0); + let linestring = LineString::::new(vec![]); + + let distance = distance_point_to_linestring_generic(&point, &linestring); + assert_relative_eq!(distance, 0.0); + } + + #[test] + fn test_distance_point_to_linestring_generic_single_point() { + let point = Point::new(1.0, 2.0); + let linestring = LineString::from(vec![(0.0, 0.0)]); + + let distance = distance_point_to_linestring_generic(&point, &linestring); + assert_relative_eq!(distance, 0.0); // Single point linestring + } + + #[test] + fn test_distance_point_to_linestring_generic_on_linestring() { + let point = Point::new(1.0, 0.0); + let linestring = LineString::from(vec![(0.0, 0.0), (2.0, 0.0)]); + + let distance = distance_point_to_linestring_generic(&point, &linestring); + assert_relative_eq!(distance, 0.0); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for distance_point_to_polygon_generic │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_distance_point_to_polygon_generic_outside() { + let exterior = LineString::from(vec![ + (0.0, 0.0), + (4.0, 0.0), + (4.0, 4.0), + (0.0, 4.0), + (0.0, 0.0), + ]); + let polygon = Polygon::new(exterior, vec![]); + let point = Point::new(6.0, 2.0); + + let distance = distance_point_to_polygon_generic(&point, &polygon); + assert_relative_eq!(distance, 2.0); // Distance to right edge + } + + #[test] + fn test_distance_point_to_polygon_generic_inside() { + let exterior = LineString::from(vec![ + (0.0, 0.0), + (4.0, 0.0), + (4.0, 4.0), + (0.0, 4.0), + (0.0, 0.0), + ]); + let polygon = Polygon::new(exterior, vec![]); + let point = Point::new(2.0, 2.0); + + let distance = distance_point_to_polygon_generic(&point, &polygon); + assert_relative_eq!(distance, 0.0); // Inside polygon + } + + #[test] + fn test_distance_point_to_polygon_generic_on_boundary() { + let exterior = LineString::from(vec![ + (0.0, 0.0), + (4.0, 0.0), + (4.0, 4.0), + (0.0, 4.0), + (0.0, 0.0), + ]); + let polygon = Polygon::new(exterior, vec![]); + let point = Point::new(2.0, 0.0); + + let distance = distance_point_to_polygon_generic(&point, &polygon); + assert_relative_eq!(distance, 0.0); // On boundary + } + + #[test] + fn test_distance_point_to_polygon_generic_with_hole() { + let exterior = LineString::from(vec![ + (0.0, 0.0), + (6.0, 0.0), + (6.0, 6.0), + (0.0, 6.0), + (0.0, 0.0), + ]); + let interior = LineString::from(vec![ + (2.0, 2.0), + (4.0, 2.0), + (4.0, 4.0), + (2.0, 4.0), + (2.0, 2.0), + ]); + let polygon = Polygon::new(exterior, vec![interior]); + let point = Point::new(3.0, 3.0); // Inside the hole + + let distance = distance_point_to_polygon_generic(&point, &polygon); + assert_relative_eq!(distance, 1.0); // Distance to closest hole edge + } + + #[test] + fn test_distance_point_to_polygon_generic_empty() { + let empty_polygon = Polygon::new(LineString::::new(vec![]), vec![]); + let point = Point::new(1.0, 1.0); + + let distance = distance_point_to_polygon_generic(&point, &empty_polygon); + assert_relative_eq!(distance, 0.0); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for distance_line_to_line_generic │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_distance_line_to_line_generic_parallel() { + let line1 = Line::new(coord! { x: 0.0, y: 0.0 }, coord! { x: 2.0, y: 0.0 }); + let line2 = Line::new(coord! { x: 0.0, y: 3.0 }, coord! { x: 2.0, y: 3.0 }); + + let distance = distance_line_to_line_generic(&line1, &line2); + assert_relative_eq!(distance, 3.0); + } + + #[test] + fn test_distance_line_to_line_generic_intersecting() { + let line1 = Line::new(coord! { x: 0.0, y: 0.0 }, coord! { x: 2.0, y: 0.0 }); + let line2 = Line::new(coord! { x: 1.0, y: -1.0 }, coord! { x: 1.0, y: 1.0 }); + + let distance = distance_line_to_line_generic(&line1, &line2); + assert_relative_eq!(distance, 0.0, epsilon = 1e-10); + } + + #[test] + fn test_distance_line_to_line_generic_skew() { + let line1 = Line::new(coord! { x: 0.0, y: 0.0 }, coord! { x: 1.0, y: 0.0 }); + let line2 = Line::new(coord! { x: 2.0, y: 1.0 }, coord! { x: 3.0, y: 1.0 }); + + let distance = distance_line_to_line_generic(&line1, &line2); + let expected = ((2.0 - 1.0).powi(2) + (1.0 - 0.0).powi(2)).sqrt(); + assert_relative_eq!(distance, expected); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for distance_linestring_to_polygon_generic │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_distance_linestring_to_polygon_generic_outside() { + let exterior = LineString::from(vec![ + (0.0, 0.0), + (2.0, 0.0), + (2.0, 2.0), + (0.0, 2.0), + (0.0, 0.0), + ]); + let polygon = Polygon::new(exterior, vec![]); + let linestring = LineString::from(vec![(3.0, 0.0), (4.0, 1.0)]); + + let distance = distance_linestring_to_polygon_generic(&linestring, &polygon); + assert_relative_eq!(distance, 1.0); // Distance to right edge of polygon + } + + #[test] + fn test_distance_linestring_to_polygon_generic_intersecting() { + let exterior = LineString::from(vec![ + (0.0, 0.0), + (2.0, 0.0), + (2.0, 2.0), + (0.0, 2.0), + (0.0, 0.0), + ]); + let polygon = Polygon::new(exterior, vec![]); + let linestring = LineString::from(vec![(-1.0, 1.0), (3.0, 1.0)]); + + let distance = distance_linestring_to_polygon_generic(&linestring, &polygon); + // The linestring intersects the polygon, so distance should be 0.0 + assert_relative_eq!(distance, 0.0); + } + + #[test] + fn test_distance_linestring_to_polygon_generic_empty_polygon() { + let empty_polygon = Polygon::new(LineString::::new(vec![]), vec![]); + let linestring = LineString::from(vec![(0.0, 0.0), (1.0, 1.0)]); + + let distance = distance_linestring_to_polygon_generic(&linestring, &empty_polygon); + assert_relative_eq!(distance, 0.0); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for distance_polygon_to_polygon_generic │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_distance_polygon_to_polygon_generic_separate() { + let exterior1 = LineString::from(vec![ + (0.0, 0.0), + (2.0, 0.0), + (2.0, 2.0), + (0.0, 2.0), + (0.0, 0.0), + ]); + let polygon1 = Polygon::new(exterior1, vec![]); + + let exterior2 = LineString::from(vec![ + (4.0, 0.0), + (6.0, 0.0), + (6.0, 2.0), + (4.0, 2.0), + (4.0, 0.0), + ]); + let polygon2 = Polygon::new(exterior2, vec![]); + + let distance = distance_polygon_to_polygon_generic(&polygon1, &polygon2); + assert_relative_eq!(distance, 2.0); // Distance between closest edges + } + + #[test] + fn test_distance_polygon_to_polygon_generic_intersecting() { + let exterior1 = LineString::from(vec![ + (0.0, 0.0), + (3.0, 0.0), + (3.0, 3.0), + (0.0, 3.0), + (0.0, 0.0), + ]); + let polygon1 = Polygon::new(exterior1, vec![]); + + let exterior2 = LineString::from(vec![ + (1.0, 1.0), + (4.0, 1.0), + (4.0, 4.0), + (1.0, 4.0), + (1.0, 1.0), + ]); + let polygon2 = Polygon::new(exterior2, vec![]); + + let distance = distance_polygon_to_polygon_generic(&polygon1, &polygon2); + assert_relative_eq!(distance, 0.0, epsilon = 1e-10); // Polygons intersect + } + + #[test] + fn test_distance_polygon_to_polygon_generic_one_in_others_hole() { + let exterior = LineString::from(vec![ + (0.0, 0.0), + (10.0, 0.0), + (10.0, 10.0), + (0.0, 10.0), + (0.0, 0.0), + ]); + let interior = LineString::from(vec![ + (2.0, 2.0), + (8.0, 2.0), + (8.0, 8.0), + (2.0, 8.0), + (2.0, 2.0), + ]); + let polygon_with_hole = Polygon::new(exterior, vec![interior]); + + let small_exterior = LineString::from(vec![ + (4.0, 4.0), + (6.0, 4.0), + (6.0, 6.0), + (4.0, 6.0), + (4.0, 4.0), + ]); + let small_polygon = Polygon::new(small_exterior, vec![]); + + let distance = distance_polygon_to_polygon_generic(&polygon_with_hole, &small_polygon); + assert_relative_eq!(distance, 2.0); // Distance to hole boundary + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for symmetric distance functions │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_symmetric_distance_point_linestring() { + let point = Point::new(1.0, 2.0); + let linestring = LineString::from(vec![(0.0, 0.0), (2.0, 0.0)]); + + let dist1 = distance_point_to_linestring_generic(&point, &linestring); + let dist2 = distance_linestring_to_point_generic(&linestring, &point); + + assert_relative_eq!(dist1, dist2); + assert_relative_eq!(dist1, 2.0); + } + + #[test] + fn test_symmetric_distance_point_polygon() { + let point = Point::new(5.0, 2.0); + let exterior = LineString::from(vec![ + (0.0, 0.0), + (4.0, 0.0), + (4.0, 4.0), + (0.0, 4.0), + (0.0, 0.0), + ]); + let polygon = Polygon::new(exterior, vec![]); + + let dist1 = distance_point_to_polygon_generic(&point, &polygon); + let dist2 = distance_polygon_to_point_generic(&polygon, &point); + + assert_relative_eq!(dist1, dist2); + assert_relative_eq!(dist1, 1.0); + } + + #[test] + fn test_symmetric_distance_linestring_polygon() { + let linestring = LineString::from(vec![(5.0, 1.0), (6.0, 2.0)]); + let exterior = LineString::from(vec![ + (0.0, 0.0), + (4.0, 0.0), + (4.0, 4.0), + (0.0, 4.0), + (0.0, 0.0), + ]); + let polygon = Polygon::new(exterior, vec![]); + + let dist1 = distance_linestring_to_polygon_generic(&linestring, &polygon); + let dist2 = distance_polygon_to_linestring_generic(&polygon, &linestring); + + assert_relative_eq!(dist1, dist2); + assert_relative_eq!(dist1, 1.0); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for line-to-linestring and line-to-polygon functions │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_distance_line_to_linestring_generic() { + let line = Line::new(coord! { x: 0.0, y: 3.0 }, coord! { x: 2.0, y: 3.0 }); + let linestring = LineString::from(vec![(0.0, 0.0), (2.0, 0.0), (2.0, 2.0)]); + + let distance = distance_line_to_linestring_generic(&line, &linestring); + assert_relative_eq!(distance, 1.0); // Distance to closest segment + } + + #[test] + fn test_distance_line_to_polygon_generic() { + let line = Line::new(coord! { x: 5.0, y: 1.0 }, coord! { x: 6.0, y: 2.0 }); + let exterior = LineString::from(vec![ + (0.0, 0.0), + (4.0, 0.0), + (4.0, 4.0), + (0.0, 4.0), + (0.0, 0.0), + ]); + let polygon = Polygon::new(exterior, vec![]); + + let distance = distance_line_to_polygon_generic(&line, &polygon); + assert_relative_eq!(distance, 1.0); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Tests for distance_triangle_to_point_generic │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_distance_triangle_to_point_generic() { + let triangle = Triangle::new( + coord! { x: 0.0, y: 0.0 }, + coord! { x: 3.0, y: 0.0 }, + coord! { x: 1.5, y: 3.0 }, + ); + let point = Point::new(1.5, 1.0); // Inside triangle + + let distance = distance_triangle_to_point_generic(&triangle, &point); + assert_relative_eq!(distance, 0.0); + } + + #[test] + fn test_distance_triangle_to_point_generic_outside() { + let triangle = Triangle::new( + coord! { x: 0.0, y: 0.0 }, + coord! { x: 3.0, y: 0.0 }, + coord! { x: 1.5, y: 3.0 }, + ); + let point = Point::new(5.0, 0.0); // Outside triangle + + let distance = distance_triangle_to_point_generic(&triangle, &point); + assert_relative_eq!(distance, 2.0); // Distance to right vertex + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Edge case tests │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_empty_geometries_edge_cases() { + // Empty LineString + let empty_ls = LineString::::new(vec![]); + let point = Point::new(1.0, 1.0); + + let dist = distance_point_to_linestring_generic(&point, &empty_ls); + assert_relative_eq!(dist, 0.0); + + // Empty Polygon + let empty_poly = Polygon::new(LineString::::new(vec![]), vec![]); + let dist2 = distance_point_to_polygon_generic(&point, &empty_poly); + assert_relative_eq!(dist2, 0.0); + } + + #[test] + fn test_degenerate_geometries() { + // Single point LineString + let single_point_ls = LineString::from(vec![(1.0, 1.0)]); + let point = Point::new(2.0, 2.0); + + let dist = distance_point_to_linestring_generic(&point, &single_point_ls); + assert_relative_eq!(dist, 0.0); // Should handle gracefully + + // Two identical points in LineString + let two_same_points_ls = LineString::from(vec![(1.0, 1.0), (1.0, 1.0)]); + let dist2 = distance_point_to_linestring_generic(&point, &two_same_points_ls); + assert_relative_eq!(dist2, std::f64::consts::SQRT_2); // Distance to the point + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Performance comparison tests (basic) │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_generic_vs_concrete_point_distance() { + let p1 = Point::new(-72.1235, 42.3521); + let p2 = Point::new(72.1260, 70.612); + + // Test generic implementation + let generic_dist = distance_point_to_point_generic(&p1, &p2); + + // Test concrete implementation via Euclidean trait + let concrete_dist = Euclidean.distance(&p1, &p2); + + // Both should give the same result + assert_relative_eq!(generic_dist, concrete_dist, epsilon = 1e-10); + assert_relative_eq!(generic_dist, 146.99163308930207); + } + + #[test] + fn test_cross_validation_with_existing_tests() { + // Test cases from existing distance.rs tests to ensure compatibility + let o1 = Point::new(8.0, 0.0); + let p1 = Point::new(7.2, 2.0); + let p2 = Point::new(6.0, 1.0); + + // Create line from p1 to p2 + let line_seg = Line::new( + coord! { x: p1.x(), y: p1.y() }, + coord! { x: p2.x(), y: p2.y() }, + ); + + if let Some(o1_coord) = o1.coord_ext() { + let generic_dist = distance_coord_to_line_generic(&o1_coord, &line_seg); + + // This should match the expected value from the original test + assert_relative_eq!(generic_dist, 2.0485900789263356, epsilon = 1e-10); + } + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Property-based tests with random inputs │ + // └────────────────────────────────────────────────────────────┘ + + fn generate_random_point(seed: u64) -> Point { + // Simple LCG for deterministic "random" numbers + let mut rng = seed; + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let x = ((rng >> 16) as i16) as f64 * 0.001; + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let y = ((rng >> 16) as i16) as f64 * 0.001; + Point::new(x, y) + } + + fn generate_random_line(seed: u64) -> Line { + let mut rng = seed; + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let x1 = ((rng >> 16) as i16) as f64 * 0.001; + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let y1 = ((rng >> 16) as i16) as f64 * 0.001; + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let x2 = ((rng >> 16) as i16) as f64 * 0.001; + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let y2 = ((rng >> 16) as i16) as f64 * 0.001; + Line::new(coord! { x: x1, y: y1 }, coord! { x: x2, y: y2 }) + } + + fn generate_random_linestring(seed: u64, num_points: usize) -> LineString { + let mut rng = seed; + let mut points = Vec::new(); + for _ in 0..num_points { + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let x = ((rng >> 16) as i16) as f64 * 0.001; + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let y = ((rng >> 16) as i16) as f64 * 0.001; + points.push((x, y)); + } + LineString::from(points) + } + + fn generate_random_polygon(seed: u64, num_exterior_points: usize) -> Polygon { + let mut rng = seed; + let mut points = Vec::new(); + + // Generate points around a circle to ensure a valid polygon + let center_x = 0.0; + let center_y = 0.0; + let radius = 10.0; + + for i in 0..num_exterior_points { + let angle = 2.0 * std::f64::consts::PI * i as f64 / num_exterior_points as f64; + // Add some random noise + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let noise = ((rng >> 16) as i16) as f64 * 0.0001; + let x = center_x + (radius + noise) * angle.cos(); + let y = center_y + (radius + noise) * angle.sin(); + points.push((x, y)); + } + + // Close the polygon + if !points.is_empty() { + points.push(points[0]); + } + + Polygon::new(LineString::from(points), vec![]) + } + + #[test] + fn test_random_point_to_point_distance() { + // Test point-to-point distance with random inputs + for i in 0..100 { + let seed1 = 12345 + i * 17; + let seed2 = 54321 + i * 23; + + let p1 = generate_random_point(seed1); + let p2 = generate_random_point(seed2); + + let concrete_dist = Euclidean.distance(&p1, &p2); + let generic_dist = distance_point_to_point_generic(&p1, &p2); + + assert_relative_eq!( + concrete_dist, + generic_dist, + epsilon = 1e-12, + max_relative = 1e-12 + ); + } + } + + #[test] + fn test_random_point_to_linestring_distance() { + // Test point-to-linestring distance with random inputs + for i in 0..100 { + let seed1 = 11111 + i * 31; + let seed2 = 22222 + i * 37; + + let point = generate_random_point(seed1); + let linestring = generate_random_linestring(seed2, 3 + (i % 5) as usize); // 3-7 points + + let concrete_dist = Euclidean.distance(&point, &linestring); + let generic_dist = distance_point_to_linestring_generic(&point, &linestring); + + assert_relative_eq!( + concrete_dist, + generic_dist, + epsilon = 1e-12, + max_relative = 1e-12 + ); + } + } + + #[test] + fn test_random_point_to_polygon_distance() { + // Test point-to-polygon distance with random inputs + for i in 0..100 { + let seed1 = 33333 + i * 41; + let seed2 = 44444 + i * 43; + + let point = generate_random_point(seed1); + let polygon = generate_random_polygon(seed2, 4 + (i % 4) as usize); // 4-7 sides + + let concrete_dist = Euclidean.distance(&point, &polygon); + let generic_dist = distance_point_to_polygon_generic(&point, &polygon); + + assert_relative_eq!( + concrete_dist, + generic_dist, + epsilon = 1e-10, + max_relative = 1e-10 + ); + } + } + + #[test] + fn test_random_line_to_line_distance() { + // Test line-to-line distance with random inputs + for i in 0..100 { + let seed1 = 55555 + i * 47; + let seed2 = 66666 + i * 53; + + let line1 = generate_random_line(seed1); + let line2 = generate_random_line(seed2); + + let concrete_dist = Euclidean.distance(&line1, &line2); + let generic_dist = distance_line_to_line_generic(&line1, &line2); + + assert_relative_eq!( + concrete_dist, + generic_dist, + epsilon = 1e-12, + max_relative = 1e-12 + ); + } + } + + #[test] + fn test_random_linestring_to_linestring_distance() { + // Test linestring-to-linestring distance with random inputs + for i in 0..100 { + let seed1 = 77777 + i * 59; + let seed2 = 88888 + i * 61; + + let ls1 = generate_random_linestring(seed1, 3 + (i % 3) as usize); // 3-5 points + let ls2 = generate_random_linestring(seed2, 3 + ((i + 1) % 3) as usize); // 3-5 points + + let concrete_dist = Euclidean.distance(&ls1, &ls2); + // Use our actual generic implementation via nearest_neighbour_distance + let generic_dist = nearest_neighbour_distance(&ls1, &ls2); + + assert_relative_eq!( + concrete_dist, + generic_dist, + epsilon = 1e-10, + max_relative = 1e-10 + ); + } + } + + #[test] + fn test_random_polygon_to_polygon_distance() { + // Test polygon-to-polygon distance with random inputs + for i in 0..100 { + let seed1 = 99999 + i * 67; + let seed2 = 10101 + i * 71; + + let poly1 = generate_random_polygon(seed1, 4 + (i % 3) as usize); // 4-6 sides + let poly2 = generate_random_polygon(seed2, 4 + ((i + 1) % 3) as usize); // 4-6 sides + + let concrete_dist = Euclidean.distance(&poly1, &poly2); + let generic_dist = distance_polygon_to_polygon_generic(&poly1, &poly2); + + assert_relative_eq!( + concrete_dist, + generic_dist, + epsilon = 1e-8, + max_relative = 1e-8 + ); + } + } + + #[test] + fn test_random_line_to_polygon_distance() { + // Test line-to-polygon distance with random inputs + for i in 0..100 { + let seed1 = 12121 + i * 73; + let seed2 = 13131 + i * 79; + + let line = generate_random_line(seed1); + let polygon = generate_random_polygon(seed2, 4 + (i % 3) as usize); // 4-6 sides + + let concrete_dist = Euclidean.distance(&line, &polygon); + let generic_dist = distance_line_to_polygon_generic(&line, &polygon); + + assert_relative_eq!( + concrete_dist, + generic_dist, + epsilon = 1e-10, + max_relative = 1e-10 + ); + } + } + + #[test] + fn test_random_linestring_to_polygon_distance() { + // Test linestring-to-polygon distance with random inputs + for i in 0..100 { + let seed1 = 14141 + i * 83; + let seed2 = 15151 + i * 89; + + let linestring = generate_random_linestring(seed1, 3 + (i % 3) as usize); // 3-5 points + let polygon = generate_random_polygon(seed2, 4 + (i % 3) as usize); // 4-6 sides + + let concrete_dist = Euclidean.distance(&linestring, &polygon); + let generic_dist = distance_linestring_to_polygon_generic(&linestring, &polygon); + + assert_relative_eq!( + concrete_dist, + generic_dist, + epsilon = 1e-8, + max_relative = 1e-8 + ); + } + } + + #[test] + fn test_random_symmetry_properties() { + // Test symmetry properties with random inputs + for i in 0..100 { + let seed1 = 16161 + i * 97; + let seed2 = 17171 + i * 101; + + let point = generate_random_point(seed1); + let linestring = generate_random_linestring(seed2, 4); + + // Test point-linestring symmetry + let dist1 = distance_point_to_linestring_generic(&point, &linestring); + let dist2 = distance_linestring_to_point_generic(&linestring, &point); + assert_relative_eq!(dist1, dist2, epsilon = 1e-12); + + // Test with polygon + if i % 2 == 0 { + let polygon = generate_random_polygon(seed1 + seed2, 5); + let dist3 = distance_point_to_polygon_generic(&point, &polygon); + let dist4 = distance_polygon_to_point_generic(&polygon, &point); + assert_relative_eq!(dist3, dist4, epsilon = 1e-10); + } + } + } + + #[test] + fn test_random_edge_cases_and_boundaries() { + // Test edge cases with specific patterns + for i in 0..100 { + // Same point distance should be zero + let point = generate_random_point(12345 + i); + let same_point_dist = distance_point_to_point_generic(&point, &point); + assert_relative_eq!(same_point_dist, 0.0); + + // Zero-length line segment + let coord = coord! { x: point.x(), y: point.y() }; + let zero_line = Line::new(coord, coord); + let dist_to_zero_line = distance_coord_to_line_generic(&coord, &zero_line); + assert_relative_eq!(dist_to_zero_line, 0.0); + + // Point on line segment should have zero distance + let seed = 54321 + i * 13; + let line = generate_random_line(seed); + let start_coord = line.start_coord(); + let dist_to_start = distance_coord_to_line_generic(&start_coord, &line); + assert_relative_eq!(dist_to_start, 0.0, epsilon = 1e-12); + } + } + + #[test] + fn test_random_large_coordinates() { + // Test with large coordinate values to check numerical stability + for i in 0..100 { + let mut rng: u64 = 98765 + i * 107; + + // Generate large coordinates + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let scale = 1e6 + (rng % 1000000) as f64; + + let p1 = Point::new(scale, scale * 0.5); + let p2 = Point::new(scale * 1.1, scale * 0.7); + + let concrete_dist = Euclidean.distance(&p1, &p2); + let generic_dist = distance_point_to_point_generic(&p1, &p2); + + assert_relative_eq!( + concrete_dist, + generic_dist, + epsilon = 1e-10, + max_relative = 1e-10 + ); + } + } + + #[test] + fn test_random_small_coordinates() { + // Test with very small coordinate values to check numerical precision + for i in 0..100 { + let mut rng: u64 = 13579 + i * 109; + + // Generate small coordinates + rng = rng.wrapping_mul(1103515245).wrapping_add(12345); + let scale = 1e-6 * (1.0 + (rng % 100) as f64 * 0.01); + + let p1 = Point::new(scale, scale * 0.5); + let p2 = Point::new(scale * 1.1, scale * 0.7); + + let concrete_dist = Euclidean.distance(&p1, &p2); + let generic_dist = distance_point_to_point_generic(&p1, &p2); + + assert_relative_eq!( + concrete_dist, + generic_dist, + epsilon = 1e-15, + max_relative = 1e-12 + ); + } + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Geometric Edge Cases Tests │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_collinear_linestring_geometries() { + // Test linestrings where all points are collinear + let collinear_ls1 = LineString::from(vec![(0.0, 0.0), (1.0, 1.0), (2.0, 2.0), (3.0, 3.0)]); + let collinear_ls2 = LineString::from(vec![(0.0, 1.0), (1.0, 2.0), (2.0, 3.0)]); + + let concrete_dist = Euclidean.distance(&collinear_ls1, &collinear_ls2); + let generic_dist = nearest_neighbour_distance(&collinear_ls1, &collinear_ls2); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-10); + // Distance should be sqrt(2)/2 (perpendicular distance between parallel lines) + assert_relative_eq!( + concrete_dist, + std::f64::consts::SQRT_2 / 2.0, + epsilon = 1e-10 + ); + } + + #[test] + fn test_degenerate_triangle_as_line() { + // Triangle where all three points are collinear (degenerate triangle) + let degenerate_triangle = Triangle::new( + coord! { x: 0.0, y: 0.0 }, + coord! { x: 1.0, y: 1.0 }, + coord! { x: 2.0, y: 2.0 }, + ); + let point = Point::new(0.0, 1.0); + + let concrete_dist = Euclidean.distance(°enerate_triangle, &point); + let generic_dist = distance_triangle_to_point_generic(°enerate_triangle, &point); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-10); + // Distance should be sqrt(2)/2 (distance from point to line y=x) + assert_relative_eq!( + concrete_dist, + std::f64::consts::SQRT_2 / 2.0, + epsilon = 1e-10 + ); + } + + #[test] + fn test_self_intersecting_polygon() { + // Create a bowtie/figure-8 shaped self-intersecting polygon + let self_intersecting = LineString::from(vec![ + (0.0, 0.0), + (2.0, 2.0), + (2.0, 0.0), + (0.0, 2.0), + (0.0, 0.0), + ]); + let polygon = Polygon::new(self_intersecting, vec![]); + let point = Point::new(3.0, 1.0); // Outside the polygon + + let concrete_dist = Euclidean.distance(&point, &polygon); + let generic_dist = distance_point_to_polygon_generic(&point, &polygon); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-10); + assert_relative_eq!(concrete_dist, 1.0, epsilon = 1e-10); // Distance to closest edge + } + + #[test] + fn test_nearly_touching_geometries() { + // Test geometries separated by very small distances + let epsilon_dist = 1e-12; + + let line1 = Line::new(coord! { x: 0.0, y: 0.0 }, coord! { x: 1.0, y: 0.0 }); + let line2 = Line::new( + coord! { x: 0.0, y: epsilon_dist }, + coord! { x: 1.0, y: epsilon_dist }, + ); + + let concrete_dist = Euclidean.distance(&line1, &line2); + let generic_dist = distance_line_to_line_generic(&line1, &line2); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-15); + assert_relative_eq!(concrete_dist, epsilon_dist, epsilon = 1e-15); + } + + #[test] + fn test_very_close_but_separate_polygons() { + // Two polygons separated by extremely small distance + let tiny_gap = 1e-14; + + let poly1_exterior = LineString::from(vec![ + (0.0, 0.0), + (1.0, 0.0), + (1.0, 1.0), + (0.0, 1.0), + (0.0, 0.0), + ]); + let poly1 = Polygon::new(poly1_exterior, vec![]); + + let poly2_exterior = LineString::from(vec![ + (1.0 + tiny_gap, 0.0), + (2.0 + tiny_gap, 0.0), + (2.0 + tiny_gap, 1.0), + (1.0 + tiny_gap, 1.0), + (1.0 + tiny_gap, 0.0), + ]); + let poly2 = Polygon::new(poly2_exterior, vec![]); + + let concrete_dist = Euclidean.distance(&poly1, &poly2); + let generic_dist = distance_polygon_to_polygon_generic(&poly1, &poly2); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-15); + assert_relative_eq!(concrete_dist, tiny_gap, epsilon = 1e-16); + } + + #[test] + fn test_overlapping_but_not_intersecting_linestrings() { + // LineStrings that overlap in projection but are at different heights + let ls1 = LineString::from(vec![(0.0, 0.0), (2.0, 0.0)]); + let ls2 = LineString::from(vec![(1.0, 1e-13), (3.0, 1e-13)]); + + let concrete_dist = Euclidean.distance(&ls1, &ls2); + let generic_dist = nearest_neighbour_distance(&ls1, &ls2); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-15); + assert_relative_eq!(concrete_dist, 1e-13, epsilon = 1e-16); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Numerical Precision Tests │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_very_close_but_non_zero_distances() { + // Test extremely small but non-zero distances to check floating-point precision + let test_cases = [1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10]; + + for &tiny_dist in &test_cases { + let p1 = Point::new(0.0, 0.0); + let p2 = Point::new(tiny_dist, 0.0); + + let concrete_dist = Euclidean.distance(&p1, &p2); + let generic_dist = distance_point_to_point_generic(&p1, &p2); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-16); + assert_relative_eq!(concrete_dist, tiny_dist, epsilon = 1e-16); + assert!( + concrete_dist > 0.0, + "Distance should be positive for tiny_dist = {tiny_dist}" + ); + } + } + + #[test] + fn test_numerical_precision_near_floating_point_limits() { + // Test with coordinates that produce distances near floating-point precision limits + let base = 1.0; + let tiny_offset = f64::EPSILON * 10.0; // Slightly above machine epsilon + + let p1 = Point::new(base, base); + let p2 = Point::new(base + tiny_offset, base); + + let concrete_dist = Euclidean.distance(&p1, &p2); + let generic_dist = distance_point_to_point_generic(&p1, &p2); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-15); + assert!(concrete_dist > 0.0); + assert!(concrete_dist < 1e-14); // Should be very small but measurable + } + + #[test] + fn test_precision_with_large_coordinate_differences() { + // Test with one geometry having small coordinates and another having large coordinates + let small_point = Point::new(1e-10, 1e-10); + let large_polygon = Polygon::new( + LineString::from(vec![ + (1e8, 1e8), + (1e8 + 1.0, 1e8), + (1e8 + 1.0, 1e8 + 1.0), + (1e8, 1e8 + 1.0), + (1e8, 1e8), + ]), + vec![], + ); + + let concrete_dist = Euclidean.distance(&small_point, &large_polygon); + let generic_dist = distance_point_to_polygon_generic(&small_point, &large_polygon); + + assert_relative_eq!(concrete_dist, generic_dist, max_relative = 1e-10); + assert!(concrete_dist > 1e7); // Should be very large distance + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Robustness Tests │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_nan_coordinate_handling() { + // Test behavior with NaN coordinates + let nan_point = Point::new(f64::NAN, 0.0); + let normal_point = Point::new(1.0, 1.0); + + let distance = distance_point_to_point_generic(&nan_point, &normal_point); + + // Distance involving NaN should be NaN + assert!( + distance.is_nan(), + "Distance with NaN coordinate should be NaN" + ); + } + + #[test] + fn test_infinity_coordinate_handling() { + // Test behavior with infinite coordinates + let inf_point = Point::new(f64::INFINITY, 0.0); + let normal_point = Point::new(1.0, 1.0); + + let distance = distance_point_to_point_generic(&inf_point, &normal_point); + + // Distance involving infinity should be infinity + assert!( + distance.is_infinite(), + "Distance with infinite coordinate should be infinite" + ); + } + + #[test] + fn test_negative_infinity_coordinate_handling() { + // Test behavior with negative infinite coordinates + let neg_inf_point = Point::new(f64::NEG_INFINITY, 0.0); + let normal_point = Point::new(1.0, 1.0); + + let distance = distance_point_to_point_generic(&neg_inf_point, &normal_point); + + // Distance involving negative infinity should be infinity + assert!( + distance.is_infinite(), + "Distance with negative infinite coordinate should be infinite" + ); + } + + #[test] + fn test_mixed_special_values() { + // Test combinations of NaN and infinity + let nan_point = Point::new(f64::NAN, f64::INFINITY); + let inf_point = Point::new(f64::INFINITY, f64::NEG_INFINITY); + + let distance = distance_point_to_point_generic(&nan_point, &inf_point); + + // Any operation involving NaN should result in NaN or Infinity depending on the math + // Since we're using hypot which can handle NaN differently, let's test that it's either NaN or infinite + assert!( + distance.is_nan() || distance.is_infinite(), + "Distance involving NaN and Infinity should be NaN or Infinite, got: {distance}" + ); + } + + #[test] + fn test_subnormal_number_handling() { + // Test with subnormal (denormalized) numbers + let subnormal = f64::MIN_POSITIVE / 2.0; // This creates a subnormal number + assert!(subnormal > 0.0 && subnormal < f64::MIN_POSITIVE); + + let p1 = Point::new(0.0, 0.0); + let p2 = Point::new(subnormal, 0.0); + + let concrete_dist = Euclidean.distance(&p1, &p2); + let generic_dist = distance_point_to_point_generic(&p1, &p2); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-16); + assert_relative_eq!(concrete_dist, subnormal, epsilon = 1e-16); + assert!(concrete_dist > 0.0); + } + + #[test] + fn test_zero_vs_negative_zero() { + // Test behavior with positive zero vs negative zero + let p1 = Point::new(0.0, 0.0); + let p2 = Point::new(-0.0, -0.0); // Negative zero + + let distance = distance_point_to_point_generic(&p1, &p2); + + // Distance between +0 and -0 should be exactly 0 + assert_eq!( + distance, 0.0, + "Distance between +0 and -0 should be exactly 0" + ); + } + + // ┌────────────────────────────────────────────────────────────┐ + // │ Algorithmic Correctness Validation Tests │ + // └────────────────────────────────────────────────────────────┘ + + #[test] + fn test_linestring_inside_polygon_with_holes_correctness() { + // This test exposes the algorithmic difference between generic and concrete implementations + + // Create a polygon with a hole + let outer = LineString::from(vec![ + (0.0, 0.0), + (10.0, 0.0), + (10.0, 10.0), + (0.0, 10.0), + (0.0, 0.0), + ]); + let hole = LineString::from(vec![ + (3.0, 3.0), + (7.0, 3.0), + (7.0, 7.0), + (3.0, 7.0), + (3.0, 3.0), + ]); + let polygon = Polygon::new(outer, vec![hole]); + + // LineString that is INSIDE the polygon but OUTSIDE the hole + let linestring_inside = LineString::from(vec![(1.0, 1.0), (2.0, 2.0)]); + + let concrete_dist = Euclidean.distance(&linestring_inside, &polygon); + let generic_dist = distance_linestring_to_polygon_generic(&linestring_inside, &polygon); + + // The results should be identical + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-10); + } + + #[test] + fn test_linestring_outside_polygon_with_holes_correctness() { + // Test case where LineString is completely outside the polygon + + let outer = LineString::from(vec![ + (0.0, 0.0), + (10.0, 0.0), + (10.0, 10.0), + (0.0, 10.0), + (0.0, 0.0), + ]); + let hole = LineString::from(vec![ + (3.0, 3.0), + (7.0, 3.0), + (7.0, 7.0), + (3.0, 7.0), + (3.0, 3.0), + ]); + let polygon = Polygon::new(outer, vec![hole]); + + // LineString that is OUTSIDE the polygon entirely + let linestring_outside = LineString::from(vec![(12.0, 12.0), (13.0, 13.0)]); + + let concrete_dist = Euclidean.distance(&linestring_outside, &polygon); + let generic_dist = distance_linestring_to_polygon_generic(&linestring_outside, &polygon); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-10); + } + + #[test] + fn test_linestring_crossing_polygon_boundary_correctness() { + // Test case where LineString crosses the polygon boundary + + let outer = LineString::from(vec![ + (0.0, 0.0), + (10.0, 0.0), + (10.0, 10.0), + (0.0, 10.0), + (0.0, 0.0), + ]); + let polygon = Polygon::new(outer, vec![]); + + // LineString that crosses the polygon boundary (should intersect) + let linestring_crossing = LineString::from(vec![(-1.0, 5.0), (11.0, 5.0)]); + + let concrete_dist = Euclidean.distance(&linestring_crossing, &polygon); + let generic_dist = distance_linestring_to_polygon_generic(&linestring_crossing, &polygon); + + // Both should be 0.0 since they intersect + assert_eq!( + concrete_dist, 0.0, + "Concrete should return 0 for intersecting geometries" + ); + assert_eq!( + generic_dist, 0.0, + "Generic should return 0 for intersecting geometries" + ); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-10); + } + + #[test] + fn test_containment_logic_specific() { + // This test specifically checks the containment logic for polygons with holes + use geo_types::{LineString, Polygon}; + + // Create a larger polygon with a hole + let exterior = LineString::from(vec![ + (0.0, 0.0), + (20.0, 0.0), + (20.0, 20.0), + (0.0, 20.0), + (0.0, 0.0), + ]); + let hole = LineString::from(vec![ + (8.0, 8.0), + (12.0, 8.0), + (12.0, 12.0), + (8.0, 12.0), + (8.0, 8.0), + ]); + let polygon = Polygon::new(exterior, vec![hole]); + + // LineString that is INSIDE the polygon but OUTSIDE the hole, + // Create a small LineString very close to itself to avoid intersection + let inside_linestring = LineString::from(vec![(5.0, 5.0), (5.1, 5.1)]); + + let concrete_distance = Euclidean.distance(&inside_linestring, &polygon); + let generic_distance = distance_linestring_to_polygon_generic(&inside_linestring, &polygon); + + // Check if LineString actually intersects with the polygon + use crate::algorithm::Intersects; + let _does_intersect = inside_linestring.intersects(&polygon); + + assert_relative_eq!(concrete_distance, generic_distance, epsilon = 1e-10); + } + + #[test] + fn test_polygon_to_polygon_symmetric_containment_correctness() { + // Test that both A contains B and B contains A cases work correctly + use geo_types::{LineString, Polygon}; + + // Case 1: Large polygon with hole contains small polygon + let large_exterior = LineString::from(vec![ + (0.0, 0.0), + (20.0, 0.0), + (20.0, 20.0), + (0.0, 20.0), + (0.0, 0.0), + ]); + let large_hole = LineString::from(vec![ + (8.0, 8.0), + (12.0, 8.0), + (12.0, 12.0), + (8.0, 12.0), + (8.0, 8.0), + ]); + let large_polygon = Polygon::new(large_exterior, vec![large_hole]); + + // Small polygon inside the large polygon (but outside the hole) + let small_exterior = LineString::from(vec![ + (2.0, 2.0), + (6.0, 2.0), + (6.0, 6.0), + (2.0, 6.0), + (2.0, 2.0), + ]); + let small_polygon = Polygon::new(small_exterior, vec![]); + + // Test A contains B: large polygon with hole contains small polygon + let concrete_dist_ab = Euclidean.distance(&small_polygon, &large_polygon); + let generic_dist_ab = distance_polygon_to_polygon_generic(&small_polygon, &large_polygon); + + // Test B contains A: small polygon contains large polygon (should be distance between exteriors) + let concrete_dist_ba = Euclidean.distance(&large_polygon, &small_polygon); + let generic_dist_ba = distance_polygon_to_polygon_generic(&large_polygon, &small_polygon); + + // Both directions should match between concrete and generic + assert_relative_eq!(concrete_dist_ab, generic_dist_ab, epsilon = 1e-10); + assert_relative_eq!(concrete_dist_ba, generic_dist_ba, epsilon = 1e-10); + + // The distances should be the same due to symmetry + assert_relative_eq!(concrete_dist_ab, concrete_dist_ba, epsilon = 1e-10); + assert_relative_eq!(generic_dist_ab, generic_dist_ba, epsilon = 1e-10); + } + + #[test] + fn test_polygon_to_polygon_both_have_holes_correctness() { + // Test case where both polygons have holes + use geo_types::{LineString, Polygon}; + + // Polygon A with hole + let exterior_a = LineString::from(vec![ + (0.0, 0.0), + (10.0, 0.0), + (10.0, 10.0), + (0.0, 10.0), + (0.0, 0.0), + ]); + let hole_a = LineString::from(vec![ + (3.0, 3.0), + (7.0, 3.0), + (7.0, 7.0), + (3.0, 7.0), + (3.0, 3.0), + ]); + let polygon_a = Polygon::new(exterior_a, vec![hole_a]); + + // Polygon B with hole (separate from A) + let exterior_b = LineString::from(vec![ + (15.0, 0.0), + (25.0, 0.0), + (25.0, 10.0), + (15.0, 10.0), + (15.0, 0.0), + ]); + let hole_b = LineString::from(vec![ + (18.0, 3.0), + (22.0, 3.0), + (22.0, 7.0), + (18.0, 7.0), + (18.0, 3.0), + ]); + let polygon_b = Polygon::new(exterior_b, vec![hole_b]); + + // Neither polygon contains the other, so should calculate distance between exteriors + let concrete_dist = Euclidean.distance(&polygon_a, &polygon_b); + let generic_dist = distance_polygon_to_polygon_generic(&polygon_a, &polygon_b); + + assert_relative_eq!(concrete_dist, generic_dist, epsilon = 1e-10); + + // Test symmetry + let concrete_dist_reverse = Euclidean.distance(&polygon_b, &polygon_a); + let generic_dist_reverse = distance_polygon_to_polygon_generic(&polygon_b, &polygon_a); + + assert_relative_eq!(concrete_dist_reverse, generic_dist_reverse, epsilon = 1e-10); + assert_relative_eq!(concrete_dist, concrete_dist_reverse, epsilon = 1e-10); + } + + #[test] + fn test_point_to_linestring_containment_optimization() { + // Test that the containment check optimization works correctly + use geo_types::{LineString, Point}; + + // Create a LineString + let linestring = LineString::from(vec![(0.0, 0.0), (5.0, 0.0), (5.0, 5.0), (10.0, 5.0)]); + + // Point ON the LineString (should return 0 due to containment check) + let point_on_line = Point::new(2.5, 0.0); // On first segment + let concrete_dist_on = Euclidean.distance(&point_on_line, &linestring); + let generic_dist_on = distance_point_to_linestring_generic(&point_on_line, &linestring); + + // Both should be exactly 0 due to containment + assert_eq!(concrete_dist_on, 0.0); + assert_eq!(generic_dist_on, 0.0); + assert_relative_eq!(concrete_dist_on, generic_dist_on, epsilon = 1e-10); + + // Point ON a vertex (should return 0) + let point_on_vertex = Point::new(5.0, 0.0); + let concrete_dist_vertex = Euclidean.distance(&point_on_vertex, &linestring); + let generic_dist_vertex = + distance_point_to_linestring_generic(&point_on_vertex, &linestring); + + assert_eq!(concrete_dist_vertex, 0.0); + assert_eq!(generic_dist_vertex, 0.0); + assert_relative_eq!(concrete_dist_vertex, generic_dist_vertex, epsilon = 1e-10); + + // Point NOT on the LineString (should calculate actual distance) + let point_off_line = Point::new(2.5, 3.0); + let concrete_dist_off = Euclidean.distance(&point_off_line, &linestring); + let generic_dist_off = distance_point_to_linestring_generic(&point_off_line, &linestring); + + // Should be greater than 0 and both implementations should match + assert!(concrete_dist_off > 0.0); + assert!(generic_dist_off > 0.0); + assert_relative_eq!(concrete_dist_off, generic_dist_off, epsilon = 1e-10); + } + + #[test] + fn test_line_segment_distance_algorithm_equivalence() { + // Test that the updated generic algorithm produces identical results to concrete + use geo_types::{coord, Line, Point}; + + // Test cases covering different scenarios + let test_cases = vec![ + // Point, Line start, Line end + ( + coord! { x: 0.0, y: 0.0 }, + coord! { x: 1.0, y: 0.0 }, + coord! { x: 3.0, y: 0.0 }, + ), // Before start + ( + coord! { x: 2.0, y: 1.0 }, + coord! { x: 1.0, y: 0.0 }, + coord! { x: 3.0, y: 0.0 }, + ), // Perpendicular + ( + coord! { x: 4.0, y: 0.0 }, + coord! { x: 1.0, y: 0.0 }, + coord! { x: 3.0, y: 0.0 }, + ), // Beyond end + ( + coord! { x: 2.0, y: 0.0 }, + coord! { x: 1.0, y: 0.0 }, + coord! { x: 3.0, y: 0.0 }, + ), // On line + ( + coord! { x: 1.0, y: 0.0 }, + coord! { x: 1.0, y: 0.0 }, + coord! { x: 3.0, y: 0.0 }, + ), // On start point + ( + coord! { x: 3.0, y: 0.0 }, + coord! { x: 1.0, y: 0.0 }, + coord! { x: 3.0, y: 0.0 }, + ), // On end point + ( + coord! { x: 0.0, y: 0.0 }, + coord! { x: 1.0, y: 1.0 }, + coord! { x: 1.0, y: 1.0 }, + ), // Degenerate line + ( + coord! { x: 2.5, y: 3.0 }, + coord! { x: 0.0, y: 0.0 }, + coord! { x: 5.0, y: 5.0 }, + ), // Diagonal line + ]; + + for (point_coord, start_coord, end_coord) in test_cases { + let point = Point::from(point_coord); + let line = Line::new(start_coord, end_coord); + + // Test concrete implementation + let concrete_distance = Euclidean.distance(&point, &line); + + // Test generic implementation + let generic_distance = distance_coord_to_line_generic(&point_coord, &line); + + // They should be identical now + assert_relative_eq!(concrete_distance, generic_distance, epsilon = 1e-15); + } + } +} diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs new file mode 100644 index 00000000..9d7d208d --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs @@ -0,0 +1,3 @@ +pub mod euclidean; +pub use euclidean::DistanceExt; +pub use euclidean::Euclidean; diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/mod.rs b/rust/geo-generic-alg/src/algorithm/line_measures/mod.rs new file mode 100644 index 00000000..92095d0d --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/line_measures/mod.rs @@ -0,0 +1,8 @@ +mod distance; +pub use distance::{Distance, DistanceExt}; + +mod length; +pub use length::LengthMeasurableExt; + +pub mod metric_spaces; +pub use metric_spaces::Euclidean; diff --git a/rust/geo-generic-alg/src/algorithm/map_coords.rs b/rust/geo-generic-alg/src/algorithm/map_coords.rs new file mode 100644 index 00000000..a4d05fc9 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/map_coords.rs @@ -0,0 +1,1080 @@ +pub(crate) use crate::geometry::*; +pub(crate) use crate::CoordNum; + +use core::borrow::Borrow; +use geo_traits_ext::*; +use Coord; + +/// Map a function over all the coordinates in an object, returning a new one +pub trait MapCoords { + type Output; + + /// Apply a function to all the coordinates in a geometric object, returning a new object. + /// + /// # Examples + /// + /// ``` + /// use geo::MapCoords; + /// use geo::{Coord, Point}; + /// use approx::assert_relative_eq; + /// + /// let p1 = Point::new(10., 20.); + /// let p2 = p1.map_coords(|Coord { x, y }| Coord { x: x + 1000., y: y * 2. }); + /// + /// assert_relative_eq!(p2, Point::new(1010., 40.), epsilon = 1e-6); + /// ``` + /// + /// Note that the input and output numeric types need not match. + /// + /// For example, consider OpenStreetMap's coordinate encoding scheme, which, to save space, + /// encodes latitude/longitude as 32bit signed integers from the floating point values + /// to six decimal places (eg. lat/lon * 1000000). + /// + /// ``` + /// # use geo::{Coord, Point}; + /// # use geo::MapCoords; + /// # use approx::assert_relative_eq; + /// + /// let SCALE_FACTOR: f64 = 1000000.0; + /// let floating_point_geom: Point = Point::new(10.15f64, 20.05f64); + /// let fixed_point_geom: Point = floating_point_geom.map_coords(|Coord { x, y }| { + /// Coord { x: (x * SCALE_FACTOR) as i32, y: (y * SCALE_FACTOR) as i32 } + /// }); + /// + /// assert_eq!(fixed_point_geom.x(), 10150000); + /// ``` + /// + /// If you want *only* to convert between numeric types (i32 -> f64) without further + /// transformation, consider using [`Convert`](crate::Convert). + fn map_coords(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output + where + T: CoordNum, + NT: CoordNum; + + /// Map a fallible function over all the coordinates in a geometry, returning a Result + /// + /// # Examples + /// + /// ``` + /// use approx::assert_relative_eq; + /// use geo::MapCoords; + /// use geo::{Coord, Point}; + /// + /// let p1 = Point::new(10., 20.); + /// let p2 = p1 + /// .try_map_coords(|Coord { x, y }| -> Result<_, std::convert::Infallible> { + /// Ok(Coord { x: x + 1000., y: y * 2. }) + /// }).unwrap(); + /// + /// assert_relative_eq!(p2, Point::new(1010., 40.), epsilon = 1e-6); + /// ``` + fn try_map_coords( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result + where + T: CoordNum, + NT: CoordNum; +} + +pub trait MapCoordsInPlace { + /// Apply a function to all the coordinates in a geometric object, in place + /// + /// # Examples + /// + /// ``` + /// use geo::MapCoordsInPlace; + /// use geo::{Coord, Point}; + /// use approx::assert_relative_eq; + /// + /// let mut p = Point::new(10., 20.); + /// p.map_coords_in_place(|Coord { x, y }| Coord { x: x + 1000., y: y * 2. }); + /// + /// assert_relative_eq!(p, Point::new(1010., 40.), epsilon = 1e-6); + /// ``` + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord + Copy) + where + T: CoordNum; + + /// Map a fallible function over all the coordinates in a geometry, in place, returning a `Result`. + /// + /// Upon encountering an `Err` from the function, `try_map_coords_in_place` immediately returns + /// and the geometry is potentially left in a partially mapped state. + /// + /// # Examples + /// + /// ``` + /// use geo::MapCoordsInPlace; + /// use geo::Coord; + /// + /// let mut p1 = geo::point!{x: 10u32, y: 20u32}; + /// + /// p1.try_map_coords_in_place(|Coord { x, y }| -> Result<_, &str> { + /// Ok(Coord { + /// x: x.checked_add(1000).ok_or("Overflow")?, + /// y: y.checked_mul(2).ok_or("Overflow")?, + /// }) + /// })?; + /// + /// assert_eq!( + /// p1, + /// geo::point!{x: 1010u32, y: 40u32}, + /// ); + /// # Ok::<(), &str>(()) + /// ``` + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> + where + T: CoordNum; +} + +// Generic implementation using trait-based approach +impl MapCoords for G +where + T: CoordNum, + NT: CoordNum, + G: GeoTraitExtWithTypeTag + MapCoordsTrait, +{ + type Output = >::Output; + + fn map_coords(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + self.map_coords_trait(func) + } + + fn try_map_coords( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result { + self.try_map_coords_trait(func) + } +} + +pub trait MapCoordsTrait +where + T: CoordNum, + NT: CoordNum, +{ + type Output; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output; + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result; +} + +//-----------------------// +// Point implementations // +//-----------------------// + +impl MapCoordsTrait for P +where + T: CoordNum, + NT: CoordNum, + P: PointTraitExt, +{ + type Output = Point; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + if let Some(coord) = self.geo_coord() { + Point(func(coord)) + } else { + Point::new(NT::zero(), NT::zero()) + } + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result { + if let Some(coord) = self.geo_coord() { + Ok(Point(func(coord)?)) + } else { + Ok(Point::new(NT::zero(), NT::zero())) + } + } +} + +impl MapCoordsInPlace for Point { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord) { + self.0 = func(self.0); + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + self.0 = func(self.0)?; + Ok(()) + } +} + +//----------------------// +// Line implementations // +//----------------------// + +impl MapCoordsTrait for L +where + T: CoordNum, + NT: CoordNum, + L: LineTraitExt, +{ + type Output = Line; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + Line::new(func(self.start_coord()), func(self.end_coord())) + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result { + Ok(Line::new( + func(self.start_coord())?, + func(self.end_coord())?, + )) + } +} + +impl MapCoordsInPlace for Line { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord) { + self.start = func(self.start); + self.end = func(self.end); + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + self.start = func(self.start)?; + self.end = func(self.end)?; + + Ok(()) + } +} + +//----------------------------// +// LineString implementations // +//----------------------------// + +impl MapCoordsTrait for LS +where + T: CoordNum, + NT: CoordNum, + LS: LineStringTraitExt, +{ + type Output = LineString; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + let coords = self.coord_iter().map(func).collect::>(); + LineString::new(coords) + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result { + let coords = self.coord_iter().map(func).collect::, E>>()?; + Ok(LineString::new(coords)) + } +} + +impl MapCoordsInPlace for LineString { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord) { + for p in &mut self.0 { + *p = func(*p); + } + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + for p in &mut self.0 { + *p = func(*p)?; + } + Ok(()) + } +} + +//-------------------------// +// Polygon implementations // +//-------------------------// + +impl MapCoordsTrait for P +where + T: CoordNum, + NT: CoordNum, + P: PolygonTraitExt, +{ + type Output = Polygon; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + let exterior = match self.exterior_ext() { + Some(ext) => ext.map_coords(func), + None => LineString::new(vec![]), + }; + + let interiors = self + .interiors_ext() + .map(|line| line.map_coords(func)) + .collect(); + + Polygon::new(exterior, interiors) + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result { + let exterior = match self.exterior_ext() { + Some(ext) => ext.try_map_coords(func)?, + None => LineString::new(vec![]), + }; + + let interiors = self + .interiors_ext() + .map(|line| line.try_map_coords(func)) + .collect::, E>>()?; + + Ok(Polygon::new(exterior, interiors)) + } +} + +impl MapCoordsInPlace for Polygon { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord + Copy) { + self.exterior_mut(|line_string| { + line_string.map_coords_in_place(func); + }); + + self.interiors_mut(|line_strings| { + for line_string in line_strings { + line_string.map_coords_in_place(func); + } + }); + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + let mut result = Ok(()); + + self.exterior_mut(|line_string| { + if let Err(e) = line_string.try_map_coords_in_place(&func) { + result = Err(e); + } + }); + + if result.is_ok() { + self.interiors_mut(|line_strings| { + for line_string in line_strings { + if let Err(e) = line_string.try_map_coords_in_place(&func) { + result = Err(e); + break; + } + } + }); + } + + result + } +} + +//----------------------------// +// MultiPoint implementations // +//----------------------------// + +impl MapCoordsTrait for MP +where + T: CoordNum, + NT: CoordNum, + MP: MultiPointTraitExt, +{ + type Output = MultiPoint; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + MultiPoint::new(self.points_ext().map(|p| p.map_coords(func)).collect()) + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result { + Ok(MultiPoint::new( + self.points_ext() + .map(|p| p.try_map_coords(func)) + .collect::, E>>()?, + )) + } +} + +impl MapCoordsInPlace for MultiPoint { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord + Copy) { + for p in &mut self.0 { + p.map_coords_in_place(func); + } + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + for p in &mut self.0 { + p.try_map_coords_in_place(&func)?; + } + Ok(()) + } +} + +//---------------------------------// +// MultiLineString implementations // +//---------------------------------// + +impl MapCoordsTrait for MLS +where + T: CoordNum, + NT: CoordNum, + MLS: MultiLineStringTraitExt, +{ + type Output = MultiLineString; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + MultiLineString::new( + self.line_strings_ext() + .map(|l| l.map_coords(func)) + .collect(), + ) + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result { + Ok(MultiLineString::new( + self.line_strings_ext() + .map(|l| l.try_map_coords(func)) + .collect::, E>>()?, + )) + } +} + +impl MapCoordsInPlace for MultiLineString { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord + Copy) { + for p in &mut self.0 { + p.map_coords_in_place(func); + } + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + for p in &mut self.0 { + p.try_map_coords_in_place(&func)?; + } + Ok(()) + } +} + +//------------------------------// +// MultiPolygon implementations // +//------------------------------// + +impl MapCoordsTrait for MP +where + T: CoordNum, + NT: CoordNum, + MP: MultiPolygonTraitExt, +{ + type Output = MultiPolygon; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + MultiPolygon::new(self.polygons_ext().map(|p| p.map_coords(func)).collect()) + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result { + Ok(MultiPolygon::new( + self.polygons_ext() + .map(|p| p.try_map_coords(func)) + .collect::, E>>()?, + )) + } +} + +impl MapCoordsInPlace for MultiPolygon { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord + Copy) { + for p in &mut self.0 { + p.map_coords_in_place(func); + } + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + for p in &mut self.0 { + p.try_map_coords_in_place(&func)?; + } + Ok(()) + } +} + +//--------------------------// +// Geometry implementations // +//--------------------------// + +impl MapCoordsTrait for G +where + T: CoordNum, + NT: CoordNum, + G: GeometryTraitExt, +{ + type Output = Geometry; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + if self.is_collection() { + let collection = GeometryCollection::new_from( + self.geometries_ext() + .map(|g| g.borrow().map_coords(func)) + .collect(), + ); + Geometry::GeometryCollection(collection) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(x) => Geometry::Point(x.map_coords_trait(func)), + GeometryTypeExt::Line(x) => Geometry::Line(x.map_coords_trait(func)), + GeometryTypeExt::LineString(x) => Geometry::LineString(x.map_coords_trait(func)), + GeometryTypeExt::Polygon(x) => Geometry::Polygon(x.map_coords_trait(func)), + GeometryTypeExt::MultiPoint(x) => Geometry::MultiPoint(x.map_coords_trait(func)), + GeometryTypeExt::MultiLineString(x) => { + Geometry::MultiLineString(x.map_coords_trait(func)) + } + GeometryTypeExt::MultiPolygon(x) => { + Geometry::MultiPolygon(x.map_coords_trait(func)) + } + GeometryTypeExt::Rect(x) => Geometry::Rect(x.map_coords_trait(func)), + GeometryTypeExt::Triangle(x) => Geometry::Triangle(x.map_coords_trait(func)), + } + } + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result { + if self.is_collection() { + let geoms = self + .geometries_ext() + .map(|g| g.borrow().try_map_coords(func)) + .collect::, E>>()?; + let collection = GeometryCollection::new_from(geoms); + Ok(Geometry::GeometryCollection(collection)) + } else { + match self.as_type_ext() { + GeometryTypeExt::Point(x) => Ok(Geometry::Point(x.try_map_coords_trait(func)?)), + GeometryTypeExt::Line(x) => Ok(Geometry::Line(x.try_map_coords_trait(func)?)), + GeometryTypeExt::LineString(x) => { + Ok(Geometry::LineString(x.try_map_coords_trait(func)?)) + } + GeometryTypeExt::Polygon(x) => Ok(Geometry::Polygon(x.try_map_coords_trait(func)?)), + GeometryTypeExt::MultiPoint(x) => { + Ok(Geometry::MultiPoint(x.try_map_coords_trait(func)?)) + } + GeometryTypeExt::MultiLineString(x) => { + Ok(Geometry::MultiLineString(x.try_map_coords_trait(func)?)) + } + GeometryTypeExt::MultiPolygon(x) => { + Ok(Geometry::MultiPolygon(x.try_map_coords_trait(func)?)) + } + GeometryTypeExt::Rect(x) => Ok(Geometry::Rect(x.try_map_coords_trait(func)?)), + GeometryTypeExt::Triangle(x) => { + Ok(Geometry::Triangle(x.try_map_coords_trait(func)?)) + } + } + } + } +} + +impl MapCoordsInPlace for Geometry { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord + Copy) { + match *self { + Geometry::Point(ref mut x) => x.map_coords_in_place(func), + Geometry::Line(ref mut x) => x.map_coords_in_place(func), + Geometry::LineString(ref mut x) => x.map_coords_in_place(func), + Geometry::Polygon(ref mut x) => x.map_coords_in_place(func), + Geometry::MultiPoint(ref mut x) => x.map_coords_in_place(func), + Geometry::MultiLineString(ref mut x) => x.map_coords_in_place(func), + Geometry::MultiPolygon(ref mut x) => x.map_coords_in_place(func), + Geometry::GeometryCollection(ref mut x) => x.map_coords_in_place(func), + Geometry::Rect(ref mut x) => x.map_coords_in_place(func), + Geometry::Triangle(ref mut x) => x.map_coords_in_place(func), + } + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + match *self { + Geometry::Point(ref mut x) => x.try_map_coords_in_place(func), + Geometry::Line(ref mut x) => x.try_map_coords_in_place(func), + Geometry::LineString(ref mut x) => x.try_map_coords_in_place(func), + Geometry::Polygon(ref mut x) => x.try_map_coords_in_place(func), + Geometry::MultiPoint(ref mut x) => x.try_map_coords_in_place(func), + Geometry::MultiLineString(ref mut x) => x.try_map_coords_in_place(func), + Geometry::MultiPolygon(ref mut x) => x.try_map_coords_in_place(func), + Geometry::GeometryCollection(ref mut x) => x.try_map_coords_in_place(func), + Geometry::Rect(ref mut x) => x.try_map_coords_in_place(func), + Geometry::Triangle(ref mut x) => x.try_map_coords_in_place(func), + } + } +} + +//------------------------------------// +// GeometryCollection implementations // +//------------------------------------// + +impl MapCoordsTrait for GC +where + T: CoordNum, + NT: CoordNum, + GC: GeometryCollectionTraitExt, +{ + type Output = GeometryCollection; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + GeometryCollection::new_from(self.geometries_ext().map(|g| g.map_coords(func)).collect()) + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E> + Copy, + ) -> Result { + Ok(GeometryCollection::new_from( + self.geometries_ext() + .map(|g| g.try_map_coords(func)) + .collect::, E>>()?, + )) + } +} + +impl MapCoordsInPlace for GeometryCollection { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord + Copy) { + for p in &mut self.0 { + p.map_coords_in_place(func); + } + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + for p in &mut self.0 { + p.try_map_coords_in_place(&func)?; + } + Ok(()) + } +} + +//----------------------// +// Rect implementations // +//----------------------// + +impl MapCoordsTrait for R +where + T: CoordNum, + NT: CoordNum, + R: RectTraitExt, +{ + type Output = Rect; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + Rect::new(func(self.min_coord()), func(self.max_coord())) + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result { + Ok(Rect::new(func(self.min_coord())?, func(self.max_coord())?)) + } +} + +impl MapCoordsInPlace for Rect { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord) { + let mut new_rect = Rect::new(func(self.min()), func(self.max())); + ::std::mem::swap(self, &mut new_rect); + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + let mut new_rect = Rect::new(func(self.min())?, func(self.max())?); + ::std::mem::swap(self, &mut new_rect); + Ok(()) + } +} + +//--------------------------// +// Triangle implementations // +//--------------------------// + +impl MapCoordsTrait for TT +where + T: CoordNum, + NT: CoordNum, + TT: TriangleTraitExt, +{ + type Output = Triangle; + + fn map_coords_trait(&self, func: impl Fn(Coord) -> Coord + Copy) -> Self::Output { + Triangle::new( + func(self.first_coord()), + func(self.second_coord()), + func(self.third_coord()), + ) + } + + fn try_map_coords_trait( + &self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result { + Ok(Triangle::new( + func(self.first_coord())?, + func(self.second_coord())?, + func(self.third_coord())?, + )) + } +} + +impl MapCoordsInPlace for Triangle { + fn map_coords_in_place(&mut self, func: impl Fn(Coord) -> Coord) { + let mut new_triangle = Triangle::new(func(self.0), func(self.1), func(self.2)); + + ::std::mem::swap(self, &mut new_triangle); + } + + fn try_map_coords_in_place( + &mut self, + func: impl Fn(Coord) -> Result, E>, + ) -> Result<(), E> { + let mut new_triangle = Triangle::new(func(self.0)?, func(self.1)?, func(self.2)?); + + ::std::mem::swap(self, &mut new_triangle); + + Ok(()) + } +} + +#[cfg(test)] +mod test { + use super::{MapCoords, MapCoordsInPlace}; + use crate::{ + coord, polygon, Coord, Geometry, GeometryCollection, Line, LineString, MultiLineString, + MultiPoint, MultiPolygon, Point, Polygon, Rect, + }; + + #[test] + fn point() { + let p = Point::new(10., 10.); + let new_p = p.map_coords(|Coord { x, y }| (x + 10., y + 100.).into()); + assert_relative_eq!(new_p.x(), 20.); + assert_relative_eq!(new_p.y(), 110.); + } + + #[test] + fn point_inplace() { + let mut p2 = Point::new(10f32, 10f32); + p2.map_coords_in_place(|Coord { x, y }| (x + 10., y + 100.).into()); + assert_relative_eq!(p2.x(), 20.); + assert_relative_eq!(p2.y(), 110.); + } + + #[test] + fn rect_inplace() { + let mut rect = Rect::new((10, 10), (20, 20)); + rect.map_coords_in_place(|Coord { x, y }| (x + 10, y + 20).into()); + assert_eq!(rect.min(), coord! { x: 20, y: 30 }); + assert_eq!(rect.max(), coord! { x: 30, y: 40 }); + } + + #[test] + fn rect_inplace_normalized() { + let mut rect = Rect::new((2, 2), (3, 3)); + // Rect's enforce that rect.min is up and left of p2. Here we test that the points are + // normalized into a valid rect, regardless of the order they are mapped. + rect.map_coords_in_place(|pt| { + match pt.x_y() { + // old min point maps to new max point + (2, 2) => (4, 4).into(), + // old max point maps to new min point + (3, 3) => (1, 1).into(), + _ => panic!("unexpected point"), + } + }); + + assert_eq!(rect.min(), coord! { x: 1, y: 1 }); + assert_eq!(rect.max(), coord! { x: 4, y: 4 }); + } + + #[test] + fn rect_map_coords() { + let rect = Rect::new((10, 10), (20, 20)); + let another_rect = rect.map_coords(|Coord { x, y }| (x + 10, y + 20).into()); + assert_eq!(another_rect.min(), coord! { x: 20, y: 30 }); + assert_eq!(another_rect.max(), coord! { x: 30, y: 40 }); + } + + #[test] + fn rect_try_map_coords() { + let rect = Rect::new((10i32, 10), (20, 20)); + let result = rect.try_map_coords(|Coord { x, y }| -> Result<_, &'static str> { + Ok(( + x.checked_add(10).ok_or("overflow")?, + y.checked_add(20).ok_or("overflow")?, + ) + .into()) + }); + assert!(result.is_ok()); + } + + #[test] + fn rect_try_map_coords_normalized() { + let rect = Rect::new((2, 2), (3, 3)); + // Rect's enforce that rect.min is up and left of p2. Here we test that the points are + // normalized into a valid rect, regardless of the order they are mapped. + let result: Result<_, std::convert::Infallible> = rect.try_map_coords(|pt| { + match pt.x_y() { + // old min point maps to new max point + (2, 2) => Ok((4, 4).into()), + // old max point maps to new min point + (3, 3) => Ok((1, 1).into()), + _ => panic!("unexpected point"), + } + }); + let new_rect = result.unwrap(); + assert_eq!(new_rect.min(), coord! { x: 1, y: 1 }); + assert_eq!(new_rect.max(), coord! { x: 4, y: 4 }); + } + + #[test] + fn line() { + let line = Line::from([(0., 0.), (1., 2.)]); + assert_relative_eq!( + line.map_coords(|Coord { x, y }| (x * 2., y).into()), + Line::from([(0., 0.), (2., 2.)]), + epsilon = 1e-6 + ); + } + + #[test] + fn linestring() { + let line1: LineString = LineString::from(vec![(0., 0.), (1., 2.)]); + let line2 = line1.map_coords(|Coord { x, y }| (x + 10., y - 100.).into()); + assert_relative_eq!(line2.0[0], Coord::from((10., -100.)), epsilon = 1e-6); + assert_relative_eq!(line2.0[1], Coord::from((11., -98.)), epsilon = 1e-6); + } + + #[test] + fn polygon() { + let exterior = LineString::from(vec![(0., 0.), (1., 1.), (1., 0.), (0., 0.)]); + let interiors = vec![LineString::from(vec![ + (0.1, 0.1), + (0.9, 0.9), + (0.9, 0.1), + (0.1, 0.1), + ])]; + let p = Polygon::new(exterior, interiors); + + let p2 = p.map_coords(|Coord { x, y }| (x + 10., y - 100.).into()); + + let exterior2 = + LineString::from(vec![(10., -100.), (11., -99.), (11., -100.), (10., -100.)]); + let interiors2 = vec![LineString::from(vec![ + (10.1, -99.9), + (10.9, -99.1), + (10.9, -99.9), + (10.1, -99.9), + ])]; + let expected_p2 = Polygon::new(exterior2, interiors2); + + assert_relative_eq!(p2, expected_p2, epsilon = 1e-6); + } + + #[test] + fn multipoint() { + let p1 = Point::new(10., 10.); + let p2 = Point::new(0., -100.); + let mp = MultiPoint::new(vec![p1, p2]); + + assert_eq!( + mp.map_coords(|Coord { x, y }| (x + 10., y + 100.).into()), + MultiPoint::new(vec![Point::new(20., 110.), Point::new(10., 0.)]) + ); + } + + #[test] + fn multilinestring() { + let line1: LineString = LineString::from(vec![(0., 0.), (1., 2.)]); + let line2: LineString = LineString::from(vec![(-1., 0.), (0., 0.), (1., 2.)]); + let mline = MultiLineString::new(vec![line1, line2]); + let mline2 = mline.map_coords(|Coord { x, y }| (x + 10., y - 100.).into()); + assert_relative_eq!( + mline2, + MultiLineString::new(vec![ + LineString::from(vec![(10., -100.), (11., -98.)]), + LineString::from(vec![(9., -100.), (10., -100.), (11., -98.)]), + ]), + epsilon = 1e-6 + ); + } + + #[test] + fn multipolygon() { + let poly1 = polygon![ + (x: 0., y: 0.), + (x: 10., y: 0.), + (x: 10., y: 10.), + (x: 0., y: 10.), + (x: 0., y: 0.), + ]; + let poly2 = polygon![ + exterior: [ + (x: 11., y: 11.), + (x: 20., y: 11.), + (x: 20., y: 20.), + (x: 11., y: 20.), + (x: 11., y: 11.), + ], + interiors: [ + [ + (x: 13., y: 13.), + (x: 13., y: 17.), + (x: 17., y: 17.), + (x: 17., y: 13.), + (x: 13., y: 13.), + ] + ], + ]; + + let mp = MultiPolygon::new(vec![poly1, poly2]); + let mp2 = mp.map_coords(|Coord { x, y }| (x * 2., y + 100.).into()); + assert_eq!(mp2.0.len(), 2); + assert_relative_eq!( + mp2.0[0], + polygon![ + (x: 0., y: 100.), + (x: 20., y: 100.), + (x: 20., y: 110.), + (x: 0., y: 110.), + (x: 0., y: 100.), + ], + ); + assert_relative_eq!( + mp2.0[1], + polygon![ + exterior: [ + (x: 22., y: 111.), + (x: 40., y: 111.), + (x: 40., y: 120.), + (x: 22., y: 120.), + (x: 22., y: 111.), + ], + interiors: [ + [ + (x: 26., y: 113.), + (x: 26., y: 117.), + (x: 34., y: 117.), + (x: 34., y: 113.), + (x: 26., y: 113.), + ], + ], + ], + ); + } + + #[test] + fn geometrycollection() { + let p1 = Geometry::Point(Point::new(10., 10.)); + let line1 = Geometry::LineString(LineString::from(vec![(0., 0.), (1., 2.)])); + + let gc = GeometryCollection::new_from(vec![p1, line1]); + let expected = GeometryCollection::new_from(vec![ + Geometry::Point(Point::new(20., 110.)), + Geometry::LineString(LineString::from(vec![(10., 100.), (11., 102.)])), + ]); + + assert_eq!( + gc.map_coords(|Coord { x, y }| (x + 10., y + 100.).into()), + expected + ); + assert_eq!( + Geometry::GeometryCollection(gc) + .map_coords(|Coord { x, y }| (x + 10., y + 100.).into()), + Geometry::GeometryCollection(expected) + ); + } + + #[test] + fn convert_type() { + let p1: Point = Point::new(1., 2.); + let p2: Point = p1.map_coords(|Coord { x, y }| (x as f32, y as f32).into()); + assert_relative_eq!(p2.x(), 1f32); + assert_relative_eq!(p2.y(), 2f32); + } + + #[test] + fn test_fallible() { + let f = |Coord { x, y }| -> Result<_, &'static str> { + if relative_ne!(x, 2.0) { + Ok((x * 2., y + 100.).into()) + } else { + Err("Ugh") + } + }; + // this should produce an error + let bad_ls: LineString<_> = vec![ + Point::new(1.0, 1.0), + Point::new(2.0, 2.0), + Point::new(3.0, 3.0), + ] + .into(); + // this should be fine + let good_ls: LineString<_> = vec![ + Point::new(1.0, 1.0), + Point::new(2.1, 2.0), + Point::new(3.0, 3.0), + ] + .into(); + let bad = bad_ls.try_map_coords(f); + assert!(bad.is_err()); + let good = good_ls.try_map_coords(f); + assert!(good.is_ok()); + assert_relative_eq!( + good.unwrap(), + vec![ + Point::new(2., 101.), + Point::new(4.2, 102.), + Point::new(6.0, 103.), + ] + .into() + ); + } + + #[test] + fn rect_map_invert_coords() { + let rect = Rect::new(coord! { x: 0., y: 0. }, coord! { x: 1., y: 1. }); + + // This call should not panic even though Rect::new + // constructor panics if min coords > max coords + rect.map_coords(|Coord { x, y }| (-x, -y).into()); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/mod.rs b/rust/geo-generic-alg/src/algorithm/mod.rs new file mode 100644 index 00000000..6cd5d4ef --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/mod.rs @@ -0,0 +1,84 @@ +/// Kernels to compute various predicates +pub mod kernels; +pub use kernels::{Kernel, Orientation}; + +/// Calculate the area of the surface of a `Geometry`. +pub mod area; +pub use area::Area; + +/// Calculate the bounding rectangle of a `Geometry`. +pub mod bounding_rect; +pub use bounding_rect::BoundingRect; + +/// Calculate the centroid of a `Geometry`. +pub mod centroid; +pub use centroid::Centroid; + +/// Convert the type of a geometry’s coordinate value. +pub mod convert; +pub use convert::{Convert, TryConvert}; + +/// Convert coordinate angle units between radians and degrees. +pub mod convert_angle_unit; +pub use convert_angle_unit::{ToDegrees, ToRadians}; + +/// Determine whether a `Coord` lies inside, outside, or on the boundary of a geometry. +pub mod coordinate_position; +pub use coordinate_position::CoordinatePosition; + +/// Iterate over geometry coordinates. +pub mod coords_iter; +pub use coords_iter::CoordsIter; +pub use coords_iter::CoordsSeqIter; + +/// Dimensionality of a geometry and its boundary, based on OGC-SFA. +pub mod dimensions; +pub use dimensions::HasDimensions; + +/// Calculate the length of a planar line between two `Geometries`. +pub mod euclidean_length; +#[allow(deprecated)] +pub use euclidean_length::EuclideanLength; + +/// Calculate the extreme coordinates and indices of a geometry. +pub mod extremes; +pub use extremes::Extremes; + +/// Determine whether `Geometry` `A` intersects `Geometry` `B`. +pub mod intersects; +pub use intersects::Intersects; + +pub mod line_measures; +pub use line_measures::metric_spaces::Euclidean; + +pub use line_measures::{ + Distance, DistanceExt, LengthMeasurableExt, +}; + +/// Apply a function to all `Coord`s of a `Geometry`. +pub mod map_coords; +pub use map_coords::{MapCoords, MapCoordsInPlace}; + +/// Rotate a `Geometry` by an angle given in degrees. +pub mod rotate; +pub use rotate::{Rotate, RotateMut}; + +/// Scale a `Geometry` up or down by a factor +pub mod scale; +pub use scale::{Scale, ScaleMut}; + +/// Skew a `Geometry` by shearing it at angles along the x and y dimensions +pub mod skew; +pub use skew::{Skew, SkewMut}; + +/// Composable affine operations such as rotate, scale, skew, and translate +pub mod affine_ops; +pub use affine_ops::{AffineOps, AffineOpsMut, AffineTransform}; + +/// Simplify `Geometries` using the Ramer-Douglas-Peucker algorithm. +pub mod simplify; +pub use simplify::{Simplify, SimplifyIdx}; + +/// Translate a `Geometry` along the given offsets. +pub mod translate; +pub use translate::{Translate, TranslateMut}; diff --git a/rust/geo-generic-alg/src/algorithm/rotate.rs b/rust/geo-generic-alg/src/algorithm/rotate.rs new file mode 100644 index 00000000..a80af126 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/rotate.rs @@ -0,0 +1,603 @@ +use crate::algorithm::affine_ops::AffineOpsMut; +use crate::algorithm::{AffineOps, AffineTransform, BoundingRect, Centroid}; +use crate::geometry::*; +use crate::CoordFloat; + +/// Rotate a geometry around a point by an angle, in degrees. +/// +/// Positive angles are counter-clockwise, and negative angles are clockwise rotations. +/// +/// ## Performance +/// +/// If you will be performing multiple transformations, like [`Scale`](crate::Scale), +/// [`Skew`](crate::Skew), [`Translate`](crate::Translate) or [`Rotate`], it is more +/// efficient to compose the transformations and apply them as a single operation using the +/// [`AffineOps`] trait. +pub trait Rotate { + /// The output type of the rotation operations + type Output; + + /// Rotate a geometry around its [centroid](Centroid) by an angle, in degrees + /// + /// Positive angles are counter-clockwise, and negative angles are clockwise rotations. + /// + /// # Examples + /// + /// ``` + /// use geo::Rotate; + /// use geo::line_string; + /// use approx::assert_relative_eq; + /// + /// let line_string = line_string![ + /// (x: 0.0, y: 0.0), + /// (x: 5.0, y: 5.0), + /// (x: 10.0, y: 10.0), + /// ]; + /// + /// let rotated = line_string.rotate_around_centroid(-45.0); + /// + /// let expected = line_string![ + /// (x: -2.071067811865475, y: 5.0), + /// (x: 5.0, y: 5.0), + /// (x: 12.071067811865476, y: 5.0), + /// ]; + /// + /// assert_relative_eq!(expected, rotated); + /// ``` + #[must_use] + fn rotate_around_centroid(&self, degrees: T) -> Self::Output; + + /// Rotate a geometry around the center of its [bounding box](BoundingRect) by an angle, in + /// degrees. + /// + /// Positive angles are counter-clockwise, and negative angles are clockwise rotations. + /// + #[must_use] + fn rotate_around_center(&self, degrees: T) -> Self::Output; + + /// Rotate a Geometry around an arbitrary point by an angle, given in degrees + /// + /// Positive angles are counter-clockwise, and negative angles are clockwise rotations. + /// + /// # Examples + /// + /// ``` + /// use geo::Rotate; + /// use geo::{line_string, point}; + /// + /// let ls = line_string![ + /// (x: 0.0, y: 0.0), + /// (x: 5.0, y: 5.0), + /// (x: 10.0, y: 10.0) + /// ]; + /// + /// let rotated = ls.rotate_around_point( + /// -45.0, + /// point!(x: 10.0, y: 0.0), + /// ); + /// + /// approx::assert_relative_eq!(rotated, line_string![ + /// (x: 2.9289321881345245, y: 7.071067811865475), + /// (x: 10.0, y: 7.0710678118654755), + /// (x: 17.071067811865476, y: 7.0710678118654755) + /// ]); + /// ``` + #[must_use] + fn rotate_around_point(&self, degrees: T, point: Point) -> Self::Output; +} + +/// Mutable version of the [`Rotate`] trait that applies rotations in place. +/// +/// Positive angles are counter-clockwise, and negative angles are clockwise rotations. +/// +/// ## Performance +/// +/// If you will be performing multiple transformations, like [`Scale`](crate::Scale), +/// [`Skew`](crate::Skew), [`Translate`](crate::Translate) or [`Rotate`], it is more +/// efficient to compose the transformations and apply them as a single operation using the +/// [`AffineOpsMut`] trait. +pub trait RotateMut { + /// Mutable version of [`Rotate::rotate_around_centroid`] + fn rotate_around_centroid_mut(&mut self, degrees: T); + + /// Mutable version of [`Rotate::rotate_around_center`] + fn rotate_around_center_mut(&mut self, degrees: T); + + /// Mutable version of [`Rotate::rotate_around_point`] + fn rotate_around_point_mut(&mut self, degrees: T, point: Point); +} + +impl Rotate for G +where + T: CoordFloat, + IP: Into>>, + IR: Into>>, + G: Clone + Centroid + BoundingRect + AffineOps, +{ + type Output = >::Output; + + fn rotate_around_centroid(&self, degrees: T) -> Self::Output { + let point = match self.centroid().into() { + Some(coord) => coord, + // geometry was empty, so there's nothing to rotate + None => return self.affine_transform(&AffineTransform::identity()), + }; + self.rotate_around_point(degrees, point) + } + + fn rotate_around_center(&self, degrees: T) -> Self::Output { + let point = match self.bounding_rect().into() { + Some(rect) => Point(rect.center()), + // geometry was empty, so there's nothing to rotate + None => return self.affine_transform(&AffineTransform::identity()), + }; + self.rotate_around_point(degrees, point) + } + + fn rotate_around_point(&self, degrees: T, point: Point) -> Self::Output { + let transform = AffineTransform::rotate(degrees, point); + self.affine_transform(&transform) + } +} + +impl RotateMut for G +where + T: CoordFloat, + IP: Into>>, + IR: Into>>, + G: Clone + Centroid + BoundingRect + AffineOpsMut, +{ + fn rotate_around_centroid_mut(&mut self, degrees: T) { + let point = match self.centroid().into() { + Some(coord) => coord, + // geometry was empty, so there's nothing to rotate + None => return, + }; + self.rotate_around_point_mut(degrees, point) + } + + fn rotate_around_center_mut(&mut self, degrees: T) { + let point = match self.bounding_rect().into() { + Some(rect) => Point(rect.center()), + // geometry was empty, so there's nothing to rotate + None => return, + }; + self.rotate_around_point_mut(degrees, point) + } + + fn rotate_around_point_mut(&mut self, degrees: T, point: Point) { + let transform = AffineTransform::rotate(degrees, point); + self.affine_transform_mut(&transform) + } +} + +#[cfg(test)] +mod test { + use crate::algorithm::Rotate; + use crate::geometry::*; + use crate::{line_string, point, polygon}; + use approx::assert_relative_eq; + + #[test] + fn test_rotate_around_point() { + let p = point!(x: 1.0, y: 5.0); + let rotated = p.rotate_around_centroid(30.0); + // results agree with Shapely / GEOS + assert_eq!(rotated, Point::new(1.0, 5.0)); + } + + #[test] + fn test_rotate_points() { + let point = point!(x: 1.0, y: 5.0); + let rotated_center = point.rotate_around_center(30.); + let rotated_centroid = point.rotate_around_centroid(30.); + + // results agree with Shapely / GEOS + // a rotated point should always equal itself + assert_eq!(point, rotated_center); + assert_eq!(point, rotated_centroid); + } + + #[test] + fn test_rotate_multipoints() { + let multi_points = MultiPoint::new(vec![ + point!(x: 0., y: 0.), + point!(x: 1., y: 1.), + point!(x: 2., y: 1.), + ]); + + // Results match shapely for `centroid` + let expected_for_centroid = MultiPoint::new(vec![ + point!(x: 0.7642977396044841, y: -0.5118446353109125), + point!(x: 0.7642977396044842, y: 0.9023689270621824), + point!(x: 1.471404520791032, y: 1.60947570824873), + ]); + assert_relative_eq!( + multi_points.rotate_around_centroid(45.), + expected_for_centroid + ); + + // Results match shapely for `center` + let expected_for_center = MultiPoint::new(vec![ + point!(x: 0.6464466094067262, y: -0.5606601717798212), + point!(x: 0.6464466094067263, y: 0.8535533905932737), + point!(x: 1.353553390593274, y: 1.560660171779821), + ]); + assert_relative_eq!( + multi_points.rotate_around_center(45.), + expected_for_center, + epsilon = 1e-15 + ); + } + + #[test] + fn test_rotate_linestring() { + let linestring = line_string![ + (x: 0.0, y: 0.0), + (x: 5.0, y: 5.0), + (x: 5.0, y: 10.0) + ]; + + // results agree with Shapely / GEOS for `centroid` + let rotated_around_centroid = linestring.rotate_around_centroid(-45.0); + assert_relative_eq!( + rotated_around_centroid, + line_string![ + (x: -2.196699141100894, y: 3.838834764831844), + (x: 4.874368670764582, y: 3.838834764831844), + (x: 8.40990257669732, y: 7.374368670764582) + ] + ); + + // results agree with Shapely / GEOS for `center` + let rotated_around_center = linestring.rotate_around_center(-45.0); + assert_relative_eq!( + rotated_around_center, + line_string![ + (x: -2.803300858899106, y: 3.232233047033631), + (x: 4.267766952966369, y: 3.232233047033632), + (x: 7.803300858899107, y: 6.767766952966369) + ], + epsilon = 1e-12 + ); + } + #[test] + fn test_rotate_polygon() { + let poly1 = polygon![ + (x: 5., y: 1.), + (x: 4., y: 2.), + (x: 4., y: 3.), + (x: 5., y: 4.), + (x: 6., y: 4.), + (x: 7., y: 3.), + (x: 7., y: 2.), + (x: 6., y: 1.), + (x: 5., y: 1.) + ]; + let rotated = poly1.rotate_around_centroid(-15.0); + let correct = polygon![ + (x: 4.6288085192016855, y: 1.1805207831176578), + (x: 3.921701738015137, y: 2.405265654509247), + (x: 4.180520783117659, y: 3.3711914807983154), + (x: 5.405265654509247, y: 4.0782982619848624), + (x: 6.371191480798316, y: 3.819479216882342), + (x: 7.0782982619848624, y: 2.594734345490753), + (x: 6.819479216882343, y: 1.6288085192016848), + (x: 5.594734345490753, y: 0.9217017380151372), + (x: 4.6288085192016855, y: 1.1805207831176578) + ]; + // results agree with Shapely / GEOS + assert_eq!(rotated, correct); + } + #[test] + fn test_rotate_polygon_holes() { + let poly1 = polygon![ + exterior: [ + (x: 5.0, y: 1.0), + (x: 4.0, y: 2.0), + (x: 4.0, y: 3.0), + (x: 5.0, y: 4.0), + (x: 6.0, y: 4.0), + (x: 7.0, y: 3.0), + (x: 7.0, y: 2.0), + (x: 6.0, y: 1.0), + (x: 5.0, y: 1.0) + ], + interiors: [ + [ + (x: 5.0, y: 1.3), + (x: 5.5, y: 2.0), + (x: 6.0, y: 1.3), + (x: 5.0, y: 1.3), + ], + [ + (x: 5., y: 2.3), + (x: 5.5, y: 3.0), + (x: 6., y: 2.3), + (x: 5., y: 2.3), + ], + ], + ]; + + // now rotate around center + let center_expected = polygon![ + exterior: [ + (x: 4.628808519201685, y: 1.180520783117658), + (x: 3.921701738015137, y: 2.405265654509247), + (x: 4.180520783117659, y: 3.371191480798315), + (x: 5.405265654509247, y: 4.078298261984862), + (x: 6.371191480798316, y: 3.819479216882342), + (x: 7.078298261984862, y: 2.594734345490753), + (x: 6.819479216882343, y: 1.628808519201685), + (x: 5.594734345490753, y: 0.9217017380151372), + (x: 4.628808519201685, y: 1.180520783117658), + ], + interiors: [ + [ + (x: 4.706454232732442, y: 1.470298531004379), + (x: 5.37059047744874, y: 2.017037086855466), + (x: 5.67238005902151, y: 1.211479485901858), + (x: 4.706454232732442, y: 1.470298531004379), + ], + [ + (x: 4.965273277834962, y: 2.436224357293447), + (x: 5.62940952255126, y: 2.982962913144534), + (x: 5.931199104124032, y: 2.177405312190926), + (x: 4.965273277834962, y: 2.436224357293447), + ], + ], + ]; + + let rotated_around_center = poly1.rotate_around_center(-15.); + + assert_relative_eq!(rotated_around_center, center_expected, epsilon = 1e-12); + + // now rotate around centroid + let centroid_expected = polygon![ + exterior: [ + (x: 4.615388272418591, y: 1.182287592124891), + (x: 3.908281491232044, y: 2.40703246351648), + (x: 4.167100536334565, y: 3.372958289805549), + (x: 5.391845407726153, y: 4.080065070992097), + (x: 6.357771234015222, y: 3.821246025889576), + (x: 7.064878015201769, y: 2.596501154497987), + (x: 6.806058970099248, y: 1.630575328208918), + (x: 5.58131409870766, y: 0.9234685470223708), + (x: 4.615388272418591, y: 1.182287592124891), + ], + interiors: [ + [ + (x: 4.693033985949348, y: 1.472065340011612), + (x: 5.357170230665646, y: 2.0188038958627), + (x: 5.658959812238415, y: 1.213246294909091), + (x: 4.693033985949348, y: 1.472065340011612), + ], + [ + (x: 4.951853031051868, y: 2.43799116630068), + (x: 5.615989275768166, y: 2.984729722151768), + (x: 5.917778857340937, y: 2.179172121198159), + (x: 4.951853031051868, y: 2.43799116630068), + ], + ], + ]; + let rotated_around_centroid = poly1.rotate_around_centroid(-15.); + assert_relative_eq!(rotated_around_centroid, centroid_expected, epsilon = 1e-12); + } + #[test] + fn test_rotate_around_point_arbitrary() { + let p = Point::new(5.0, 10.0); + let rotated = p.rotate_around_point(-45., Point::new(10., 34.)); + assert_relative_eq!( + rotated, + Point::new(-10.506096654409877, 20.564971157455595), + epsilon = 1e-14 + ); + } + #[test] + fn test_rotate_line() { + let line0 = Line::from([(0., 0.), (0., 2.)]); + let line1 = Line::from([(1., 1.), (-1., 1.)]); + assert_relative_eq!(line0.rotate_around_centroid(90.0), line1); + assert_relative_eq!(line0.rotate_around_center(90.0), line1); + } + + #[test] + fn test_rotate_multi_line_string() { + let ls1 = line_string![ + (x: 0., y: 0.), + (x: 1., y: 1.), + (x: 4., y: 1.), + ]; + let ls2 = line_string![ + (x: 10., y: 10.), + (x: 20., y: 20.), + (x: 40., y: 20.) + ]; + let multi_line_string: MultiLineString = MultiLineString::new(vec![ls1, ls2]); + + // Results match with Shapely for `centroid` + let expected_around_centroid = MultiLineString::new(vec![ + line_string![ + (x: -5.062519283392216, y: 19.72288595632566), + (x: -3.648305721019121, y: 19.72288595632566), + (x: -1.526985377459479, y: 17.60156561276602) + ], + line_string![ + (x: 9.079616340338735, y: 19.72288595632566), + (x: 23.22175196406969, y: 19.72288595632566), + (x: 37.36388758780063, y: 5.580750332594715) + ], + ]); + assert_relative_eq!( + multi_line_string.rotate_around_centroid(-45.), + expected_around_centroid, + epsilon = 1e-12 + ); + + // Results match with Shapely for `center` + let expected_around_center: MultiLineString = MultiLineString::new(vec![ + line_string![ + (x: -1.213203435596426, y: 17.07106781186548), + (x: 0.2010101267766693, y: 17.07106781186548), + (x: 2.322330470336312, y: 14.94974746830583), + ], + line_string![ + (x: 12.92893218813452, y: 17.07106781186548), + (x: 27.07106781186548, y: 17.07106781186548), + (x: 41.21320343559643, y: 2.928932188134528), + + ], + ]); + assert_relative_eq!( + multi_line_string.rotate_around_center(-45.), + expected_around_center, + epsilon = 1e-12 + ); + } + + #[test] + fn test_rotate_line_around_point() { + let line0 = Line::new(Point::new(0., 0.), Point::new(0., 2.)); + let line1 = Line::new(Point::new(0., 0.), Point::new(-2., 0.)); + assert_relative_eq!(line0.rotate_around_point(90., Point::new(0., 0.)), line1); + } + + #[test] + fn test_rotate_multipolygon_around_centroid() { + let multipolygon: MultiPolygon = vec![ + polygon![ + (x: 0., y: 0.), + (x: 10., y: 0.), + (x: 10., y: 10.), + (x: 0., y: 10.), + (x: 0., y: 0.), + ], + polygon![ + (x: 0., y: 0.), + (x: -10., y: 0.), + (x: -10., y: -10.), + (x: 0., y: -10.), + (x: 0., y: 0.), + ], + ] + .into(); + + let expected_centroid: MultiPolygon = vec![ + polygon![ + (x: 0., y: 0.), + (x: 7.0710678118654755, y: 7.071067811865475), + (x: 0., y: 14.142135623730951), + (x: -7.071067811865475, y: 7.0710678118654755), + (x: 0., y: 0.), + ], + polygon![ + (x: 0., y: 0.), + (x: -7.0710678118654755, y: -7.071067811865475), + (x: 0., y: -14.142135623730951), + (x: 7.071067811865475, y: -7.0710678118654755), + (x: 0., y: 0.), + ], + ] + .into(); + + // results agree with Shapely / GEOS + // (relaxing the epsilon a bit) + assert_relative_eq!( + multipolygon.rotate_around_centroid(45.), + expected_centroid, + epsilon = 1e-12 + ); + } + + #[test] + fn test_rotate_multipolygons() { + let multipolygon: MultiPolygon = vec![ + polygon![ + (x: 1., y: 1. ), + (x: 2., y: 1. ), + (x: 2., y: 10.), + (x: 1., y: 10.), + (x: 1., y: 1. ), + ], + polygon![ + (x: 10., y: 1.), + (x: 12., y: 1.), + (x: 12., y: 12.), + (x: 10., y: 12.), + (x: 10., y: 1.), + ], + ] + .into(); + + let expected_center: MultiPolygon = vec![ + polygon![ + (x: -0.2360967926537398, y: 2.610912703473988), + (x: 0.7298290336353284, y: 2.352093658371467), + (x: 3.059200439558015, y: 11.04542609497308), + (x: 2.093274613268947, y: 11.3042451400756), + (x: -0.2360967926537398, y: 2.610912703473988), + ], + polygon![ + (x: 8.457235643947875, y: 0.2815412975513012), + (x: 10.38908729652601, y: -0.2360967926537403), + (x: 13.23609679265374, y: 10.38908729652601), + (x: 11.3042451400756, y: 10.90672538673105), + (x: 8.457235643947875, y: 0.2815412975513012), + ], + ] + .into(); + + let expected_centroid: MultiPolygon = vec![ + polygon![ + (x: -0.1016007672888048, y: 3.05186627999456), + (x: 0.8643250590002634, y: 2.793047234892039), + (x: 3.19369646492295, y: 11.48637967149365), + (x: 2.227770638633882, y: 11.74519871659617), + (x: -0.1016007672888048, y: 3.05186627999456), + ], + polygon![ + (x: 8.59173166931281, y: 0.7224948740718733), + (x: 10.52358332189095, y: 0.2048567838668318), + (x: 13.37059281801868, y: 10.83004087304658), + (x: 11.43874116544054, y: 11.34767896325162), + (x: 8.59173166931281, y: 0.7224948740718733), + ], + ] + .into(); + + // results agree with Shapely / GEOS + assert_relative_eq!( + multipolygon.rotate_around_center(-15.), + expected_center, + epsilon = 1e-12 + ); + assert_relative_eq!( + multipolygon.rotate_around_centroid(-15.), + expected_centroid, + epsilon = 1e-12 + ); + } + + #[test] + fn test_rotate_empty_geometries_error_gracefully() { + // line string + let empty_linestring: LineString = line_string![]; + let rotated_empty_linestring = empty_linestring.rotate_around_centroid(90.); + assert_eq!(empty_linestring, rotated_empty_linestring); + + // multi line string + let empty_multilinestring: MultiLineString = MultiLineString::new(vec![]); + let rotated_empty_multilinestring = empty_multilinestring.rotate_around_centroid(90.); + assert_eq!(empty_multilinestring, rotated_empty_multilinestring); + + // polygon + let empty_polygon: Polygon = polygon![]; + let rotated_empty_polygon = empty_polygon.rotate_around_centroid(90.); + assert_eq!(empty_polygon, rotated_empty_polygon); + + // multi polygon + let empty_multipolygon: MultiPolygon = Vec::>::new().into(); + let rotated_empty_multipolygon = empty_multipolygon.rotate_around_centroid(90.); + assert_eq!(empty_multipolygon, rotated_empty_multipolygon); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/scale.rs b/rust/geo-generic-alg/src/algorithm/scale.rs new file mode 100644 index 00000000..a5e25f85 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/scale.rs @@ -0,0 +1,163 @@ +use crate::algorithm::affine_ops::AffineOpsMut; +use crate::{AffineOps, AffineTransform, BoundingRect, Coord, CoordFloat, CoordNum, Rect}; + +/// An affine transformation which scales a geometry up or down by a factor. +/// +/// ## Performance +/// +/// If you will be performing multiple transformations, like [`Scale`], +/// [`Skew`](crate::Skew), [`Translate`](crate::Translate), or [`Rotate`](crate::Rotate), it is more +/// efficient to compose the transformations and apply them as a single operation using the +/// [`AffineOps`] trait. +pub trait Scale { + /// The output type of the scaling operations + type Output; + + /// Scale a geometry from it's bounding box center. + /// + /// # Examples + /// + /// ``` + /// use geo::Scale; + /// use geo::{LineString, line_string}; + /// + /// let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)]; + /// + /// let scaled = ls.scale(2.); + /// + /// assert_eq!(scaled, line_string![ + /// (x: -5., y: -5.), + /// (x: 15., y: 15.) + /// ]); + /// ``` + #[must_use] + fn scale(&self, scale_factor: T) -> Self::Output; + + /// Scale a geometry from it's bounding box center, using different values for `x_factor` and + /// `y_factor` to distort the geometry's [aspect ratio](https://en.wikipedia.org/wiki/Aspect_ratio). + /// + /// # Examples + /// + /// ``` + /// use geo::Scale; + /// use geo::{LineString, line_string}; + /// + /// let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)]; + /// + /// let scaled = ls.scale_xy(2., 4.); + /// + /// assert_eq!(scaled, line_string![ + /// (x: -5., y: -15.), + /// (x: 15., y: 25.) + /// ]); + /// ``` + #[must_use] + fn scale_xy(&self, x_factor: T, y_factor: T) -> Self::Output; + + /// Scale a geometry around a point of `origin`. + /// + /// The point of origin is *usually* given as the 2D bounding box centre of the geometry, in + /// which case you can just use [`scale`](Self::scale) or [`scale_xy`](Self::scale_xy), but + /// this method allows you to specify any point. + /// + /// # Examples + /// + /// ``` + /// use geo::Scale; + /// use geo::{LineString, line_string, Coord}; + /// + /// let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)]; + /// + /// let scaled = ls.scale_around_point(2., 4., Coord { x: 100., y: 100. }); + /// + /// assert_eq!(scaled, line_string![ + /// (x: -100., y: -300.), + /// (x: -80., y: -260.) + /// ]); + /// ``` + #[must_use] + fn scale_around_point( + &self, + x_factor: T, + y_factor: T, + origin: impl Into>, + ) -> Self::Output; +} + +/// Mutable version of the [`Scale`] trait that applies scaling in place. +/// +/// ## Performance +/// +/// If you will be performing multiple transformations, like [`Scale`], +/// [`Skew`](crate::Skew), [`Translate`](crate::Translate), or [`Rotate`](crate::Rotate), it is more +/// efficient to compose the transformations and apply them as a single operation using the +/// [`AffineOpsMut`] trait. +pub trait ScaleMut { + /// Mutable version of [`Scale::scale`]. + fn scale_mut(&mut self, scale_factor: T); + + /// Mutable version of [`Scale::scale_xy`]. + fn scale_xy_mut(&mut self, x_factor: T, y_factor: T); + + /// Mutable version of [`Scale::scale_around_point`]. + fn scale_around_point_mut(&mut self, x_factor: T, y_factor: T, origin: impl Into>); +} + +impl Scale for G +where + T: CoordFloat, + IR: Into>>, + G: Clone + AffineOps + BoundingRect, +{ + type Output = >::Output; + + fn scale(&self, scale_factor: T) -> Self::Output { + self.scale_xy(scale_factor, scale_factor) + } + + fn scale_xy(&self, x_factor: T, y_factor: T) -> Self::Output { + let origin = match self.bounding_rect().into() { + Some(rect) => rect.center(), + // Empty geometries have no bounding rect, but in that case + // transforming is a no-op anyway. + None => return self.affine_transform(&AffineTransform::identity()), + }; + self.scale_around_point(x_factor, y_factor, origin) + } + + fn scale_around_point( + &self, + x_factor: T, + y_factor: T, + origin: impl Into>, + ) -> Self::Output { + let affineop = AffineTransform::scale(x_factor, y_factor, origin); + self.affine_transform(&affineop) + } +} + +impl ScaleMut for G +where + T: CoordFloat, + IR: Into>>, + G: Clone + AffineOpsMut + BoundingRect, +{ + fn scale_mut(&mut self, scale_factor: T) { + self.scale_xy_mut(scale_factor, scale_factor); + } + + fn scale_xy_mut(&mut self, x_factor: T, y_factor: T) { + let origin = match self.bounding_rect().into() { + Some(rect) => rect.center(), + // Empty geometries have no bounding rect, but in that case + // transforming is a no-op anyway. + None => return, + }; + self.scale_around_point_mut(x_factor, y_factor, origin); + } + + fn scale_around_point_mut(&mut self, x_factor: T, y_factor: T, origin: impl Into>) { + let affineop = AffineTransform::scale(x_factor, y_factor, origin); + self.affine_transform_mut(&affineop) + } +} diff --git a/rust/geo-generic-alg/src/algorithm/simplify.rs b/rust/geo-generic-alg/src/algorithm/simplify.rs new file mode 100644 index 00000000..ce09d825 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/simplify.rs @@ -0,0 +1,582 @@ +use crate::geometry::{Coord, Line, LineString, MultiLineString, MultiPolygon, Polygon}; +use crate::{DistanceExt, GeoFloat}; +use geo_traits_ext::*; + +const LINE_STRING_INITIAL_MIN: usize = 2; +const POLYGON_INITIAL_MIN: usize = 4; + +// Because the RDP algorithm is recursive, we can't assign an index to a point inside the loop +// instead, we wrap a simple struct around index and point in a wrapper function, +// passing that around instead, extracting either points or indices on the way back out +#[derive(Copy, Clone)] +struct RdpIndex +where + T: GeoFloat, +{ + index: usize, + coord: Coord, +} + +// Wrapper for the RDP algorithm, returning simplified points +fn rdp>, const INITIAL_MIN: usize>( + coords: I, + epsilon: T, +) -> Vec> +where + T: GeoFloat, +{ + // Epsilon must be greater than zero for any meaningful simplification to happen + if epsilon <= T::zero() { + return coords.collect::>>(); + } + let rdp_indices = &coords + .enumerate() + .map(|(idx, coord)| RdpIndex { index: idx, coord }) + .collect::>>(); + let mut simplified_len = rdp_indices.len(); + let simplified_coords: Vec<_> = + compute_rdp::(rdp_indices, &mut simplified_len, epsilon) + .into_iter() + .map(|rdpindex| rdpindex.coord) + .collect(); + debug_assert_eq!(simplified_coords.len(), simplified_len); + simplified_coords +} + +// Wrapper for the RDP algorithm, returning simplified point indices +fn calculate_rdp_indices( + rdp_indices: &[RdpIndex], + epsilon: T, +) -> Vec +where + T: GeoFloat, +{ + if epsilon <= T::zero() { + return rdp_indices + .iter() + .map(|rdp_index| rdp_index.index) + .collect(); + } + + let mut simplified_len = rdp_indices.len(); + let simplified_coords = + compute_rdp::(rdp_indices, &mut simplified_len, epsilon) + .into_iter() + .map(|rdpindex| rdpindex.index) + .collect::>(); + debug_assert_eq!(simplified_len, simplified_coords.len()); + simplified_coords +} + +// Ramer–Douglas-Peucker line simplification algorithm +// This function returns both the retained points, and their indices in the original geometry, +// for more flexible use by FFI implementers +fn compute_rdp( + rdp_indices: &[RdpIndex], + simplified_len: &mut usize, + epsilon: T, +) -> Vec> +where + T: GeoFloat, +{ + if rdp_indices.is_empty() { + return vec![]; + } + + let first = rdp_indices[0]; + let last = rdp_indices[rdp_indices.len() - 1]; + if rdp_indices.len() == 2 { + return vec![first, last]; + } + + let first_last_line = Line::new(first.coord, last.coord); + + // Find the farthest `RdpIndex` from `first_last_line` + let (farthest_index, farthest_distance) = rdp_indices + .iter() + .enumerate() + .take(rdp_indices.len() - 1) // Don't include the last index + .skip(1) // Don't include the first index + .map(|(index, rdp_index)| { + let dist = rdp_index.coord.distance_ext(&first_last_line); + (index, dist) + }) + .fold( + (0usize, T::zero()), + |(farthest_index, farthest_distance), (index, distance)| { + if distance >= farthest_distance { + (index, distance) + } else { + (farthest_index, farthest_distance) + } + }, + ); + debug_assert_ne!(farthest_index, 0); + + if farthest_distance > epsilon { + // The farthest index was larger than epsilon, so we will recursively simplify subsegments + // split by the farthest index. + let mut intermediate = + compute_rdp::(&rdp_indices[..=farthest_index], simplified_len, epsilon); + + intermediate.pop(); // Don't include the farthest index twice + + intermediate.extend_from_slice(&compute_rdp::( + &rdp_indices[farthest_index..], + simplified_len, + epsilon, + )); + return intermediate; + } + + // The farthest index was less than or equal to epsilon, so we will retain only the first + // and last indices, resulting in the indices inbetween getting culled. + + // Update `simplified_len` to reflect the new number of indices by subtracting the number + // of indices we're culling. + let number_culled = rdp_indices.len() - 2; + let new_length = *simplified_len - number_culled; + + // If `simplified_len` is now lower than the minimum number of indices needed, then don't + // perform the culling and return the original input. + if new_length < INITIAL_MIN { + return rdp_indices.to_owned(); + } + *simplified_len = new_length; + + // Cull indices between `first` and `last`. + vec![first, last] +} + +/// Simplifies a geometry. +/// +/// The [Ramer–Douglas–Peucker +/// algorithm](https://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm) simplifies a +/// linestring. Polygons are simplified by running the RDP algorithm on all their constituent +/// rings. This may result in invalid Polygons, and has no guarantee of preserving topology. +/// +/// Multi* objects are simplified by simplifying all their constituent geometries individually. +/// +/// A larger `epsilon` means being more aggressive about removing points with less concern for +/// maintaining the existing shape. +/// +/// Specifically, points closer than `epsilon` distance from the simplified output may be +/// discarded. +/// +/// An `epsilon` less than or equal to zero will return an unaltered version of the geometry. +pub trait Simplify { + type Output; + + /// Returns the simplified representation of a geometry, using the [Ramer–Douglas–Peucker](https://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm) algorithm + /// + /// # Examples + /// + /// ``` + /// use geo::Simplify; + /// use geo::line_string; + /// + /// let line_string = line_string![ + /// (x: 0.0, y: 0.0), + /// (x: 5.0, y: 4.0), + /// (x: 11.0, y: 5.5), + /// (x: 17.3, y: 3.2), + /// (x: 27.8, y: 0.1), + /// ]; + /// + /// let simplified = line_string.simplify(1.0); + /// + /// let expected = line_string![ + /// (x: 0.0, y: 0.0), + /// (x: 5.0, y: 4.0), + /// (x: 11.0, y: 5.5), + /// (x: 27.8, y: 0.1), + /// ]; + /// + /// assert_eq!(expected, simplified) + /// ``` + fn simplify(&self, epsilon: T) -> Self::Output + where + T: GeoFloat; +} + +/// Simplifies a geometry, returning the retained _indices_ of the input. +/// +/// This operation uses the [Ramer–Douglas–Peucker algorithm](https://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm) +/// and does not guarantee that the returned geometry is valid. +/// +/// A larger `epsilon` means being more aggressive about removing points with less concern for +/// maintaining the existing shape. +/// +/// Specifically, points closer than `epsilon` distance from the simplified output may be +/// discarded. +/// +/// An `epsilon` less than or equal to zero will return an unaltered version of the geometry. +pub trait SimplifyIdx { + /// Returns the simplified indices of a geometry, using the [Ramer–Douglas–Peucker](https://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm) algorithm + /// + /// # Examples + /// + /// ``` + /// use geo::SimplifyIdx; + /// use geo::line_string; + /// + /// let line_string = line_string![ + /// (x: 0.0, y: 0.0), + /// (x: 5.0, y: 4.0), + /// (x: 11.0, y: 5.5), + /// (x: 17.3, y: 3.2), + /// (x: 27.8, y: 0.1), + /// ]; + /// + /// let simplified = line_string.simplify_idx(1.0); + /// + /// let expected = vec![ + /// 0_usize, + /// 1_usize, + /// 2_usize, + /// 4_usize, + /// ]; + /// + /// assert_eq!(expected, simplified); + /// ``` + fn simplify_idx(&self, epsilon: T) -> Vec + where + T: GeoFloat; +} + +impl Simplify for G +where + T: GeoFloat, + G: GeoTraitExtWithTypeTag + SimplifyTrait, +{ + type Output = >::Output; + + fn simplify(&self, epsilon: T) -> Self::Output { + self.simplify_trait(epsilon) + } +} + +impl SimplifyIdx for G +where + T: GeoFloat, + G: GeoTraitExtWithTypeTag + SimplifyIdxTrait, +{ + fn simplify_idx(&self, epsilon: T) -> Vec { + self.simplify_idx_trait(epsilon) + } +} + +pub trait SimplifyTrait +where + T: GeoFloat, +{ + type Output; + fn simplify_trait(&self, epsilon: T) -> Self::Output; +} + +pub trait SimplifyIdxTrait +where + T: GeoFloat, +{ + fn simplify_idx_trait(&self, epsilon: T) -> Vec; +} + +impl SimplifyTrait for LS +where + T: GeoFloat, + LS: LineStringTraitExt, +{ + type Output = LineString; + + fn simplify_trait(&self, epsilon: T) -> Self::Output { + LineString::from(rdp::<_, _, LINE_STRING_INITIAL_MIN>( + self.coord_iter(), + epsilon, + )) + } +} + +impl SimplifyIdxTrait for LS +where + T: GeoFloat, + LS: LineStringTraitExt, +{ + fn simplify_idx_trait(&self, epsilon: T) -> Vec { + calculate_rdp_indices::<_, LINE_STRING_INITIAL_MIN>( + &self + .coord_iter() + .enumerate() + .map(|(idx, coord)| RdpIndex { index: idx, coord }) + .collect::>>(), + epsilon, + ) + } +} + +impl SimplifyTrait for MLS +where + T: GeoFloat, + MLS: MultiLineStringTraitExt, +{ + type Output = MultiLineString; + + fn simplify_trait(&self, epsilon: T) -> Self::Output { + let simplified_lines: Vec> = self + .line_strings_ext() + .map(|l| l.simplify_trait(epsilon)) + .collect(); + + MultiLineString::new(simplified_lines) + } +} + +impl SimplifyTrait for P +where + T: GeoFloat, + P: PolygonTraitExt, +{ + type Output = Polygon; + + fn simplify_trait(&self, epsilon: T) -> Self::Output { + if let Some(exterior) = self.exterior_ext() { + let simplified_exterior = LineString::from(rdp::<_, _, POLYGON_INITIAL_MIN>( + exterior.coord_iter(), + epsilon, + )); + + let simplified_interiors: Vec> = self + .interiors_ext() + .map(|interior| { + LineString::from(rdp::<_, _, POLYGON_INITIAL_MIN>( + interior.coord_iter(), + epsilon, + )) + }) + .collect(); + + Polygon::new(simplified_exterior, simplified_interiors) + } else { + // Create an empty polygon + Polygon::new(LineString::new(vec![]), vec![]) + } + } +} + +impl SimplifyTrait for MP +where + T: GeoFloat, + MP: MultiPolygonTraitExt, +{ + type Output = MultiPolygon; + + fn simplify_trait(&self, epsilon: T) -> Self::Output { + MultiPolygon::new( + self.polygons_ext() + .map(|p| p.simplify_trait(epsilon)) + .collect(), + ) + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::{coord, line_string, polygon}; + + #[test] + fn recursion_test() { + let input = [ + coord! { x: 8.0, y: 100.0 }, + coord! { x: 9.0, y: 100.0 }, + coord! { x: 12.0, y: 100.0 }, + ]; + let actual = rdp::<_, _, 2>(input.into_iter(), 1.0); + let expected = [coord! { x: 8.0, y: 100.0 }, coord! { x: 12.0, y: 100.0 }]; + assert_eq!(actual, expected); + } + + #[test] + fn rdp_test() { + let vec = vec![ + coord! { x: 0.0, y: 0.0 }, + coord! { x: 5.0, y: 4.0 }, + coord! { x: 11.0, y: 5.5 }, + coord! { x: 17.3, y: 3.2 }, + coord! { x: 27.8, y: 0.1 }, + ]; + let compare = vec![ + coord! { x: 0.0, y: 0.0 }, + coord! { x: 5.0, y: 4.0 }, + coord! { x: 11.0, y: 5.5 }, + coord! { x: 27.8, y: 0.1 }, + ]; + let simplified = rdp::<_, _, 2>(vec.into_iter(), 1.0); + assert_eq!(simplified, compare); + } + #[test] + fn rdp_test_empty_linestring() { + let vec = Vec::new(); + let compare = Vec::new(); + let simplified = rdp::<_, _, 2>(vec.into_iter(), 1.0); + assert_eq!(simplified, compare); + } + #[test] + fn rdp_test_two_point_linestring() { + let vec = vec![coord! { x: 0.0, y: 0.0 }, coord! { x: 27.8, y: 0.1 }]; + let compare = vec![coord! { x: 0.0, y: 0.0 }, coord! { x: 27.8, y: 0.1 }]; + let simplified = rdp::<_, _, 2>(vec.into_iter(), 1.0); + assert_eq!(simplified, compare); + } + + #[test] + fn multilinestring() { + let mline = MultiLineString::new(vec![LineString::from(vec![ + (0.0, 0.0), + (5.0, 4.0), + (11.0, 5.5), + (17.3, 3.2), + (27.8, 0.1), + ])]); + + let mline2 = mline.simplify(1.0); + + assert_eq!( + mline2, + MultiLineString::new(vec![LineString::from(vec![ + (0.0, 0.0), + (5.0, 4.0), + (11.0, 5.5), + (27.8, 0.1), + ])]) + ); + } + + #[test] + fn polygon() { + let poly = polygon![ + (x: 0., y: 0.), + (x: 0., y: 10.), + (x: 5., y: 11.), + (x: 10., y: 10.), + (x: 10., y: 0.), + (x: 0., y: 0.), + ]; + + let poly2 = poly.simplify(2.); + + assert_eq!( + poly2, + polygon![ + (x: 0., y: 0.), + (x: 0., y: 10.), + (x: 10., y: 10.), + (x: 10., y: 0.), + (x: 0., y: 0.), + ], + ); + } + + #[test] + fn multipolygon() { + let mpoly = MultiPolygon::new(vec![polygon![ + (x: 0., y: 0.), + (x: 0., y: 10.), + (x: 5., y: 11.), + (x: 10., y: 10.), + (x: 10., y: 0.), + (x: 0., y: 0.), + ]]); + + let mpoly2 = mpoly.simplify(2.); + + assert_eq!( + mpoly2, + MultiPolygon::new(vec![polygon![ + (x: 0., y: 0.), + (x: 0., y: 10.), + (x: 10., y: 10.), + (x: 10., y: 0.), + (x: 0., y: 0.) + ]]), + ); + } + + #[test] + fn simplify_negative_epsilon() { + let ls = line_string![ + (x: 0., y: 0.), + (x: 0., y: 10.), + (x: 5., y: 11.), + (x: 10., y: 10.), + (x: 10., y: 0.), + ]; + let simplified = ls.simplify(-1.0); + assert_eq!(ls, simplified); + } + + #[test] + fn simplify_idx_negative_epsilon() { + let ls = line_string![ + (x: 0., y: 0.), + (x: 0., y: 10.), + (x: 5., y: 11.), + (x: 10., y: 10.), + (x: 10., y: 0.), + ]; + let indices = ls.simplify_idx(-1.0); + assert_eq!(vec![0usize, 1, 2, 3, 4], indices); + } + + // https://github.com/georust/geo/issues/142 + #[test] + fn simplify_line_string_polygon_initial_min() { + let ls = line_string![ + ( x: 1.4324054e-16, y: 1.4324054e-16 ), + ( x: 1.4324054e-16, y: 1.4324054e-16 ), + ( x: -5.9730447e26, y: 1.5590374e-27 ), + ( x: 1.4324054e-16, y: 1.4324054e-16 ), + ]; + let epsilon: f64 = 3.46e-43; + + // LineString result should be three coordinates + let result = ls.simplify(epsilon); + assert_eq!( + line_string![ + ( x: 1.4324054e-16, y: 1.4324054e-16 ), + ( x: -5.9730447e26, y: 1.5590374e-27 ), + ( x: 1.4324054e-16, y: 1.4324054e-16 ), + ], + result + ); + + // Polygon result should be five coordinates + let result = Polygon::new(ls, vec![]).simplify(epsilon); + assert_eq!( + polygon![ + ( x: 1.4324054e-16, y: 1.4324054e-16 ), + ( x: 1.4324054e-16, y: 1.4324054e-16 ), + ( x: -5.9730447e26, y: 1.5590374e-27 ), + ( x: 1.4324054e-16, y: 1.4324054e-16 ), + ], + result, + ); + } + + // https://github.com/georust/geo/issues/995 + #[test] + fn dont_oversimplify() { + let unsimplified = line_string![ + (x: 0.0, y: 0.0), + (x: 5.0, y: 4.0), + (x: 11.0, y: 5.5), + (x: 17.3, y: 3.2), + (x: 27.8, y: 0.1) + ]; + let actual = unsimplified.simplify(30.0); + let expected = line_string![ + (x: 0.0, y: 0.0), + (x: 27.8, y: 0.1) + ]; + assert_eq!(actual, expected); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/skew.rs b/rust/geo-generic-alg/src/algorithm/skew.rs new file mode 100644 index 00000000..d42fa9b6 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/skew.rs @@ -0,0 +1,208 @@ +use crate::algorithm::affine_ops::AffineOpsMut; +use crate::{AffineOps, AffineTransform, BoundingRect, Coord, CoordFloat, CoordNum, Rect}; + +/// An affine transformation which skews a geometry, sheared by angles along x and y dimensions. +/// +/// ## Performance +/// +/// If you will be performing multiple transformations, like [`Scale`](crate::Scale), +/// [`Skew`], [`Translate`](crate::Translate), or [`Rotate`](crate::Rotate), it is more +/// efficient to compose the transformations and apply them as a single operation using the +/// [`AffineOps`] trait. +/// +pub trait Skew { + /// The output type of the skewing operations + type Output; + + /// An affine transformation which skews a geometry, sheared by a uniform angle along the x and + /// y dimensions. + /// + /// # Examples + /// + /// ``` + /// use geo::Skew; + /// use geo::{Polygon, polygon}; + /// + /// let square: Polygon = polygon![ + /// (x: 0., y: 0.), + /// (x: 10., y: 0.), + /// (x: 10., y: 10.), + /// (x: 0., y: 10.) + /// ]; + /// + /// let skewed = square.skew(30.); + /// + /// let expected_output: Polygon = polygon![ + /// (x: -2.89, y: -2.89), + /// (x: 7.11, y: 2.89), + /// (x: 12.89, y: 12.89), + /// (x: 2.89, y: 7.11) + /// ]; + /// approx::assert_relative_eq!(skewed, expected_output, epsilon = 1e-2); + /// ``` + #[must_use] + fn skew(&self, degrees: T) -> Self::Output; + + /// An affine transformation which skews a geometry, sheared by an angle along the x and y dimensions. + /// + /// # Examples + /// + /// ``` + /// use geo::Skew; + /// use geo::{Polygon, polygon}; + /// + /// let square: Polygon = polygon![ + /// (x: 0., y: 0.), + /// (x: 10., y: 0.), + /// (x: 10., y: 10.), + /// (x: 0., y: 10.) + /// ]; + /// + /// let skewed = square.skew_xy(30., 12.); + /// + /// let expected_output: Polygon = polygon![ + /// (x: -2.89, y: -1.06), + /// (x: 7.11, y: 1.06), + /// (x: 12.89, y: 11.06), + /// (x: 2.89, y: 8.94) + /// ]; + /// approx::assert_relative_eq!(skewed, expected_output, epsilon = 1e-2); + /// ``` + #[must_use] + fn skew_xy(&self, degrees_x: T, degrees_y: T) -> Self::Output; + + /// An affine transformation which skews a geometry around a point of `origin`, sheared by an + /// angle along the x and y dimensions. + /// + /// The point of origin is *usually* given as the 2D bounding box centre of the geometry, in + /// which case you can just use [`skew`](Self::skew) or [`skew_xy`](Self::skew_xy), but this method allows you + /// to specify any point. + /// + /// # Examples + /// + /// ``` + /// use geo::Skew; + /// use geo::{Polygon, polygon, point}; + /// + /// let square: Polygon = polygon![ + /// (x: 0., y: 0.), + /// (x: 10., y: 0.), + /// (x: 10., y: 10.), + /// (x: 0., y: 10.) + /// ]; + /// + /// let origin = point! { x: 2., y: 2. }; + /// let skewed = square.skew_around_point(45.0, 10.0, origin); + /// + /// let expected_output: Polygon = polygon![ + /// (x: -2., y: -0.353), + /// (x: 8., y: 1.410), + /// (x: 18., y: 11.41), + /// (x: 8., y: 9.647) + /// ]; + /// approx::assert_relative_eq!(skewed, expected_output, epsilon = 1e-2); + /// ``` + #[must_use] + fn skew_around_point( + &self, + degrees_x: T, + degrees_y: T, + origin: impl Into>, + ) -> Self::Output; +} + +/// Mutable version of the [`Skew`] trait that applies skewing in place. +/// +/// ## Performance +/// +/// If you will be performing multiple transformations, like [`Scale`](crate::Scale), +/// [`Skew`], [`Translate`](crate::Translate), or [`Rotate`](crate::Rotate), it is more +/// efficient to compose the transformations and apply them as a single operation using the +/// [`AffineOpsMut`] trait. +pub trait SkewMut { + /// Mutable version of [`Skew::skew`]. + fn skew_mut(&mut self, degrees: T); + + /// Mutable version of [`Skew::skew_xy`]. + fn skew_xy_mut(&mut self, degrees_x: T, degrees_y: T); + + /// Mutable version of [`Skew::skew_around_point`]. + fn skew_around_point_mut(&mut self, degrees_x: T, degrees_y: T, origin: impl Into>); +} + +impl Skew for G +where + T: CoordFloat, + IR: Into>>, + G: Clone + AffineOps + BoundingRect, +{ + type Output = >::Output; + + fn skew(&self, degrees: T) -> Self::Output { + self.skew_xy(degrees, degrees) + } + + fn skew_xy(&self, degrees_x: T, degrees_y: T) -> Self::Output { + let origin = match self.bounding_rect().into() { + Some(rect) => rect.center(), + // Empty geometries have no bounding rect, but in that case + // transforming is a no-op anyway. + None => return self.affine_transform(&AffineTransform::identity()), + }; + self.skew_around_point(degrees_x, degrees_y, origin) + } + + fn skew_around_point(&self, xs: T, ys: T, origin: impl Into>) -> Self::Output { + let transform = AffineTransform::skew(xs, ys, origin); + self.affine_transform(&transform) + } +} + +impl SkewMut for G +where + T: CoordFloat, + IR: Into>>, + G: Clone + AffineOpsMut + BoundingRect, +{ + fn skew_mut(&mut self, degrees: T) { + self.skew_xy_mut(degrees, degrees); + } + + fn skew_xy_mut(&mut self, degrees_x: T, degrees_y: T) { + let origin = match self.bounding_rect().into() { + Some(rect) => rect.center(), + // Empty geometries have no bounding rect, but in that case + // transforming is a no-op anyway. + None => return, + }; + self.skew_around_point_mut(degrees_x, degrees_y, origin); + } + + fn skew_around_point_mut(&mut self, xs: T, ys: T, origin: impl Into>) { + let transform = AffineTransform::skew(xs, ys, origin); + AffineOpsMut::affine_transform_mut(self, &transform); + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::{line_string, BoundingRect, Centroid, LineString}; + + #[test] + fn skew_linestring() { + let ls: LineString = line_string![ + (x: 3.0, y: 0.0), + (x: 3.0, y: 10.0), + ]; + let origin = ls.bounding_rect().unwrap().centroid(); + let sheared = ls.skew_around_point(45.0, 45.0, origin); + assert_eq!( + sheared, + line_string![ + (x: -1.9999999999999991, y: 0.0), + (x: 7.999999999999999, y: 10.0) + ] + ); + } +} diff --git a/rust/geo-generic-alg/src/algorithm/translate.rs b/rust/geo-generic-alg/src/algorithm/translate.rs new file mode 100644 index 00000000..13d93144 --- /dev/null +++ b/rust/geo-generic-alg/src/algorithm/translate.rs @@ -0,0 +1,178 @@ +use crate::algorithm::affine_ops::AffineOpsMut; +use crate::{AffineOps, AffineTransform, CoordNum}; + +pub trait Translate { + /// The output type of the translation operations + type Output; + + /// Translate a Geometry along its axes by the given offsets + /// + /// ## Performance + /// + /// If you will be performing multiple transformations, like [`Scale`](crate::Scale), + /// [`Skew`](crate::Skew), [`Translate`], or [`Rotate`](crate::Rotate), it is more + /// efficient to compose the transformations and apply them as a single operation using the + /// [`AffineOps`] trait. + /// + /// # Examples + /// + /// ``` + /// use geo::Translate; + /// use geo::line_string; + /// + /// let ls = line_string![ + /// (x: 0.0, y: 0.0), + /// (x: 5.0, y: 5.0), + /// (x: 10.0, y: 10.0), + /// ]; + /// + /// let translated = ls.translate(1.5, 3.5); + /// + /// assert_eq!(translated, line_string![ + /// (x: 1.5, y: 3.5), + /// (x: 6.5, y: 8.5), + /// (x: 11.5, y: 13.5), + /// ]); + /// ``` + #[must_use] + fn translate(&self, x_offset: T, y_offset: T) -> Self::Output; +} + +/// Mutable version of the [`Translate`] trait that applies translations in place. +/// +/// ## Performance +/// +/// If you will be performing multiple transformations, like [`Scale`](crate::Scale), +/// [`Skew`](crate::Skew), [`Translate`], or [`Rotate`](crate::Rotate), it is more +/// efficient to compose the transformations and apply them as a single operation using the +/// [`AffineOpsMut`] trait. +pub trait TranslateMut { + /// Translate a Geometry along its axes, but in place. + fn translate_mut(&mut self, x_offset: T, y_offset: T); +} + +impl Translate for G +where + T: CoordNum, + G: AffineOps, +{ + type Output = >::Output; + + fn translate(&self, x_offset: T, y_offset: T) -> Self::Output { + let transform = AffineTransform::translate(x_offset, y_offset); + self.affine_transform(&transform) + } +} + +impl TranslateMut for G +where + T: CoordNum, + G: AffineOpsMut, +{ + fn translate_mut(&mut self, x_offset: T, y_offset: T) { + let transform = AffineTransform::translate(x_offset, y_offset); + self.affine_transform_mut(&transform) + } +} + +#[cfg(test)] +mod test { + use super::*; + use crate::{line_string, point, polygon, Coord, LineString, Polygon}; + + #[test] + fn test_translate_point() { + let p = point!(x: 1.0, y: 5.0); + let translated = p.translate(30.0, 20.0); + assert_eq!(translated, point!(x: 31.0, y: 25.0)); + } + #[test] + fn test_translate_point_in_place() { + let mut p = point!(x: 1.0, y: 5.0); + p.translate_mut(30.0, 20.0); + assert_eq!(p, point!(x: 31.0, y: 25.0)); + } + #[test] + fn test_translate_linestring() { + let linestring = line_string![ + (x: 0.0, y: 0.0), + (x: 5.0, y: 1.0), + (x: 10.0, y: 0.0), + ]; + let translated = linestring.translate(17.0, 18.0); + assert_eq!( + translated, + line_string![ + (x: 17.0, y: 18.0), + (x: 22.0, y: 19.0), + (x: 27., y: 18.), + ] + ); + } + #[test] + fn test_translate_polygon() { + let poly1 = polygon![ + (x: 5., y: 1.), + (x: 4., y: 2.), + (x: 4., y: 3.), + (x: 5., y: 4.), + (x: 6., y: 4.), + (x: 7., y: 3.), + (x: 7., y: 2.), + (x: 6., y: 1.), + (x: 5., y: 1.), + ]; + let translated = poly1.translate(17.0, 18.0); + let correct = polygon![ + (x: 22.0, y: 19.0), + (x: 21.0, y: 20.0), + (x: 21.0, y: 21.0), + (x: 22.0, y: 22.0), + (x: 23.0, y: 22.0), + (x: 24.0, y: 21.0), + (x: 24.0, y: 20.0), + (x: 23.0, y: 19.0), + (x: 22.0, y: 19.0), + ]; + // results agree with Shapely / GEOS + assert_eq!(translated, correct); + } + #[test] + fn test_rotate_polygon_holes() { + let ls1 = LineString::from(vec![ + (5.0, 1.0), + (4.0, 2.0), + (4.0, 3.0), + (5.0, 4.0), + (6.0, 4.0), + (7.0, 3.0), + (7.0, 2.0), + (6.0, 1.0), + (5.0, 1.0), + ]); + + let ls2 = LineString::from(vec![(5.0, 1.3), (5.5, 2.0), (6.0, 1.3), (5.0, 1.3)]); + + let poly1 = Polygon::new(ls1, vec![ls2]); + let rotated = poly1.translate(17.0, 18.0); + let correct_outside = vec![ + Coord::from((22.0, 19.0)), + Coord::from((21.0, 20.0)), + Coord::from((21.0, 21.0)), + Coord::from((22.0, 22.0)), + Coord::from((23.0, 22.0)), + Coord::from((24.0, 21.0)), + Coord::from((24.0, 20.0)), + Coord::from((23.0, 19.0)), + Coord::from((22.0, 19.0)), + ]; + let correct_inside = vec![ + Coord::from((22.0, 19.3)), + Coord::from((22.5, 20.0)), + Coord::from((23.0, 19.3)), + Coord::from((22.0, 19.3)), + ]; + assert_eq!(rotated.exterior().0, correct_outside); + assert_eq!(rotated.interiors()[0].0, correct_inside); + } +} diff --git a/rust/geo-generic-alg/src/geometry.rs b/rust/geo-generic-alg/src/geometry.rs new file mode 100644 index 00000000..a9dd8eb2 --- /dev/null +++ b/rust/geo-generic-alg/src/geometry.rs @@ -0,0 +1,2 @@ +//! This module makes all geometry types available +pub use geo_types::geometry::*; diff --git a/rust/geo-generic-alg/src/geometry_cow.rs b/rust/geo-generic-alg/src/geometry_cow.rs new file mode 100644 index 00000000..cd106021 --- /dev/null +++ b/rust/geo-generic-alg/src/geometry_cow.rs @@ -0,0 +1,185 @@ +use crate::{ + CoordNum, Geometry, GeometryCollection, Line, LineString, MultiLineString, MultiPoint, + MultiPolygon, Point, Polygon, Rect, Triangle, +}; +use std::borrow::Cow; + +/// A `GeometryCow` is a "one of" enum, just like [`Geometry`], except it is possible for the inner +/// type of a `GeometryCow` to be a reference rather than owned. +/// +/// This is a way to "upgrade" an inner type to something like a `Geometry` without `moving` it. +/// +/// As an example, see the [`Relate`] trait which uses `GeometryCow`. +#[derive(PartialEq, Debug, Hash, Clone)] +#[allow(dead_code)] +pub enum GeometryCow<'a, T> +where + T: CoordNum, +{ + Point(Cow<'a, Point>), + Line(Cow<'a, Line>), + LineString(Cow<'a, LineString>), + Polygon(Cow<'a, Polygon>), + MultiPoint(Cow<'a, MultiPoint>), + MultiLineString(Cow<'a, MultiLineString>), + MultiPolygon(Cow<'a, MultiPolygon>), + GeometryCollection(Cow<'a, GeometryCollection>), + Rect(Cow<'a, Rect>), + Triangle(Cow<'a, Triangle>), +} + +impl<'a, T: CoordNum> From<&'a Geometry> for GeometryCow<'a, T> { + fn from(geometry: &'a Geometry) -> Self { + match geometry { + Geometry::Point(g) => GeometryCow::Point(Cow::Borrowed(g)), + Geometry::Line(g) => GeometryCow::Line(Cow::Borrowed(g)), + Geometry::LineString(g) => GeometryCow::LineString(Cow::Borrowed(g)), + Geometry::Polygon(g) => GeometryCow::Polygon(Cow::Borrowed(g)), + Geometry::MultiPoint(g) => GeometryCow::MultiPoint(Cow::Borrowed(g)), + Geometry::MultiLineString(g) => GeometryCow::MultiLineString(Cow::Borrowed(g)), + Geometry::MultiPolygon(g) => GeometryCow::MultiPolygon(Cow::Borrowed(g)), + Geometry::GeometryCollection(g) => GeometryCow::GeometryCollection(Cow::Borrowed(g)), + Geometry::Rect(g) => GeometryCow::Rect(Cow::Borrowed(g)), + Geometry::Triangle(g) => GeometryCow::Triangle(Cow::Borrowed(g)), + } + } +} + +impl<'a, T: CoordNum> From<&'a Point> for GeometryCow<'a, T> { + fn from(point: &'a Point) -> Self { + GeometryCow::Point(Cow::Borrowed(point)) + } +} + +impl<'a, T: CoordNum> From<&'a LineString> for GeometryCow<'a, T> { + fn from(line_string: &'a LineString) -> Self { + GeometryCow::LineString(Cow::Borrowed(line_string)) + } +} + +impl<'a, T: CoordNum> From<&'a Line> for GeometryCow<'a, T> { + fn from(line: &'a Line) -> Self { + GeometryCow::Line(Cow::Borrowed(line)) + } +} + +impl<'a, T: CoordNum> From<&'a Polygon> for GeometryCow<'a, T> { + fn from(polygon: &'a Polygon) -> Self { + GeometryCow::Polygon(Cow::Borrowed(polygon)) + } +} + +impl<'a, T: CoordNum> From<&'a MultiPoint> for GeometryCow<'a, T> { + fn from(multi_point: &'a MultiPoint) -> GeometryCow<'a, T> { + GeometryCow::MultiPoint(Cow::Borrowed(multi_point)) + } +} + +impl<'a, T: CoordNum> From<&'a MultiLineString> for GeometryCow<'a, T> { + fn from(multi_line_string: &'a MultiLineString) -> Self { + GeometryCow::MultiLineString(Cow::Borrowed(multi_line_string)) + } +} + +impl<'a, T: CoordNum> From<&'a MultiPolygon> for GeometryCow<'a, T> { + fn from(multi_polygon: &'a MultiPolygon) -> Self { + GeometryCow::MultiPolygon(Cow::Borrowed(multi_polygon)) + } +} + +impl<'a, T: CoordNum> From<&'a GeometryCollection> for GeometryCow<'a, T> { + fn from(geometry_collection: &'a GeometryCollection) -> Self { + GeometryCow::GeometryCollection(Cow::Borrowed(geometry_collection)) + } +} + +impl<'a, T: CoordNum> From<&'a Rect> for GeometryCow<'a, T> { + fn from(rect: &'a Rect) -> Self { + GeometryCow::Rect(Cow::Borrowed(rect)) + } +} + +impl<'a, T: CoordNum> From<&'a Triangle> for GeometryCow<'a, T> { + fn from(triangle: &'a Triangle) -> Self { + GeometryCow::Triangle(Cow::Borrowed(triangle)) + } +} + +impl From> for GeometryCow<'_, T> { + fn from(point: Point) -> Self { + GeometryCow::Point(Cow::Owned(point)) + } +} + +impl From> for GeometryCow<'_, T> { + fn from(line_string: LineString) -> Self { + GeometryCow::LineString(Cow::Owned(line_string)) + } +} + +impl From> for GeometryCow<'_, T> { + fn from(line: Line) -> Self { + GeometryCow::Line(Cow::Owned(line)) + } +} + +impl From> for GeometryCow<'_, T> { + fn from(polygon: Polygon) -> Self { + GeometryCow::Polygon(Cow::Owned(polygon)) + } +} + +impl<'a, T: CoordNum> From> for GeometryCow<'a, T> { + fn from(multi_point: MultiPoint) -> GeometryCow<'a, T> { + GeometryCow::MultiPoint(Cow::Owned(multi_point)) + } +} + +impl From> for GeometryCow<'_, T> { + fn from(multi_line_string: MultiLineString) -> Self { + GeometryCow::MultiLineString(Cow::Owned(multi_line_string)) + } +} + +impl From> for GeometryCow<'_, T> { + fn from(multi_polygon: MultiPolygon) -> Self { + GeometryCow::MultiPolygon(Cow::Owned(multi_polygon)) + } +} + +impl From> for GeometryCow<'_, T> { + fn from(geometry_collection: GeometryCollection) -> Self { + GeometryCow::GeometryCollection(Cow::Owned(geometry_collection)) + } +} + +impl From> for GeometryCow<'_, T> { + fn from(rect: Rect) -> Self { + GeometryCow::Rect(Cow::Owned(rect)) + } +} + +impl From> for GeometryCow<'_, T> { + fn from(triangle: Triangle) -> Self { + GeometryCow::Triangle(Cow::Owned(triangle)) + } +} + +impl From> for GeometryCow<'_, T> { + fn from(geometry: Geometry) -> Self { + match geometry { + Geometry::Point(point) => GeometryCow::from(point), + Geometry::Line(line) => GeometryCow::from(line), + Geometry::LineString(line_string) => GeometryCow::from(line_string), + Geometry::Polygon(polygon) => GeometryCow::from(polygon), + Geometry::MultiPoint(multi_point) => GeometryCow::from(multi_point), + Geometry::MultiLineString(multi_line_string) => GeometryCow::from(multi_line_string), + Geometry::MultiPolygon(multi_polygon) => GeometryCow::from(multi_polygon), + Geometry::GeometryCollection(geometry_collection) => { + GeometryCow::from(geometry_collection) + } + Geometry::Rect(rect) => GeometryCow::from(rect), + Geometry::Triangle(triangle) => GeometryCow::from(triangle), + } + } +} diff --git a/rust/geo-generic-alg/src/lib.rs b/rust/geo-generic-alg/src/lib.rs new file mode 100644 index 00000000..20ac23da --- /dev/null +++ b/rust/geo-generic-alg/src/lib.rs @@ -0,0 +1,387 @@ +#![doc(html_logo_url = "https://raw.githubusercontent.com/georust/meta/master/logo/logo.png")] + +//! The `geo` crate provides geospatial primitive types and algorithms. +//! +//! # Types +//! +//! - **[`Coord`]**: A two-dimensional coordinate. All geometry types are composed of [`Coord`]s, though [`Coord`] itself is not a [`Geometry`] type +//! - **[`Point`]**: A single point represented by one [`Coord`] +//! - **[`MultiPoint`]**: A collection of [`Point`]s +//! - **[`Line`]**: A line segment represented by two [`Coord`]s +//! - **[`LineString`]**: A series of contiguous line segments represented by two or more +//! [`Coord`]s +//! - **[`MultiLineString`]**: A collection of [`LineString`]s +//! - **[`Polygon`]**: A bounded area represented by one [`LineString`] exterior ring, and zero or +//! more [`LineString`] interior rings +//! - **[`MultiPolygon`]**: A collection of [`Polygon`]s +//! - **[`Rect`]**: An axis-aligned bounded rectangle represented by minimum and maximum +//! [`Coord`]s +//! - **[`Triangle`]**: A bounded area represented by three [`Coord`] vertices +//! - **[`GeometryCollection`]**: A collection of [`Geometry`]s +//! - **[`Geometry`]**: An enumeration of all geometry types, excluding [`Coord`] +//! +//! The preceding types are reexported from the [`geo-types`] crate. Consider using that crate +//! if you only need access to these types and no other `geo` functionality. +//! +//! ## Semantics +//! +//! The geospatial types provided here aim to adhere to the [OpenGIS Simple feature access][OGC-SFA] +//! standards. Thus, the types here are inter-operable with other implementations of the standards: +//! [JTS], [GEOS], etc. +//! +//! # Algorithms +//! +//! ## Measures +//! +//! Algorithms for measures along a line, and how a line is measured. +//! +//! ### Metric Spaces +//! +//! - **[`Euclidean`]**: The [Euclidean plane] measures distance with the pythagorean formula. Not suitable for lon/lat geometries. +//! - **[`Haversine`]**: The [Haversine Formula] measures distance on a sphere. Only suitable for lon/lat geometries. +//! - **[`Geodesic`]**: Geodesic methods based on [Karney (2013)] more accurately reflect the shape of the Earth, but are slower than Haversine. Only suitable for lon/lat geometries. +//! - **[`Rhumb`]**: [Rhumb line] (a.k.a. loxodrome) measures can be useful for navigation applications where maintaining a constant bearing or direction is important. Only suitable for lon/lat geometries. +//! +//! ### Operations on Metric Spaces +//! +//! - **[`Distance`]**: Calculate the minimum distance between two geometries. +//! - **[`Length`]**: Calculate the length of a `Line`, `LineString`, or `MultiLineString`. +//! - **[`Bearing`]**: Calculate the bearing between two points. +//! +//! - **[`Destination`]**: Calculate the destination point from an origin point, given a bearing and a distance. +//! - **[`InterpolateLine`]**: Interpolate a `Point` along a `Line` or `LineString`. +//! - **[`InterpolatePoint`]**: Interpolate points along a line. +//! - **[`Densify`]**: Insert points into a geometry so there is never more than `max_segment_length` between points. +//! +//! ### Misc measures +//! +//! - **[`HausdorffDistance`]**: Calculate "the maximum of the distances from a point in any of the sets to the nearest point in the other set." (Rote, 1991) +//! - **[`VincentyDistance`]**: Calculate the minimum geodesic distance between geometries using Vincenty’s formula +//! - **[`VincentyLength`]**: Calculate the geodesic length of a geometry using Vincenty’s formula +//! - **[`FrechetDistance`]**: Calculate the similarity between [`LineString`]s using the Fréchet distance +//! +//! ## Area +//! +//! - **[`Area`]**: Calculate the planar area of a geometry +//! - **[`ChamberlainDuquetteArea`]**: Calculate the geodesic area of a geometry on a sphere using the algorithm presented in _Some Algorithms for Polygons on a Sphere_ by Chamberlain and Duquette (2007) +//! - **[`GeodesicArea`]**: Calculate the geodesic area and perimeter of a geometry on an ellipsoid using the algorithm presented in _Algorithms for geodesics_ by Charles Karney (2013) +//! +//! ## Boolean Operations +//! +//! - **[`BooleanOps`]**: Combine or split (Multi)Polygons using intersection, union, xor, or difference operations +//! - **[`unary_union`]**: Efficient union of many [`Polygon`] or [`MultiPolygon`]s +//! +//! ## Outlier Detection +//! +//! - **[`OutlierDetection`]**: Detect outliers in a group of points using [LOF](https://en.wikipedia.org/wiki/Local_outlier_factor) +//! +//! ## Simplification +//! +//! - **[`Simplify`]**: Simplify a geometry using the Ramer–Douglas–Peucker algorithm +//! - **[`SimplifyIdx`]**: Calculate a simplified geometry using the Ramer–Douglas–Peucker algorithm, returning coordinate indices +//! - **[`SimplifyVw`]**: Simplify a geometry using the Visvalingam-Whyatt algorithm +//! - **[`SimplifyVwPreserve`]**: Simplify a geometry using a topology-preserving variant of the Visvalingam-Whyatt algorithm +//! - **[`SimplifyVwIdx`]**: Calculate a simplified geometry using the Visvalingam-Whyatt algorithm, returning coordinate indices +//! +//! ## Query +//! +//! - **[`ClosestPoint`]**: Find the point on a geometry +//! closest to a given point +//! - **[`HaversineClosestPoint`]**: Find the point on a geometry +//! closest to a given point on a sphere using spherical coordinates and lines being great arcs +//! - **[`IsConvex`]**: Calculate the convexity of a [`LineString`] +//! - **[`LineLocatePoint`]**: Calculate the +//! fraction of a line’s total length representing the location of the closest point on the +//! line to the given point +//! - **[`InteriorPoint`]**: +//! Calculates a representative point inside a `Geometry` +//! +//! ## Topology +//! +//! - **[`Contains`]**: Calculate if a geometry contains another +//! geometry +//! - **[`CoordinatePosition`]**: Calculate +//! the position of a coordinate relative to a geometry +//! - **[`HasDimensions`]**: Determine the dimensions of a geometry +//! - **[`Intersects`]**: Calculate if a geometry intersects +//! another geometry +//! - **[`line_intersection`]**: Calculates the +//! intersection, if any, between two lines +//! - **[`Relate`]**: Topologically relate two geometries based on +//! [DE-9IM](https://en.wikipedia.org/wiki/DE-9IM) semantics +//! - **[`Within`]**: Calculate if a geometry lies completely within another geometry +//! +//! ## Triangulation +//! +//! - **[`TriangulateEarcut`](triangulate_earcut)**: Triangulate polygons using the earcut algorithm. Requires the `earcutr` feature, which is enabled by default +//! - **[`TriangulateDelaunay`](triangulate_delaunay)**: Produce constrained or unconstrained Delaunay triangulations of polygons. Requires the `spade` feature, which is enabled by default +//! ## Winding +//! +//! - **[`Orient`]**: Apply a specified winding [`Direction`](orient::Direction) to a [`Polygon`]’s interior and exterior rings +//! - **[`Winding`]**: Calculate and manipulate the [`WindingOrder`](winding_order::WindingOrder) of a [`LineString`] +//! +//! ## Iteration +//! +//! - **[`CoordsIter`]**: Iterate over the coordinates of a geometry +//! - **[`MapCoords`]**: Map a function over all the coordinates +//! in a geometry, returning a new geometry +//! - **[`MapCoordsInPlace`]**: Map a function over all the +//! coordinates in a geometry in-place +//! - **[`LinesIter`]**: Iterate over lines of a geometry +//! +//! ## Boundary +//! +//! - **[`BoundingRect`]**: Calculate the axis-aligned +//! bounding rectangle of a geometry +//! - **[`MinimumRotatedRect`]**: Calculate the +//! minimum bounding box of a geometry +//! - **[`ConcaveHull`]**: Calculate the concave hull of a +//! geometry +//! - **[`ConvexHull`]**: Calculate the convex hull of a +//! geometry +//! - **[`Extremes`]**: Calculate the extreme coordinates and +//! indices of a geometry +//! +//! ## Affine transformations +//! +//! - **[`Rotate`]**: Rotate a geometry around its centroid +//! - **[`Scale`]**: Scale a geometry up or down by a factor +//! - **[`Skew`]**: Skew a geometry by shearing angles along the `x` and `y` dimension +//! - **[`Translate`]**: Translate a geometry along its axis +//! - **[`AffineOps`]**: generalised composable affine operations +//! +//! ## Conversion +//! +//! - **[`Convert`]**: Convert (infalliby) the numeric type of a geometry’s coordinate value +//! - **[`TryConvert`]**: Convert (falliby) the numeric type of a geometry’s coordinate value +//! - **[`ToDegrees`]**: Radians to degrees coordinate transforms for a given geometry +//! - **[`ToRadians`]**: Degrees to radians coordinate transforms for a given geometry +//! +//! ## Miscellaneous +//! +//! - **[`Centroid`]**: Calculate the centroid of a geometry +//! - **[`ChaikinSmoothing`]**: Smoothen `LineString`, `Polygon`, `MultiLineString` and `MultiPolygon` using Chaikin's algorithm +//! - **[`proj`]**: Project geometries with the `proj` crate (requires the `use-proj` feature) +//! - **[`LineStringSegmentize`]**: Segment a LineString into `n` segments +//! - **[`LineStringSegmentizeHaversine`]**: Segment a LineString using Haversine distance +//! - **[`Transform`]**: Transform a geometry using Proj +//! - **[`RemoveRepeatedPoints`]**: Remove repeated points from a geometry +//! - **[`Validation`]**: Checks if the geometry is well formed. Some algorithms may not work correctly with invalid geometries +//! +//! # Spatial Indexing +//! +//! `geo` geometries ([`Point`], [`Line`], [`LineString`], [`Polygon`], [`MultiPolygon`]) can be used with the [rstar](https://docs.rs/rstar/0.12.0/rstar/struct.RTree.html#usage) +//! R*-tree crate for fast distance and nearest-neighbour queries. Multi- geometries can be added to the tree by iterating over +//! their members and adding them. Note in particular the availability of the [`bulk_load`](https://docs.rs/rstar/0.12.0/rstar/struct.RTree.html#method.bulk_load) +//! method and [`GeomWithData`](https://docs.rs/rstar/0.12.0/rstar/primitives/struct.GeomWithData.html) struct. +//! +//! # Features +//! +//! The following optional [Cargo features] are available: +//! +//! - `earcutr`: +//! - Enables the `earcutr` crate, which provides triangulation of polygons using the earcut algorithm +//! - ☑ Enabled by default +//! - `proj-network`: +//! - Enables [network grid] support for the [`proj` crate] +//! - After enabling this feature, [further configuration][proj crate file download] is required to use the network grid. +//! - ☐ Disabled by default +//! - `use-proj`: +//! - Enables coordinate conversion and transformation of `Point` geometries using the [`proj` crate] +//! - ☐ Disabled by default +//! - `use-serde`: +//! - Allows geometry types to be serialized and deserialized with [Serde] +//! - ☐ Disabled by default +//! - `multithreading`: +//! - Enables multithreading support (via Rayon), and activates the `multithreading` flag +//! in `geo-types`, enabling multi-threaded iteration over `Multi*` geometries +//! - ☑ Enabled by default +//! +//! # Ecosystem +//! +//! There’s a wide variety of `geo`-compatible crates in the ecosystem that offer functionality not +//! included in the `geo` crate, including: +//! +//! * Reading and writing file formats (e.g. [GeoJSON][geojson crate], [WKT][wkt crate], +//! [shapefile][shapefile crate]) +//! * [Latitude and longitude parsing][latlng crate] +//! * [Label placement][polylabel crate] +//! * [Geocoding][geocoding crate] +//! * [and much more...][georust website] +//! +//! [Euclidean plane]: https://en.wikipedia.org/wiki/Euclidean_plane +//! [`geo-types`]: https://crates.io/crates/geo-types +//! [haversine formula]: https://en.wikipedia.org/wiki/Haversine_formula +//! [`proj` crate]: https://github.com/georust/proj +//! [geojson crate]: https://crates.io/crates/geojson +//! [Karney (2013)]: https://arxiv.org/pdf/1109.4448.pdf +//! [wkt crate]: https://crates.io/crates/wkt +//! [shapefile crate]: https://crates.io/crates/shapefile +//! [latlng crate]: https://crates.io/crates/latlon +//! [polylabel crate]: https://crates.io/crates/polylabel +//! [geocoding crate]: https://crates.io/crates/geocoding +//! [georust website]: https://georust.org +//! [Cargo features]: https://doc.rust-lang.org/cargo/reference/features.html +//! [GEOS]: https://trac.osgeo.org/geos +//! [JTS]: https://github.com/locationtech/jts +//! [network grid]: https://proj.org/usage/network.html +//! [OGC-SFA]: https://www.ogc.org/standards/sfa +//! [proj crate file download]: https://docs.rs/proj/*/proj/#grid-file-download +//! [rhumb line]: https://en.wikipedia.org/wiki/Rhumb_line +//! [Serde]: https://serde.rs/ + +#[cfg(feature = "use-serde")] +#[macro_use] +extern crate serde; + +pub use crate::algorithm::*; +pub use crate::types::Closest; +use std::cmp::Ordering; + +pub use geo_types::{coord, line_string, point, polygon, wkt, CoordFloat, CoordNum}; + +pub mod geometry; +pub use geometry::*; + +/// This module includes all the functions of geometric calculations +pub mod algorithm; +mod geometry_cow; +mod types; +mod utils; +use crate::kernels::{RobustKernel, SimpleKernel}; +pub(crate) use geometry_cow::GeometryCow; + +#[cfg(test)] +#[macro_use] +extern crate approx; + +#[cfg(test)] +#[macro_use] +extern crate log; + +/// A prelude which re-exports the traits for manipulating objects in this +/// crate. Typically imported with `use geo::prelude::*`. +pub mod prelude { + pub use crate::algorithm::*; +} + +/// A common numeric trait used for geo algorithms +/// +/// Different numeric types have different tradeoffs. `geo` strives to utilize generics to allow +/// users to choose their numeric types. If you are writing a function which you'd like to be +/// generic over all the numeric types supported by geo, you probably want to constrain +/// your function input to `GeoFloat`. For methods which work for integers, and not just floating +/// point, see [`GeoNum`]. +/// +/// # Examples +/// +/// ``` +/// use geo::{GeoFloat, MultiPolygon, Polygon, Point}; +/// +/// // An admittedly silly method implementation, but the signature shows how to use the GeoFloat trait +/// fn farthest_from<'a, T: GeoFloat>(point: &Point, polygons: &'a MultiPolygon) -> Option<&'a Polygon> { +/// polygons.iter().fold(None, |accum, next| { +/// match accum { +/// None => Some(next), +/// Some(farthest) => { +/// use geo::{euclidean_distance::EuclideanDistance}; +/// if next.euclidean_distance(point) > farthest.euclidean_distance(point) { +/// Some(next) +/// } else { +/// Some(farthest) +/// } +/// } +/// } +/// }) +/// } +/// ``` +pub trait GeoFloat: + GeoNum + num_traits::Float + num_traits::Signed + num_traits::Bounded + float_next_after::NextAfter +{ +} +impl GeoFloat for T where + T: GeoNum + + num_traits::Float + + num_traits::Signed + + num_traits::Bounded + + float_next_after::NextAfter +{ +} + +/// A trait for methods which work for both integers **and** floating point +pub trait GeoNum: CoordNum { + type Ker: Kernel; + + /// Return the ordering between self and other. + /// + /// For integers, this should behave just like [`Ord`]. + /// + /// For floating point numbers, unlike the standard partial comparison between floating point numbers, this comparison + /// always produces an ordering. + /// + /// See [f64::total_cmp](https://doc.rust-lang.org/src/core/num/f64.rs.html#1432) for details. + fn total_cmp(&self, other: &Self) -> Ordering; +} + +macro_rules! impl_geo_num_for_float { + ($t: ident) => { + impl GeoNum for $t { + type Ker = RobustKernel; + fn total_cmp(&self, other: &Self) -> Ordering { + self.total_cmp(other) + } + } + }; +} +macro_rules! impl_geo_num_for_int { + ($t: ident) => { + impl GeoNum for $t { + type Ker = SimpleKernel; + fn total_cmp(&self, other: &Self) -> Ordering { + self.cmp(other) + } + } + }; +} + +// This is the list of primitives that we support. +impl_geo_num_for_float!(f32); +impl_geo_num_for_float!(f64); +impl_geo_num_for_int!(i16); +impl_geo_num_for_int!(i32); +impl_geo_num_for_int!(i64); +impl_geo_num_for_int!(i128); +impl_geo_num_for_int!(isize); + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn total_ord_float() { + assert_eq!(GeoNum::total_cmp(&3.0f64, &2.0f64), Ordering::Greater); + assert_eq!(GeoNum::total_cmp(&2.0f64, &2.0f64), Ordering::Equal); + assert_eq!(GeoNum::total_cmp(&1.0f64, &2.0f64), Ordering::Less); + assert_eq!(GeoNum::total_cmp(&1.0f64, &f64::NAN), Ordering::Less); + assert_eq!(GeoNum::total_cmp(&f64::NAN, &f64::NAN), Ordering::Equal); + assert_eq!(GeoNum::total_cmp(&f64::INFINITY, &f64::NAN), Ordering::Less); + } + + #[test] + fn total_ord_int() { + assert_eq!(GeoNum::total_cmp(&3i32, &2i32), Ordering::Greater); + assert_eq!(GeoNum::total_cmp(&2i32, &2i32), Ordering::Equal); + assert_eq!(GeoNum::total_cmp(&1i32, &2i32), Ordering::Less); + } + + #[test] + fn numeric_types() { + let _n_i16 = Point::new(1i16, 2i16); + let _n_i32 = Point::new(1i32, 2i32); + let _n_i64 = Point::new(1i64, 2i64); + let _n_i128 = Point::new(1i128, 2i128); + let _n_isize = Point::new(1isize, 2isize); + let _n_f32 = Point::new(1.0f32, 2.0f32); + let _n_f64 = Point::new(1.0f64, 2.0f64); + } +} diff --git a/rust/geo-generic-alg/src/types.rs b/rust/geo-generic-alg/src/types.rs new file mode 100644 index 00000000..affda72a --- /dev/null +++ b/rust/geo-generic-alg/src/types.rs @@ -0,0 +1,158 @@ +use crate::{GeoFloat, Point}; + +/// The result of trying to find the closest spot on an object to a point. +#[cfg_attr(feature = "use-serde", derive(Serialize, Deserialize))] +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum Closest { + /// The point actually intersects with the object. + Intersection(Point), + /// There is exactly one place on this object which is closest to the point. + SinglePoint(Point), + /// There are two or more (possibly infinite or undefined) possible points. + Indeterminate, +} + +impl Closest { + /// Compare two `Closest`s relative to `p` and return a copy of the best + /// one. + pub fn best_of_two(&self, other: &Self, p: Point) -> Self { + use crate::{Distance, Euclidean}; + + let left = match *self { + Closest::Indeterminate => return *other, + Closest::Intersection(_) => return *self, + Closest::SinglePoint(l) => l, + }; + let right = match *other { + Closest::Indeterminate => return *self, + Closest::Intersection(_) => return *other, + Closest::SinglePoint(r) => r, + }; + + if Euclidean.distance(left, p) <= Euclidean.distance(right, p) { + *self + } else { + *other + } + } +} + +/// Implements the common pattern where a Geometry enum simply delegates its trait impl to it's inner type. +/// +/// ``` +/// # use geo::{GeoNum, Coord, Point, Line, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection, Rect, Triangle, Geometry}; +/// +/// trait Foo { +/// fn foo_1(&self, coord: Coord) -> bool; +/// fn foo_2(&self) -> i32; +/// } +/// +/// // Assuming we have an impl for all the inner types like this: +/// impl Foo for Point { +/// fn foo_1(&self, coord: Coord) -> bool { true } +/// fn foo_2(&self) -> i32 { 1 } +/// } +/// impl Foo for Line { +/// fn foo_1(&self, coord: Coord) -> bool { false } +/// fn foo_2(&self) -> i32 { 2 } +/// } +/// impl Foo for LineString { +/// fn foo_1(&self, coord: Coord) -> bool { true } +/// fn foo_2(&self) -> i32 { 3 } +/// } +/// impl Foo for Polygon { +/// fn foo_1(&self, coord: Coord) -> bool { false } +/// fn foo_2(&self) -> i32 { 4 } +/// } +/// impl Foo for MultiPoint { +/// fn foo_1(&self, coord: Coord) -> bool { true } +/// fn foo_2(&self) -> i32 { 5 } +/// } +/// impl Foo for MultiLineString { +/// fn foo_1(&self, coord: Coord) -> bool { false } +/// fn foo_2(&self) -> i32 { 6 } +/// } +/// impl Foo for MultiPolygon { +/// fn foo_1(&self, coord: Coord) -> bool { true } +/// fn foo_2(&self) -> i32 { 7 } +/// } +/// impl Foo for GeometryCollection { +/// fn foo_1(&self, coord: Coord) -> bool { false } +/// fn foo_2(&self) -> i32 { 8 } +/// } +/// impl Foo for Rect { +/// fn foo_1(&self, coord: Coord) -> bool { true } +/// fn foo_2(&self) -> i32 { 9 } +/// } +/// impl Foo for Triangle { +/// fn foo_1(&self, coord: Coord) -> bool { true } +/// fn foo_2(&self) -> i32 { 10 } +/// } +/// +/// // If we want the impl for Geometry to simply delegate to it's +/// // inner case... +/// impl Foo for Geometry { +/// // Instead of writing out this trivial enum delegation... +/// // fn foo_1(&self, coord: Coord) -> bool { +/// // match self { +/// // Geometry::Point(g) => g.foo_1(coord), +/// // Geometry::LineString(g) => g.foo_1(coord), +/// // _ => unimplemented!("...etc for other cases") +/// // } +/// // } +/// // +/// // fn foo_2(&self) -> i32 { +/// // match self { +/// // Geometry::Point(g) => g.foo_2(), +/// // Geometry::LineString(g) => g.foo_2(), +/// // _ => unimplemented!("...etc for other cases") +/// // } +/// // } +/// +/// // we can equivalently write: +/// geo::geometry_delegate_impl! { +/// fn foo_1(&self, coord: Coord) -> bool; +/// fn foo_2(&self) -> i32; +/// } +/// } +/// ``` +#[macro_export] +macro_rules! geometry_delegate_impl { + ($($a:tt)*) => { $crate::__geometry_delegate_impl_helper!{ Geometry, $($a)* } } +} + +#[doc(hidden)] +#[macro_export] +macro_rules! geometry_cow_delegate_impl { + ($($a:tt)*) => { $crate::__geometry_delegate_impl_helper!{ GeometryCow, $($a)* } } +} + +#[doc(hidden)] +#[macro_export] +macro_rules! __geometry_delegate_impl_helper { + ( + $enum:ident, + $( + $(#[$outer:meta])* + fn $func_name: ident(&$($self_life:lifetime)?self $(, $arg_name: ident: $arg_type: ty)*) -> $return: ty; + )+ + ) => { + $( + $(#[$outer])* + fn $func_name(&$($self_life)? self, $($arg_name: $arg_type),*) -> $return { + match self { + $enum::Point(g) => g.$func_name($($arg_name),*).into(), + $enum::Line(g) => g.$func_name($($arg_name),*).into(), + $enum::LineString(g) => g.$func_name($($arg_name),*).into(), + $enum::Polygon(g) => g.$func_name($($arg_name),*).into(), + $enum::MultiPoint(g) => g.$func_name($($arg_name),*).into(), + $enum::MultiLineString(g) => g.$func_name($($arg_name),*).into(), + $enum::MultiPolygon(g) => g.$func_name($($arg_name),*).into(), + $enum::GeometryCollection(g) => g.$func_name($($arg_name),*).into(), + $enum::Rect(g) => g.$func_name($($arg_name),*).into(), + $enum::Triangle(g) => g.$func_name($($arg_name),*).into(), + } + } + )+ + }; +} diff --git a/rust/geo-generic-alg/src/utils.rs b/rust/geo-generic-alg/src/utils.rs new file mode 100644 index 00000000..15720364 --- /dev/null +++ b/rust/geo-generic-alg/src/utils.rs @@ -0,0 +1,180 @@ +//! Internal utility functions, types, and data structures. + +use geo_types::{Coord, CoordFloat, CoordNum}; +use num_traits::FromPrimitive; + +/// Partition a mutable slice in-place so that it contains all elements for +/// which `predicate(e)` is `true`, followed by all elements for which +/// `predicate(e)` is `false`. Returns sub-slices to all predicated and +/// non-predicated elements, respectively. +/// +/// https://github.com/llogiq/partition/blob/master/src/lib.rs +pub fn partition_slice(data: &mut [T], predicate: P) -> (&mut [T], &mut [T]) +where + P: Fn(&T) -> bool, +{ + let len = data.len(); + if len == 0 { + return (&mut [], &mut []); + } + let (mut l, mut r) = (0, len - 1); + loop { + while l < len && predicate(&data[l]) { + l += 1; + } + while r > 0 && !predicate(&data[r]) { + r -= 1; + } + if l >= r { + return data.split_at_mut(l); + } + data.swap(l, r); + } +} + +pub enum EitherIter { + A(I1), + B(I2), +} + +impl ExactSizeIterator for EitherIter +where + I1: ExactSizeIterator, + I2: ExactSizeIterator, +{ + #[inline] + fn len(&self) -> usize { + match self { + EitherIter::A(i1) => i1.len(), + EitherIter::B(i2) => i2.len(), + } + } +} + +impl Iterator for EitherIter +where + I1: Iterator, + I2: Iterator, +{ + type Item = T; + + #[inline] + fn next(&mut self) -> Option { + match self { + EitherIter::A(iter) => iter.next(), + EitherIter::B(iter) => iter.next(), + } + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + match self { + EitherIter::A(iter) => iter.size_hint(), + EitherIter::B(iter) => iter.size_hint(), + } + } +} + +// The Rust standard library has `max` for `Ord`, but not for `PartialOrd` +pub fn partial_max(a: T, b: T) -> T { + if a > b { + a + } else { + b + } +} + +// The Rust standard library has `min` for `Ord`, but not for `PartialOrd` +pub fn partial_min(a: T, b: T) -> T { + if a < b { + a + } else { + b + } +} + +use std::cmp::Ordering; + +/// Compare two coordinates lexicographically: first by the +/// x coordinate, and break ties with the y coordinate. +/// Expects none of coordinates to be uncomparable (eg. nan) +#[inline] +pub fn lex_cmp(p: &Coord, q: &Coord) -> Ordering { + p.x.partial_cmp(&q.x) + .unwrap() + .then(p.y.partial_cmp(&q.y).unwrap()) +} + +/// Compute index of the least point in slice. Comparison is +/// done using [`lex_cmp`]. +/// +/// Should only be called on a non-empty slice with no `nan` +/// coordinates. +pub fn least_index(pts: &[Coord]) -> usize { + pts.iter() + .enumerate() + .min_by(|(_, p), (_, q)| lex_cmp(p, q)) + .unwrap() + .0 +} + +/// Compute index of the lexicographically least _and_ the +/// greatest coordinate in one pass. +/// +/// Should only be called on a non-empty slice with no `nan` +/// coordinates. +pub fn least_and_greatest_index(pts: &[Coord]) -> (usize, usize) { + assert_ne!(pts.len(), 0); + let (min, max) = pts + .iter() + .enumerate() + .fold((None, None), |(min, max), (idx, p)| { + ( + if let Some((midx, min)) = min { + if lex_cmp(p, min) == Ordering::Less { + Some((idx, p)) + } else { + Some((midx, min)) + } + } else { + Some((idx, p)) + }, + if let Some((midx, max)) = max { + if lex_cmp(p, max) == Ordering::Greater { + Some((idx, p)) + } else { + Some((midx, max)) + } + } else { + Some((idx, p)) + }, + ) + }); + (min.unwrap().0, max.unwrap().0) +} + +/// Normalize a longitude to coordinate to ensure it's within [-180,180] +pub fn normalize_longitude(coord: T) -> T { + let one_eighty = T::from(180.0f64).unwrap(); + let three_sixty = T::from(360.0f64).unwrap(); + let five_forty = T::from(540.0f64).unwrap(); + + ((coord + five_forty) % three_sixty) - one_eighty +} + +#[cfg(test)] +mod test { + use super::{partial_max, partial_min}; + + #[test] + fn test_partial_max() { + assert_eq!(5, partial_max(5, 4)); + assert_eq!(5, partial_max(5, 5)); + } + + #[test] + fn test_partial_min() { + assert_eq!(4, partial_min(5, 4)); + assert_eq!(4, partial_min(4, 4)); + } +} diff --git a/rust/geo-test-fixtures/Cargo.toml b/rust/geo-test-fixtures/Cargo.toml new file mode 100644 index 00000000..d309769c --- /dev/null +++ b/rust/geo-test-fixtures/Cargo.toml @@ -0,0 +1,29 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +[package] +name = "geo-test-fixtures" +version.workspace = true +homepage.workspace = true +repository.workspace = true +description.workspace = true +readme.workspace = true +edition.workspace = true +rust-version.workspace = true + +[dependencies] +wkt = { workspace = true } +geo-types = { workspace = true } diff --git a/rust/geo-test-fixtures/fixtures/east_baton_rouge.wkt b/rust/geo-test-fixtures/fixtures/east_baton_rouge.wkt new file mode 100644 index 00000000..1c384745 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/east_baton_rouge.wkt @@ -0,0 +1 @@ +POLYGON((-91.316488 30.590003,-91.315282 30.594288,-91.309914 30.601297,-91.301863 30.609497,-91.29465 30.625207,-91.293072 30.629882,-91.292821 30.631539,-91.293596 30.63919,-91.294211 30.641591,-91.296807 30.648037,-91.297658 30.649548,-91.293604 30.655036,-91.292644 30.658244,-91.292608 30.662034,-91.289693 30.667624,-91.288731 30.677904,-91.27046 30.680864,-91.267699 30.686118,-91.268221 30.689126,-91.267518 30.690108,-91.267133 30.693745,-91.267882 30.69442,-91.265734 30.696264,-91.264865 30.698514,-91.260461 30.70129,-91.257352 30.702703,-91.254419 30.705294,-91.250223 30.705131,-91.216658 30.706386,-91.21374 30.706187,-91.193932 30.706939,-91.17396 30.707768,-91.169445 30.707978,-91.145132 30.708785,-91.145008 30.708785,-91.10764 30.710296,-91.101421 30.710579,-91.097704 30.710583,-91.078958 30.711282,-91.053393 30.712184,-91.023218 30.713182,-90.97269 30.715084,-90.968038 30.71528,-90.849041 30.719311,-90.849327 30.717661,-90.8475 30.71629,-90.847859 30.713883,-90.847421 30.712922,-90.845068 30.71246,-90.845888 30.70969,-90.844181 30.708047,-90.848658 30.70447,-90.849922 30.705858,-90.851101 30.70557,-90.851857 30.702998,-90.8537 30.702048,-90.854054 30.700822,-90.852545 30.700603,-90.85147 30.70141,-90.850499 30.700267,-90.8527 30.699303,-90.852985 30.695681,-90.854366 30.69515,-90.857988 30.695477,-90.859058 30.696311,-90.860664 30.6955,-90.859909 30.692764,-90.862696 30.691928,-90.865774 30.693349,-90.869114 30.692353,-90.869982 30.693779,-90.870916 30.693329,-90.870826 30.690951,-90.869282 30.689224,-90.872294 30.68704,-90.874186 30.686451,-90.876457 30.686588,-90.877024 30.684365,-90.879099 30.682584,-90.877092 30.680332,-90.87818 30.679072,-90.879783 30.678886,-90.881 30.677585,-90.8856 30.676884,-90.885735 30.67494,-90.8884 30.673584,-90.890389 30.673779,-90.890602 30.672414,-90.888798 30.671685,-90.888798 30.670584,-90.891899 30.671085,-90.893517 30.670603,-90.896569 30.668153,-90.893901 30.666485,-90.894875 30.66411,-90.8971 30.663685,-90.900459 30.665352,-90.90142 30.664068,-90.899698 30.662373,-90.89979 30.661149,-90.903225 30.659716,-90.902999 30.658187,-90.900677 30.658835,-90.899867 30.658084,-90.901455 30.655313,-90.902346 30.654722,-90.904169 30.655655,-90.904459 30.654692,-90.907358 30.655592,-90.907901 30.657185,-90.908792 30.65532,-90.911962 30.652148,-90.91224 30.65087,-90.910701 30.649385,-90.9096 30.647385,-90.911304 30.645989,-90.913582 30.646772,-90.9154 30.646685,-90.917001 30.643885,-90.916941 30.639759,-90.918315 30.638055,-90.920903 30.636684,-90.922799 30.637221,-90.924601 30.638786,-90.927337 30.637186,-90.9279 30.635085,-90.931854 30.631002,-90.935003 30.628286,-90.935672 30.626387,-90.937738 30.624671,-90.937629 30.622967,-90.939825 30.621947,-90.940636 30.620456,-90.938518 30.618039,-90.934782 30.619782,-90.935031 30.621483,-90.933528 30.620642,-90.932214 30.618409,-90.933206 30.616932,-90.936027 30.616147,-90.936051 30.615005,-90.934182 30.613829,-90.935098 30.612851,-90.936166 30.613716,-90.938669 30.612396,-90.939837 30.608952,-90.941707 30.608455,-90.944376 30.608685,-90.945809 30.609605,-90.947686 30.609826,-90.948301 30.606986,-90.947672 30.605735,-90.949101 30.604085,-90.952921 30.605533,-90.954707 30.604613,-90.956629 30.604644,-90.958064 30.605756,-90.960201 30.605203,-90.960117 30.603245,-90.958339 30.601296,-90.956783 30.600911,-90.956859 30.599497,-90.958215 30.598641,-90.959084 30.598267,-90.961037 30.59902,-90.960534 30.600678,-90.961634 30.600981,-90.962748 30.600001,-90.962898 30.596731,-90.963803 30.593925,-90.965602 30.593685,-90.96622 30.59447,-90.965551 30.597404,-90.971102 30.597383,-90.972247 30.596887,-90.972208 30.59385,-90.97352 30.592471,-90.975823 30.593886,-90.977401 30.593485,-90.977979 30.592319,-90.977564 30.59078,-90.979533 30.590148,-90.980695 30.590779,-90.980497 30.589081,-90.979403 30.587586,-90.980489 30.584757,-90.982203 30.584408,-90.985103 30.585601,-90.985601 30.584686,-90.985515 30.581627,-90.983835 30.579256,-90.986101 30.575986,-90.986141 30.574711,-90.987906 30.572643,-90.986843 30.571579,-90.98211 30.571012,-90.980464 30.568821,-90.976555 30.568453,-90.975718 30.567385,-90.975505 30.565471,-90.97204 30.564175,-90.971431 30.562004,-90.973216 30.56012,-90.972407 30.557335,-90.973276 30.554538,-90.972628 30.552923,-90.972012 30.550828,-90.972958 30.549596,-90.97566 30.547689,-90.975924 30.545495,-90.972802 30.543188,-90.972952 30.540928,-90.974033 30.539505,-90.977519 30.538068,-90.980003 30.537738,-90.981512 30.536387,-90.980931 30.535555,-90.980266 30.534383,-90.981441 30.532891,-90.983745 30.531724,-90.984385 30.530637,-90.982326 30.529691,-90.980723 30.530385,-90.979274 30.529695,-90.97816 30.527677,-90.977473 30.525067,-90.979487 30.523423,-90.981486 30.523259,-90.982197 30.522114,-90.978328 30.521299,-90.978327 30.519752,-90.980463 30.51837,-90.977727 30.515117,-90.975258 30.513965,-90.974228 30.512707,-90.971469 30.511803,-90.971333 30.509198,-90.971001 30.507389,-90.968744 30.506094,-90.96789 30.504381,-90.970957 30.503431,-90.974452 30.501177,-90.975929 30.498349,-90.97374 30.497059,-90.972221 30.497844,-90.970319 30.497527,-90.970035 30.495571,-90.970097 30.492371,-90.971382 30.491452,-90.973126 30.491844,-90.971892 30.489895,-90.972898 30.487617,-90.971933 30.485544,-90.975451 30.483899,-90.974807 30.481763,-90.974857 30.481508,-90.976008 30.480015,-90.978266 30.479956,-90.978662 30.479098,-90.976877 30.476923,-90.975065 30.476003,-90.975122 30.473147,-90.974268 30.471019,-90.976516 30.467267,-90.979607 30.467421,-90.981062 30.466533,-90.984251 30.468332,-90.985709 30.467645,-90.986354 30.466202,-90.988174 30.466515,-90.98923 30.465831,-90.989892 30.46488,-90.98995 30.464738,-90.991475 30.461954,-90.991053 30.460404,-90.989008 30.45866,-90.989195 30.456173,-90.988558 30.455145,-90.98505 30.45327,-90.981157 30.452765,-90.9815 30.451013,-90.983841 30.450237,-90.986847 30.450277,-90.986932 30.448361,-90.985706 30.44761,-90.984245 30.445308,-90.982808 30.444307,-90.981307 30.441883,-90.979362 30.440882,-90.977349 30.43879,-90.976358 30.438531,-90.974558 30.440124,-90.972402 30.440302,-90.973444 30.437701,-90.978066 30.434069,-90.980239 30.433383,-90.981034 30.432144,-90.981048 30.43035,-90.978957 30.42855,-90.982536 30.425479,-90.982351 30.423465,-90.981158 30.422263,-90.977503 30.420899,-90.970717 30.420846,-90.969301 30.420472,-90.967425 30.418801,-90.966114 30.418385,-90.964151 30.418868,-90.963312 30.417981,-90.966053 30.415194,-90.965794 30.414713,-90.963243 30.413719,-90.961949 30.411219,-90.958539 30.407409,-90.957922 30.406076,-90.958435 30.405233,-90.96144 30.403074,-90.963283 30.402806,-90.969401 30.405138,-90.972067 30.402318,-90.972346 30.397519,-90.968888 30.393287,-90.967888 30.39134,-90.968264 30.389151,-90.967357 30.388702,-90.96421 30.390357,-90.96224 30.388391,-90.961391 30.388144,-90.957574 30.388612,-90.954095 30.389642,-90.951012 30.392011,-90.9501 30.394092,-90.949197 30.394445,-90.946648 30.393529,-90.943917 30.391733,-90.942849 30.389448,-90.94468 30.386335,-90.947213 30.384939,-90.9446 30.383792,-90.944817 30.381551,-90.9459 30.379892,-90.9436 30.377992,-90.9437 30.376492,-90.940273 30.374184,-90.937695 30.373883,-90.932906 30.372749,-90.931533 30.371282,-90.9325 30.369697,-90.935477 30.367401,-90.93723 30.366565,-90.937527 30.364746,-90.936957 30.363913,-90.935037 30.36384,-90.934133 30.365846,-90.933056 30.365912,-90.931229 30.364373,-90.930764 30.361974,-90.929417 30.361873,-90.927622 30.364148,-90.926345 30.363723,-90.923101 30.364613,-90.920296 30.365947,-90.91807 30.364954,-90.917549 30.362627,-90.915434 30.361214,-90.915586 30.359497,-90.913523 30.358673,-90.910967 30.359404,-90.909935 30.360531,-90.907063 30.361196,-90.905379 30.36105,-90.903385 30.359774,-90.903678 30.35775,-90.905148 30.357207,-90.907226 30.35772,-90.90805 30.356018,-90.90647 30.355179,-90.903354 30.35564,-90.902341 30.355314,-90.900434 30.352134,-90.900119 30.349623,-90.900596 30.347745,-90.899754 30.347442,-90.897515 30.347981,-90.895577 30.347851,-90.891728 30.345244,-90.894305 30.345859,-90.900194 30.34251,-90.902606 30.342794,-90.904555 30.340624,-90.907057 30.341907,-90.908935 30.340863,-90.910074 30.339713,-90.912256 30.340706,-90.917343 30.340885,-90.917349 30.343786,-90.918851 30.345509,-90.920685 30.345714,-90.923852 30.34413,-90.927625 30.34334,-90.928926 30.341574,-90.930109 30.341389,-90.930743 30.342591,-90.93187 30.342683,-90.933619 30.341476,-90.935656 30.341839,-90.939418 30.340313,-90.941341 30.341117,-90.943858 30.341101,-90.945635 30.343197,-90.948525 30.342826,-90.948581 30.344706,-90.949289 30.345356,-90.951115 30.344634,-90.95311 30.345887,-90.954946 30.345216,-90.956912 30.345644,-90.958892 30.345139,-90.962884 30.345529,-90.963742 30.346704,-90.965546 30.346769,-90.968094 30.345804,-90.969738 30.345891,-90.974123 30.346933,-90.975656 30.346437,-90.976249 30.344656,-90.977364 30.343951,-90.981803 30.344331,-90.983178 30.343893,-90.98463 30.344003,-90.986968 30.345729,-90.988917 30.343089,-90.992883 30.342749,-90.994999 30.341604,-90.997494 30.341511,-91.000818 30.336556,-91.001367 30.33634,-91.006339 30.337795,-91.00778 30.337867,-91.009281 30.336015,-91.012205 30.335654,-91.014157 30.334779,-91.013825 30.330184,-91.014065 30.330029,-91.015148 30.329257,-91.016298 30.328273,-91.017168 30.326419,-91.017986 30.324094,-91.021014 30.321489,-91.025665 30.318262,-91.028271 30.31597,-91.032435 30.314822,-91.036783 30.314746,-91.040452 30.315318,-91.04499 30.31533,-91.046917 30.316134,-91.050206 30.31576,-91.052127 30.316288,-91.053483 30.31532,-91.053546 30.317465,-91.056481 30.317531,-91.058636 30.317081,-91.062717 30.318884,-91.064422 30.318148,-91.067805 30.319381,-91.071102 30.31966,-91.07951 30.319537,-91.082603 30.319693,-91.08633 30.31925,-91.09065 30.319365,-91.093004 30.320592,-91.095639 30.319262,-91.098798 30.319537,-91.10011 30.318793,-91.105204 30.317493,-91.107441 30.316062,-91.108504 30.315393,-91.113004 30.314893,-91.115459 30.312693,-91.118429 30.312469,-91.12013 30.313219,-91.125283 30.313232,-91.128323 30.314226,-91.132672 30.31341,-91.136277 30.315112,-91.137906 30.317194,-91.141478 30.3192,-91.142305 30.319893,-91.142042 30.322718,-91.142105 30.323293,-91.142439 30.324835,-91.145005 30.331293,-91.150801 30.337424,-91.151521 30.337809,-91.154105 30.339193,-91.161971 30.341528,-91.170333 30.343558,-91.174419 30.344187,-91.180251 30.345084,-91.187286 30.34651,-91.194507 30.346993,-91.204422 30.345198,-91.214093 30.342324,-91.222607 30.340593,-91.230307 30.341093,-91.235808 30.344493,-91.239534 30.351584,-91.241508 30.357592,-91.240617 30.362756,-91.233908 30.375292,-91.219429 30.389616,-91.215256 30.39401,-91.212807 30.397091,-91.208107 30.403691,-91.205707 30.407991,-91.199807 30.419091,-91.199056 30.422279,-91.198247 30.425935,-91.196307 30.434691,-91.195906 30.43939,-91.195907 30.43959,-91.196007 30.44689,-91.196114 30.452699,-91.196207 30.45779,-91.196507 30.46389,-91.196407 30.46639,-91.19653 30.469365,-91.196749 30.478845,-91.197205 30.506864,-91.198508 30.513089,-91.200808 30.517689,-91.203708 30.519789,-91.208004 30.522244,-91.209308 30.522989,-91.236101 30.513973,-91.253767 30.508208,-91.257014 30.506857,-91.262734 30.505238,-91.268258 30.504726,-91.274406 30.504613,-91.276486 30.504688,-91.281478 30.506115,-91.28276 30.507317,-91.284161 30.509635,-91.284735 30.511598,-91.284359 30.515339,-91.282767 30.51719,-91.280878 30.518573,-91.275351 30.521081,-91.265989 30.52658,-91.249475 30.533764,-91.246058 30.535851,-91.243333 30.540609,-91.242457 30.544218,-91.242312 30.547994,-91.24309 30.55314,-91.244409 30.555888,-91.247909 30.560688,-91.250109 30.562988,-91.254439 30.566543,-91.261522 30.571071,-91.264954 30.572176,-91.267121 30.572522,-91.280928 30.57295,-91.291498 30.572546,-91.295639 30.572228,-91.302914 30.573119,-91.305854 30.573027,-91.308012 30.573599,-91.310477 30.574679,-91.311825 30.575809,-91.314406 30.578817,-91.314839 30.579791,-91.316547 30.585244,-91.316488 30.590003)) diff --git a/rust/geo-test-fixtures/fixtures/issue-894/inpa.wkt b/rust/geo-test-fixtures/fixtures/issue-894/inpa.wkt new file mode 100644 index 00000000..a512c740 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/issue-894/inpa.wkt @@ -0,0 +1 @@ +MULTIPOLYGON(((2044 1653,1828 1649,1365 1651,1284 1649,1256 1651,725 1650,696 1652,650 1650,285 1653,183 1651,171 1653,146 1652,140 1649,140 1645,152 1642,1060 1640,1078 1642,1091 1640,1694 1641,1707 1639,1795 1641,1833 1639,2044 1643,2044 1653)),((361 2003,368 2001,467 2004,929 2002,935 2004,939 2002,1042 2003,1055 2001,1146 2003,1165 2000,1175 2003,1187 2001,1826 2002,1836 2000,2044 2005,2044 2015,1966 2011,1301 2012,1283 2010,1273 2012,383 2012,362 2015,358 2008,361 2003)),((2044 637,1830 634,1823 636,1817 634,1581 633,1533 635,817 634,798 636,781 634,290 637,223 635,158 636,140 639,134 633,140 625,326 627,1721 623,2044 627,2044 637)),((11 1488,-3 1489,-2 1479,6 1478,14 1483,11 1488)),((260 1848,201 1849,195 1844,200 1839,254 1838,263 1841,260 1848)),((308 854,537 856,542 854,961 855,991 853,1022 855,1076 853,1887 853,2044 857,2044 867,1760 862,1740 864,1251 863,1241 865,1220 863,543 866,425 864,327 865,306 868,302 864,302 859,308 854)),((113 637,32 637,27 630,34 626,89 625,115 626,122 628,123 633,113 637)),((1814 1706,1835 1705,2044 1709,2044 1720,2041 1718,1932 1715,1822 1716,1815 1715,1811 1709,1814 1706)),((1455 1214,1752 1215,1804 1213,1810 1215,1980 1215,1990 1218,1991 1222,1988 1225,1951 1224,1946 1226,1822 1223,1453 1224,1448 1219,1455 1214)),((88 1708,284 1707,291 1712,291 1715,286 1718,139 1717,109 1719,89 1718,83 1714,83 1711,88 1708)),((1154 1353,1147 1358,1128 1355,627 1356,615 1359,609 1353,614 1345,902 1347,1135 1346,1147 1343,1154 1348,1154 1353)),((2044 507,1984 504,1783 504,1773 502,918 503,906 505,758 503,531 504,501 507,496 502,496 498,502 493,516 495,615 494,620 496,627 494,769 495,786 493,901 495,946 493,1458 494,1476 492,1690 494,1698 492,2044 496,2044 507)),((1430 271,1425 274,1402 275,1389 273,729 274,708 276,490 274,482 276,93 277,86 276,81 271,86 266,388 266,395 264,431 267,436 265,1402 263,1430 266,1430 271)),((1236 926,1232 929,1218 930,695 929,692 931,680 929,600 931,595 929,555 931,546 929,540 931,451 930,446 932,437 930,231 932,154 930,87 931,83 928,86 922,90 921,240 922,247 920,399 922,432 920,1226 919,1236 922,1236 926)),((396 1445,584 1446,609 1444,969 1445,977 1443,987 1445,1028 1443,1116 1445,1125 1443,1904 1443,2044 1447,2044 1457,1986 1454,1784 1452,869 1455,736 1453,451 1456,393 1454,391 1448,396 1445)),((73 1576,155 1578,423 1576,431 1582,425 1586,403 1587,389 1585,378 1587,220 1587,198 1585,188 1587,67 1587,59 1585,57 1579,73 1576)),((9 1807,13 1813,5 1817,-3 1816,-3 1807,9 1807)),((86 1774,249 1772,554 1774,701 1772,709 1777,703 1782,690 1783,604 1782,598 1784,592 1782,372 1782,356 1784,316 1782,259 1785,200 1782,89 1783,83 1780,86 1774)),((87 1741,95 1740,260 1741,264 1747,258 1751,89 1751,84 1749,83 1745,87 1741)),((402 1125,395 1130,382 1127,302 1127,279 1130,274 1124,280 1116,373 1118,395 1115,402 1121,402 1125)),((46 593,255 593,262 599,254 604,37 605,29 603,26 597,46 593)),((1845 1256,89 1259,82 1253,87 1249,345 1250,567 1247,786 1249,814 1247,1828 1246,2044 1250,2044 1260,1845 1256)),((2008 1215,2044 1217,2044 1227,2008 1228,2004 1224,2004 1218,2008 1215)),((69 1183,149 1184,152 1189,147 1193,67 1194,58 1191,56 1187,69 1183)),((1256 1311,1279 1313,1306 1311,1312 1313,1780 1313,1810 1311,2044 1316,2044 1325,1762 1321,1752 1323,1270 1322,1256 1325,1251 1323,1249 1317,1256 1311)),((12 1448,13 1451,6 1456,-3 1456,-3 1446,12 1448)),((1236 1912,1232 1913,968 1912,962 1914,526 1913,481 1915,456 1914,446 1910,453 1904,614 1903,668 1905,1234 1903,1238 1907,1236 1912)),((957 337,952 340,864 339,861 341,90 342,81 337,84 332,95 331,262 332,268 330,739 331,767 329,775 331,810 329,888 331,928 329,951 330,957 333,957 337)),((303 723,469 725,504 723,1865 722,2044 726,2044 736,1888 732,431 733,427 735,396 733,374 736,319 734,303 737,298 734,297 729,303 723)),((113 461,124 463,414 461,428 463,457 461,1915 460,1918 462,2043 463,2044 474,1991 471,1924 472,1920 470,140 472,133 474,126 472,111 475,106 467,113 461)),((2044 1063,1800 1059,1359 1061,1350 1059,1345 1061,114 1062,110 1059,114 1053,124 1052,220 1053,223 1051,408 1053,499 1051,504 1053,507 1051,651 1050,955 1052,1097 1050,1107 1052,1261 1049,1285 1051,1663 1049,1737 1051,1745 1049,1765 1051,1780 1049,1808 1051,1819 1049,2044 1054,2044 1063)),((1891 994,1104 994,1069 996,1049 994,1019 996,988 994,969 996,459 997,424 996,418 992,418 989,422 986,640 987,646 985,732 986,736 984,741 986,1146 984,1187 986,1217 984,1640 985,1646 983,1652 985,1851 984,1875 986,1897 984,2044 988,2044 998,1891 994)),((-3 420,0 417,-2 390,3 364,73 362,98 365,116 362,121 366,122 372,116 377,45 372,15 376,10 381,9 422,19 430,34 428,39 436,34 442,28 443,4 439,-2 432,-3 420)),((58 1639,76 1639,86 1642,116 1640,124 1645,124 1650,117 1655,102 1652,58 1653,53 1650,52 1645,58 1639)),((652 1027,646 1031,622 1028,107 1030,99 1033,94 1056,90 1059,29 1063,24 1059,25 1052,30 1049,76 1049,85 1039,86 1023,95 1020,503 1018,520 1020,648 1017,652 1022,652 1027)),((1 2038,36 2036,1385 2034,1390 2036,1483 2035,1488 2039,1483 2045,1362 2045,1358 2043,1356 2045,-2 2045,1 2038)),((1258 917,1319 920,1368 917,1375 921,1376 927,1369 932,1357 929,1289 928,1256 932,1249 928,1249 922,1258 917)),((1281 787,1429 789,1433 787,1478 789,1526 787,1927 788,2044 791,2044 801,1749 797,1367 799,1339 797,1279 800,1276 794,1281 787)),((1674 231,1695 230,2044 234,2044 245,1938 241,1674 241,1669 238,1669 234,1674 231)),((1830 175,1189 175,1172 177,1053 175,1012 177,1005 175,979 177,773 176,751 179,746 171,753 165,1007 167,1875 165,2044 169,2044 179,1830 175)),((253 1805,334 1807,564 1805,569 1807,576 1805,923 1806,926 1804,1039 1806,1068 1804,1079 1806,1092 1804,1916 1804,2044 1808,2044 1818,2012 1815,1896 1815,1889 1813,1849 1815,1736 1814,1732 1812,1725 1815,1710 1813,1302 1815,1268 1813,1192 1815,1184 1812,1179 1815,1050 1814,1043 1816,1036 1814,586 1816,578 1814,572 1816,423 1816,420 1814,417 1816,275 1816,254 1819,248 1816,247 1811,253 1805)),((2044 670,1737 666,1707 668,1703 666,1131 668,1121 666,1087 668,84 669,73 671,67 678,66 728,63 733,27 737,23 730,30 723,46 724,54 719,56 714,55 665,59 659,65 657,96 660,222 658,236 660,240 658,533 659,538 657,760 659,778 657,1055 658,1068 656,1346 658,1395 656,1406 658,1453 656,1466 658,1507 656,1513 658,1538 656,1838 656,1845 658,2044 660,2044 670)),((1320 1157,1314 1161,1301 1158,1237 1159,1234 1157,998 1160,991 1158,973 1160,963 1158,890 1160,471 1159,459 1161,446 1159,82 1161,52 1159,45 1161,40 1167,40 1192,35 1196,28 1196,24 1192,30 1173,31 1152,37 1149,62 1148,86 1151,441 1149,508 1151,516 1149,527 1151,700 1148,711 1150,1137 1148,1166 1150,1316 1147,1321 1152,1320 1157)),((57 1934,83 1938,686 1936,692 1938,710 1935,718 1937,730 1935,745 1937,982 1937,1177 1934,1182 1938,1182 1944,1177 1948,1146 1945,972 1946,969 1944,964 1946,808 1945,781 1947,56 1948,51 1940,57 1934)),((33 1212,58 1214,63 1212,95 1217,432 1216,440 1214,446 1216,545 1216,562 1213,568 1216,569 1222,563 1228,549 1225,440 1227,421 1224,414 1226,82 1227,41 1225,29 1227,24 1223,24 1219,33 1212)),((280 1411,355 1413,364 1410,398 1413,696 1411,743 1413,747 1411,1833 1410,1875 1412,1882 1410,2044 1414,2044 1424,1939 1420,1742 1421,1717 1419,1686 1421,1409 1420,1399 1422,1382 1420,1261 1422,1220 1420,1137 1420,1131 1422,1115 1420,397 1422,370 1425,352 1422,294 1422,280 1425,275 1421,275 1416,280 1411)),((789 1092,782 1094,637 1095,609 1093,590 1095,86 1096,62 1095,56 1092,59 1086,69 1084,195 1086,785 1084,792 1088,789 1092)),((37 308,31 312,19 309,-3 309,-3 298,15 300,33 297,38 302,37 308)),((2042 441,1856 437,1112 437,1089 439,760 438,755 440,748 438,539 440,526 438,518 440,511 438,360 439,302 442,297 437,298 432,303 428,337 430,449 428,493 430,550 428,577 430,592 428,1109 429,1148 427,1286 429,1291 427,1520 428,1527 426,1536 428,1834 427,1872 429,1879 427,1882 429,1964 428,2044 431,2042 441)),((484 797,477 800,63 801,55 798,57 791,461 789,484 792,484 797)),((676 1018,862 1019,892 1017,1932 1017,2044 1021,2044 1029,2028 1031,1930 1027,1748 1028,1739 1026,1718 1028,682 1029,671 1028,668 1022,676 1018)),((97 1478,177 1479,179 1485,168 1489,114 1489,111 1487,102 1489,86 1487,83 1482,97 1478)),((33 1939,36 1944,26 1948,-2 1948,-3 1938,33 1939)),((31 1606,97 1610,191 1608,195 1610,243 1610,256 1607,262 1610,263 1617,256 1622,244 1619,75 1620,45 1617,28 1620,24 1612,31 1606)),((2044 768,2035 769,1992 766,1700 766,1683 764,1640 766,1512 764,1494 766,531 766,496 768,351 766,263 768,258 766,211 768,207 766,203 768,67 768,54 766,44 769,38 778,37 865,39 873,37 889,40 927,34 934,28 934,24 930,29 911,28 772,29 761,34 756,259 758,356 756,376 758,1031 755,1049 757,1061 755,1282 756,1295 754,1300 756,1909 755,2044 759,2044 768)),((2044 1490,1934 1486,1281 1485,1259 1487,427 1487,418 1489,413 1487,362 1489,282 1487,209 1488,197 1491,191 1486,192 1481,197 1477,324 1479,472 1478,479 1476,483 1478,760 1477,766 1479,787 1476,1033 1478,1069 1476,1310 1477,1323 1475,1334 1477,1734 1477,1765 1475,1770 1477,1921 1476,2044 1479,2044 1490)),((54 1443,63 1441,82 1446,327 1446,369 1443,373 1445,375 1451,371 1456,363 1458,351 1454,56 1456,51 1449,54 1443)),((172 2004,339 2003,345 2005,346 2010,328 2014,311 2012,172 2013,167 2010,167 2007,172 2004)),((89 724,126 726,132 724,273 724,284 726,286 731,281 734,90 735,84 733,82 728,89 724)),((1749 1878,1711 1880,1148 1881,1074 1879,1009 1881,983 1879,973 1881,642 1880,638 1882,489 1880,425 1883,415 1881,66 1882,59 1881,56 1876,62 1872,128 1873,154 1871,159 1873,174 1871,1738 1869,1749 1871,1753 1869,1812 1869,2044 1873,2044 1882,1749 1878)),((973 329,1001 330,1531 330,1565 328,1648 330,1677 328,1684 330,1699 328,1938 331,1962 329,2044 332,2044 343,1981 340,1717 338,1711 340,1143 339,1102 341,1019 339,973 342,969 334,973 329)),((-3 626,1 614,1 534,7 529,48 527,55 519,56 401,60 396,229 398,566 395,649 397,742 394,783 397,797 395,1827 394,2044 398,2042 408,1836 404,1328 406,1208 404,1203 406,988 405,984 407,977 405,920 407,907 405,655 405,554 407,549 405,531 407,76 408,69 413,66 427,65 533,56 539,23 539,12 546,10 595,12 629,9 637,0 639,-3 637,-3 626)),((10 1118,13 1123,10 1151,10 1180,13 1196,12 1241,21 1249,59 1249,68 1259,66 1339,68 1342,68 1380,66 1386,60 1390,19 1390,2 1393,-3 1390,-3 1382,5 1378,35 1380,51 1377,55 1373,57 1364,56 1341,58 1338,56 1299,58 1293,55 1266,51 1261,44 1259,6 1257,0 1246,2 1224,0 1171,2 1166,0 1162,1 1135,-3 1129,-3 1120,4 1116,10 1118)),((2044 1586,2040 1588,1893 1584,1666 1584,1661 1586,1655 1584,1440 1584,1436 1586,1432 1584,976 1584,966 1586,958 1584,552 1587,475 1585,449 1589,442 1583,447 1575,726 1577,750 1575,1141 1574,1169 1576,1229 1574,1246 1576,1251 1574,1353 1575,1363 1573,1367 1575,1859 1574,2044 1578,2044 1586)),((2044 1556,2040 1554,1915 1553,1910 1551,1892 1553,1718 1552,1715 1550,1708 1552,-3 1554,-3 1544,202 1545,215 1543,457 1544,482 1542,696 1544,1087 1541,1091 1543,1742 1541,1756 1543,1790 1541,1820 1543,1861 1541,2044 1545,2044 1556)),((9 268,9 274,-2 277,-3 266,9 268)),((1364 361,1742 363,1757 361,1922 362,1928 364,1967 362,2043 365,2044 375,1726 371,1363 374,1359 370,1359 365,1364 361)),((90 298,281 298,288 300,289 305,279 309,97 310,83 308,81 303,90 298)),((1211 1935,1913 1935,2044 1938,2044 1948,1959 1945,1569 1944,1547 1946,1207 1946,1199 1941,1211 1935)),((69 2001,85 2004,132 2004,147 2002,151 2006,151 2012,145 2016,128 2013,-3 2012,-3 2002,69 2001)),((29 37,546 35,554 37,641 35,650 38,651 42,647 45,209 46,197 48,126 46,93 48,27 46,25 41,29 37)),((1258 1901,1272 1903,1847 1902,1872 1904,1903 1902,1970 1904,1975 1902,1988 1905,2044 1905,2044 1915,1949 1912,1289 1912,1256 1915,1251 1912,1250 1907,1258 1901)),((1367 1278,1383 1280,1708 1280,1717 1278,1721 1280,1979 1280,2044 1283,2044 1293,1982 1290,1649 1290,1645 1288,1621 1290,1392 1289,1367 1292,1361 1288,1361 1282,1367 1278)),((263 1682,255 1685,104 1686,84 1683,85 1676,253 1674,263 1678,263 1682)),((9 138,11 147,8 173,-3 178,0 124,-3 94,0 78,-3 67,0 59,-3 45,-1 43,-3 25,-1 4,-3 -2,10 -2,9 138)),((155 364,205 363,245 365,277 363,691 364,704 362,713 364,843 362,853 364,1256 362,1260 364,1264 362,1339 362,1347 366,1344 372,1334 373,1067 372,1056 374,1047 372,797 374,745 372,714 374,709 372,702 374,697 372,693 374,687 372,678 374,672 372,663 374,310 373,268 375,248 373,144 374,139 368,155 364)),((8 1742,13 1745,13 1748,-3 1752,-3 1741,8 1742)),((144 1970,150 1973,151 1978,119 1982,106 1980,-3 1981,-3 1970,144 1970)),((1176 1345,1221 1344,1924 1345,2044 1348,2044 1359,2011 1356,1651 1355,1646 1353,1614 1356,1475 1354,1369 1356,1365 1354,1183 1356,1170 1353,1170 1349,1176 1345)),((32 4,1826 1,1847 3,1856 1,2019 3,2044 5,2044 15,1839 11,32 14,26 11,25 7,32 4)),((279 887,315 889,333 886,438 889,877 886,1038 888,1041 886,1911 886,2044 889,2044 900,1917 896,1432 897,1423 895,1404 897,1002 896,956 898,821 896,537 898,526 896,523 898,382 897,339 901,327 898,295 898,279 901,274 897,274 892,279 887)),((1762 699,1070 701,1055 699,1046 701,676 702,630 700,617 702,592 700,561 702,548 700,541 702,512 700,87 702,82 697,86 693,106 691,218 693,236 691,530 692,534 690,645 692,655 690,1832 689,2044 693,2044 703,1762 699)),((1996 1618,1831 1618,1826 1616,1682 1616,1673 1618,1650 1616,1639 1618,1582 1616,1555 1618,1548 1616,1513 1618,1413 1616,1356 1618,794 1617,788 1619,697 1617,295 1620,281 1617,279 1612,283 1609,396 1610,405 1608,569 1610,782 1607,796 1609,1274 1607,1289 1609,1298 1607,1866 1608,1877 1606,1886 1609,1916 1607,2044 1610,2044 1621,1996 1618)),((35 463,40 469,34 473,-3 473,-3 462,35 463)),((594 1215,866 1214,898 1215,904 1221,898 1225,840 1223,835 1225,586 1224,585 1218,594 1215)),((281 952,296 954,729 952,765 954,774 952,788 954,809 952,1301 951,1313 954,1374 952,1384 956,1388 952,1395 960,1396 956,1402 957,1409 952,1412 957,1416 952,1674 951,1695 953,1719 951,1726 953,1756 951,1761 953,1808 951,2044 955,2044 965,1965 962,1537 961,1507 963,1398 962,1396 960,1346 963,1301 961,1292 963,1140 961,988 963,983 961,742 964,586 962,345 963,278 966,274 958,281 952)),((1345 1289,90 1292,84 1289,85 1283,97 1281,121 1283,149 1281,152 1283,165 1281,1342 1279,1348 1283,1345 1289)),((7 1347,12 1354,6 1358,-1 1358,-3 1347,7 1347)),((28 1282,38 1288,40 1354,33 1360,27 1359,24 1355,29 1330,28 1301,20 1293,-3 1292,-3 1281,28 1282)),((1348 1714,1338 1716,978 1715,947 1717,938 1715,912 1717,576 1716,569 1718,544 1716,540 1718,533 1716,452 1717,447 1713,452 1707,525 1706,648 1708,1323 1705,1349 1708,1348 1714)),((37 496,39 502,30 506,-3 506,-3 495,37 496)),((32 201,38 206,28 211,-3 211,-3 200,32 201)),((92 888,259 889,262 895,258 898,145 897,88 899,82 896,82 892,92 888)),((1237 1320,1228 1323,719 1324,694 1322,686 1324,591 1323,586 1325,580 1323,214 1325,191 1323,87 1324,83 1319,86 1315,965 1314,1033 1311,1041 1313,1228 1312,1237 1316,1237 1320)),((12 828,9 844,11 948,8 962,-3 965,-3 948,0 945,1 839,-3 834,-3 824,4 821,12 828)),((65 272,67 313,63 339,48 342,-3 343,-3 331,42 332,54 324,54 283,43 276,27 279,22 271,27 265,60 267,65 272)),((2044 1195,1949 1191,1564 1192,1509 1190,920 1193,759 1191,263 1194,245 1192,239 1194,182 1193,169 1196,163 1190,164 1185,169 1182,322 1184,392 1182,398 1184,407 1182,1479 1180,1482 1182,1629 1182,1637 1180,1676 1182,1694 1180,1703 1182,1920 1181,2044 1184,2044 1195)),((2044 1981,1800 1977,1789 1979,1524 1977,1464 1979,1443 1977,1438 1979,1434 1977,1404 1979,859 1978,853 1980,641 1978,628 1980,407 1979,382 1981,311 1979,183 1980,168 1983,163 1977,169 1969,342 1971,382 1969,394 1971,469 1969,485 1971,523 1969,548 1971,567 1969,932 1970,959 1968,1028 1970,1120 1968,1132 1970,1207 1967,1215 1969,1382 1969,1396 1967,1402 1969,1598 1969,1606 1967,1610 1969,1918 1968,2044 1972,2044 1981)),((232 996,201 998,146 996,89 997,82 993,84 988,226 986,234 990,232 996)),((402 1749,394 1753,385 1750,292 1750,280 1753,275 1748,275 1744,281 1739,339 1741,397 1738,403 1743,402 1749)),((1287 1083,1359 1082,1931 1083,2033 1087,2044 1085,2044 1096,1783 1092,1354 1094,1310 1092,1303 1094,1282 1091,1281 1087,1287 1083)),((1368 1704,1403 1707,1420 1705,1462 1707,1468 1705,1777 1706,1789 1704,1795 1708,1795 1713,1790 1718,1770 1715,1459 1715,1453 1717,1386 1715,1366 1718,1362 1714,1362 1708,1368 1704)),((1204 1837,1343 1836,1935 1837,2044 1841,2044 1849,1925 1848,1921 1846,1905 1848,1884 1846,1286 1846,1204 1847,1199 1840,1204 1837)),((247 965,187 963,131 965,87 964,82 959,88 954,250 953,261 956,263 961,247 965)),((1920 1748,1656 1749,1651 1747,1624 1749,1589 1747,1575 1749,1289 1749,1285 1747,1277 1749,885 1750,874 1748,868 1750,856 1748,850 1750,432 1751,420 1748,418 1744,431 1739,594 1741,638 1739,651 1741,848 1739,858 1741,862 1739,1074 1740,1090 1738,1139 1740,1265 1738,1275 1740,1283 1738,1890 1738,2036 1741,2044 1743,2044 1752,1920 1748)),((40 1585,33 1590,21 1587,-3 1587,-1 1576,35 1575,41 1581,40 1585)),((2044 1686,1875 1682,1821 1684,1787 1682,1351 1684,1287 1682,1182 1684,1093 1682,1009 1685,983 1682,975 1684,866 1684,848 1682,662 1685,656 1683,324 1684,280 1687,275 1682,276 1677,281 1673,303 1675,696 1675,742 1673,746 1675,755 1673,1404 1672,1416 1674,1456 1672,1492 1674,1530 1672,1587 1674,1649 1672,1664 1674,1708 1672,1711 1674,1749 1674,1754 1672,1772 1674,1843 1672,2044 1676,2044 1686)),((39 696,35 704,17 704,11 712,10 792,7 799,-3 801,-3 785,1 776,-1 736,1 698,6 693,33 690,39 696)),((36 1511,42 1518,36 1521,7 1523,-3 1520,-3 1511,36 1511)),((708 821,1670 820,1720 822,1751 820,1755 822,1759 820,2042 823,2044 834,1930 830,1908 832,1903 830,1184 832,1169 830,1123 832,1060 830,1057 832,701 832,695 825,708 821)),((3 987,36 988,39 994,31 997,5 997,-1 994,-1 991,3 987)),((3 1641,11 1643,13 1651,10 1666,22 1678,27 1676,44 1678,56 1675,67 1680,67 1816,70 1832,86 1839,174 1837,179 1841,178 1849,172 1852,162 1849,131 1848,89 1850,64 1847,58 1842,56 1695,49 1686,17 1686,2 1680,2 1658,-3 1654,-2 1644,3 1641)),((1421 918,1433 920,1948 919,1966 922,1968 920,2044 922,2044 932,1819 928,1810 930,1566 928,1420 931,1416 928,1416 922,1421 918)),((727 1771,758 1773,1119 1771,1169 1773,1423 1771,1427 1773,1431 1771,1898 1771,2044 1775,2044 1785,1985 1782,1925 1783,1921 1781,1320 1782,1296 1780,1290 1782,1210 1782,1198 1780,1191 1782,1071 1781,1067 1783,1060 1781,741 1782,727 1785,721 1781,721 1776,727 1771)),((67 1412,141 1414,258 1412,264 1415,264 1419,250 1423,63 1423,56 1420,55 1415,67 1412)),((279 592,476 594,566 592,586 594,591 592,1005 593,1013 591,1183 593,1418 591,1427 593,1431 591,1652 591,1660 593,1665 591,1856 591,2044 595,2044 605,1886 601,1600 602,1591 600,1585 602,1371 601,1361 603,1340 600,1336 602,864 603,811 601,535 602,520 604,351 602,346 604,296 603,278 606,273 598,279 592)),((32 1709,37 1713,39 1722,38 1820,41 1878,32 1885,24 1880,29 1867,28 1725,21 1719,-2 1718,-3 1708,32 1709)),((822 788,1254 788,1263 790,1264 795,1260 798,1107 797,1088 799,923 798,919 800,873 798,862 800,815 799,808 796,808 791,822 788)),((1179 1388,1010 1387,1006 1389,709 1388,687 1390,660 1388,498 1389,490 1391,484 1389,87 1390,82 1385,88 1380,482 1380,486 1378,791 1380,1005 1378,1009 1380,1013 1378,1173 1377,1182 1383,1179 1388)),((2044 114,1925 110,1329 111,1315 109,1270 111,1262 109,1241 111,750 112,735 110,413 113,342 111,305 114,300 109,302 103,307 100,320 102,670 102,705 100,1294 101,1344 99,1410 101,1480 99,1524 101,1550 99,1555 101,1566 99,2044 102,2044 114)),((90 429,272 429,285 432,285 436,278 440,87 440,83 438,82 433,90 429)),((7 1839,13 1845,9 1849,-3 1850,-3 1839,7 1839)),((286 1906,385 1905,425 1902,431 1910,422 1917,391 1913,73 1915,-3 1913,-3 1903,286 1906)),((86 1348,104 1346,245 1348,288 1346,301 1348,595 1347,597 1354,567 1357,511 1355,492 1357,149 1356,93 1358,85 1356,82 1351,86 1348)),((87 856,125 855,131 857,179 854,188 856,281 855,287 857,290 862,283 866,93 866,84 864,82 859,87 856)),((678 832,671 835,657 831,645 833,602 831,76 834,69 839,66 850,68 896,66 923,69 940,66 952,68 1004,65 1025,59 1029,21 1030,12 1038,12 1077,17 1084,37 1084,40 1093,36 1097,11 1096,5 1094,1 1087,0 1047,3 1024,11 1020,47 1019,56 1009,58 866,56 845,58 826,64 821,163 824,438 821,445 823,648 821,658 823,674 820,679 824,678 832)),((87 1807,226 1806,233 1808,235 1813,220 1817,90 1816,84 1813,84 1810,87 1807)),((1339 1150,1346 1148,1974 1149,2044 1152,2044 1162,1925 1158,1711 1159,1703 1157,1687 1159,1619 1157,1348 1159,1336 1154,1339 1150)),((1878 1125,1528 1125,1520 1127,1516 1124,1512 1126,1404 1125,1390 1127,1055 1125,422 1127,417 1122,422 1117,562 1118,580 1116,586 1118,627 1116,1078 1117,1090 1115,1221 1117,1223 1115,1617 1115,1624 1117,1744 1114,1825 1117,1837 1115,2012 1117,2043 1119,2044 1129,1878 1125)),((9 1873,11 1879,-3 1882,-3 1872,9 1873)),((429 1717,424 1720,387 1717,326 1717,308 1720,303 1715,303 1711,310 1706,389 1708,423 1705,431 1711,429 1717)),((7 1315,12 1318,12 1322,-3 1325,-3 1315,7 1315)),((1265 1091,1257 1096,1247 1093,1038 1094,1026 1092,842 1093,808 1096,804 1092,804 1086,810 1082,826 1084,1222 1084,1259 1081,1265 1086,1265 1091)),((850 1509,1928 1509,2044 1512,2044 1521,1880 1518,846 1520,838 1518,836 1513,850 1509)),((288 110,283 112,41 113,31 112,25 108,30 102,263 101,283 102,289 105,288 110)),((47 1117,119 1119,257 1118,262 1123,259 1127,35 1128,29 1125,28 1121,47 1117)),((401 995,394 999,380 996,283 996,251 999,246 994,247 989,252 985,351 987,376 985,380 987,394 984,402 990,401 995)),((1869 568,1175 569,1166 567,1109 570,959 568,701 571,682 569,100 570,86 572,30 571,26 566,32 561,62 560,83 562,89 560,1242 558,1254 560,1333 558,1361 560,1408 558,1710 559,1717 557,1721 559,1898 558,1903 560,2044 562,2044 572,1869 568)),((1203 1376,1219 1379,1225 1377,1247 1379,1292 1377,1469 1379,1473 1377,1824 1377,1916 1379,1928 1377,1931 1379,2042 1381,2044 1391,1870 1387,1796 1389,1789 1387,1307 1387,1198 1390,1194 1386,1194 1381,1203 1376)),((11 1612,11 1618,-3 1619,-3 1610,11 1612)),((306 297,424 299,471 297,479 299,482 297,535 297,546 299,550 297,722 298,730 296,744 298,884 296,941 298,971 296,1896 296,2042 299,2044 311,1960 307,1842 308,1838 306,1469 306,1446 308,1282 306,1249 308,1241 306,1101 306,1083 308,332 308,306 311,302 308,301 302,306 297)),((1506 2033,1520 2035,1828 2034,1840 2036,1898 2034,2044 2038,2044 2045,1502 2045,1500 2040,1506 2033)),((98 495,468 494,481 496,484 502,475 505,96 506,83 504,83 498,98 495)),((1182 1846,1176 1850,1155 1846,1020 1848,1016 1846,1003 1848,695 1847,678 1849,672 1847,302 1848,280 1851,275 1847,276 1841,282 1837,387 1840,402 1838,692 1837,1009 1838,1013 1836,1023 1838,1156 1838,1176 1835,1182 1840,1182 1846)),((38 668,32 670,6 670,-2 666,-1 662,4 659,33 659,40 663,38 668)),((791 797,782 802,771 799,520 799,501 802,497 798,497 792,503 788,639 790,786 787,791 792,791 797)),((1432 1222,1428 1226,1411 1224,945 1224,920 1227,915 1221,916 1217,922 1213,937 1215,1296 1215,1426 1212,1432 1217,1432 1222)),((29 1413,38 1417,40 1421,40 1470,45 1477,64 1481,68 1487,68 1502,75 1509,105 1512,132 1510,154 1512,230 1510,233 1512,628 1511,649 1509,713 1511,815 1508,820 1512,820 1517,815 1522,777 1519,74 1521,64 1519,58 1514,57 1499,52 1491,35 1488,28 1479,30 1464,28 1431,20 1424,-3 1424,-3 1413,29 1413)),((1451 262,1549 265,1573 263,1933 264,2044 267,2044 277,1793 273,1788 275,1645 273,1614 275,1492 273,1446 276,1442 268,1451 262)),((2044 81,1883 77,31 80,25 76,28 70,39 69,248 70,275 68,840 69,919 67,932 69,946 67,1458 68,1534 66,2044 70,2044 81)),((704 166,730 167,735 172,726 177,697 176,694 169,704 166)),((1952 536,1795 536,1792 534,1726 537,1698 535,1566 537,1340 535,1249 537,1242 535,1005 537,999 535,986 537,859 536,855 538,694 536,638 538,630 536,87 538,82 536,81 532,86 528,273 527,285 529,324 527,329 529,355 527,509 528,517 526,678 528,835 526,850 528,858 526,1153 527,1161 525,1180 527,1579 525,1749 527,1760 525,1775 527,1800 525,1824 527,1831 525,1869 527,1878 525,2044 529,2044 539,1952 536)),((84 234,198 232,236 234,259 232,643 232,650 235,650 240,639 243,97 244,83 242,81 237,84 234)),((10 1774,13 1780,5 1784,-3 1784,-3 1774,10 1774))) diff --git a/rust/geo-test-fixtures/fixtures/issue-894/inpb.wkt b/rust/geo-test-fixtures/fixtures/issue-894/inpb.wkt new file mode 100644 index 00000000..2ad56577 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/issue-894/inpb.wkt @@ -0,0 +1 @@ +MULTIPOLYGON(((1790.3616 2048,1790.3616 0,2048 0,2048 2048,1790.3616 2048))) diff --git a/rust/geo-test-fixtures/fixtures/issue-894/inpc.wkt b/rust/geo-test-fixtures/fixtures/issue-894/inpc.wkt new file mode 100644 index 00000000..84c109c9 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/issue-894/inpc.wkt @@ -0,0 +1 @@ +MULTIPOLYGON(((1889 1671,2047 1675,2047 1687,1886 1685,1877 1682,1876 1676,1889 1671)),((1817 723,1821 720,1836 721,1846 716,1847 661,1855 654,2047 659,2047 671,1910 668,1868 670,1863 674,1861 685,1860 728,1850 734,1825 736,1815 731,1817 723)),((70 1265,77 1261,80 1252,86 1246,97 1245,109 1252,113 1263,120 1265,213 1264,228 1267,234 1275,237 1395,234 1536,226 1543,215 1545,126 1544,113 1547,109 1565,111 1574,116 1578,151 1578,158 1583,159 1587,151 1596,35 1596,30 1592,30 1585,38 1579,74 1578,80 1567,80 1551,75 1545,70 1544,0 1545,0 1265,70 1265)),((1739 361,1773 361,1779 366,1775 372,1768 374,1740 373,1735 369,1739 361)),((1853 1180,1924 1179,1944 1181,1947 1183,1947 1189,1940 1193,1862 1193,1851 1191,1848 1184,1853 1180)),((471 330,474 339,482 345,579 344,590 348,597 355,600 413,600 601,597 618,590 623,567 625,481 624,474 630,474 652,483 659,518 658,522 667,520 673,513 676,482 675,473 682,473 700,479 709,573 708,592 711,598 719,601 858,600 978,595 986,586 989,483 988,473 997,471 1003,462 1007,451 1005,441 991,432 988,334 990,327 988,319 978,317 929,319 907,316 881,319 865,317 754,320 716,330 709,429 710,440 707,444 701,444 681,441 677,401 676,394 672,393 665,402 658,432 659,441 656,444 650,445 633,439 624,331 625,320 617,317 600,319 596,316 437,318 428,317 374,320 356,325 348,337 345,433 345,442 340,448 329,454 327,471 330)),((1878 230,1917 229,2046 232,2047 246,1877 242,1872 235,1878 230)),((1876 199,1883 197,2047 200,2047 213,1884 210,1875 208,1872 204,1876 199)),((1770 1803,1798 1802,1805 1803,1809 1811,1803 1816,1773 1815,1766 1811,1766 1807,1770 1803)),((1882 1770,2047 1772,2047 1786,1887 1783,1879 1781,1876 1774,1882 1770)),((1886 852,2047 854,2047 869,1959 865,1881 865,1874 861,1874 857,1886 852)),((1715 98,1770 98,1778 105,1771 111,1730 112,1706 109,1703 107,1703 102,1715 98)),((1742 1934,1804 1933,1825 1934,1833 1940,1830 1945,1820 1947,1754 1947,1740 1945,1738 1938,1742 1934)),((1883 721,2047 724,2047 737,1880 734,1873 730,1873 726,1883 721)),((329 1078,344 1075,434 1075,440 1073,445 1065,442 1043,433 1039,427 1041,398 1039,394 1031,403 1023,518 1023,523 1028,523 1032,518 1039,513 1041,485 1040,475 1046,476 1070,487 1075,562 1073,590 1076,597 1084,596 1094,600 1105,598 1168,593 1175,580 1179,482 1180,472 1195,465 1199,454 1199,448 1196,443 1183,438 1180,332 1179,324 1174,319 1155,318 1121,322 1085,329 1078)),((1887 688,2047 691,2047 705,1885 702,1876 700,1874 693,1887 688)),((1822 1704,1829 1706,1834 1713,1837 1876,1831 1882,1822 1882,1818 1877,1822 1866,1821 1725,1814 1718,1767 1718,1762 1714,1762 1709,1768 1704,1822 1704)),((1939 1640,1960 1639,2047 1642,2047 1655,1948 1653,1936 1651,1933 1644,1939 1640)),((1769 2003,1774 1999,1869 1997,1881 2000,1941 1999,1948 2004,1947 2012,1942 2015,1926 2012,1790 2011,1781 2018,1781 2047,1769 2047,1767 2044,1769 2003)),((1738 493,1754 491,1830 492,1834 495,1830 503,1817 505,1739 504,1734 498,1738 493)),((1904 459,2047 462,2047 475,1904 473,1899 469,1899 463,1904 459)),((1885 294,2047 297,2047 311,1880 308,1873 304,1873 299,1885 294)),((1818 1048,1823 1045,1873 1044,1877 1034,1877 1023,1879 1019,1886 1016,2047 1018,2047 1032,1963 1029,1897 1030,1891 1038,1889 1054,1883 1059,1822 1061,1816 1055,1818 1048)),((1064 0,1065 68,1063 80,1065 103,1063 115,1065 126,1063 129,1065 134,1063 232,1065 256,1063 262,1065 282,1063 299,1065 350,1063 385,1065 393,1063 397,1065 422,1063 429,1065 437,1063 457,1065 469,1064 563,1066 566,1064 577,1066 620,1064 623,1064 728,1066 733,1064 740,1066 746,1064 814,1066 852,1064 857,1067 862,1064 885,1066 888,1064 932,1066 943,1064 975,1067 993,1064 1004,1067 1008,1067 1019,1064 1033,1066 1036,1064 1100,1066 1126,1064 1131,1067 1158,1065 1304,1067 1334,1064 1359,1067 1377,1064 1465,1067 1469,1066 1545,1068 1550,1066 1557,1068 1586,1066 1591,1067 1832,1065 1837,1068 1861,1066 2034,1068 2038,1066 2043,1068 2047,1047 2047,1045 2025,1047 2003,1044 1994,1046 1933,1044 1926,1047 1917,1045 1852,1047 1835,1044 1823,1047 1812,1045 1716,1047 1703,1044 1686,1047 1672,1044 1658,1046 1594,1044 1584,1047 1530,1044 1489,1046 1476,1044 1457,1046 1445,1044 1279,1046 1260,1044 1247,1046 1225,1044 1213,1046 1206,1044 1179,1046 1163,1044 1154,1045 1089,1043 1086,1045 1073,1043 843,1045 827,1042 811,1045 731,1042 707,1045 690,1042 639,1045 616,1042 571,1045 562,1042 539,1045 520,1042 475,1044 456,1042 441,1044 429,1042 229,1044 213,1042 198,1044 188,1042 164,1044 145,1042 130,1044 112,1042 99,1044 77,1042 64,1044 44,1041 0,1064 0)),((1743 1343,1797 1343,1806 1346,1807 1353,1796 1357,1742 1356,1735 1350,1743 1343)),((1881 1311,2047 1314,2047 1327,1883 1324,1875 1320,1875 1316,1881 1311)),((1712 33,1768 32,1777 36,1777 41,1772 45,1717 46,1704 43,1702 38,1712 33)),((1824 590,2018 591,2047 593,2047 606,1967 603,1827 603,1819 600,1817 595,1824 590)),((1820 1605,1829 1602,1877 1606,2047 1609,2047 1623,2013 1620,1824 1618,1818 1614,1817 1610,1820 1605)),((1741 1540,2047 1542,2047 1557,1933 1553,1745 1553,1736 1549,1736 1544,1741 1540)),((1884 426,2047 429,2047 443,1963 439,1884 440,1876 438,1873 432,1884 426)),((1823 1209,1831 1208,1892 1213,2047 1215,2047 1229,1992 1226,1946 1227,1942 1225,1933 1227,1873 1226,1848 1223,1826 1225,1817 1221,1817 1214,1823 1209)),((1740 1408,1826 1409,1832 1412,1835 1418,1836 1468,1840 1473,1856 1475,1860 1478,1864 1498,1871 1505,1889 1508,2045 1510,2047 1524,1859 1519,1850 1512,1848 1495,1843 1489,1830 1488,1822 1483,1820 1430,1815 1424,1767 1421,1738 1423,1734 1420,1734 1413,1740 1408)),((2047 410,1914 406,1867 408,1862 413,1861 529,1857 535,1851 537,1815 538,1807 542,1805 612,1807 625,1804 634,1799 637,1789 634,1788 626,1792 620,1791 559,1794 529,1800 525,1837 524,1846 518,1846 412,1849 395,1865 391,1881 394,1963 393,2047 397,2047 410)),((1789 387,1792 362,1808 358,1867 358,1881 361,1911 360,1915 363,1916 371,1911 375,1855 372,1809 374,1805 382,1805 419,1811 425,1827 425,1832 430,1832 436,1828 440,1798 438,1793 435,1789 387)),((1881 885,1906 884,2047 888,2047 901,1881 898,1874 894,1874 890,1881 885)),((1825 98,2007 99,2047 102,2047 115,1928 111,1837 112,1820 110,1816 104,1825 98)),((1850 1931,1908 1935,2047 1937,2047 1950,1984 1947,1857 1947,1847 1944,1845 1936,1850 1931)),((1933 622,2047 625,2047 639,1969 636,1935 638,1928 634,1927 629,1933 622)),((1459 0,1458 37,1461 61,1459 200,1461 204,1459 209,1461 213,1459 223,1461 227,1459 238,1462 255,1459 305,1461 309,1460 527,1462 537,1460 561,1462 566,1460 584,1462 600,1460 605,1462 645,1460 648,1462 651,1460 737,1462 749,1460 752,1462 765,1460 767,1462 781,1460 792,1462 795,1462 853,1460 859,1462 870,1460 874,1462 927,1460 949,1463 1033,1461 1043,1462 1122,1460 1125,1463 1156,1462 1210,1464 1213,1461 1219,1463 1277,1460 1281,1463 1311,1461 1315,1463 1319,1463 1350,1461 1352,1463 1356,1463 1418,1461 1446,1464 1457,1462 1462,1463 1532,1461 1536,1464 1542,1462 1567,1464 1589,1461 1593,1464 1656,1462 1660,1464 1671,1462 1674,1464 1692,1462 1725,1464 1729,1462 1771,1464 1774,1462 1779,1464 1782,1462 1795,1464 1799,1462 1823,1464 1833,1462 1847,1464 1860,1462 1879,1464 1890,1463 2047,1400 2047,1399 2022,1402 2018,1400 1951,1403 1932,1400 1915,1402 1880,1400 1873,1403 1865,1400 1860,1402 1765,1399 1711,1402 1677,1399 1663,1399 1639,1402 1608,1400 1568,1403 1565,1400 1562,1399 1551,1401 1547,1399 1479,1401 1425,1399 1408,1402 1395,1399 1370,1401 1186,1399 1163,1401 1155,1399 1152,1400 1091,1398 1089,1401 1066,1399 1064,1400 984,1398 978,1401 976,1397 959,1400 947,1398 880,1400 877,1398 873,1399 762,1397 747,1400 739,1397 698,1399 691,1397 683,1399 674,1397 656,1399 649,1397 476,1399 449,1397 395,1399 390,1397 364,1399 360,1397 346,1399 341,1397 324,1399 314,1397 289,1399 266,1397 264,1398 213,1396 208,1399 182,1397 180,1398 141,1396 138,1398 124,1397 0,1459 0)),((1963 1180,2045 1182,2047 1196,1981 1193,1963 1195,1959 1193,1957 1185,1963 1180)),((1744 1835,1795 1835,1806 1837,1809 1844,1799 1849,1742 1848,1736 1840,1744 1835)),((70 1821,79 1815,83 1806,101 1803,107 1807,114 1819,120 1821,174 1819,228 1822,234 1833,236 1859,235 2047,0 2047,0 1821,70 1821)),((1907 1050,1921 1048,2047 1051,2047 1066,2012 1063,1912 1062,1904 1060,1902 1056,1907 1050)),((1772 262,1798 262,1805 266,1805 271,1794 275,1770 275,1761 268,1772 262)),((1861 275,1861 329,1856 338,1844 341,1771 342,1760 339,1760 331,1766 327,1833 328,1841 326,1846 320,1845 281,1838 275,1819 276,1815 271,1815 266,1823 261,1852 262,1858 266,1861 275)),((1829 130,2031 133,2047 135,2047 148,1941 144,1829 145,1820 143,1817 134,1829 130)),((1552 0,1553 131,1550 136,1553 145,1552 243,1554 249,1552 414,1554 488,1552 496,1554 512,1552 521,1554 569,1552 584,1554 587,1553 742,1555 764,1553 777,1555 782,1553 788,1555 846,1553 880,1555 886,1553 891,1555 914,1553 956,1555 966,1553 973,1556 981,1553 1006,1556 1045,1554 1049,1555 1094,1552 1103,1555 1108,1554 1287,1556 1326,1554 1332,1556 1356,1554 1361,1557 1376,1555 1394,1557 1810,1555 1832,1557 1858,1555 1865,1557 1869,1555 1878,1557 1883,1555 1895,1557 1916,1555 1953,1557 1958,1555 1974,1557 2042,1555 2047,1479 2047,1477 2041,1480 1997,1478 1995,1479 1949,1477 1944,1480 1930,1477 1872,1479 1845,1477 1841,1480 1812,1477 1783,1479 1726,1477 1723,1480 1715,1477 1688,1480 1675,1477 1667,1479 1660,1477 1640,1480 1633,1477 1626,1480 1619,1477 1615,1479 1598,1477 1582,1480 1554,1477 1528,1479 1479,1477 1473,1478 1400,1476 1396,1478 1360,1476 1357,1478 1352,1475 1347,1478 1340,1476 1332,1478 1162,1476 1126,1478 1115,1475 1105,1477 1102,1478 1022,1476 1009,1478 992,1475 951,1477 945,1475 941,1477 937,1477 869,1475 865,1477 852,1475 838,1477 832,1475 829,1477 797,1474 778,1477 762,1475 758,1477 702,1475 697,1478 655,1475 639,1477 614,1474 570,1476 538,1474 531,1477 523,1474 503,1477 469,1474 400,1476 390,1474 313,1476 267,1474 262,1476 256,1473 241,1476 215,1474 106,1476 83,1474 0,1552 0)),((347 1633,351 1630,357 1632,397 1629,435 1630,444 1624,450 1614,457 1612,470 1613,481 1629,590 1631,598 1637,600 1644,601 1693,598 1726,593 1731,583 1734,484 1734,479 1736,475 1752,477 1763,485 1769,519 1769,524 1777,523 1781,516 1786,401 1786,395 1781,395 1776,399 1771,409 1768,435 1769,445 1762,444 1739,438 1734,351 1735,326 1730,320 1708,321 1648,327 1635,347 1633)),((838 0,835 100,838 137,834 164,837 169,839 193,837 203,839 205,839 233,836 237,839 245,837 284,845 294,849 292,863 297,879 295,883 299,883 304,879 308,846 311,838 320,840 432,842 436,840 440,840 506,842 511,838 566,841 571,838 579,839 716,837 720,840 723,842 842,840 1016,848 1022,879 1024,885 1030,881 1038,845 1042,840 1053,842 1064,838 1179,841 1196,839 1265,843 1354,841 1469,843 1485,840 1500,842 1567,840 1589,842 1593,840 1609,837 1613,840 1615,838 1624,841 1630,839 1645,842 1656,840 1680,843 1740,840 1751,841 1761,848 1768,879 1769,886 1775,886 1779,880 1784,848 1786,841 1794,844 1979,841 2047,686 2047,685 1860,690 1829,697 1822,714 1820,806 1818,810 1812,811 1796,806 1786,768 1785,761 1781,762 1773,767 1769,801 1768,810 1762,811 1747,806 1735,801 1733,717 1734,695 1731,688 1722,685 1686,687 1638,696 1631,713 1629,803 1629,810 1618,810 1601,804 1595,606 1597,594 1595,589 1597,447 1594,415 1596,402 1593,398 1587,399 1582,410 1577,437 1578,442 1575,446 1568,444 1547,433 1543,333 1544,324 1540,320 1530,318 1360,321 1273,330 1266,436 1264,442 1260,449 1247,466 1245,473 1250,476 1260,483 1264,573 1263,590 1266,598 1278,601 1309,602 1478,599 1536,591 1542,575 1544,481 1544,475 1555,476 1572,479 1576,486 1578,501 1576,516 1578,531 1576,539 1578,560 1576,804 1577,809 1572,810 1549,804 1543,696 1542,688 1536,685 1525,683 1381,686 1321,684 1308,687 1302,685 1285,688 1275,697 1267,713 1265,723 1268,724 1265,800 1264,805 1261,809 1253,808 1184,805 1180,700 1178,690 1172,686 1164,684 1138,686 1084,693 1077,702 1075,805 1072,809 1065,810 1047,804 1040,764 1039,759 1031,763 1025,771 1022,804 1022,810 1013,809 996,802 988,699 988,689 984,685 975,683 740,685 720,691 713,700 710,798 709,803 707,808 700,806 649,808 634,801 624,703 624,690 621,685 613,682 563,684 363,688 352,699 346,802 343,808 336,808 317,803 311,765 310,759 306,758 302,762 295,767 293,802 292,808 285,807 262,801 258,715 259,693 256,686 248,682 193,688 161,707 155,738 156,751 153,801 152,807 145,806 75,800 69,706 69,689 66,684 59,681 0,838 0)),((1821 33,1831 32,2047 36,2047 49,1827 46,1819 44,1815 38,1821 33)),((1937 362,2047 363,2047 377,1934 373,1930 366,1937 362)),((1878 263,2047 265,2047 278,1893 276,1877 274,1873 267,1878 263)),((1827 1114,2047 1117,2047 1130,1827 1127,1821 1123,1820 1118,1827 1114)),((1741 1311,1752 1310,1803 1311,1808 1318,1798 1324,1752 1324,1738 1322,1735 1315,1741 1311)),((1742 458,1820 458,1834 463,1832 470,1818 472,1746 472,1737 470,1733 466,1742 458)),((1802 982,1825 982,1832 984,1835 991,1825 996,1795 996,1791 992,1791 987,1802 982)),((1806 88,1803 168,1797 175,1764 178,1759 174,1759 168,1762 165,1782 163,1789 157,1791 111,1790 0,1805 0,1806 88)),((1741 426,1773 426,1778 429,1779 434,1769 439,1737 438,1733 430,1741 426)),((1855 1868,2047 1871,2047 1884,1872 1882,1853 1880,1849 1873,1855 1868)),((1854 786,2047 790,2047 802,1854 800,1847 796,1846 792,1854 786)),((1858 1408,2047 1412,2047 1425,1973 1422,1867 1423,1852 1421,1846 1414,1858 1408)),((598 0,597 60,593 66,584 69,482 68,476 71,473 94,476 100,480 103,517 104,520 114,518 118,511 121,397 120,393 116,393 110,401 103,434 103,441 99,443 77,441 72,435 68,344 70,324 67,319 60,317 48,316 0,598 0)),((1346 0,1345 39,1348 79,1345 99,1347 220,1345 233,1348 285,1345 342,1348 384,1345 439,1347 458,1345 461,1348 478,1346 484,1348 632,1346 646,1349 668,1348 715,1346 717,1348 824,1346 829,1349 854,1347 864,1349 889,1347 894,1349 1070,1347 1086,1349 1090,1347 1093,1349 1097,1347 1102,1349 1109,1347 1121,1349 1127,1347 1154,1349 1165,1347 1177,1349 1220,1347 1237,1349 1239,1349 1269,1347 1273,1349 1328,1347 1332,1350 1351,1347 1375,1350 1397,1347 1403,1350 1429,1347 1448,1350 1476,1347 1509,1350 1551,1348 1558,1350 1595,1348 1655,1351 1669,1348 1674,1350 1678,1348 1898,1350 1900,1350 1928,1347 1931,1350 1943,1349 2047,1080 2047,1081 1934,1078 1923,1081 1914,1078 1837,1080 1695,1078 1632,1080 1629,1077 1568,1080 1563,1078 1379,1080 1361,1077 1354,1080 1315,1077 1268,1079 1265,1078 1175,1080 1167,1077 1143,1079 910,1077 884,1079 881,1076 854,1078 849,1076 828,1078 819,1076 563,1078 549,1076 527,1078 503,1076 499,1076 326,1078 318,1076 314,1078 307,1076 283,1078 267,1076 260,1078 257,1075 207,1077 199,1075 187,1077 173,1076 0,1346 0)),((1807 1781,1797 1783,1769 1782,1765 1778,1765 1774,1770 1770,1796 1769,1804 1770,1809 1774,1807 1781)),((1741 393,1771 393,1778 397,1778 402,1773 406,1741 406,1735 404,1733 399,1741 393)),((1883 1475,1960 1475,1975 1478,1976 1485,1963 1489,1888 1488,1878 1485,1876 1479,1883 1475)),((1999 1837,2047 1838,2047 1852,1999 1850,1990 1846,1990 1841,1999 1837)),((1770 130,1776 136,1775 142,1768 146,1737 144,1726 146,1721 154,1720 173,1722 196,1720 349,1723 380,1721 388,1723 395,1722 512,1724 518,1731 524,1772 526,1776 533,1778 566,1776 719,1778 750,1771 766,1758 767,1752 771,1749 799,1751 1268,1755 1275,1765 1278,1824 1278,1831 1282,1834 1297,1835 1348,1833 1355,1828 1358,1822 1358,1817 1354,1821 1329,1821 1301,1815 1293,1744 1290,1739 1286,1737 1278,1736 781,1739 758,1744 754,1757 753,1764 745,1763 666,1766 603,1764 598,1765 561,1761 542,1749 537,1724 537,1714 533,1709 523,1708 158,1713 134,1725 131,1770 130)),((1821 0,2047 3,2047 16,1964 13,1837 14,1820 12,1816 6,1821 0)),((103 330,109 340,117 345,202 344,226 347,231 354,233 365,235 452,234 610,232 618,221 625,118 624,108 632,108 654,117 659,150 658,157 663,156 671,148 677,127 675,117 676,108 683,109 704,113 709,127 711,216 709,226 711,231 716,235 747,234 936,236 946,234 979,230 986,220 990,118 989,110 995,106 1004,100 1007,83 1004,78 993,71 989,0 991,0 710,63 711,73 709,78 703,79 687,73 677,32 676,27 667,38 658,75 658,79 650,79 632,73 625,0 626,0 345,69 346,76 341,81 331,89 328,103 330)),((1377 0,1375 49,1378 55,1376 236,1378 267,1376 280,1378 310,1376 323,1378 346,1376 368,1378 397,1376 402,1378 415,1376 424,1378 433,1376 449,1377 583,1379 586,1377 590,1379 633,1377 642,1379 646,1377 657,1379 667,1376 685,1378 710,1376 714,1379 743,1377 750,1379 814,1377 834,1379 839,1377 844,1379 875,1377 878,1379 883,1377 888,1379 919,1377 924,1380 955,1377 1115,1380 1137,1378 1263,1380 1270,1378 1281,1380 1286,1377 1315,1380 1343,1378 1446,1381 1452,1378 1496,1380 1499,1379 1643,1381 1659,1379 1662,1381 1752,1379 1782,1382 1788,1379 1798,1381 2016,1379 2044,1381 2047,1364 2047,1366 2013,1363 1980,1366 1929,1364 1835,1366 1819,1364 1817,1365 1749,1363 1746,1366 1727,1364 1724,1363 1369,1365 1358,1363 1355,1364 1202,1362 1197,1365 1120,1361 1063,1364 1059,1362 1049,1364 967,1362 926,1364 917,1362 889,1364 885,1361 873,1363 870,1361 689,1363 677,1361 674,1363 663,1361 657,1364 632,1362 628,1363 580,1360 575,1363 558,1361 546,1363 540,1360 530,1363 501,1361 491,1363 483,1361 475,1363 441,1361 439,1361 392,1363 388,1361 385,1361 291,1363 270,1361 267,1362 191,1360 185,1362 173,1360 156,1362 148,1360 132,1362 119,1360 103,1361 0,1377 0)),((1886 524,2047 527,2047 540,1879 537,1872 532,1872 529,1886 524)),((1882 1803,2004 1803,2031 1806,2036 1813,2024 1818,1887 1816,1879 1814,1876 1808,1882 1803)),((1879 1705,2047 1707,2047 1720,1888 1718,1878 1715,1876 1708,1879 1705)),((1746 623,1750 629,1749 730,1744 735,1732 732,1732 725,1736 719,1737 683,1735 677,1738 640,1732 627,1739 622,1746 623)),((1886 491,2047 494,2047 508,1880 505,1874 501,1874 495,1886 491)),((1737 1477,1744 1474,1803 1475,1810 1479,1804 1487,1766 1489,1741 1487,1735 1481,1737 1477)),((1859 1573,2047 1576,2047 1589,1865 1586,1852 1584,1848 1578,1859 1573)),((1821 1177,1822 1151,1825 1147,1832 1145,2047 1150,2047 1163,1843 1158,1835 1166,1835 1189,1829 1194,1822 1194,1817 1188,1821 1177)),((1719 559,1722 563,1721 659,1723 664,1721 900,1723 912,1721 921,1724 1239,1722 1264,1725 1325,1725 1413,1723 1417,1725 1422,1726 1522,1723 1651,1725 1927,1723 1932,1726 1955,1724 2047,1711 2047,1711 1987,1713 1982,1711 1979,1711 1943,1713 1936,1711 1932,1712 1845,1710 1841,1712 1829,1710 1823,1713 1816,1711 1770,1713 1768,1710 1757,1712 1651,1710 1648,1710 1611,1712 1608,1709 1596,1711 1592,1708 1551,1708 1425,1711 1364,1708 1268,1710 1229,1707 1223,1706 1202,1710 1167,1708 1159,1710 1049,1708 1024,1710 1003,1708 998,1711 952,1708 919,1710 911,1708 828,1710 796,1708 778,1710 775,1708 769,1711 756,1709 754,1709 687,1711 683,1708 677,1710 673,1708 595,1710 575,1704 566,1705 561,1710 557,1719 559)),((1887 327,2047 331,2047 344,1883 341,1875 339,1873 332,1887 327)),((1799 1638,1806 1642,1807 1663,1813 1670,1850 1671,1860 1674,1863 1679,1865 1828,1872 1834,1890 1836,1954 1837,1965 1835,1976 1841,1974 1849,1963 1851,1863 1848,1853 1843,1850 1836,1851 1747,1848 1692,1842 1685,1808 1685,1798 1682,1794 1677,1794 1657,1789 1647,1792 1640,1799 1638)),((1886 1278,2047 1281,2047 1294,1891 1292,1878 1290,1875 1283,1886 1278)),((1736 198,1824 196,1831 198,1833 203,1829 208,1815 210,1748 210,1737 208,1734 201,1736 198)),((72 154,81 140,97 137,107 144,109 151,115 155,194 154,222 157,229 164,232 180,233 228,230 251,223 258,203 261,120 259,112 262,108 267,110 290,118 294,147 293,152 295,156 304,147 312,32 311,27 303,35 295,73 292,77 287,77 267,69 260,0 260,0 156,72 154)),((1882 983,1976 983,2024 985,2031 987,2034 992,2031 996,2023 998,1901 997,1878 995,1875 987,1882 983)),((1968 2001,2047 2003,2047 2016,1974 2014,1965 2012,1962 2006,1968 2001)),((72 1075,77 1070,78 1045,72 1040,32 1040,29 1030,36 1024,150 1023,157 1029,157 1034,152 1040,147 1042,115 1041,110 1045,108 1054,111 1071,117 1075,204 1073,222 1075,229 1079,235 1093,233 1096,234 1168,230 1175,218 1180,141 1182,120 1180,112 1184,106 1197,92 1200,83 1197,78 1185,71 1181,0 1181,0 1075,72 1075)),((1856 1081,2047 1084,2047 1097,1866 1095,1851 1093,1847 1086,1856 1081)),((1796 2034,1814 2032,2047 2036,2047 2047,1813 2047,1795 2044,1792 2038,1796 2034)),((1819 67,1829 65,2047 68,2047 81,1833 79,1820 77,1817 70,1819 67)),((1989 1477,1999 1475,2047 1478,2047 1490,1992 1491,1986 1487,1985 1482,1989 1477)),((1766 1900,1772 1898,2047 1904,2047 1917,1892 1913,1883 1915,1856 1912,1781 1911,1769 1913,1762 1909,1766 1900)),((1853 1636,1885 1639,1913 1638,1918 1641,1919 1649,1913 1654,1871 1653,1849 1650,1845 1643,1853 1636)),((1708 0,1768 0,1777 4,1777 9,1769 13,1711 13,1702 6,1708 0)),((601 1834,599 1839,602 1891,602 2015,599 2047,319 2047,319 1853,321 1833,326 1823,393 1819,433 1821,443 1817,449 1805,464 1802,471 1805,476 1815,483 1820,573 1819,587 1820,596 1825,601 1834)),((1846 1441,1852 1438,1882 1442,2047 1445,2047 1459,1963 1455,1853 1455,1844 1447,1846 1441)),((1889 1343,2047 1346,2047 1360,1887 1357,1878 1355,1875 1348,1889 1343)),((1735 264,1737 235,1743 230,1841 227,1846 220,1846 175,1852 166,1870 163,2047 167,2047 180,1867 178,1860 188,1860 235,1855 241,1759 242,1750 249,1749 286,1754 293,1826 294,1832 300,1829 308,1750 308,1738 302,1735 264)),((1794 656,1804 654,1834 657,1836 661,1832 667,1825 669,1797 669,1790 664,1794 656)),((1807 1878,1799 1881,1742 1881,1737 1876,1737 1872,1744 1868,1788 1867,1804 1869,1808 1873,1807 1878)),((1833 692,1833 697,1829 702,1810 703,1806 708,1804 792,1798 799,1782 802,1778 808,1777 917,1779 924,1772 932,1765 932,1760 922,1765 914,1764 799,1766 791,1785 785,1791 779,1792 738,1790 732,1794 692,1801 688,1828 687,1833 692)),((1821 910,1820 760,1823 754,1832 751,1860 751,1887 754,2047 757,2047 770,1951 767,1881 768,1843 765,1834 771,1835 806,1832 838,1834 925,1826 932,1821 932,1816 927,1821 910)),((1744 1376,1771 1376,1777 1378,1780 1384,1774 1389,1745 1390,1737 1387,1736 1381,1744 1376)),((1742 1967,1751 1966,1944 1968,1949 1975,1944 1980,1758 1981,1738 1977,1737 1971,1742 1967)),((1878 951,2046 953,2047 968,2019 965,1880 963,1875 959,1875 954,1878 951)),((1716 65,1765 65,1776 68,1778 73,1773 78,1718 79,1706 77,1703 70,1716 65)),((233 0,233 56,231 63,225 69,219 70,121 69,112 71,108 76,109 99,116 103,151 104,156 113,146 122,33 121,28 118,27 112,33 105,70 103,78 94,78 75,71 70,0 71,0 0,233 0)),((1967 1967,2047 1970,2047 1983,1963 1982,1959 1979,1958 1973,1967 1967)),((1802 1455,1795 1456,1789 1454,1743 1455,1736 1451,1736 1446,1741 1442,1790 1441,1803 1443,1809 1449,1802 1455)),((1834 1575,1835 1582,1828 1588,1799 1585,1762 1586,1753 1593,1751 1704,1753 1797,1751 1813,1739 1817,1735 1814,1734 1807,1739 1800,1739 1717,1737 1710,1739 1706,1739 1614,1737 1609,1740 1579,1743 1575,1750 1573,1829 1572,1834 1575)),((1831 622,1912 623,1918 628,1918 632,1911 636,1828 636,1820 632,1819 627,1831 622)),((233 1647,235 1699,233 1726,228 1732,220 1735,199 1736,118 1735,112 1739,109 1753,111 1765,116 1769,139 1768,155 1771,158 1775,157 1782,150 1787,34 1786,29 1779,35 1771,51 1768,68 1769,78 1765,81 1753,78 1738,72 1734,0 1736,0 1631,72 1630,79 1625,85 1615,98 1612,108 1617,113 1628,121 1630,182 1629,228 1635,233 1647)),((2047 988,2047 999,2044 996,2045 988,2047 988)),((330 157,349 154,435 154,440 151,447 139,452 137,468 138,474 150,480 154,583 155,593 160,597 172,596 245,591 255,582 259,486 259,478 261,473 269,475 290,479 293,517 294,521 305,513 311,399 311,393 306,393 300,403 293,436 293,442 288,444 272,442 264,434 258,329 259,319 249,317 232,319 217,318 177,322 173,322 162,330 157)),((1830 1520,1794 1521,1747 1520,1738 1518,1735 1513,1738 1509,1746 1507,1823 1506,1834 1509,1837 1515,1830 1520)),((1880 1246,2047 1248,2047 1261,1880 1258,1875 1255,1875 1250,1880 1246)),((1880 918,1898 917,2047 921,2047 934,1881 931,1875 927,1874 923,1880 918)),((2047 835,1871 833,1863 838,1861 857,1862 1017,1853 1028,1817 1029,1807 1034,1806 1072,1808 1077,1815 1081,1828 1080,1835 1089,1828 1096,1803 1095,1797 1092,1793 1083,1792 1060,1793 1024,1796 1019,1801 1016,1839 1015,1848 1007,1848 830,1853 819,1867 817,1883 820,2047 822,2047 835)),((1769 1606,1801 1606,1807 1610,1807 1616,1803 1619,1770 1619,1766 1617,1764 1611,1769 1606)),((1828 557,1850 556,2047 560,2047 573,1825 570,1818 566,1818 561,1828 557)),((1885 1737,2047 1740,2047 1753,1882 1750,1876 1746,1876 1742,1885 1737)),((1807 1748,1798 1750,1773 1750,1764 1746,1765 1740,1769 1737,1794 1736,1809 1741,1807 1748)),((1804 1115,1807 1120,1808 1238,1818 1245,1855 1246,1863 1254,1862 1367,1864 1371,1861 1385,1851 1390,1795 1391,1789 1385,1790 1379,1796 1375,1837 1376,1849 1368,1850 1299,1847 1264,1835 1258,1800 1257,1793 1250,1793 1141,1788 1121,1795 1113,1804 1115)),((1804 821,1806 827,1806 951,1801 961,1783 965,1778 976,1780 984,1777 1049,1779 1122,1773 1128,1765 1128,1761 1124,1761 1118,1765 1108,1765 961,1769 952,1787 948,1792 940,1793 841,1788 825,1793 818,1799 818,1804 821)),((1880 1377,2045 1379,2047 1392,1887 1390,1876 1387,1875 1381,1880 1377))) diff --git a/rust/geo-test-fixtures/fixtures/louisiana.wkt b/rust/geo-test-fixtures/fixtures/louisiana.wkt new file mode 100644 index 00000000..57c3c760 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/louisiana.wkt @@ -0,0 +1 @@ +LINESTRING(-94.043147 32.69303,-94.043147 32.693031,-94.042947 32.767991,-94.043027 32.776863,-94.042938 32.780558,-94.042829 32.785277,-94.042747 32.786973,-94.043026 32.797476,-94.042785 32.871486,-94.043025 32.880446,-94.042886 32.880965,-94.042886 32.881089,-94.042859 32.892771,-94.042885 32.898911,-94.043092 32.910021,-94.043067 32.937903,-94.043088 32.955592,-94.042964 33.019219,-94.041444 33.019188,-94.035839 33.019145,-94.027983 33.019139,-94.024475 33.019207,-93.814553 33.019372,-93.80493 33.019347,-93.531499 33.018643,-93.524916 33.018637,-93.520994 33.018616,-93.520971 33.018616,-93.490893 33.018442,-93.49052 33.018442,-93.489506 33.018443,-93.467042 33.018611,-93.377134 33.018234,-93.340353 33.018337,-93.308398 33.018179,-93.308181 33.018156,-93.238607 33.017992,-93.197402 33.017951,-93.154351 33.017856,-93.101443 33.01774,-93.100981 33.017786,-93.081428 33.017928,-93.073167 33.017898,-93.070686 33.017792,-92.988708 33.017298,-92.971137 33.017192,-92.946553 33.016807,-92.86751 33.016062,-92.854167 33.016132,-92.844286 33.01607,-92.844073 33.016034,-92.830798 33.015661,-92.733197 33.014347,-92.724994 33.014351,-92.724743 33.014347,-92.723553 33.014328,-92.715884 33.014398,-92.711289 33.014307,-92.503776 33.012161,-92.501383 33.01216,-92.469762 33.01201,-92.37029 33.010717,-92.362865 33.010628,-92.335893 33.010349,-92.292664 33.010103,-92.222825 33.00908,-92.069105 33.008163,-91.951958 33.007428,-91.950001 33.00752,-91.62667 33.006639,-91.617615 33.006717,-91.609001 33.006556,-91.579802 33.006518,-91.579639 33.006472,-91.572326 33.006908,-91.559494 33.00684,-91.46037 33.006246,-91.435782 33.006099,-91.425466 33.006016,-91.376016 33.005794,-91.333011 33.005529,-91.329767 33.005421,-91.326396 33.005376,-91.325037 33.005364,-91.322506 33.005341,-91.312016 33.005262,-91.284398 33.005007,-91.265018 33.005084,-91.166073 33.004106,-91.201842 32.961212,-91.214027 32.93032,-91.212837 32.922104,-91.208263 32.915354,-91.196785 32.906784,-91.175405 32.899998,-91.159975 32.899879,-91.145076 32.905494,-91.134041 32.917676,-91.132115 32.923122,-91.130947 32.963815,-91.138585 32.971352,-91.134414 32.980533,-91.125107 32.984669,-91.106581 32.988938,-91.094265 32.984371,-91.086802 32.976266,-91.063974 32.924113,-91.063809 32.903709,-91.070602 32.888659,-91.086683 32.873392,-91.105631 32.858396,-91.116091 32.855641,-91.127886 32.855059,-91.145002 32.84287,-91.158336 32.822304,-91.161669 32.812465,-91.164397 32.785821,-91.165328 32.751301,-91.163389 32.747009,-91.154461 32.742339,-91.123152 32.742798,-91.077176 32.732534,-91.060766 32.727494,-91.054481 32.722259,-91.057043 32.712576,-91.063946 32.702926,-91.076061 32.693751,-91.098762 32.685291,-91.118258 32.674075,-91.152081 32.641508,-91.153821 32.631282,-91.151318 32.615919,-91.146204 32.604144,-91.141148 32.597209,-91.127912 32.586493,-91.119854 32.584795,-91.104111 32.584657,-91.096774 32.576652,-91.090771 32.563978,-91.090611 32.562705,-91.089436 32.553306,-91.093741 32.549128,-91.097878 32.544752,-91.116708 32.500139,-91.116008 32.48314,-91.108808 32.47204,-91.095308 32.458741,-91.070207 32.445141,-91.052907 32.438442,-91.029606 32.433542,-90.99408 32.403862,-91.004506 32.368144,-91.003506 32.362145,-91.000106 32.357695,-90.986672 32.35176,-90.912363 32.339454,-90.901511 32.337864,-90.898588 32.329094,-90.905173 32.315497,-91.004557 32.215381,-91.006306 32.22415,-91.021507 32.236149,-91.039007 32.242349,-91.046507 32.241149,-91.122602 32.216929,-91.133587 32.213432,-91.158026 32.201956,-91.164171 32.196888,-91.171046 32.176526,-91.174552 32.154978,-91.171702 32.14425,-91.165452 32.13429,-91.162822 32.132694,-91.131403 32.126213,-91.067004 32.132144,-91.057487 32.135515,-91.052342 32.137337,-91.046615 32.138768,-91.040531 32.137337,-91.034447 32.134832,-91.030152 32.129821,-91.026931 32.123737,-91.027125 32.120434,-91.027535 32.113431,-91.027946 32.112722,-91.034707 32.101053,-91.128009 31.985857,-91.248144 31.869848,-91.293413 31.86016,-91.326914 31.854961,-91.338414 31.851261,-91.345714 31.842861,-91.359514 31.799362,-91.363714 31.780363,-91.365614 31.760763,-91.365084 31.752743,-91.369375 31.746903,-91.379935 31.733013,-91.397915 31.709364,-91.400115 31.688164,-91.398059 31.655922,-91.404668 31.637898,-91.42209 31.63129,-91.441315 31.63129,-91.45273 31.63129,-91.464746 31.628886,-91.474959 31.621677,-91.477963 31.610863,-91.477963 31.604855,-91.477963 31.598247,-91.477362 31.592239,-91.470754 31.58563,-91.458679 31.583226,-91.44862 31.583032,-91.437711 31.580824,-91.425094 31.57782,-91.415482 31.567006,-91.416683 31.561599,-91.422691 31.55439,-91.437616 31.546166,-91.450017 31.539666,-91.479718 31.530366,-91.511217 31.532612,-91.51581 31.530894,-91.52292 31.519841,-91.51513 31.449206,-91.510356 31.438928,-91.505301 31.432945,-91.500406 31.419008,-91.505093 31.400933,-91.513795 31.386875,-91.525386 31.378904,-91.541242 31.35675,-91.539904 31.337336,-91.531201 31.326625,-91.51982 31.311228,-91.508858 31.291644,-91.515614 31.27821,-91.522397 31.273423,-91.547588 31.264444,-91.574493 31.261289,-91.59849 31.205485,-91.599965 31.192318,-91.604197 31.154545,-91.577373 31.078179,-91.56415 31.06683,-91.561283 31.060906,-91.559907 31.054119,-91.562468 31.043213,-91.571695 31.029782,-91.58467 31.020185,-91.636942 30.999416,-91.625118 30.999167,-91.538727 30.999388,-91.425749 30.999007,-91.423621 30.998984,-91.224839 30.999183,-91.224068 30.999183,-91.176209 30.999144,-91.17614 30.999144,-91.108291 30.99888,-91.108114 30.998857,-91.080814 30.998909,-91.06827 30.99892,-91.060217 30.998935,-90.826027 30.99936,-90.825829 30.99936,-90.783745 30.999447,-90.779858 30.999457,-90.775981 30.999491,-90.769333 30.999374,-90.758775 30.999583,-90.734552 30.999222,-90.734473 30.999214,-90.651193 30.99951,-90.648721 30.999486,-90.588676 30.99965,-90.587373 30.999604,-90.584448 30.999698,-90.583518 30.999698,-90.567195 30.999733,-90.547615 30.999723,-90.486749 30.999693,-90.485876 30.99974,-90.477284 30.999717,-90.475928 30.99974,-90.474094 30.999798,-90.442479 30.999722,-90.441725 30.999729,-90.437351 30.99973,-90.426849 30.999776,-90.422117 30.99981,-90.369371 31.000335,-90.347241 31.000359,-90.34723 31.000359,-90.346007 31.000363,-90.259555 31.000657,-90.164676 31.00098,-90.164278 31.001025,-90.131395 31.000924,-90.128406 31.001047,-90.050706 31.001215,-90.029574 31.00119,-90.022185 31.001302,-90.005332 31.001364,-89.97543 31.001692,-89.972802 31.001392,-89.927161 31.001437,-89.923119 31.001446,-89.897516 31.001913,-89.892708 31.001759,-89.856862 31.002075,-89.835908 31.002059,-89.835542 31.002059,-89.824617 31.00206,-89.816429 31.002084,-89.752642 31.001853,-89.732504 31.004831,-89.728147 31.002431,-89.728148 31.0023,-89.728382 30.971141,-89.744789 30.918933,-89.756543 30.900431,-89.770931 30.899432,-89.77341 30.897693,-89.789863 30.851527,-89.826175 30.736594,-89.842596 30.666038,-89.842585 30.666005,-89.823384 30.608535,-89.806843 30.572039,-89.76057 30.515761,-89.732577 30.492502,-89.724614 30.491902,-89.69058 30.458773,-89.68341 30.451793,-89.629941 30.339449,-89.629877 30.321017,-89.640694 30.301313,-89.643575 30.293099,-89.64344 30.287682,-89.607655 30.217096,-89.580754 30.186197,-89.572654 30.180897,-89.524504 30.180753,-89.531213 30.177099,-89.537493 30.171745,-89.555013 30.170798,-89.562825 30.168667,-89.56827 30.163932,-89.572093 30.160362,-89.587062 30.150648,-89.595021 30.149891,-89.598027 30.152409,-89.617542 30.156422,-89.62288 30.152368,-89.625053 30.150717,-89.640989 30.138612,-89.64455 30.134108,-89.650467 30.126625,-89.656986 30.118381,-89.658594 30.117364,-89.668164 30.111311,-89.668638 30.111011,-89.669157 30.110683,-89.669182 30.110667,-89.672881 30.11049,-89.674124 30.11043,-89.674633 30.110406,-89.674956 30.110212,-89.675762 30.109728,-89.676117 30.109515,-89.678156 30.10829,-89.678163 30.108286,-89.678293 30.107746,-89.678457 30.107059,-89.678499 30.106886,-89.679655 30.102067,-89.679823 30.101367,-89.679838 30.101304,-89.680042 30.100452,-89.68035 30.099171,-89.680485 30.098605,-89.681265 30.095355,-89.681906 30.092682,-89.682057 30.092052,-89.682181 30.091536,-89.682181 30.091531,-89.682277 30.090565,-89.68228 30.090531,-89.682331 30.090015,-89.682371 30.089607,-89.682393 30.089391,-89.682409 30.089225,-89.682691 30.086365,-89.683051 30.082718,-89.683168 30.08153,-89.683712 30.076018,-89.697556 30.070842,-89.698461 30.070504,-89.698496 30.070491,-89.698909 30.070451,-89.699144 30.070428,-89.699629 30.070381,-89.711848 30.069194,-89.712942 30.069088,-89.713003 30.069061,-89.714085 30.068582,-89.714827 30.068253,-89.715494 30.067958,-89.715884 30.067785,-89.716237 30.067628,-89.716425 30.067545,-89.71675 30.067402,-89.716887 30.067341,-89.721992 30.06508,-89.724433 30.063999,-89.72633 30.063158,-89.727453 30.062661,-89.728026 30.061841,-89.72957 30.059628,-89.72968 30.05947,-89.72979 30.059314,-89.729911 30.059139,-89.73099 30.057594,-89.730999 30.057581,-89.731208 30.054558,-89.731428 30.051377,-89.731452 30.05104,-89.731545 30.049694,-89.731545 30.049691,-89.731544 30.04969,-89.7163 30.02811,-89.7163 30.028106,-89.716301 30.028088,-89.716328 30.027415,-89.716336 30.02723,-89.716358 30.026686,-89.716377 30.026222,-89.724649 30.022454,-89.724669 30.022453,-89.72576 30.022403,-89.733323 30.022054,-89.734361 30.022884,-89.739028 30.026618,-89.739574 30.027055,-89.740886 30.028104,-89.745827 30.032056,-89.746313 30.032445,-89.746505 30.032599,-89.746506 30.0326,-89.757138 30.03865,-89.763216 30.042108,-89.782534 30.045372,-89.78463 30.045253,-89.813684 30.043605,-89.818561 30.043328,-89.829762 30.033275,-89.830442 30.032664,-89.832213 30.031075,-89.832965 30.0304,-89.833794 30.029656,-89.834644 30.028893,-89.835202 30.028393,-89.839926 30.024153,-89.839933 30.024146,-89.840963 30.022995,-89.841739 30.022127,-89.854533 30.007821,-89.857558 30.004439,-89.852312 29.97765,-89.844202 29.955645,-89.8385 29.945816,-89.829023 29.939228,-89.81803 29.934145,-89.804463 29.932588,-89.775459 29.937416,-89.748492 29.945831,-89.727933 29.95878,-89.719067 29.953699,-89.71291 29.946349,-89.736311 29.936263,-89.742727 29.935894,-89.746273 29.928221,-89.742479 29.90817,-89.711158 29.879287,-89.692004 29.868722,-89.671555 29.867535,-89.660568 29.862909,-89.638016 29.864065,-89.613159 29.87216,-89.598129 29.881409,-89.591194 29.897018,-89.592346 29.917253,-89.583099 29.931705,-89.583099 29.945581,-89.574997 29.959455,-89.574425 29.983738,-89.58136 29.994722,-89.571533 29.999926,-89.551292 30.005709,-89.501587 30.034037,-89.494064 30.040972,-89.494637 30.0508,-89.499275 30.058893,-89.493484 30.072191,-89.481926 30.079128,-89.458946 30.06345,-89.444618 30.060959,-89.429047 30.05224,-89.418465 30.049747,-89.372375 30.054729,-89.368637 30.047256,-89.372375 30.036671,-89.381096 30.030441,-89.393555 30.029818,-89.41597 30.020477,-89.422813 30.015495,-89.432785 30.008022,-89.433411 29.991205,-89.432785 29.978752,-89.40538 29.965672,-89.393555 29.966295,-89.379227 29.963804,-89.378601 29.919588,-89.368019 29.911491,-89.331894 29.91585,-89.315453 29.923208,-89.283562 29.97332,-89.273315 29.99382,-89.250534 30.002361,-89.243706 29.997236,-89.249969 29.975597,-89.218071 29.97275,-89.22377 29.961929,-89.231178 29.925484,-89.244843 29.93004,-89.263062 29.929472,-89.280144 29.924915,-89.318306 29.898149,-89.322289 29.887333,-89.311462 29.881636,-89.289253 29.880499,-89.272179 29.886763,-89.241425 29.88961,-89.236298 29.886763,-89.236298 29.877081,-89.254517 29.864552,-89.269897 29.859997,-89.294952 29.857149,-89.317726 29.850885,-89.363289 29.84576,-89.383789 29.838928,-89.383217 29.830385,-89.372971 29.82526,-89.345634 29.820135,-89.342781 29.798496,-89.33197 29.790524,-89.318306 29.788815,-89.293251 29.803053,-89.277298 29.807608,-89.277298 29.799635,-89.284134 29.795649,-89.284706 29.770021,-89.269325 29.760912,-89.271034 29.756355,-89.305199 29.756926,-89.316025 29.760912,-89.325134 29.772301,-89.337662 29.779135,-89.354179 29.781412,-89.367271 29.775148,-89.386063 29.788815,-89.394608 29.784828,-89.399162 29.770592,-89.414536 29.752371,-89.428207 29.74155,-89.42421 29.697638,-89.44812 29.703316,-89.471992 29.718597,-89.486961 29.72592,-89.506065 29.731651,-89.530258 29.74375,-89.540131 29.74375,-89.560181 29.735472,-89.572922 29.746616,-89.598068 29.74757,-89.634048 29.752981,-89.651237 29.749479,-89.649651 29.719872,-89.644562 29.710957,-89.618446 29.700768,-89.59903 29.704908,-89.592979 29.702042,-89.599663 29.690262,-89.596802 29.684212,-89.573883 29.674025,-89.55732 29.670204,-89.53376 29.670204,-89.487915 29.630405,-89.485367 29.624357,-89.486709 29.621003,-89.486931 29.620447,-89.504738 29.631508,-89.523018 29.639427,-89.535202 29.648567,-89.583336 29.652834,-89.608925 29.657707,-89.621109 29.657101,-89.62355 29.662584,-89.632698 29.671724,-89.644272 29.675381,-89.64975 29.672941,-89.641228 29.647961,-89.641228 29.635773,-89.647324 29.625414,-89.657677 29.624195,-89.674736 29.626633,-89.684486 29.624804,-89.688141 29.615055,-89.684486 29.602867,-89.671082 29.588243,-89.668648 29.580322,-89.684486 29.563263,-89.684486 29.551073,-89.681092 29.534487,-89.69623 29.525004,-89.699698 29.523423,-89.700845 29.520785,-89.700501 29.515967,-89.693877 29.508559,-89.665813 29.49002,-89.644039 29.492343,-89.63533 29.489294,-89.617558 29.468298,-89.596533 29.456303,-89.592474 29.449822,-89.589536 29.437662,-89.577096 29.433692,-89.574635 29.435734,-89.574653 29.4411,-89.548686 29.465723,-89.528429 29.454702,-89.53215 29.434567,-89.531943 29.425679,-89.518368 29.40023,-89.508551 29.386168,-89.505038 29.38604,-89.487308 29.393346,-89.484354 29.397471,-89.482318 29.406222,-89.47714 29.411241,-89.470142 29.401471,-89.457303 29.393148,-89.42238 29.390628,-89.380001 29.391785,-89.373109 29.387175,-89.355528 29.381569,-89.340304 29.381412,-89.336589 29.378228,-89.347615 29.365,-89.350694 29.349544,-89.32317 29.343982,-89.303766 29.357455,-89.283028 29.356467,-89.272543 29.351195,-89.2653 29.345352,-89.257852 29.336872,-89.253545 29.322802,-89.24087 29.310081,-89.224192 29.313792,-89.223444 29.318066,-89.219734 29.324412,-89.204703 29.338674,-89.200389 29.344418,-89.200599 29.347672,-89.189354 29.345061,-89.179547 29.339608,-89.177351 29.33521,-89.178221 29.32697,-89.165015 29.303039,-89.157593 29.296691,-89.140275 29.291085,-89.134337 29.27934,-89.136979 29.275239,-89.129688 29.265632,-89.100106 29.25022,-89.096173 29.24293,-89.095544 29.238028,-89.098389 29.232963,-89.105833 29.231608,-89.106244 29.215912,-89.10065 29.206314,-89.090724 29.199992,-89.068265 29.204166,-89.067371 29.208636,-89.029103 29.220956,-89.02185 29.218162,-89.015192 29.211561,-89.000674 29.180091,-89.00529 29.164949,-89.013254 29.16328,-89.018344 29.165046,-89.024269 29.170043,-89.043919 29.162528,-89.047233 29.157833,-89.03873 29.14238,-89.032004 29.144747,-89.024149 29.137298,-89.023942 29.1337,-89.026031 29.130126,-89.051953 29.106554,-89.055475 29.084167,-89.062335 29.070234,-89.09126 29.066931,-89.098068 29.067984,-89.105009 29.073641,-89.121542 29.069074,-89.143453 29.047591,-89.156339 29.028782,-89.162 29.01586,-89.162326 29.011713,-89.164788 29.008703,-89.16985 29.008703,-89.175732 29.012123,-89.186061 29.017993,-89.18215 29.025486,-89.189893 29.032635,-89.197871 29.029701,-89.202563 29.031603,-89.211144 29.040813,-89.216101 29.056371,-89.215531 29.06141,-89.217201 29.067275,-89.225865 29.07866,-89.23631 29.084605,-89.254726 29.083261,-89.257283 29.081086,-89.256869 29.0738,-89.25364 29.064954,-89.259354 29.058358,-89.283215 29.053325,-89.29109 29.053097,-89.304888 29.046379,-89.315389 29.039081,-89.318102 29.035342,-89.315182 29.032662,-89.32485 29.013805,-89.335228 29.015003,-89.338249 29.012935,-89.383814 28.947434,-89.41148 28.925011,-89.419865 28.929709,-89.412388 28.957504,-89.408157 28.965341,-89.398104 28.977016,-89.382106 28.981525,-89.375049 28.985368,-89.334735 29.040335,-89.339828 29.052221,-89.354798 29.072543,-89.374522 29.084174,-89.405654 29.086936,-89.411154 29.105838,-89.409371 29.127855,-89.417718 29.13869,-89.428965 29.14451,-89.432932 29.149023,-89.447472 29.178576,-89.455829 29.190991,-89.47231 29.20755,-89.482844 29.215053,-89.5366 29.236212,-89.606651 29.252023,-89.671781 29.289028,-89.697258 29.296679,-89.726162 29.304026,-89.782149 29.311132,-89.819859 29.310241,-89.850305 29.311768,-89.855109 29.334997,-89.853699 29.34064,-89.847124 29.349186,-89.835 29.359043,-89.820824 29.377486,-89.816916 29.384385,-89.816155 29.393518,-89.816916 29.398845,-89.819199 29.404173,-89.822243 29.4095,-89.826049 29.415589,-89.835392 29.418538,-89.843553 29.421677,-89.845075 29.434615,-89.836773 29.45404,-89.833659 29.456686,-89.833659 29.459731,-89.832898 29.463536,-89.833659 29.467341,-89.83442 29.470386,-89.840509 29.47343,-89.849642 29.477996,-89.86258 29.476474,-89.876224 29.472168,-89.902179 29.460011,-89.918999 29.444254,-89.932598 29.429288,-89.95543 29.428527,-89.96195 29.432874,-89.964563 29.434615,-89.972934 29.443748,-89.991961 29.463536,-90.01251 29.462775,-90.018598 29.45212,-90.022404 29.444509,-90.029466 29.432015,-90.032298 29.427005,-90.031536 29.412545,-90.033295 29.393274,-90.029468 29.388136,-90.029614 29.386658,-90.029967 29.383087,-90.030761 29.375043,-90.030764 29.375008,-90.030855 29.374876,-90.033604 29.370851,-90.035415 29.368201,-90.036374 29.363661,-90.032842 29.348624,-90.031815 29.344251,-90.034275 29.322661,-90.028536 29.307083,-90.013778 29.30271,-90.009678 29.294785,-90.016288 29.284257,-90.019517 29.282213,-90.032088 29.280027,-90.043293 29.282487,-90.057094 29.281331,-90.061057 29.276748,-90.059691 29.272648,-90.060511 29.267729,-90.070622 29.262537,-90.086747 29.259257,-90.091119 29.261443,-90.097678 29.26199,-90.101231 29.259804,-90.096038 29.240673,-90.073355 29.227282,-90.073355 29.210611,-90.070622 29.208698,-90.06361 29.209474,-90.04291 29.211765,-90.019772 29.231903,-90.005718 29.240627,-89.969981 29.255753,-89.965667 29.259126,-89.959509 29.267677,-89.951175 29.266124,-89.949925 29.263154,-89.950756 29.260801,-89.95646 29.253744,-90.022029 29.216065,-90.058512 29.183687,-90.079276 29.16997,-90.088684 29.162574,-90.104162 29.150407,-90.174273 29.105301,-90.223587 29.085075,-90.231984 29.08773,-90.245283 29.085824,-90.343293 29.057062,-90.348768 29.057817,-90.349891 29.063681,-90.325514 29.075138,-90.304129 29.077332,-90.29293 29.078761,-90.282983 29.082326,-90.26629 29.089421,-90.258145 29.091627,-90.253141 29.093772,-90.249806 29.100919,-90.250044 29.108067,-90.243849 29.11045,-90.234235 29.110268,-90.234405 29.128824,-90.243435 29.136311,-90.248629 29.13837,-90.26901 29.139242,-90.280516 29.142521,-90.27832 29.150691,-90.297 29.171317,-90.302846 29.175098,-90.302948 29.187948,-90.300885 29.196171,-90.293183 29.199789,-90.2828 29.192545,-90.275851 29.193668,-90.271251 29.204639,-90.286621 29.225694,-90.300304 29.231241,-90.311663 29.237954,-90.311523 29.256374,-90.316093 29.264777,-90.332796 29.276956,-90.367166 29.274128,-90.368154 29.270736,-90.367012 29.264956,-90.372565 29.258923,-90.387924 29.252786,-90.383857 29.235606,-90.399465 29.201046,-90.408578 29.196421,-90.409416 29.196135,-90.432912 29.188132,-90.435907 29.188449,-90.443954 29.19583,-90.472489 29.192688,-90.473273 29.195224,-90.468773 29.198469,-90.467233 29.202549,-90.485786 29.209843,-90.494928 29.216713,-90.490987 29.220883,-90.46832 29.227532,-90.465764 29.242951,-90.462866 29.249809,-90.450674 29.263739,-90.452186 29.26625,-90.472779 29.272556,-90.495299 29.287277,-90.510555 29.290925,-90.517277 29.282719,-90.526216 29.276492,-90.552005 29.278512,-90.565436 29.285111,-90.582525 29.276037,-90.589724 29.248521,-90.58847 29.245863,-90.583924 29.242886,-90.576506 29.243986,-90.565378 29.242475,-90.544547 29.230683,-90.543245 29.227843,-90.544311 29.224292,-90.556501 29.219913,-90.55739 29.207881,-90.560889 29.204261,-90.575277 29.206827,-90.618413 29.20329,-90.624161 29.210366,-90.62742 29.211004,-90.633819 29.209128,-90.640223 29.196554,-90.645612 29.175867,-90.645169 29.172958,-90.640863 29.171261,-90.636973 29.164572,-90.647042 29.12858,-90.677724 29.118742,-90.691109 29.121722,-90.700893 29.12147,-90.718035 29.116611,-90.731239 29.122886,-90.764189 29.113374,-90.773458 29.100133,-90.799444 29.087377,-90.802053 29.083322,-90.803699 29.063709,-90.79872 29.054841,-90.781981 29.049431,-90.765188 29.049403,-90.750092 29.053247,-90.7253 29.066616,-90.709105 29.064305,-90.70535 29.062679,-90.702102 29.060275,-90.692205 29.059607,-90.683645 29.060944,-90.676958 29.063619,-90.665589 29.06723,-90.652348 29.069237,-90.644189 29.07151,-90.641247 29.072313,-90.63924 29.072848,-90.637623 29.072084,-90.636033 29.069792,-90.637495 29.066608,-90.648058 29.062649,-90.730899 29.042259,-90.755677 29.038997,-90.79768 29.039741,-90.811473 29.03658,-90.839345 29.039167,-90.842762 29.042947,-90.844849 29.048721,-90.841226 29.054266,-90.844593 29.06728,-90.862757 29.094863,-90.867766 29.095434,-90.877583 29.104891,-90.885351 29.117016,-90.898215 29.131342,-90.925797 29.153116,-90.941877 29.162373,-90.948091 29.174104,-90.961278 29.180817,-90.981458 29.171211,-91.000096 29.169481,-91.023955 29.174784,-91.031786 29.182188,-91.05863 29.181734,-91.094015 29.187711,-91.11476 29.207918,-91.129141 29.215863,-91.199647 29.221287,-91.219032 29.226051,-91.278792 29.247776,-91.302677 29.265958,-91.334885 29.298775,-91.33275 29.305816,-91.309314 29.305698,-91.299054 29.309017,-91.291821 29.311357,-91.29042 29.313062,-91.279742 29.326058,-91.276647 29.329825,-91.276187 29.332783,-91.274308 29.344878,-91.270582 29.355415,-91.270053 29.356912,-91.26994 29.357231,-91.266589 29.361218,-91.265479 29.361767,-91.251546 29.368659,-91.251232 29.368814,-91.249517 29.369662,-91.249109 29.369864,-91.245558 29.37058,-91.238515 29.371999,-91.235348 29.370638,-91.222377 29.360703,-91.207299 29.360703,-91.197465 29.369882,-91.200087 29.38955,-91.218463 29.407235,-91.215976 29.412505,-91.214284 29.416089,-91.211999 29.420931,-91.2151 29.427542,-91.217448 29.432549,-91.218067 29.433193,-91.219242 29.434418,-91.221166 29.436421,-91.24164 29.441021,-91.251319 29.444483,-91.258226 29.446954,-91.259537 29.458001,-91.259844 29.460582,-91.259988 29.461803,-91.260024 29.462102,-91.261588 29.464954,-91.265649 29.472362,-91.2813 29.481547,-91.294325 29.476894,-91.335742 29.485886,-91.343567 29.492593,-91.34588 29.504538,-91.356625 29.515191,-91.402214 29.511914,-91.420449 29.515745,-91.42713 29.520215,-91.432337 29.53283,-91.439941 29.540434,-91.447345 29.544749,-91.468748 29.544299,-91.517274 29.52974,-91.531021 29.531543,-91.531471 29.535374,-91.52584 29.545946,-91.525523 29.551904,-91.529217 29.558598,-91.537445 29.565888,-91.541974 29.594353,-91.553537 29.632766,-91.560908 29.63735,-91.570589 29.638312,-91.581843 29.637165,-91.600179 29.631156,-91.625114 29.626195,-91.643832 29.630625,-91.648941 29.633635,-91.648657 29.636713,-91.646478 29.639427,-91.643198 29.640274,-91.637344 29.647217,-91.627286 29.662132,-91.625114 29.671679,-91.626826 29.684753,-91.623829 29.69924,-91.618479 29.710816,-91.61809 29.720694,-91.621512 29.735429,-91.632829 29.742576,-91.667128 29.745822,-91.710935 29.738993,-91.737253 29.74937,-91.752259 29.748264,-91.783674 29.740689,-91.830499 29.718918,-91.845962 29.708763,-91.85864 29.703121,-91.866516 29.70715,-91.88075 29.710839,-91.880999 29.713338,-91.878331 29.716087,-91.875637 29.722316,-91.87557 29.722471,-91.87557 29.728043,-91.878355 29.735007,-91.879748 29.742668,-91.878355 29.751025,-91.874761 29.760083,-91.859151 29.783331,-91.854677 29.807436,-91.869998 29.828328,-91.889118 29.836023,-91.90689 29.83094,-91.915989 29.815654,-91.919143 29.815379,-91.940723 29.817008,-91.96123 29.810221,-91.970443 29.80431,-91.978381 29.799217,-91.983871 29.794516,-92.035666 29.781662,-92.056398 29.772313,-92.107486 29.744429,-92.144431 29.716418,-92.149349 29.697052,-92.134347 29.669516,-92.132804 29.660462,-92.111787 29.62177,-92.093419 29.618694,-92.06564 29.619967,-92.04767 29.624527,-92.02532 29.625647,-92.01627 29.618741,-92.000371 29.613143,-92.000003 29.613013,-91.965031 29.608019,-91.939903 29.610291,-91.935024 29.612239,-91.929567 29.61884,-91.922825 29.633173,-91.898996 29.63701,-91.896763 29.634618,-91.882318 29.62977,-91.866113 29.631583,-91.863018 29.633739,-91.841294 29.62962,-91.838981 29.624475,-91.840921 29.619913,-91.838297 29.616041,-91.821693 29.606049,-91.803831 29.599562,-91.784976 29.595204,-91.7785 29.58922,-91.774805 29.582113,-91.774686 29.576387,-91.74632 29.574337,-91.719102 29.565568,-91.715642 29.565844,-91.712002 29.56474,-91.709205 29.561012,-91.711654 29.55427,-91.733956 29.539504,-91.747058 29.535144,-91.765448 29.520844,-91.771927 29.504871,-91.772529 29.499016,-91.770069 29.493812,-91.770516 29.488953,-91.782387 29.482882,-91.789119 29.482081,-91.800121 29.486828,-91.803448 29.486851,-91.814609 29.482061,-91.821576 29.473925,-91.8385 29.478874,-91.848665 29.484144,-91.852598 29.494984,-91.862324 29.502393,-91.878746 29.502937,-91.886815 29.505577,-91.906175 29.518052,-91.915322 29.518513,-91.947007 29.53316,-91.969312 29.536893,-91.985726 29.547708,-92.02681 29.566805,-92.035462 29.57864,-92.041168 29.581648,-92.046316 29.584362,-92.066533 29.583842,-92.105923 29.586335,-92.158624 29.581616,-92.21259 29.562479,-92.25186 29.539354,-92.280392 29.533434,-92.309357 29.533026,-92.347236 29.539394,-92.402165 29.551269,-92.473585 29.561081,-92.558602 29.569935,-92.61627 29.578729,-92.617725 29.579092,-92.653651 29.588065,-92.744126 29.617608,-92.871232 29.670028,-92.940455 29.701033,-92.974305 29.71398,-93.065354 29.740966,-93.088182 29.749125,-93.17693 29.770487,-93.226934 29.777519,-93.267456 29.778113,-93.295573 29.775071,-93.342104 29.763402,-93.344993 29.759618,-93.347331 29.759046,-93.372029 29.763049,-93.438973 29.768949,-93.475252 29.769242,-93.538462 29.763299,-93.590786 29.755649,-93.635304 29.752806,-93.68364 29.747153,-93.741948 29.736343,-93.766048 29.7295,-93.79925 29.71526,-93.818995 29.704076,-93.837971 29.690619,-93.892246 29.765241,-93.89847 29.771577,-93.890679 29.843159,-93.840799 29.914423,-93.789431 29.987812,-93.75663 30.014163,-93.752038 30.016403,-93.722481 30.050898,-93.721589 30.051939,-93.712101 30.067346,-93.695684 30.135729,-93.695252 30.1476,-93.712008 30.194304,-93.716223 30.244318,-93.720575 30.295961,-93.723586 30.294951,-93.735896 30.29944,-93.765822 30.333318,-93.757654 30.390423,-93.751437 30.396288,-93.741701 30.403007,-93.702665 30.429947,-93.698302 30.438657,-93.697828 30.443838,-93.710117 30.5064,-93.740045 30.538765,-93.727844 30.57407,-93.578395 30.802047,-93.563292 30.818503,-93.558672 30.868829,-93.558617 30.869424,-93.55497 30.876685,-93.554576 30.87747,-93.530936 30.924534,-93.540354 31.008135,-93.527644 31.074509,-93.531744 31.180817,-93.535097 31.185614,-93.548931 31.186601,-93.55254 31.185605,-93.552649 31.185575,-93.579215 31.167422,-93.588503 31.165581,-93.598828 31.174679,-93.599705 31.176456,-93.602315 31.181742,-93.607243 31.204806,-93.608158 31.227835,-93.614402 31.260869,-93.620829 31.271299,-93.644407 31.27711,-93.671676 31.299586,-93.640805 31.372546,-93.670182 31.387184,-93.695866 31.409392,-93.729613 31.487922,-93.798087 31.534044,-93.818582 31.554826,-93.834923 31.58621,-93.834924 31.586211,-93.82629 31.614903,-93.817059 31.671694,-93.812477 31.715246,-93.840029 31.800596,-93.878225 31.844276,-93.889193 31.856819,-93.92029 31.888651,-93.932135 31.893672,-93.975377 31.92366,-94.01563 31.979856,-94.04272 31.999265,-94.0427 32.056012,-94.042337 32.119914,-94.042681 32.137956,-94.042591 32.158097,-94.042539 32.166826,-94.042566 32.166894,-94.042621 32.196005,-94.042662 32.218146,-94.042732 32.26962,-94.042733 32.269696,-94.042739 32.363559,-94.042763 32.373332,-94.042901 32.392283,-94.042923 32.399918,-94.042899 32.400659,-94.042986 32.435507,-94.042908 32.439891,-94.042903 32.470386,-94.042875 32.471348,-94.042902 32.472906,-94.042995 32.478004,-94.042955 32.480261,-94.043072 32.4843,-94.043089 32.486561,-94.042911 32.492852,-94.042885 32.505145,-94.043081 32.513613,-94.043142 32.559502,-94.043083 32.564261,-94.042919 32.610142,-94.042929 32.61826,-94.042926 32.622015,-94.042824 32.640305,-94.04278 32.643466,-94.042913 32.655127,-94.043147 32.69303) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/nl_plots.wkt b/rust/geo-test-fixtures/fixtures/nl_plots.wkt new file mode 100644 index 00000000..279c14c7 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/nl_plots.wkt @@ -0,0 +1 @@ +MULTIPOLYGON(((5.545757189 52.317793574,5.545670899 52.317631067,5.5459931 52.317566112,5.546117204 52.317541454,5.546203274 52.317703826,5.545757189 52.317793574)),((5.546203274 52.317703826,5.54628936 52.317866189,5.545842849 52.317956199,5.545757189 52.317793574,5.546203274 52.317703826)),((5.545842849 52.317956199,5.54628936 52.317866189,5.546393551 52.318062735,5.545946905 52.318152565,5.545842849 52.317956199)),((5.546087065 52.318294301,5.546101002 52.318291514,5.546216035 52.318268486,5.546294507 52.318417558,5.546362045 52.318544094,5.546232809 52.318569847,5.546144019 52.318401987,5.546087065 52.318294301)),((5.546146468 52.318937954,5.546076443 52.318952132,5.546051234 52.318957136,5.546001405 52.318861026,5.545939836 52.318746435,5.546035085 52.318727487,5.546146468 52.318937954)),((5.546146468 52.318937954,5.546163996 52.318971059,5.546010386 52.319001707,5.545992888 52.318968728,5.546051234 52.318957136,5.546076443 52.318952132,5.546146468 52.318937954)),((5.546362045 52.318544094,5.546294507 52.318417558,5.546216035 52.318268486,5.546341401 52.318243403,5.546423717 52.318401035,5.546436578 52.318425213,5.546465352 52.318477949,5.546487529 52.318519092,5.546362045 52.318544094)),((5.546400017 52.318887399,5.546289072 52.318676814,5.546395606 52.318655613,5.546412152 52.318688746,5.546453285 52.31876478,5.546506758 52.318866305,5.546481256 52.318871345,5.546400017 52.318887399)),((5.546163996 52.318971059,5.546167392 52.318977436,5.546189817 52.318973091,5.546309424 52.319198431,5.545507295 52.319358949,5.545387103 52.31913307,5.545411432 52.319128274,5.545408036 52.319121898,5.545563186 52.319090943,5.545584232 52.319086745,5.545664107 52.319070801,5.5457865 52.319046379,5.545908893 52.319021957,5.545988769 52.319006023,5.546010386 52.319001707,5.546163996 52.318971059)),((5.546582586 52.318887593,5.546417398 52.318920387,5.546400017 52.318887399,5.546481256 52.318871345,5.546506758 52.318866305,5.546564869 52.318854821,5.546578747 52.318880327,5.546582586 52.318887593)),((5.546117477 52.319675458,5.546241276 52.319907658,5.54611167 52.319933439,5.545988077 52.319701426,5.546117477 52.319675458)),((5.546241276 52.319907658,5.546117477 52.319675458,5.54624695 52.31964948,5.546371087 52.319881842,5.546241276 52.319907658)),((5.545988077 52.319701426,5.545858663 52.319727395,5.54574131 52.319750947,5.545737913 52.319744301,5.545713877 52.319749186,5.545594121 52.319522948,5.546395815 52.319363148,5.546516012 52.319588577,5.546492269 52.319593282,5.546495665 52.319599569,5.546377727 52.31962324,5.54624695 52.31964948,5.546117477 52.319675458,5.545988077 52.319701426)),((5.546438188 52.319738973,5.546500679 52.31985607,5.546371087 52.319881842,5.54624695 52.31964948,5.546377727 52.31962324,5.546395845 52.31965736,5.546438188 52.319738973)),((5.546018795 52.321094868,5.546079241 52.320968555,5.546117774 52.320887426,5.546119887 52.320887809,5.546139847 52.320846278,5.546265097 52.320868659,5.546193153 52.321019686,5.546146716 52.321117714,5.546018795 52.321094868)),((5.546273801 52.321140416,5.546146716 52.321117714,5.546193153 52.321019686,5.546265097 52.320868659,5.546390214 52.320891023,5.546370255 52.320932582,5.546372368 52.320932956,5.546334217 52.321014022,5.546273801 52.321140416)),((5.546475368 52.320906241,5.546455453 52.32094789,5.546417404 52.321028911,5.54637597 52.321114943,5.546356827 52.321155251,5.546273801 52.321140416,5.546334217 52.321014022,5.546372368 52.320932956,5.546370255 52.320932582,5.546390214 52.320891023,5.546475368 52.320906241)),((5.546475368 52.320906241,5.546560521 52.320921459,5.546540651 52.32096318,5.546538552 52.320962796,5.546500151 52.321043719,5.546458996 52.321129768,5.54641818 52.32112248,5.546399052 52.321162798,5.546356827 52.321155251,5.54637597 52.321114943,5.546417404 52.321028911,5.546455453 52.32094789,5.546475368 52.320906241)),((5.546273801 52.321140416,5.546356827 52.321155251,5.546399052 52.321162798,5.546552306 52.321190174,5.546361921 52.32158951,5.54595649 52.321517031,5.545986349 52.321454526,5.546008637 52.321407859,5.546030955 52.321361147,5.546053127 52.321314714,5.546064366 52.321291196,5.5460754 52.321267975,5.546097455 52.321221516,5.54611964 52.32117475,5.546146716 52.321117714,5.546273801 52.321140416)),((5.544593351 52.323214969,5.544778327 52.322826725,5.545415445 52.321489463,5.546436215 52.321672069,5.545614157 52.323397573,5.544593351 52.323214969),(5.544838244 52.322942146,5.544729615 52.323169391,5.544868536 52.32319429,5.544944564 52.323207922,5.545020607 52.323221553,5.545096606 52.323235176,5.545172634 52.323248807,5.545248648 52.32326243,5.545324677 52.323276061,5.545400837 52.323289711,5.545514689 52.323310122,5.54562368 52.323082435,5.545627625 52.323074197,5.545651431 52.323078345,5.546064573 52.322212557,5.546040928 52.32220832,5.546048423 52.322191665,5.546153024 52.321972665,5.545366048 52.321831483,5.545266928 52.322041801,5.545258375 52.322057801,5.545222838 52.322132581,5.545199487 52.322181757,5.54517612 52.322230923,5.545152769 52.32228009,5.545129402 52.322329257,5.545106051 52.322378424,5.545082684 52.322427599,5.545048181 52.32250023,5.545013313 52.322573634,5.544989946 52.3226228,5.544966594 52.322671976,5.544943227 52.322721143,5.544919875 52.322770309,5.544896509 52.322819476,5.544873156 52.322868643,5.544838244 52.322942146)),((5.545075489 52.316853622,5.54516375 52.317022786,5.544976217 52.317059806,5.544857566 52.317083422,5.544755579 52.317103843,5.544687749 52.316975751,5.544665025 52.31693282,5.545074397 52.316851664,5.545075489 52.316853622)),((5.545315872 52.317308885,5.544907466 52.317390392,5.544873521 52.317326328,5.54480541 52.31719776,5.545213288 52.317116596,5.545315872 52.317308885)),((5.545075037 52.317706723,5.545140743 52.317830755,5.544895362 52.317879616,5.544704294 52.317917448,5.544637738 52.317793426,5.544803405 52.317760104,5.544900984 52.317740857,5.545075037 52.317706723)),((5.544704294 52.317917448,5.544895362 52.317879616,5.545140743 52.317830755,5.545213345 52.317967791,5.544778215 52.318054735,5.544704294 52.317917448)),((5.545015125 52.318332731,5.544926637 52.318166146,5.544904164 52.318123475,5.545054796 52.31809348,5.54508359 52.318148123,5.545115541 52.318207866,5.545165744 52.318302744,5.545015125 52.318332731)),((5.545165744 52.318302744,5.545115541 52.318207866,5.54508359 52.318148123,5.545054796 52.31809348,5.545205429 52.318063485,5.545227991 52.318106146,5.545289725 52.318222328,5.545316363 52.318272758,5.545165744 52.318302744)),((5.544932309 52.318523641,5.545060242 52.318498232,5.545120235 52.318611702,5.545167937 52.318704059,5.545204546 52.318774545,5.545076657 52.318800025,5.545059361 52.318765662,5.545014924 52.318679925,5.544932309 52.318523641)),((5.545060242 52.318498232,5.545188174 52.318472815,5.545270393 52.318629037,5.545315167 52.318714701,5.545332449 52.318749056,5.545204546 52.318774545,5.545167937 52.318704059,5.545120235 52.318611702,5.545060242 52.318498232)),((5.545132177 52.319139568,5.545050894 52.31915589,5.545026096 52.319160822,5.54498892 52.319091945,5.544974642 52.319065037,5.544932394 52.318984348,5.544914027 52.318950004,5.545020298 52.318928822,5.545132177 52.319139568)),((5.545132177 52.319139568,5.545149792 52.319172754,5.544984837 52.319205626,5.544967281 52.319172512,5.545026096 52.319160822,5.545050894 52.31915589,5.545132177 52.319139568)),((5.544915324 52.320897557,5.544919533 52.32088913,5.54493428 52.320858166,5.54497611 52.320771379,5.545014337 52.320690196,5.545033903 52.320649051,5.545119173 52.320664324,5.545099563 52.32070546,5.54509745 52.320705077,5.545059546 52.320786259,5.54499829 52.320912438,5.544915324 52.320897557)),((5.54499829 52.320912438,5.545059546 52.320786259,5.54509745 52.320705077,5.545099563 52.32070546,5.545119173 52.320664324,5.545244407 52.320686743,5.545199699 52.320780706,5.545173164 52.320837516,5.545126123 52.320935356,5.54499829 52.320912438)),((5.545126123 52.320935356,5.545173164 52.320837516,5.545199699 52.320780706,5.545244407 52.320686743,5.545369656 52.32070917,5.545349943 52.320750252,5.545352057 52.320750627,5.545313331 52.320831676,5.545253207 52.320958078,5.545126123 52.320935356)),((5.545024514 52.321723755,5.544897956 52.321701023,5.544939899 52.321612654,5.544964282 52.321560709,5.545000798 52.321485092,5.545127531 52.321507715,5.545073677 52.321620214,5.54503689 52.321697908,5.545024514 52.321723755)),((5.545121229 52.321867149,5.544716443 52.321794728,5.544720461 52.321786283,5.544739941 52.321745489,5.544786966 52.321753965,5.545144697 52.321817875,5.545121229 52.321867149)),((5.545176522 52.321751063,5.545144697 52.321817875,5.544786966 52.321753965,5.544739941 52.321745489,5.544771971 52.321678389,5.544897956 52.321701023,5.545024514 52.321723755,5.545176522 52.321751063)),((5.545176522 52.321751063,5.545024514 52.321723755,5.54503689 52.321697908,5.545073677 52.321620214,5.545127531 52.321507715,5.545278775 52.321534719,5.545176522 52.321751063)),((5.545009331 52.317582691,5.545075037 52.317706723,5.544900984 52.317740857,5.544803405 52.317760104,5.544637738 52.317793426,5.544571975 52.317669484,5.545009331 52.317582691)),((5.544941411 52.317454465,5.545009331 52.317582691,5.544571975 52.317669484,5.544504115 52.317541239,5.544941411 52.317454465)),((5.544907466 52.317390392,5.544941411 52.317454465,5.544504115 52.317541239,5.544435888 52.317412833,5.544873521 52.317326328,5.544907466 52.317390392)),((5.54480541 52.31719776,5.544873521 52.317326328,5.544435888 52.317412833,5.544368513 52.317284912,5.54480541 52.31719776)),((5.545011101 52.316674826,5.545102675 52.316848175,5.545075489 52.316853622,5.545074397 52.316851664,5.544665025 52.31693282,5.544619742 52.316847318,5.544574473 52.316761807,5.545011101 52.316674826)),((5.544904164 52.318123475,5.544926637 52.318166146,5.545015125 52.318332731,5.544864506 52.318362717,5.544814245 52.318267856,5.544782236 52.318208122,5.544753531 52.318153461,5.544904164 52.318123475)),((5.544713873 52.318392694,5.544625283 52.318226145,5.544602766 52.318183483,5.544753531 52.318153461,5.544782236 52.318208122,5.544814245 52.318267856,5.544864506 52.318362717,5.544713873 52.318392694)),((5.544932309 52.318523641,5.545014924 52.318679925,5.545059361 52.318765662,5.545076657 52.318800025,5.544948754 52.318825505,5.544864576 52.318662635,5.544804362 52.318549058,5.544932309 52.318523641)),((5.544804362 52.318549058,5.544864576 52.318662635,5.544948754 52.318825505,5.54482085 52.318850985,5.544803554 52.31881663,5.54475903 52.318730903,5.54467643 52.318574465,5.544804362 52.318549058)),((5.544984837 52.319205626,5.544963644 52.319209852,5.544895455 52.319080817,5.544834122 52.318965938,5.544914027 52.318950004,5.544932394 52.318984348,5.544974642 52.319065037,5.54498892 52.319091945,5.545026096 52.319160822,5.544967281 52.319172512,5.544984837 52.319205626)),((5.544754202 52.318981872,5.544834122 52.318965938,5.544895455 52.319080817,5.544963644 52.319209852,5.544883753 52.319225777,5.544815579 52.319096742,5.544754202 52.318981872)),((5.54463175 52.319006274,5.544754202 52.318981872,5.544815579 52.319096742,5.544883753 52.319225777,5.544761183 52.319250207,5.544709604 52.31915205,5.544660304 52.319059452,5.54463175 52.319006274)),((5.544720405 52.320862612,5.544839 52.320614161,5.544948765 52.320633814,5.544929199 52.32067504,5.544931313 52.320675414,5.544892675 52.320756499,5.544851079 52.320843294,5.544892056 52.320850609,5.544877308 52.320881583,5.544872982 52.320889974,5.544720405 52.320862612)),((5.544948765 52.320633814,5.545033903 52.320649051,5.545014337 52.320690196,5.54497611 52.320771379,5.54493428 52.320858166,5.544919533 52.32088913,5.544915324 52.320897557,5.544872982 52.320889974,5.544877308 52.320881583,5.544892056 52.320850609,5.544851079 52.320843294,5.544892675 52.320756499,5.544931313 52.320675414,5.544929199 52.32067504,5.544948765 52.320633814)),((5.544775044 52.321672319,5.544646902 52.321649625,5.544747318 52.321439836,5.544874065 52.321462468,5.544820254 52.321574841,5.544775044 52.321672319)),((5.544897956 52.321701023,5.544771971 52.321678389,5.544775044 52.321672319,5.544820254 52.321574841,5.544874065 52.321462468,5.545000798 52.321485092,5.544964282 52.321560709,5.544939899 52.321612654,5.544897956 52.321701023)),((5.545097804 52.321916316,5.544692944 52.321843939,5.544716443 52.321794728,5.545121229 52.321867149,5.545097804 52.321916316)),((5.544970342 52.320160495,5.544828687 52.320188699,5.544705392 52.319956172,5.544847032 52.319928032,5.544865091 52.319962143,5.544908075 52.320043217,5.544970342 52.320160495)),((5.544908075 52.320043217,5.544865091 52.319962143,5.544847032 52.319928032,5.544976859 52.319902235,5.545100477 52.320134581,5.544970342 52.320160495,5.544908075 52.320043217)),((5.547555696 52.324447059,5.547478858 52.324433313,5.547938349 52.323545087,5.548079636 52.323267445,5.54822749 52.322985211,5.548370449 52.322688424,5.548483257 52.322413877,5.548605601 52.322055731,5.548698659 52.321747678,5.548760854 52.321471492,5.548806358 52.321195418,5.548843283 52.320867777,5.548876678 52.32056961,5.548862908 52.320216315,5.548844777 52.31986565,5.548791196 52.319454349,5.548726464 52.319158393,5.548640657 52.318834136,5.548530531 52.318513166,5.548416249 52.318222212,5.548273871 52.317911972,5.548121992 52.317601825,5.547382844 52.31620771,5.548157992 52.316053426,5.548894625 52.31744798,5.549076157 52.317804363,5.549216913 52.318114793,5.549329896 52.318406018,5.549434324 52.318727714,5.549522922 52.319051607,5.549612424 52.319461582,5.54966437 52.319872795,5.549682683 52.320223468,5.549686178 52.320576769,5.54967039 52.320875001,5.549628909 52.321202649,5.549561398 52.321591827,5.549493484 52.321867122,5.549407476 52.322176236,5.54927532 52.322532949,5.549156632 52.322806606,5.549016452 52.323103849,5.548875955 52.323387153,5.548733205 52.323664518,5.547973353 52.325128223,5.547829523 52.325102561,5.548117946 52.324547613,5.547555696 52.324447059)),((5.546942948 52.31806709,5.546093588 52.316464304,5.547104852 52.316263028,5.54795426 52.317865815,5.546942948 52.31806709)),((5.545769696 52.320072398,5.545121905 52.318849999,5.546133214 52.318648749,5.546781045 52.319871133,5.546534862 52.319920124,5.545769696 52.320072398),(5.545375344 52.318858738,5.545279127 52.318877875,5.545390405 52.319088532,5.545408036 52.319121898,5.545411432 52.319128274,5.545387103 52.31913307,5.545507295 52.319358949,5.546309424 52.319198431,5.546189817 52.318973091,5.546167392 52.318977436,5.546163996 52.318971059,5.546146468 52.318937954,5.546035085 52.318727487,5.545939836 52.318746435,5.545859931 52.318762334,5.545780027 52.318778223,5.54565759 52.318802582,5.545535154 52.318826941,5.545455249 52.318842839,5.545375344 52.318858738),(5.545594121 52.319522948,5.545713877 52.319749186,5.545737913 52.319744301,5.54574131 52.319750947,5.545864607 52.319982574,5.545981858 52.319959255,5.54611167 52.319933439,5.546241276 52.319907658,5.546371087 52.319881842,5.546500679 52.31985607,5.54661853 52.319832633,5.546495665 52.319599569,5.546492269 52.319593282,5.546516012 52.319588577,5.546395815 52.319363148,5.545594121 52.319522948)),((5.546933319 52.318817977,5.547012842 52.318802186,5.547034856 52.318797816,5.54719783 52.318765464,5.547530097 52.319393521,5.547388533 52.319421719,5.547259618 52.3194474,5.547130072 52.3194732,5.547000908 52.319498926,5.546869764 52.319525042,5.546752735 52.319548352,5.546749486 52.319542245,5.54672501 52.319547042,5.546398516 52.318930928,5.546420354 52.318926584,5.546417398 52.318920387,5.546582586 52.318887593,5.54660309 52.31888353,5.546682467 52.318867766,5.546807893 52.318842872,5.546933319 52.318817977)),((5.547582389 52.319050481,5.547534571 52.318960013,5.547615795 52.318943914,5.547716804 52.318923887,5.547747416 52.318981564,5.547764666 52.319014409,5.547582389 52.319050481)),((5.547534571 52.318960013,5.547486252 52.318868611,5.547668131 52.318832153,5.547686206 52.318866237,5.547716804 52.318923887,5.547615795 52.318943914,5.547534571 52.318960013)),((5.547668131 52.318832153,5.547660112 52.318817029,5.547809793 52.318787247,5.547893478 52.318770587,5.547950111 52.318877418,5.54781752 52.318903932,5.547716804 52.318923887,5.547686206 52.318866237,5.547668131 52.318832153)),((5.54760348 52.318710395,5.547633887 52.318767947,5.547650366 52.318798779,5.547468532 52.318835291,5.547421498 52.31874653,5.547502794 52.318730403,5.54760348 52.318710395)),((5.547650366 52.318798779,5.547633887 52.318767947,5.54760348 52.318710395,5.54770424 52.318690378,5.547836845 52.318663756,5.547893478 52.318770587,5.547809793 52.318787247,5.547660112 52.318817029,5.547650366 52.318798779)),((5.547490333 52.31849648,5.547538149 52.318586885,5.547356154 52.318623334,5.547308251 52.318533325,5.547389398 52.318516426,5.547490333 52.31849648)),((5.547490333 52.31849648,5.547591326 52.318476526,5.54772358 52.318450093,5.547780212 52.318556924,5.547696528 52.318573584,5.547546906 52.31860342,5.547538149 52.318586885,5.547490333 52.31849648)),((5.547442693 52.318406219,5.547459823 52.318438767,5.547490333 52.31849648,5.547389398 52.318516426,5.547308251 52.318533325,5.547260024 52.318442723,5.547442693 52.318406219)),((5.547377495 52.318282754,5.547408077 52.31834044,5.547425252 52.318373078,5.547242303 52.318409313,5.547194297 52.318319016,5.547276458 52.318302798,5.547377495 52.318282754)),((5.547433936 52.318389559,5.547425252 52.318373078,5.547408077 52.31834044,5.547377495 52.318282754,5.5474784 52.318262745,5.547610316 52.31823643,5.547666948 52.318343262,5.547583439 52.31835993,5.547433936 52.318389559)),((5.547194297 52.318319016,5.547146469 52.31822906,5.547329372 52.318192592,5.547346898 52.318225077,5.547377495 52.318282754,5.547276458 52.318302798,5.547194297 52.318319016)),((5.547610316 52.31823643,5.5474784 52.318262745,5.547377495 52.318282754,5.547346898 52.318225077,5.547329372 52.318192592,5.547311798 52.318159002,5.547330523 52.318145765,5.547540099 52.318103957,5.547610316 52.31823643)),((5.548276284 52.321930263,5.548292719 52.321895926,5.548338065 52.321801485,5.54842011 52.321816283,5.548549748 52.321838351,5.548488395 52.321967722,5.548403475 52.321952721,5.548276284 52.321930263)),((5.548338065 52.321801485,5.54838297 52.3217069,5.548399295 52.321666577,5.5486111 52.32170898,5.548549748 52.321838351,5.54842011 52.321816283,5.548338065 52.321801485)),((5.548188404 52.321633341,5.548399295 52.321666577,5.54838297 52.3217069,5.548338065 52.321801485,5.548255888 52.321786668,5.548126599 52.321763629,5.548188404 52.321633341)),((5.548276284 52.321930263,5.548065405 52.321892622,5.548126599 52.321763629,5.548255888 52.321786668,5.548338065 52.321801485,5.548292719 52.321895926,5.548276284 52.321930263)),((5.547654763 52.321678807,5.547784391 52.321702286,5.547866655 52.321717103,5.547821691 52.321811696,5.547805227 52.321846178,5.547592954 52.321808331,5.547654763 52.321678807)),((5.548077534 52.321754807,5.548016237 52.321883792,5.547805227 52.321846178,5.547821691 52.321811696,5.547866655 52.321717103,5.547948832 52.321731902,5.548077534 52.321754807)),((5.548077534 52.321754807,5.547948832 52.321731902,5.547866655 52.321717103,5.547911518 52.321622591,5.547927876 52.321587175,5.54813909 52.321624708,5.548077534 52.321754807)),((5.547654763 52.321678807,5.547716397 52.321549633,5.547927876 52.321587175,5.547911518 52.321622591,5.547866655 52.321717103,5.547784391 52.321702286,5.547654763 52.321678807)),((5.547716397 52.321549633,5.547778322 52.321419857,5.547907393 52.321443724,5.547989569 52.321458352,5.547944589 52.321552838,5.547927876 52.321587175,5.547716397 52.321549633)),((5.54813909 52.321624708,5.547927876 52.321587175,5.547944589 52.321552838,5.547989569 52.321458352,5.548071832 52.321472989,5.548200388 52.321496254,5.54813909 52.321624708)),((5.548200388 52.321496254,5.548071832 52.321472989,5.547989569 52.321458352,5.548034548 52.321363794,5.548050732 52.32132917,5.548262033 52.321366532,5.548200388 52.321496254)),((5.547839417 52.321291799,5.548050732 52.32132917,5.548034548 52.321363794,5.547989569 52.321458352,5.547907393 52.321443724,5.547778322 52.321419857,5.547839417 52.321291799)),((5.547901516 52.321161672,5.548030686 52.321184891,5.548113316 52.321199609,5.548068 52.32129396,5.548050732 52.32132917,5.547839417 52.321291799,5.547901516 52.321161672)),((5.548113316 52.321199609,5.548323561 52.32123707,5.548262033 52.321366532,5.548050732 52.32132917,5.548068 52.32129396,5.548113316 52.321199609)),((5.548323561 52.32123707,5.548113316 52.321199609,5.548157884 52.321104953,5.548174518 52.321069186,5.548385365 52.321106997,5.548323561 52.32123707)),((5.547963279 52.321032238,5.548174518 52.321069186,5.548157884 52.321104953,5.548113316 52.321199609,5.548030686 52.321184891,5.547901516 52.321161672,5.547963279 52.321032238)),((5.547963279 52.321032238,5.548025072 52.320902713,5.548153758 52.320925969,5.548236784 52.320940811,5.548191321 52.321035208,5.548174518 52.321069186,5.547963279 52.321032238)),((5.548385365 52.321106997,5.548174518 52.321069186,5.548191321 52.321035208,5.548236784 52.320940811,5.548318415 52.320955404,5.548446354 52.320978651,5.548385365 52.321106997)),((5.548236784 52.320940811,5.548281233 52.320846048,5.548298078 52.320811791,5.548507793 52.320849361,5.548446354 52.320978651,5.548318415 52.320955404,5.548236784 52.320940811)),((5.548025072 52.320902713,5.548041739 52.320867792,5.548017156 52.320863601,5.548060081 52.320769154,5.548298078 52.320811791,5.548281233 52.320846048,5.548236784 52.320940811,5.548153758 52.320925969,5.548025072 52.320902713)),((5.547541765 52.320956999,5.547602724 52.3208278,5.547682417 52.320841766,5.547765135 52.320856726,5.547719422 52.32095106,5.547703047 52.320985856,5.547541765 52.320956999)),((5.547975863 52.320894664,5.5479147 52.321023721,5.547703047 52.320985856,5.547719422 52.32095106,5.547765135 52.320856726,5.547846855 52.320871517,5.547975863 52.320894664)),((5.548060081 52.320769154,5.548017156 52.320863601,5.547992573 52.32085941,5.547975863 52.320894664,5.547846855 52.320871517,5.547765135 52.320856726,5.547809556 52.320762044,5.547827046 52.3207274,5.548060081 52.320769154)),((5.547602724 52.3208278,5.547663886 52.320698169,5.547827046 52.3207274,5.547809556 52.320762044,5.547765135 52.320856726,5.547682417 52.320841766,5.547602724 52.3208278)),((5.547778322 52.321419857,5.547716397 52.321549633,5.547654763 52.321678807,5.547592954 52.321808331,5.547805227 52.321846178,5.548016237 52.321883792,5.548077534 52.321754807,5.54813909 52.321624708,5.548188404 52.321633341,5.548126599 52.321763629,5.548065405 52.321892622,5.548276284 52.321930263,5.548403475 52.321952721,5.548372208 52.322018355,5.547457008 52.321854658,5.547826894 52.321078179,5.547510127 52.32102152,5.547541765 52.320956999,5.547703047 52.320985856,5.5479147 52.321023721,5.547975863 52.320894664,5.547992573 52.32085941,5.548017156 52.320863601,5.548041739 52.320867792,5.548025072 52.320902713,5.547963279 52.321032238,5.547901516 52.321161672,5.547839417 52.321291799,5.547778322 52.321419857)),((5.547673488 52.319765056,5.547882222 52.319723699,5.5479493 52.319850828,5.54782251 52.319876481,5.547740845 52.31989268,5.547691211 52.319799051,5.547673488 52.319765056)),((5.547673488 52.319765056,5.547691211 52.319799051,5.547740845 52.31989268,5.547659444 52.319908833,5.547581267 52.319924245,5.54751498 52.319796459,5.547673488 52.319765056)),((5.547581267 52.319924245,5.547659444 52.319908833,5.547740845 52.31989268,5.547790671 52.319986344,5.547808543 52.320020932,5.547648057 52.320052966,5.547581267 52.319924245)),((5.547993883 52.319882009,5.5480425 52.319974228,5.547808543 52.320020932,5.547790671 52.319986344,5.547740845 52.31989268,5.54782251 52.319876481,5.5479493 52.319850828,5.547968513 52.319887247,5.547993883 52.319882009)),((5.5480425 52.319974228,5.547993883 52.319882009,5.548019809 52.319876662,5.548000551 52.319840171,5.548126508 52.319815589,5.548207865 52.319799489,5.548257647 52.319893172,5.548275622 52.319927696,5.5480425 52.319974228)),((5.548416494 52.319757601,5.548484487 52.319886005,5.548275622 52.319927696,5.548257647 52.319893172,5.548207865 52.319799489,5.548289632 52.319783308,5.548416494 52.319757601)),((5.548348871 52.31962988,5.548416494 52.319757601,5.548289632 52.319783308,5.548207865 52.319799489,5.548158435 52.319705806,5.548140477 52.319671858,5.548348871 52.31962988)),((5.548000551 52.319840171,5.547933724 52.3197135,5.548140477 52.319671858,5.548158435 52.319705806,5.548207865 52.319799489,5.548126508 52.319815589,5.548000551 52.319840171)),((5.548140477 52.319671858,5.547933724 52.3197135,5.547865466 52.319584108,5.547990967 52.319559482,5.548072352 52.319543004,5.548140477 52.319671858)),((5.548072352 52.319543004,5.548154032 52.319527219,5.548280938 52.319501566,5.548348871 52.31962988,5.548140477 52.319671858,5.548072352 52.319543004)),((5.548072352 52.319543004,5.548022895 52.319449753,5.548004685 52.319415004,5.548213123 52.319373503,5.548280938 52.319501566,5.548154032 52.319527219,5.548072352 52.319543004)),((5.548004685 52.319415004,5.548022895 52.319449753,5.548072352 52.319543004,5.547990967 52.319559482,5.547865466 52.319584108,5.547797961 52.319456161,5.548004685 52.319415004)),((5.547936929 52.319286878,5.547986285 52.319380687,5.548004685 52.319415004,5.547797961 52.319456161,5.547730234 52.319327792,5.54785525 52.319302915,5.547936929 52.319286878)),((5.548145412 52.319245611,5.548213123 52.319373503,5.548004685 52.319415004,5.547986285 52.319380687,5.547936929 52.319286878,5.548018608 52.319270778,5.548145412 52.319245611)),((5.548077655 52.319116982,5.548100279 52.319159705,5.548145412 52.319245611,5.548018608 52.319270778,5.547936929 52.319286878,5.547887515 52.319193087,5.547869189 52.319158752,5.548077655 52.319116982)),((5.547869189 52.319158752,5.547887515 52.319193087,5.547936929 52.319286878,5.54785525 52.319302915,5.547730234 52.319327792,5.547685148 52.319242336,5.547662863 52.319200106,5.547869189 52.319158752)),((5.5480425 52.319974228,5.548275622 52.319927696,5.548484487 52.319886005,5.548416494 52.319757601,5.548348871 52.31962988,5.548280938 52.319501566,5.548213123 52.319373503,5.548145412 52.319245611,5.548100279 52.319159705,5.548077655 52.319116982,5.548147388 52.319103109,5.548577816 52.319915168,5.547601342 52.320109508,5.547408787 52.3197462,5.547792384 52.319669859,5.547577191 52.319263819,5.547685148 52.319242336,5.547730234 52.319327792,5.547797961 52.319456161,5.547865466 52.319584108,5.547933724 52.3197135,5.548000551 52.319840171,5.548019809 52.319876662,5.547993883 52.319882009,5.547968513 52.319887247,5.5479493 52.319850828,5.547882222 52.319723699,5.547673488 52.319765056,5.54751498 52.319796459,5.547581267 52.319924245,5.547648057 52.320052966,5.547808543 52.320020932,5.5480425 52.319974228)),((5.547006607 52.321637066,5.547231514 52.321677089,5.547355358 52.321699354,5.547411526 52.321709219,5.547381756 52.321771498,5.546977027 52.32169921,5.547006607 52.321637066)),((5.54702869 52.321590677,5.547028763 52.321590515,5.547377573 52.321652768,5.547433784 52.321662641,5.547411526 52.321709219,5.547355358 52.321699354,5.547231514 52.321677089,5.547006607 52.321637066,5.54702869 52.321590677)),((5.547028763 52.321590515,5.547050787 52.321544235,5.547050918 52.321543965,5.547399772 52.321606191,5.547456042 52.321616064,5.547433784 52.321662641,5.547377573 52.321652768,5.547028763 52.321590515)),((5.547072987 52.321497595,5.547073074 52.321497424,5.547421986 52.321559605,5.547478315 52.321569487,5.547456042 52.321616064,5.547399772 52.321606191,5.547050918 52.321543965,5.547072987 52.321497595)),((5.547095128 52.321451081,5.54709523 52.321450874,5.547109569 52.32145329,5.547320254 52.321490951,5.5474442 52.321513019,5.547500573 52.3215229,5.547478315 52.321569487,5.547421986 52.321559605,5.547073074 52.321497424,5.547095128 52.321451081)),((5.547117299 52.321404531,5.547117386 52.321404333,5.547466399 52.321466441,5.547522831 52.321476323,5.547500573 52.3215229,5.5474442 52.321513019,5.547320254 52.321490951,5.547109569 52.32145329,5.54709523 52.321450874,5.547117299 52.321404531)),((5.547139483 52.321357909,5.547139542 52.321357783,5.547153953 52.3213601,5.547488526 52.321420026,5.547545103 52.321429746,5.547522831 52.321476323,5.547466399 52.321466441,5.547117386 52.321404333,5.547139483 52.321357909)),((5.547294011 52.321323547,5.547377434 52.321338317,5.547419702 52.3213458,5.547572311 52.321372817,5.547545103 52.321429746,5.547488526 52.321420026,5.547153953 52.3213601,5.547139542 52.321357783,5.547166574 52.32130098,5.547294011 52.321323547)),((5.547572311 52.321372817,5.547419702 52.3213458,5.547423894 52.321336717,5.547438639 52.321305645,5.547479485 52.321312932,5.547559593 52.321145393,5.547561706 52.321145776,5.547565011 52.321138878,5.547581107 52.321104227,5.547689921 52.321123699,5.547572311 52.321372817)),((5.547495806 52.321088965,5.547581107 52.321104227,5.547565011 52.321138878,5.547561706 52.321145776,5.547559593 52.321145393,5.547479485 52.321312932,5.547438639 52.321305645,5.547423894 52.321336717,5.547419702 52.3213458,5.547377434 52.321338317,5.547381639 52.32132918,5.5473964 52.321298117,5.547476581 52.321130442,5.547495806 52.321088965)),((5.547495806 52.321088965,5.547476581 52.321130442,5.5473964 52.321298117,5.547381639 52.32132918,5.547377434 52.321338317,5.547294011 52.321323547,5.547355125 52.321196441,5.547393422 52.321115473,5.547391309 52.32111509,5.547394613 52.321108192,5.547410637 52.32107372,5.547495806 52.321088965)),((5.547294011 52.321323547,5.547166574 52.32130098,5.547214106 52.321202133,5.547240581 52.321145636,5.547285357 52.321051304,5.547410637 52.32107372,5.547394613 52.321108192,5.547391309 52.32111509,5.547393422 52.321115473,5.547355125 52.321196441,5.547294011 52.321323547)),((5.547166574 52.32130098,5.547039722 52.321278054,5.54710069 52.321151011,5.547137226 52.321069767,5.547140749 52.321070401,5.547144083 52.321063503,5.547160356 52.321028932,5.547285357 52.321051304,5.547240581 52.321145636,5.547214106 52.321202133,5.547166574 52.32130098)),((5.547039722 52.321278054,5.546956739 52.321263058,5.546975736 52.321223091,5.547017371 52.32113616,5.547055433 52.321055138,5.547075055 52.321013661,5.547160356 52.321028932,5.547144083 52.321063503,5.547140749 52.321070401,5.547137226 52.321069767,5.54710069 52.321151011,5.547039722 52.321278054)),((5.546989901 52.320998425,5.547075055 52.321013661,5.547055433 52.321055138,5.547017371 52.32113616,5.546975736 52.321223091,5.546956739 52.321263058,5.546914264 52.321255377,5.546933217 52.321215509,5.546892651 52.321208274,5.546972363 52.321040277,5.54697025 52.321039894,5.546989901 52.320998425)),((5.546914264 52.321255377,5.546762946 52.321228025,5.546880942 52.320978925,5.546989901 52.320998425,5.54697025 52.321039894,5.546972363 52.321040277,5.546892651 52.321208274,5.546933217 52.321215509,5.546914264 52.321255377)),((5.546436215 52.321672069,5.546806132 52.320895585,5.547510127 52.32102152,5.547826894 52.321078179,5.547457008 52.321854658,5.546436215 52.321672069),(5.546601804 52.321564489,5.546571844 52.321627029,5.546977027 52.32169921,5.547381756 52.321771498,5.547411526 52.321709219,5.547433784 52.321662641,5.547456042 52.321616064,5.547478315 52.321569487,5.547500573 52.3215229,5.547522831 52.321476323,5.547545103 52.321429746,5.547572311 52.321372817,5.547689921 52.321123699,5.547581107 52.321104227,5.547495806 52.321088965,5.547410637 52.32107372,5.547285357 52.321051304,5.547160356 52.321028932,5.547075055 52.321013661,5.546989901 52.320998425,5.546880942 52.320978925,5.546762946 52.321228025,5.546735621 52.32128507,5.546713318 52.32133163,5.546691016 52.321378216,5.546668713 52.321424784,5.54664641 52.321471352,5.546624107 52.32151792,5.546601804 52.321564489)),((5.546552306 52.321190174,5.546399052 52.321162798,5.54641818 52.32112248,5.546458996 52.321129768,5.546500151 52.321043719,5.546538552 52.320962796,5.546540651 52.32096318,5.546560521 52.320921459,5.546669451 52.320940923,5.546552306 52.321190174)),((5.545415445 52.321489463,5.545785364 52.32071299,5.546806132 52.320895585,5.546436215 52.321672069,5.545415445 52.321489463),(5.545581169 52.321382099,5.545551471 52.32144463,5.54595649 52.321517031,5.546361921 52.32158951,5.546552306 52.321190174,5.546669451 52.320940923,5.546560521 52.320921459,5.546475368 52.320906241,5.546390214 52.320891023,5.546265097 52.320868659,5.546139847 52.320846278,5.546054694 52.320831059,5.545969541 52.320815841,5.545860333 52.320796322,5.545741129 52.321045261,5.54571395 52.321102504,5.545691807 52.321149107,5.54566968 52.321195702,5.545647552 52.321242306,5.545625425 52.321288901,5.545603413 52.321335252,5.545581169 52.321382099)),((5.546582586 52.318887593,5.546578747 52.318880327,5.546564869 52.318854821,5.546506758 52.318866305,5.546453285 52.31876478,5.546412152 52.318688746,5.546395606 52.318655613,5.546475071 52.318639795,5.546492202 52.318672802,5.54653275 52.318748927,5.546578206 52.318835902,5.546601187 52.318831386,5.546611569 52.31885128,5.546588588 52.318855787,5.54660309 52.31888353,5.546582586 52.318887593)),((5.546682467 52.318867766,5.54660309 52.31888353,5.546588588 52.318855787,5.546611569 52.31885128,5.546601187 52.318831386,5.546578206 52.318835902,5.54653275 52.318748927,5.546492202 52.318672802,5.546475071 52.318639795,5.54655455 52.318623969,5.546571711 52.318656966,5.546612214 52.318733073,5.546682467 52.318867766)),((5.546807893 52.318842872,5.546682467 52.318867766,5.546612214 52.318733073,5.546571711 52.318656966,5.54655455 52.318623969,5.546679902 52.318599021,5.546730419 52.318694374,5.546807893 52.318842872)),((5.546933319 52.318817977,5.546807893 52.318842872,5.546730419 52.318694374,5.546679902 52.318599021,5.546805253 52.318574072,5.546863153 52.318683006,5.546933319 52.318817977)),((5.546933319 52.318817977,5.546863153 52.318683006,5.546805253 52.318574072,5.546884732 52.318558255,5.546942632 52.318667152,5.546988282 52.318754953,5.546965242 52.318759451,5.546975596 52.31877939,5.54699865 52.318774892,5.547012842 52.318802186,5.546933319 52.318817977)),((5.547012842 52.318802186,5.54699865 52.318774892,5.546975596 52.31877939,5.546965242 52.318759451,5.546988282 52.318754953,5.546942632 52.318667152,5.546884732 52.318558255,5.546964211 52.318542428,5.546981885 52.318575272,5.547022096 52.318651298,5.547064133 52.318733523,5.54707478 52.31875356,5.547017592 52.31876498,5.547034856 52.318797816,5.547012842 52.318802186)),((5.547180581 52.318732754,5.547101087 52.318748312,5.54707478 52.31875356,5.547064133 52.318733523,5.547022096 52.318651298,5.546981885 52.318575272,5.546964211 52.318542428,5.547069205 52.318521533,5.547180581 52.318732754)),((5.547180581 52.318732754,5.54719783 52.318765464,5.547034856 52.318797816,5.547017592 52.31876498,5.54707478 52.31875356,5.547101087 52.318748312,5.547180581 52.318732754)),((5.546781045 52.319871133,5.546133214 52.318648749,5.547144543 52.318447481,5.547577191 52.319263819,5.547792384 52.319669859,5.547408787 52.3197462,5.546781045 52.319871133),(5.546395606 52.318655613,5.546289072 52.318676814,5.546400017 52.318887399,5.546417398 52.318920387,5.546420354 52.318926584,5.546398516 52.318930928,5.54672501 52.319547042,5.546749486 52.319542245,5.546752735 52.319548352,5.546876042 52.319781595,5.546993336 52.319758231,5.547122032 52.319732604,5.547252619 52.319706596,5.547381887 52.319680851,5.547512093 52.319654925,5.547654433 52.319626582,5.547530097 52.319393521,5.54719783 52.318765464,5.547180581 52.318732754,5.547069205 52.318521533,5.546964211 52.318542428,5.546884732 52.318558255,5.546805253 52.318574072,5.546679902 52.318599021,5.54655455 52.318623969,5.546475071 52.318639795,5.546395606 52.318655613)),((5.54671732 52.318168164,5.546864258 52.318138756,5.547011182 52.318414748,5.546863949 52.318444085,5.546796307 52.318317343,5.54671732 52.318168164)),((5.546738481 52.318469088,5.546716172 52.318427918,5.546688188 52.318374803,5.546591955 52.318193256,5.54671732 52.318168164,5.546796307 52.318317343,5.546863949 52.318444085,5.546738481 52.318469088)),((5.546612998 52.31849409,5.546545576 52.318367455,5.546466605 52.318218339,5.546591955 52.318193256,5.546688188 52.318374803,5.546716172 52.318427918,5.546738481 52.318469088,5.546612998 52.31849409)),((5.546389867 52.318233703,5.546466605 52.318218339,5.546545576 52.318367455,5.546612998 52.31849409,5.546487529 52.318519092,5.546465352 52.318477949,5.546436578 52.318425213,5.546423717 52.318401035,5.546341401 52.318243403,5.546387771 52.31823412,5.546389867 52.318233703)),((5.547447873 52.324427774,5.547907554 52.323539197,5.548048914 52.323261411,5.54819671 52.322979294,5.548339349 52.322683163,5.548451765 52.322409569,5.548573979 52.322051847,5.548666805 52.321744575,5.548728855 52.321468929,5.548774202 52.32119389,5.548811113 52.320866419,5.548844394 52.320569214,5.548830657 52.32021679,5.548812558 52.319866782,5.548759113 52.319456469,5.54869456 52.319161294,5.548608917 52.318837703,5.548499147 52.318517721,5.548385013 52.31822717,5.548242827 52.317917335,5.548091111 52.31760753,5.547352157 52.316213809,5.547382844 52.31620771,5.548121992 52.317601825,5.548273871 52.317911972,5.548416249 52.318222212,5.548530531 52.318513166,5.548640657 52.318834136,5.548726464 52.319158393,5.548791196 52.319454349,5.548844777 52.31986565,5.548862908 52.320216315,5.548876678 52.32056961,5.548843283 52.320867777,5.548806358 52.321195418,5.548760854 52.321471492,5.548698659 52.321747678,5.548605601 52.322055731,5.548483257 52.322413877,5.548370449 52.322688424,5.54822749 52.322985211,5.548079636 52.323267445,5.547938349 52.323545087,5.547478858 52.324433313,5.547447873 52.324427774)),((5.542968551 52.323626509,5.542996403 52.323558939,5.544528715 52.319840314,5.544758338 52.320273654,5.545769696 52.320072398,5.546534862 52.319920124,5.546781045 52.319871133,5.547408787 52.3197462,5.547601342 52.320109508,5.548577816 52.319915168,5.548147388 52.319103109,5.548461245 52.319040639,5.548291342 52.318720074,5.54839597 52.318699251,5.54795426 52.317865815,5.547104852 52.316263028,5.547352157 52.316213809,5.548091111 52.31760753,5.548242827 52.317917335,5.548385013 52.31822717,5.548499147 52.318517721,5.548608917 52.318837703,5.54869456 52.319161294,5.548759113 52.319456469,5.548812558 52.319866782,5.548830657 52.32021679,5.548844394 52.320569214,5.548811113 52.320866419,5.548774202 52.32119389,5.548728855 52.321468929,5.548666805 52.321744575,5.548573979 52.322051847,5.548451765 52.322409569,5.548339349 52.322683163,5.54819671 52.322979294,5.548048914 52.323261411,5.547907554 52.323539197,5.547447873 52.324427774,5.546411903 52.324242473,5.543823711 52.323779499,5.542968551 52.323626509),(5.543757537 52.322644113,5.543387566 52.323420588,5.545429187 52.323785809,5.547470855 52.324151004,5.547840761 52.323374517,5.548477794 52.322037238,5.548372208 52.322018355,5.548403475 52.321952721,5.548488395 52.321967722,5.548549748 52.321838351,5.5486111 52.32170898,5.548399295 52.321666577,5.548188404 52.321633341,5.54813909 52.321624708,5.548200388 52.321496254,5.548262033 52.321366532,5.548323561 52.32123707,5.548385365 52.321106997,5.548446354 52.320978651,5.548507793 52.320849361,5.548298078 52.320811791,5.548060081 52.320769154,5.547827046 52.3207274,5.547663886 52.320698169,5.547602724 52.3208278,5.547541765 52.320956999,5.547510127 52.32102152,5.546806132 52.320895585,5.545785364 52.32071299,5.544764619 52.320530387,5.544394684 52.321306856,5.543757537 52.322644113)),((5.547716804 52.318923887,5.54781752 52.318903932,5.547950111 52.318877418,5.547993144 52.318958608,5.547951301 52.318966943,5.547978488 52.319018216,5.5480134 52.319084516,5.54796763 52.31909362,5.547932704 52.319027491,5.547910537 52.318985531,5.547764666 52.319014409,5.547747416 52.318981564,5.547716804 52.318923887)),((5.548020331 52.319009891,5.548055243 52.319076181,5.54801362 52.319084471,5.5480134 52.319084516,5.547978488 52.319018216,5.547951301 52.318966943,5.547993144 52.318958608,5.548020331 52.319009891)),((5.545614157 52.323397573,5.546436215 52.321672069,5.547457008 52.321854658,5.546819946 52.323191931,5.546634987 52.323580169,5.545614157 52.323397573),(5.545883336 52.323129047,5.545774081 52.323356114,5.545889298 52.323376721,5.545965341 52.323390316,5.546040284 52.323403715,5.546117428 52.323417515,5.546193457 52.32343111,5.546269472 52.323444705,5.54634553 52.3234583,5.546421574 52.323471904,5.546559865 52.323496631,5.546667518 52.323269763,5.546696256 52.323209561,5.546719709 52.323160394,5.546743177 52.323111227,5.546766644 52.32306206,5.546790112 52.323012892,5.546813565 52.322963734,5.546837032 52.322914567,5.546874286 52.322836504,5.546535257 52.322775818,5.54646886 52.322797559,5.546454756 52.322795044,5.546501356 52.322697339,5.546905875 52.322769952,5.546943011 52.322691862,5.546966405 52.322642677,5.546989784 52.322593492,5.547013178 52.322544307,5.547036557 52.322495122,5.54705995 52.322445937,5.547088716 52.322385447,5.547196087 52.322159217,5.546411939 52.322018756,5.546299844 52.322254123,5.546275788 52.322249779,5.545863123 52.323116627,5.545887194 52.323121034,5.545883336 52.323129047),(5.547280406 52.321893688,5.547254934 52.321948008,5.547294561 52.321955055,5.547320034 52.321900825,5.547280406 52.321893688)),((5.54778673 52.319056477,5.547604879 52.319092755,5.547582389 52.319050481,5.547764666 52.319014409,5.54778673 52.319056477)),((5.547764666 52.319014409,5.547910537 52.318985531,5.547932704 52.319027491,5.54778673 52.319056477,5.547764666 52.319014409)),((5.547144543 52.318447481,5.546942948 52.31806709,5.54795426 52.317865815,5.54839597 52.318699251,5.548291342 52.318720074,5.548461245 52.319040639,5.548147388 52.319103109,5.548077655 52.319116982,5.547869189 52.319158752,5.547662863 52.319200106,5.547685148 52.319242336,5.547577191 52.319263819,5.547144543 52.318447481),(5.547146469 52.31822906,5.547194297 52.318319016,5.547242303 52.318409313,5.547425252 52.318373078,5.547433936 52.318389559,5.547442693 52.318406219,5.547260024 52.318442723,5.547308251 52.318533325,5.547356154 52.318623334,5.547538149 52.318586885,5.547546906 52.31860342,5.547555929 52.318620466,5.547373874 52.318656655,5.547421498 52.31874653,5.547468532 52.318835291,5.547650366 52.318798779,5.547660112 52.318817029,5.547668131 52.318832153,5.547486252 52.318868611,5.547534571 52.318960013,5.547582389 52.319050481,5.547604879 52.319092755,5.54778673 52.319056477,5.547932704 52.319027491,5.54796763 52.31909362,5.5480134 52.319084516,5.54801362 52.319084471,5.548055243 52.319076181,5.548020331 52.319009891,5.548076624 52.318998589,5.548006448 52.318866152,5.547949859 52.318759366,5.547893196 52.318652445,5.547836622 52.318545694,5.54777999 52.318438818,5.547723387 52.318331995,5.547666784 52.318225164,5.547596581 52.318092691,5.547540099 52.318103957,5.547330523 52.318145765,5.547311798 52.318159002,5.547329372 52.318192592,5.547146469 52.31822906)),((5.546438188 52.319738973,5.546395845 52.31965736,5.546377727 52.31962324,5.546495665 52.319599569,5.54661853 52.319832633,5.546500679 52.31985607,5.546438188 52.319738973)),((5.546752735 52.319548352,5.546869764 52.319525042,5.546887972 52.319559467,5.546931473 52.319640693,5.546993336 52.319758231,5.546876042 52.319781595,5.546752735 52.319548352)),((5.546869764 52.319525042,5.547000908 52.319498926,5.547122032 52.319732604,5.546993336 52.319758231,5.546931473 52.319640693,5.546887972 52.319559467,5.546869764 52.319525042)),((5.547130072 52.3194732,5.547252619 52.319706596,5.547122032 52.319732604,5.547000908 52.319498926,5.547130072 52.3194732)),((5.547259618 52.3194474,5.547381887 52.319680851,5.547252619 52.319706596,5.547130072 52.3194732,5.547259618 52.3194474)),((5.547388533 52.319421719,5.547406874 52.319456368,5.547449994 52.319537361,5.547512093 52.319654925,5.547381887 52.319680851,5.547259618 52.3194474,5.547388533 52.319421719)),((5.547449994 52.319537361,5.547406874 52.319456368,5.547388533 52.319421719,5.547530097 52.319393521,5.547654433 52.319626582,5.547512093 52.319654925,5.547449994 52.319537361)),((5.546506164 52.32823633,5.546581703 52.328090862,5.546674685 52.328109018,5.546798114 52.328133127,5.546817708 52.328095397,5.549082933 52.323732095,5.549226482 52.323453155,5.549367749 52.323168295,5.549509557 52.322867589,5.549631429 52.322586701,5.549767286 52.322219997,5.549855521 52.321902854,5.549925167 52.321620555,5.549994096 52.321223142,5.5500366 52.320887349,5.550052895 52.320579697,5.550049326 52.320219324,5.550030584 52.319860481,5.5499772 52.319437991,5.549885562 52.319018213,5.549794999 52.318687133,5.549688195 52.318358116,5.549572026 52.318058672,5.549427912 52.317740868,5.549243807 52.317379457,5.547968186 52.314964441,5.550373647 52.314487287,5.552716016 52.319769696,5.553063683 52.320946944,5.553148735 52.321988458,5.550607069 52.328871479,5.549772141 52.329084568,5.549728751 52.329017481,5.549525546 52.328977837,5.549555802 52.328919609,5.549267614 52.328863392,5.549256936 52.328883925,5.548743069 52.328783697,5.548734125 52.328800921,5.54863491 52.328651008,5.548503524 52.328625662,5.548377994 52.328601189,5.548306665 52.328478812,5.548267942 52.328455847,5.548228366 52.328432381,5.547099523 52.32821279,5.546651044 52.328126962,5.54663984 52.328156537,5.546637741 52.32817243,5.546639125 52.328186171,5.54664359 52.328199996,5.546656868 52.32822092,5.546671589 52.328235289,5.546688061 52.328246906,5.546712162 52.328258674,5.546703741 52.328274818,5.546506164 52.32823633),(5.547698357 52.327793505,5.547749252 52.327872266,5.547846278 52.327848767,5.547795544 52.327769744,5.547698357 52.327793505),(5.548387922 52.325767578,5.54837168 52.325798824,5.548393346 52.325803045,5.548374818 52.32583885,5.548402517 52.325844223,5.548375963 52.325895624,5.548515591 52.325922558,5.548550811 52.325854141,5.548620449 52.325867653,5.548655802 52.32579964,5.548586237 52.325785993,5.548622088 52.325717611,5.548483031 52.325690191,5.548456081 52.32574152,5.548428161 52.325736022,5.548409442 52.325771791,5.548387922 52.325767578)),((5.545160636 52.315737248,5.545158126 52.315732524,5.545196917 52.315728617,5.545231617 52.315725173,5.545668146 52.316548973,5.546093588 52.316464304,5.546942948 52.31806709,5.547144543 52.318447481,5.546133214 52.318648749,5.545931641 52.318268356,5.545805982 52.318293367,5.545770298 52.318182381,5.545946905 52.318152565,5.546393551 52.318062735,5.54628936 52.317866189,5.546203274 52.317703826,5.546117204 52.317541454,5.546031163 52.317379171,5.545926976 52.317182625,5.545822731 52.316985989,5.545740785 52.31683205,5.545623031 52.316609844,5.545505338 52.316387719,5.545417914 52.316222751,5.545330638 52.316058043,5.545243259 52.315893155,5.545160636 52.315737248),(5.546087065 52.318294301,5.546073304 52.31829743,5.546130066 52.318404756,5.546144019 52.318401987,5.546232809 52.318569847,5.546362045 52.318544094,5.546487529 52.318519092,5.546612998 52.31849409,5.546738481 52.318469088,5.546863949 52.318444085,5.547011182 52.318414748,5.546864258 52.318138756,5.54671732 52.318168164,5.546591955 52.318193256,5.546466605 52.318218339,5.546389867 52.318233703,5.546364471 52.318182211,5.546334909 52.318122294,5.546325867 52.318103945,5.546323757 52.318104334,5.546362375 52.318182637,5.546387771 52.31823412,5.546341401 52.318243403,5.546216035 52.318268486,5.546101002 52.318291514,5.546087065 52.318294301)),((5.547973353 52.325128223,5.548733205 52.323664518,5.548875955 52.323387153,5.549016452 52.323103849,5.549156632 52.322806606,5.54927532 52.322532949,5.549407476 52.322176236,5.549493484 52.321867122,5.549561398 52.321591827,5.549628909 52.321202649,5.54967039 52.320875001,5.549686178 52.320576769,5.549682683 52.320223468,5.54966437 52.319872795,5.549612424 52.319461582,5.549522922 52.319051607,5.549434324 52.318727714,5.549329896 52.318406018,5.549216913 52.318114793,5.549076157 52.317804363,5.548894625 52.31744798,5.548157992 52.316053426,5.547180144 52.314202035,5.547527117 52.314129357,5.547968186 52.314964441,5.549243807 52.317379457,5.549427912 52.317740868,5.549572026 52.318058672,5.549688195 52.318358116,5.549794999 52.318687133,5.549885562 52.319018213,5.5499772 52.319437991,5.550030584 52.319860481,5.550049326 52.320219324,5.550052895 52.320579697,5.5500366 52.320887349,5.549994096 52.321223142,5.549925167 52.321620555,5.549855521 52.321902854,5.549767286 52.322219997,5.549631429 52.322586701,5.549509557 52.322867589,5.549367749 52.323168295,5.549226482 52.323453155,5.549082933 52.323732095,5.546817708 52.328095397,5.546798114 52.328133127,5.546674685 52.328109018,5.546581703 52.328090862,5.546506164 52.32823633,5.546373165 52.328210355,5.547973353 52.325128223)),((5.546977027 52.32169921,5.546571844 52.321627029,5.546601804 52.321564489,5.546770809 52.321595097,5.546957381 52.321628387,5.547006607 52.321637066,5.546977027 52.32169921)),((5.546624107 52.32151792,5.546793156 52.321548538,5.546979654 52.32158181,5.54702869 52.321590677,5.547006607 52.321637066,5.546957381 52.321628387,5.546770809 52.321595097,5.546601804 52.321564489,5.546624107 52.32151792)),((5.546624107 52.32151792,5.54664641 52.321471352,5.546815503 52.321501979,5.547002045 52.321535421,5.547050787 52.321544235,5.547028763 52.321590515,5.54702869 52.321590677,5.546979654 52.32158181,5.546793156 52.321548538,5.546624107 52.32151792)),((5.546668713 52.321424784,5.546837835 52.32145541,5.547024274 52.321488835,5.547072987 52.321497595,5.547050918 52.321543965,5.547050787 52.321544235,5.547002045 52.321535421,5.546815503 52.321501979,5.54664641 52.321471352,5.546668713 52.321424784)),((5.546668713 52.321424784,5.546691016 52.321378216,5.546860181 52.321408851,5.547046576 52.321442114,5.547095128 52.321451081,5.547073074 52.321497424,5.547072987 52.321497595,5.547024274 52.321488835,5.546837835 52.32145541,5.546668713 52.321424784)),((5.546713318 52.32133163,5.546882513 52.321362292,5.547068688 52.3213956,5.547117299 52.321404531,5.54709523 52.321450874,5.547095128 52.321451081,5.547046576 52.321442114,5.546860181 52.321408851,5.546691016 52.321378216,5.546713318 52.32133163)),((5.546735621 52.32128507,5.54690486 52.321315723,5.5470908 52.321349095,5.547126054 52.321355482,5.547139483 52.321357909,5.547117386 52.321404333,5.547117299 52.321404531,5.547068688 52.3213956,5.546882513 52.321362292,5.546713318 52.32133163,5.546735621 52.32128507)),((5.546956739 52.321263058,5.547039722 52.321278054,5.547166574 52.32130098,5.547139542 52.321357783,5.547139483 52.321357909,5.547126054 52.321355482,5.5470908 52.321349095,5.54690486 52.321315723,5.546735621 52.32128507,5.546762946 52.321228025,5.546914264 52.321255377,5.546956739 52.321263058)),((5.54772358 52.318450093,5.547666948 52.318343262,5.547723387 52.318331995,5.54777999 52.318438818,5.54772358 52.318450093)),((5.54760348 52.318710395,5.547502794 52.318730403,5.547421498 52.31874653,5.547373874 52.318656655,5.547555929 52.318620466,5.547573015 52.318652763,5.54760348 52.318710395)),((5.547546906 52.31860342,5.547696528 52.318573584,5.547780212 52.318556924,5.547836845 52.318663756,5.54770424 52.318690378,5.54760348 52.318710395,5.547573015 52.318652763,5.547555929 52.318620466,5.547546906 52.31860342)),((5.547490333 52.31849648,5.547459823 52.318438767,5.547442693 52.318406219,5.547433936 52.318389559,5.547583439 52.31835993,5.547666948 52.318343262,5.54772358 52.318450093,5.547591326 52.318476526,5.547490333 52.31849648)),((5.547950111 52.318877418,5.547893478 52.318770587,5.547949859 52.318759366,5.548006448 52.318866152,5.547950111 52.318877418)),((5.547893478 52.318770587,5.547836845 52.318663756,5.547893196 52.318652445,5.547949859 52.318759366,5.547893478 52.318770587)),((5.547836622 52.318545694,5.547893196 52.318652445,5.547836845 52.318663756,5.547780212 52.318556924,5.547836622 52.318545694)),((5.54772358 52.318450093,5.54777999 52.318438818,5.547836622 52.318545694,5.547780212 52.318556924,5.54772358 52.318450093)),((5.547666784 52.318225164,5.547723387 52.318331995,5.547666948 52.318343262,5.547610316 52.31823643,5.547666784 52.318225164)),((5.547666784 52.318225164,5.547610316 52.31823643,5.547540099 52.318103957,5.547596581 52.318092691,5.547666784 52.318225164)),((5.548020331 52.319009891,5.547993144 52.318958608,5.547950111 52.318877418,5.548006448 52.318866152,5.548076624 52.318998589,5.548020331 52.319009891)),((5.545623031 52.316609844,5.545740785 52.31683205,5.545294705 52.316921096,5.545176983 52.316698934,5.545623031 52.316609844)),((5.545926976 52.317182625,5.545847968 52.317198271,5.545510482 52.317265592,5.545406825 52.317069017,5.545822731 52.316985989,5.545926976 52.317182625)),((5.545575429 52.317743532,5.545648591 52.317881152,5.545213345 52.317967791,5.545140743 52.317830755,5.545308258 52.317797465,5.545575429 52.317743532)),((5.545584962 52.317468595,5.545480779 52.317272507,5.545510482 52.317265592,5.545847968 52.317198271,5.545926976 52.317182625,5.546031163 52.317379171,5.545584962 52.317468595)),((5.545506679 52.318003493,5.545659274 52.317973117,5.545673598 52.318000421,5.545770298 52.318182381,5.545617599 52.318212784,5.545590946 52.318162354,5.545506679 52.318003493)),((5.545584962 52.317468595,5.546031163 52.317379171,5.546117204 52.317541454,5.5459931 52.317566112,5.545670899 52.317631067,5.545584962 52.317468595)),((5.545670899 52.317631067,5.545757189 52.317793574,5.545842849 52.317956199,5.545946905 52.318152565,5.545770298 52.318182381,5.545673598 52.318000421,5.545659274 52.317973117,5.545648591 52.317881152,5.545575429 52.317743532,5.545510532 52.317620371,5.545445251 52.317496509,5.545343751 52.317304408,5.545316448 52.317309972,5.545315872 52.317308885,5.545213288 52.317116596,5.54516375 52.317022786,5.545075489 52.316853622,5.545102675 52.316848175,5.545011101 52.316674826,5.544920298 52.316503849,5.544854991 52.316380068,5.544789466 52.316256638,5.544717013 52.316118954,5.544671395 52.316033991,5.544642887 52.315981002,5.544543925 52.315795152,5.5446905 52.315781035,5.544796877 52.315981534,5.54488449 52.316146646,5.544971824 52.31631157,5.545059143 52.316476476,5.545176983 52.316698934,5.545294705 52.316921096,5.545740785 52.31683205,5.545822731 52.316985989,5.545406825 52.317069017,5.545510482 52.317265592,5.545480779 52.317272507,5.545584962 52.317468595,5.545670899 52.317631067)),((5.545444052 52.318421989,5.545571983 52.31839658,5.545631977 52.318509762,5.545679958 52.318602046,5.545716158 52.318672614,5.545588255 52.318698095,5.545571105 52.318663713,5.545526418 52.31857803,5.545444052 52.318421989)),((5.54584406 52.318647133,5.545716158 52.318672614,5.545679958 52.318602046,5.545631977 52.318509762,5.545571983 52.31839658,5.545699915 52.318371162,5.545782164 52.318527087,5.545827042 52.318612724,5.54584406 52.318647133)),((5.545664107 52.319070801,5.545584232 52.319086745,5.54551629 52.318957611,5.545455249 52.318842839,5.545535154 52.318826941,5.54555336 52.318861205,5.545595828 52.318941776,5.545664107 52.319070801)),((5.545699915 52.318371162,5.545823112 52.318346694,5.545880523 52.318455233,5.54593141 52.31855189,5.545968856 52.318622267,5.54584406 52.318647133,5.545827042 52.318612724,5.545782164 52.318527087,5.545699915 52.318371162)),((5.546073304 52.31829743,5.546087065 52.318294301,5.546144019 52.318401987,5.546130066 52.318404756,5.546073304 52.31829743)),((5.5457865 52.319046379,5.545664107 52.319070801,5.545595828 52.318941776,5.54555336 52.318861205,5.545535154 52.318826941,5.54565759 52.318802582,5.545735007 52.318948285,5.5457865 52.319046379)),((5.5457865 52.319046379,5.545735007 52.318948285,5.54565759 52.318802582,5.545780027 52.318778223,5.545798438 52.318812406,5.545841508 52.318892859,5.545855801 52.318919794,5.545908893 52.319021957,5.5457865 52.319046379)),((5.545988769 52.319006023,5.545908893 52.319021957,5.545855801 52.318919794,5.545841508 52.318892859,5.545798438 52.318812406,5.545780027 52.318778223,5.545859931 52.318762334,5.545878504 52.318796462,5.545921457 52.318876943,5.545988769 52.319006023)),((5.546051234 52.318957136,5.545992888 52.318968728,5.546010386 52.319001707,5.545988769 52.319006023,5.545921457 52.318876943,5.545878504 52.318796462,5.545859931 52.318762334,5.545939836 52.318746435,5.546001405 52.318861026,5.546051234 52.318957136)),((5.545378471 52.320980478,5.545382768 52.320972015,5.545397544 52.32094097,5.545438506 52.320948285,5.545518371 52.320780468,5.545520484 52.320780852,5.545540064 52.32073968,5.5456487 52.320759128,5.545530637 52.321007687,5.545378471 52.320980478)),((5.545741129 52.321045261,5.545860333 52.320796322,5.545969541 52.320815841,5.545949492 52.320857301,5.545951606 52.320857675,5.545913073 52.320938922,5.545872137 52.321024935,5.545912791 52.321032196,5.545898029 52.321063241,5.545893428 52.321072469,5.545741129 52.321045261)),((5.545893428 52.321072469,5.545898029 52.321063241,5.545912791 52.321032196,5.545872137 52.321024935,5.545913073 52.320938922,5.545951606 52.320857675,5.545949492 52.320857301,5.545969541 52.320815841,5.546054694 52.320831059,5.54603469 52.320872555,5.545996289 52.320953765,5.545955001 52.321039743,5.545935755 52.321080033,5.545893428 52.321072469)),((5.545935755 52.321080033,5.545955001 52.321039743,5.545996289 52.320953765,5.54603469 52.320872555,5.546054694 52.320831059,5.546139847 52.320846278,5.546119887 52.320887809,5.546117774 52.320887426,5.546079241 52.320968555,5.546018795 52.321094868,5.546014509 52.321094092,5.545935755 52.321080033)),((5.546146716 52.321117714,5.54611964 52.32117475,5.546070505 52.321166646,5.545883289 52.32113287,5.54571395 52.321102504,5.545741129 52.321045261,5.545893428 52.321072469,5.545935755 52.321080033,5.546014509 52.321094092,5.546018795 52.321094868,5.546146716 52.321117714)),((5.544164684 52.318676123,5.544247547 52.318832793,5.544291528 52.31891863,5.544309249 52.318952903,5.544185668 52.318977523,5.544101478 52.318814644,5.544041529 52.31870058,5.544164684 52.318676123)),((5.544437139 52.318927424,5.544309249 52.318952903,5.544291528 52.31891863,5.544247547 52.318832793,5.544164684 52.318676123,5.544292617 52.318650706,5.544353094 52.318764518,5.544400384 52.318856974,5.544437139 52.318927424)),((5.544355003 52.319294653,5.54424279 52.319083816,5.544349487 52.319062544,5.544368161 52.31909679,5.544461965 52.319273479,5.544436947 52.319278519,5.544355003 52.319294653)),((5.54453794 52.319294697,5.544372573 52.319327659,5.544355003 52.319294653,5.544436947 52.319278519,5.544461965 52.319273479,5.544520296 52.319261735,5.54453794 52.319294697)),((5.544349487 52.319062544,5.544429392 52.31904662,5.544447935 52.319080892,5.544559001 52.319290507,5.54453794 52.319294697,5.544520296 52.319261735,5.544461965 52.319273479,5.544368161 52.31909679,5.544349487 52.319062544)),((5.544437139 52.318927424,5.544400384 52.318856974,5.544353094 52.318764518,5.544292617 52.318650706,5.54442055 52.318625299,5.544503149 52.318781871,5.544547614 52.318867617,5.544565043 52.318901945,5.544437139 52.318927424)),((5.544210045 52.3181663,5.543779162 52.318252398,5.543685383 52.318072994,5.54411524 52.317987266,5.544137874 52.318029999,5.544210045 52.3181663)),((5.544070856 52.317903434,5.54411524 52.317987266,5.543685383 52.318072994,5.543590886 52.317893554,5.544020272 52.317807899,5.544070856 52.317903434)),((5.544020272 52.317807899,5.543590886 52.317893554,5.543496581 52.317714043,5.543925202 52.317628353,5.543937103 52.317650833,5.544003972 52.317777138,5.544020272 52.317807899)),((5.543869953 52.317524016,5.543925202 52.317628353,5.543496581 52.317714043,5.54340185 52.317534513,5.543830089 52.317448726,5.543869953 52.317524016)),((5.543802848 52.31739728,5.543830089 52.317448726,5.54340185 52.317534513,5.543307737 52.317354884,5.543734932 52.317269017,5.543802848 52.31739728)),((5.543618206 52.317048812,5.54368525 52.317175342,5.543498435 52.317212636,5.54325804 52.317260975,5.543157077 52.317068404,5.543583333 52.316983024,5.543618206 52.317048812)),((5.543484178 52.316795915,5.543551192 52.316922364,5.543583333 52.316983024,5.543157077 52.317068404,5.543055881 52.316876138,5.543481461 52.316790787,5.543484178 52.316795915)),((5.54337956 52.316598468,5.543417179 52.316669466,5.543481461 52.316790787,5.543055881 52.316876138,5.542954392 52.316683711,5.54337956 52.316598468)),((5.543484178 52.316795915,5.543481461 52.316790787,5.543417179 52.316669466,5.543844194 52.3165843,5.543911385 52.316710856,5.543484178 52.316795915)),((5.543551192 52.316922364,5.543484178 52.316795915,5.543911385 52.316710856,5.543978297 52.316837305,5.543713325 52.316889829,5.543551192 52.316922364)),((5.543551192 52.316922364,5.543713325 52.316889829,5.543978297 52.316837305,5.544045841 52.316963761,5.543618206 52.317048812,5.543583333 52.316983024,5.543551192 52.316922364)),((5.544045841 52.316963761,5.544112681 52.317090237,5.543913336 52.317130065,5.54380868 52.317150903,5.54368525 52.317175342,5.543618206 52.317048812,5.544045841 52.316963761)),((5.543802848 52.31739728,5.543734932 52.317269017,5.544131191 52.317190263,5.544198872 52.317318158,5.543802848 52.31739728)),((5.543869953 52.317524016,5.543830089 52.317448726,5.543802848 52.31739728,5.544198872 52.317318158,5.54422902 52.317312428,5.544296477 52.317438912,5.544042072 52.317490372,5.543869953 52.317524016)),((5.543869953 52.317524016,5.544042072 52.317490372,5.544296477 52.317438912,5.544363332 52.31756519,5.543937103 52.317650833,5.543925202 52.317628353,5.543869953 52.317524016)),((5.543937103 52.317650833,5.544363332 52.31756519,5.544430468 52.317691719,5.544219192 52.317734116,5.544003972 52.317777138,5.543937103 52.317650833)),((5.544020272 52.317807899,5.544003972 52.317777138,5.544219192 52.317734116,5.544430468 52.317691719,5.544497662 52.317818239,5.54428939 52.317860075,5.544070856 52.317903434,5.544020272 52.317807899)),((5.544497662 52.317818239,5.544564739 52.31794466,5.54430608 52.31799662,5.544137874 52.318029999,5.54411524 52.317987266,5.544070856 52.317903434,5.54428939 52.317860075,5.544497662 52.317818239)),((5.544637264 52.318081167,5.544210045 52.3181663,5.544137874 52.318029999,5.54430608 52.31799662,5.544564739 52.31794466,5.544637264 52.318081167)),((5.544687749 52.316975751,5.544755579 52.317103843,5.544349603 52.317183915,5.544282008 52.317055778,5.544687749 52.316975751)),((5.544619742 52.316847318,5.544665025 52.31693282,5.544687749 52.316975751,5.544282008 52.317055778,5.544281801 52.317055266,5.544250877 52.317061311,5.544183479 52.316934531,5.544619742 52.316847318)),((5.54411577 52.316807041,5.544370171 52.316755715,5.544551971 52.316719307,5.544574473 52.316761807,5.544619742 52.316847318,5.544183479 52.316934531,5.54411577 52.316807041)),((5.54411577 52.316807041,5.544047663 52.316678778,5.544483862 52.316590694,5.544551971 52.316719307,5.544370171 52.316755715,5.54411577 52.316807041)),((5.544000231 52.318303461,5.544111262 52.318512672,5.543958693 52.318543046,5.543862132 52.318361075,5.543847516 52.318333871,5.544000231 52.318303461)),((5.544150865 52.318273467,5.544179804 52.318328064,5.544262014 52.318482651,5.544111262 52.318512672,5.544000231 52.318303461,5.544150865 52.318273467)),((5.544301499 52.318243472,5.544385748 52.318402298,5.544412634 52.318452665,5.544262014 52.318482651,5.544179804 52.318328064,5.544150865 52.318273467,5.544301499 52.318243472)),((5.544452132 52.318213478,5.544480881 52.318268121,5.544512934 52.318327837,5.544563253 52.31842268,5.544412634 52.318452665,5.544385748 52.318402298,5.544301499 52.318243472,5.544452132 52.318213478)),((5.544563253 52.31842268,5.544512934 52.318327837,5.544480881 52.318268121,5.544452132 52.318213478,5.544602766 52.318183483,5.544625283 52.318226145,5.544713873 52.318392694,5.544563253 52.31842268)),((5.544778215 52.318054735,5.544637264 52.318081167,5.544564739 52.31794466,5.544497662 52.317818239,5.544430468 52.317691719,5.544363332 52.31756519,5.544296477 52.317438912,5.54422902 52.317312428,5.544198872 52.317318158,5.544131191 52.317190263,5.543734932 52.317269017,5.543307737 52.317354884,5.54325804 52.317260975,5.543498435 52.317212636,5.54368525 52.317175342,5.54380868 52.317150903,5.543913336 52.317130065,5.544112681 52.317090237,5.544045841 52.316963761,5.543978297 52.316837305,5.543911385 52.316710856,5.543844194 52.3165843,5.543776944 52.316457519,5.543704455 52.31632147,5.543843768 52.316293576,5.543915967 52.316430489,5.54398155 52.316554602,5.544047663 52.316678778,5.54411577 52.316807041,5.544183479 52.316934531,5.544250877 52.317061311,5.544281801 52.317055266,5.544282008 52.317055778,5.544349603 52.317183915,5.544755579 52.317103843,5.544857566 52.317083422,5.544976217 52.317059806,5.54516375 52.317022786,5.545213288 52.317116596,5.54480541 52.31719776,5.544368513 52.317284912,5.544435888 52.317412833,5.544504115 52.317541239,5.544571975 52.317669484,5.544637738 52.317793426,5.544704294 52.317917448,5.544778215 52.318054735)),((5.542703138 52.321763519,5.542726534 52.321864177,5.542754294 52.321983712,5.542771643 52.322058404,5.54273704 52.322061874,5.542705956 52.322069087,5.542691734 52.322075002,5.542677326 52.322081869,5.542648247 52.322088073,5.54263077 52.322094288,5.542575778 52.321766913,5.542703138 52.321763519)),((5.542874153 52.322041085,5.542810774 52.322053517,5.542771643 52.322058404,5.542754294 52.321983712,5.542726534 52.321864177,5.542703138 52.321763519,5.542809218 52.321760701,5.54283117 52.321855438,5.542856251 52.321963751,5.542874153 52.322041085)),((5.542975722 52.322019273,5.542962307 52.322020845,5.54294403 52.322024725,5.542907673 52.322038371,5.542874153 52.322041085,5.542856251 52.321963751,5.54283117 52.321855438,5.542809218 52.321760701,5.542915254 52.321757883,5.542935807 52.321846699,5.542958311 52.321944015,5.542975722 52.322019273)),((5.543030242 52.322011031,5.543016745 52.322014446,5.542975722 52.322019273,5.542958311 52.321944015,5.542935807 52.321846699,5.542915254 52.321757883,5.543130273 52.321752162,5.543121464 52.321770778,5.543090615 52.321840527,5.543052107 52.321922231,5.543030242 52.322011031)),((5.543094422 52.321997141,5.543090491 52.321997093,5.543079451 52.321998572,5.543030242 52.322011031,5.543052107 52.321922231,5.543090615 52.321840527,5.543121464 52.321770778,5.543130273 52.321752162,5.543136169 52.321739734,5.543167724 52.321745336,5.54321055 52.321752946,5.543162736 52.321853365,5.543123949 52.321934989,5.543094422 52.321997141)),((5.543168797 52.322004359,5.54316056 52.322001979,5.543127147 52.321997592,5.543094422 52.321997141,5.543123949 52.321934989,5.543162736 52.321853365,5.54321055 52.321752946,5.543251263 52.321760172,5.543282392 52.321765704,5.543267688 52.321796784,5.54323471 52.321866168,5.543195791 52.321947755,5.543168797 52.322004359)),((5.543282392 52.321765704,5.543313243 52.321771181,5.543354234 52.32177847,5.543306406 52.321878925,5.543267648 52.321960513,5.543239941 52.322018825,5.543228352 52.322018346,5.543197692 52.322012715,5.543168797 52.322004359,5.543195791 52.321947755,5.54323471 52.321866168,5.543267688 52.321796784,5.543282392 52.321765704)),((5.543354234 52.32177847,5.543394947 52.321785696,5.543425944 52.321791201,5.54341124 52.321822282,5.543378233 52.32189171,5.54333949 52.32197327,5.543313866 52.322027203,5.543264689 52.322019844,5.543239941 52.322018825,5.543267648 52.321960513,5.543306406 52.321878925,5.543354234 52.32177847)),((5.543425944 52.321791201,5.543456545 52.321796634,5.543529062 52.321809516,5.543417435 52.322044547,5.543383971 52.322042461,5.543334088 52.322030223,5.543313866 52.322027203,5.54333949 52.32197327,5.543378233 52.32189171,5.54341124 52.321822282,5.543425944 52.321791201)),((5.542634442 52.321359578,5.542658987 52.321465888,5.542689146 52.321596421,5.542705946 52.321669145,5.542704216 52.321669282,5.542685364 52.321672336,5.542657539 52.321680497,5.542642222 52.321687474,5.542610244 52.321690716,5.542595027 52.321692956,5.542566206 52.321709935,5.542508433 52.32136306,5.542634442 52.321359578)),((5.542634442 52.321359578,5.542740345 52.321356644,5.542763637 52.321457185,5.542791279 52.321576532,5.542808197 52.321649543,5.542798213 52.321650842,5.542780318 52.321654847,5.54275515 52.321663481,5.542744086 52.32166621,5.542705946 52.321669145,5.542689146 52.321596421,5.542658987 52.321465888,5.542634442 52.321359578)),((5.542910006 52.321629277,5.542902383 52.321630608,5.542844262 52.321644849,5.542808197 52.321649543,5.542791279 52.321576532,5.542763637 52.321457185,5.542740345 52.321356644,5.542846408 52.321353709,5.542868287 52.321448473,5.54289325 52.321556652,5.542910006 52.321629277)),((5.543011528 52.321606908,5.542983633 52.321611618,5.542952937 52.321625023,5.54292377 52.321626877,5.542910006 52.321629277,5.54289325 52.321556652,5.542868287 52.321448473,5.542846408 52.321353709,5.542952369 52.321350783,5.542972923 52.32143977,5.542995428 52.321537194,5.543011528 52.321606908)),((5.543049699 52.321600458,5.543011528 52.321606908,5.542995428 52.321537194,5.542972923 52.32143977,5.542952369 52.321350783,5.543167107 52.321344838,5.54315843 52.321363265,5.543127392 52.321433545,5.543089133 52.321515122,5.543049699 52.321600458)),((5.543138059 52.321576389,5.543131835 52.321575004,5.543067838 52.321594835,5.543049699 52.321600458,5.543089133 52.321515122,5.543127392 52.321433545,5.54315843 52.321363265,5.543167107 52.321344838,5.543172988 52.321332319,5.543204543 52.321337949,5.543247354 52.321345595,5.543199512 52.321446374,5.543160975 52.321527898,5.543138059 52.321576389)),((5.543207935 52.32159332,5.543202242 52.321592788,5.543169706 52.321583412,5.543138059 52.321576389,5.543160975 52.321527898,5.543199512 52.321446374,5.543247354 52.321345595,5.543287627 52.321352786,5.543318741 52.321358335,5.543303978 52.321389398,5.543271354 52.321459149,5.543232816 52.321540664,5.543207935 52.32159332)),((5.543280024 52.321605547,5.543240581 52.321596368,5.543207935 52.32159332,5.543232816 52.321540664,5.543271354 52.321459149,5.543303978 52.321389398,5.543318741 52.321358335,5.543349576 52.32136384,5.543390979 52.321371236,5.543343181 52.321471934,5.543304658 52.32155344,5.543280024 52.321605547)),((5.543348445 52.321625553,5.543310406 52.321611214,5.543283694 52.321606396,5.543280024 52.321605547,5.543304658 52.32155344,5.543343181 52.321471934,5.543390979 52.321371236,5.543432102 52.321378578,5.543462938 52.321384083,5.543448175 52.321415146,5.543415022 52.321484718,5.5433765 52.321566215,5.543348445 52.321625553)),((5.542594228 52.321059174,5.542678595 52.321026105,5.542863799 52.320980635,5.5429745 52.321187385,5.542931668 52.321194839,5.542904638 52.321203511,5.542848955 52.32123532,5.542829973 52.321251325,5.542811175 52.321265281,5.542594228 52.321059174)),((5.543425863 52.321626529,5.543421182 52.321626032,5.543382512 52.321624115,5.54335338 52.321627407,5.543348445 52.321625553,5.5433765 52.321566215,5.543415022 52.321484718,5.543448175 52.321415146,5.543462938 52.321384083,5.54349392 52.321389614,5.543534618 52.321396876,5.543486864 52.321497493,5.543448342 52.321578981,5.543425863 52.321626529)),((5.543494778 52.321645501,5.543490524 52.321645389,5.543455517 52.321634012,5.543444967 52.321628544,5.543425863 52.321626529,5.543448342 52.321578981,5.543486864 52.321497493,5.543534618 52.321396876,5.543576021 52.321404263,5.543606856 52.321409768,5.543592093 52.32144084,5.543558691 52.321510278,5.543520183 52.321591757,5.543494778 52.321645501)),((5.543606856 52.321409768,5.543637442 52.321415237,5.543707171 52.321427799,5.543595713 52.321664538,5.543574241 52.321660504,5.543559792 52.321656119,5.543532536 52.321646538,5.543494778 52.321645501,5.543520183 52.321591757,5.543558691 52.321510278,5.543592093 52.32144084,5.543606856 52.321409768)),((5.542811175 52.321265281,5.542774011 52.321287143,5.54273861 52.321301129,5.542707271 52.321306923,5.542645873 52.321315074,5.542576808 52.321320037,5.54250125 52.321322428,5.542495568 52.321287293,5.542467106 52.321264098,5.542499629 52.32122379,5.542496668 52.321148981,5.542503106 52.321119502,5.54252944 52.321091839,5.542564833 52.321071337,5.542594228 52.321059174,5.542811175 52.321265281)),((5.54305206 52.321204063,5.54298588 52.321187002,5.54298208 52.32118654,5.542978194 52.321186671,5.5429745 52.321187385,5.542863799 52.320980635,5.542979229 52.3209553,5.543086006 52.320934604,5.543202141 52.321155556,5.543184674 52.321172611,5.543181896 52.321175338,5.543179927 52.321178325,5.543178838 52.321181472,5.543176313 52.321185088,5.543172761 52.321188364,5.543168297 52.321191192,5.543163069 52.321193482,5.543134752 52.32120337,5.543115016 52.321205086,5.543074012 52.321206659,5.543066516 52.321206426,5.54305915 52.321205555,5.54305206 52.321204063)),((5.543381344 52.321130136,5.543378032 52.321126968,5.543373799 52.32112425,5.543368789 52.321122064,5.54336321 52.321120508,5.543357238 52.321119617,5.543351106 52.321119445,5.543315236 52.321121137,5.543293848 52.321124464,5.543234478 52.321137601,5.543214044 52.321145214,5.543207606 52.321149878,5.543202141 52.321155556,5.543086006 52.320934604,5.543207232 52.320914258,5.54331038 52.320900029,5.543394098 52.32089946,5.543381344 52.321130136)),((5.543394098 52.32089946,5.543572919 52.320911582,5.54369495 52.320928326,5.543558552 52.321212966,5.543471716 52.321190414,5.543464198 52.321188078,5.543457118 52.321185265,5.54345055 52.32118203,5.543444583 52.321178379,5.543439259 52.321174369,5.543381344 52.321130136,5.543394098 52.32089946)),((5.54369495 52.320928326,5.543807859 52.320945307,5.543821415 52.321116477,5.543846071 52.321137404,5.543782183 52.321270838,5.543721747 52.321268923,5.543668193 52.321259701,5.54361202 52.321227204,5.543558552 52.321212966,5.54369495 52.320928326)),((5.543861211 52.320175515,5.543283446 52.320290423,5.543281969 52.320287549,5.543239611 52.320296053,5.543182471 52.320188366,5.543197275 52.320185471,5.543186645 52.320165532,5.543608793 52.320092354,5.543515477 52.319916139,5.543089743 52.320012061,5.543039395 52.319917038,5.543636795 52.319798151,5.543649493 52.319822041,5.543663563 52.319819236,5.543818451 52.320111669,5.543826513 52.320110131,5.543861211 52.320175515)),((5.54292181 52.319703637,5.542772179 52.319419428,5.543358527 52.319303945,5.543508744 52.319587281,5.54292181 52.319703637)),((5.544098331 52.318853816,5.544116082 52.31888817,5.544074135 52.318896315,5.544056385 52.318861952,5.544098331 52.318853816)),((5.544002316 52.318652278,5.543909 52.318670854,5.543059738 52.317068047,5.542766816 52.317126331,5.542173597 52.316006708,5.542282997 52.315996822,5.5422853 52.316001151,5.542415684 52.316246424,5.542458519 52.316287324,5.542620368 52.316441861,5.54285327 52.316490852,5.542954392 52.316683711,5.543055881 52.316876138,5.543157077 52.317068404,5.54325804 52.317260975,5.543307737 52.317354884,5.54340185 52.317534513,5.543496581 52.317714043,5.543590886 52.317893554,5.543685383 52.318072994,5.543779162 52.318252398,5.543847516 52.318333871,5.543862132 52.318361075,5.543958693 52.318543046,5.544014817 52.318649799,5.544004412 52.318651862,5.543971998 52.318593503,5.543969917 52.318593937,5.544002316 52.318652278)),((5.539654788 52.31732754,5.539602804 52.317350688,5.54000977 52.316495561,5.541528262 52.31609289,5.54196009 52.316025997,5.542173597 52.316006708,5.542766816 52.317126331,5.543059738 52.317068047,5.543909 52.318670854,5.543997339 52.318837548,5.544110573 52.31905125,5.544528715 52.319840314,5.542996403 52.323558939,5.542806141 52.323524902,5.541648151 52.320466276,5.541266758 52.319746709,5.541295328 52.319712788,5.541732494 52.320539927,5.541972791 52.320491654,5.541883963 52.320322138,5.541815428 52.320192679,5.542001819 52.320156215,5.542121125 52.320132421,5.542296649 52.320096384,5.542154822 52.319828171,5.541349768 52.319678079,5.54069501 52.317948392,5.540141178 52.318069518,5.539747606 52.31730949,5.539654788 52.31732754),(5.540130874 52.316651394,5.540328145 52.317025601,5.541042246 52.316883432,5.541044518 52.316887375,5.541215425 52.317201604,5.541917717 52.317058457,5.541747699 52.316743985,5.541729116 52.31670991,5.541928843 52.316670292,5.541944906 52.316701026,5.541986807 52.316692802,5.541970699 52.316661986,5.541932711 52.316589335,5.541758559 52.316623967,5.541619954 52.316363147,5.541284285 52.316430273,5.541175163 52.316224832,5.540692622 52.316352365,5.540721749 52.316407808,5.540668562 52.316447342,5.540703491 52.316513824,5.540919764 52.316470779,5.540930969 52.316492128,5.540130874 52.316651394),(5.542451779 52.320531273,5.542470085 52.320565348,5.542512003 52.32055689,5.542493712 52.320522814,5.542451779 52.320531273),(5.542467106 52.321264098,5.542495568 52.321287293,5.54250125 52.321322428,5.542576808 52.321320037,5.542645873 52.321315074,5.542707271 52.321306923,5.54273861 52.321301129,5.542774011 52.321287143,5.542811175 52.321265281,5.542829973 52.321251325,5.542848955 52.32123532,5.542904638 52.321203511,5.542931668 52.321194839,5.5429745 52.321187385,5.542978194 52.321186671,5.54298208 52.32118654,5.54298588 52.321187002,5.54305206 52.321204063,5.54305915 52.321205555,5.543066516 52.321206426,5.543074012 52.321206659,5.543115016 52.321205086,5.543134752 52.32120337,5.543163069 52.321193482,5.543168297 52.321191192,5.543172761 52.321188364,5.543176313 52.321185088,5.543178838 52.321181472,5.543179927 52.321178325,5.543181896 52.321175338,5.543184674 52.321172611,5.543202141 52.321155556,5.543207606 52.321149878,5.543214044 52.321145214,5.543234478 52.321137601,5.543293848 52.321124464,5.543315236 52.321121137,5.543351106 52.321119445,5.543357238 52.321119617,5.54336321 52.321120508,5.543368789 52.321122064,5.543373799 52.32112425,5.543378032 52.321126968,5.543381344 52.321130136,5.543439259 52.321174369,5.543444583 52.321178379,5.54345055 52.32118203,5.543457118 52.321185265,5.543464198 52.321188078,5.543471716 52.321190414,5.543558552 52.321212966,5.54361202 52.321227204,5.543668193 52.321259701,5.543721747 52.321268923,5.543782183 52.321270838,5.543846071 52.321137404,5.543821415 52.321116477,5.543807859 52.320945307,5.54369495 52.320928326,5.543572919 52.320911582,5.543394098 52.32089946,5.54331038 52.320900029,5.543207232 52.320914258,5.543086006 52.320934604,5.542979229 52.3209553,5.542863799 52.320980635,5.542678595 52.321026105,5.542594228 52.321059174,5.542564833 52.321071337,5.54252944 52.321091839,5.542503106 52.321119502,5.542496668 52.321148981,5.542499629 52.32122379,5.542467106 52.321264098),(5.542508433 52.32136306,5.542566206 52.321709935,5.542595027 52.321692956,5.542610244 52.321690716,5.542642222 52.321687474,5.542657539 52.321680497,5.542685364 52.321672336,5.542704216 52.321669282,5.542705946 52.321669145,5.542744086 52.32166621,5.54275515 52.321663481,5.542780318 52.321654847,5.542798213 52.321650842,5.542808197 52.321649543,5.542844262 52.321644849,5.542902383 52.321630608,5.542910006 52.321629277,5.54292377 52.321626877,5.542952937 52.321625023,5.542983633 52.321611618,5.543011528 52.321606908,5.543049699 52.321600458,5.543067838 52.321594835,5.543131835 52.321575004,5.543138059 52.321576389,5.543169706 52.321583412,5.543202242 52.321592788,5.543207935 52.32159332,5.543240581 52.321596368,5.543280024 52.321605547,5.543283694 52.321606396,5.543310406 52.321611214,5.543348445 52.321625553,5.54335338 52.321627407,5.543382512 52.321624115,5.543421182 52.321626032,5.543425863 52.321626529,5.543444967 52.321628544,5.543455517 52.321634012,5.543490524 52.321645389,5.543494778 52.321645501,5.543532536 52.321646538,5.543559792 52.321656119,5.543574241 52.321660504,5.543595713 52.321664538,5.543707171 52.321427799,5.543637442 52.321415237,5.543606856 52.321409768,5.543576021 52.321404263,5.543534618 52.321396876,5.54349392 52.321389614,5.543462938 52.321384083,5.543432102 52.321378578,5.543390979 52.321371236,5.543349576 52.32136384,5.543318741 52.321358335,5.543287627 52.321352786,5.543247354 52.321345595,5.543204543 52.321337949,5.543172988 52.321332319,5.543167107 52.321344838,5.542952369 52.321350783,5.542846408 52.321353709,5.542740345 52.321356644,5.542634442 52.321359578,5.542508433 52.32136306),(5.542575778 52.321766913,5.54263077 52.322094288,5.542648247 52.322088073,5.542677326 52.322081869,5.542691734 52.322075002,5.542705956 52.322069087,5.54273704 52.322061874,5.542771643 52.322058404,5.542810774 52.322053517,5.542874153 52.322041085,5.542907673 52.322038371,5.54294403 52.322024725,5.542962307 52.322020845,5.542975722 52.322019273,5.543016745 52.322014446,5.543030242 52.322011031,5.543079451 52.321998572,5.543090491 52.321997093,5.543094422 52.321997141,5.543127147 52.321997592,5.54316056 52.322001979,5.543168797 52.322004359,5.543197692 52.322012715,5.543228352 52.322018346,5.543239941 52.322018825,5.543264689 52.322019844,5.543313866 52.322027203,5.543334088 52.322030223,5.543383971 52.322042461,5.543417435 52.322044547,5.543529062 52.321809516,5.543456545 52.321796634,5.543425944 52.321791201,5.543394947 52.321785696,5.543354234 52.32177847,5.543313243 52.321771181,5.543282392 52.321765704,5.543251263 52.321760172,5.54321055 52.321752946,5.543167724 52.321745336,5.543136169 52.321739734,5.543130273 52.321752162,5.542915254 52.321757883,5.542809218 52.321760701,5.542703138 52.321763519,5.542575778 52.321766913),(5.542644294 52.322178009,5.542702137 52.322460558,5.542716805 52.322477535,5.542731723 52.322465211,5.542738591 52.322462137,5.542768095 52.322455681,5.542803514 52.322442315,5.542821432 52.322440512,5.542834682 52.32244213,5.542840581 52.32244285,5.542871053 52.322440734,5.542906846 52.322425165,5.542926752 52.322425633,5.54293789 52.3224272,5.542942938 52.322427913,5.542979194 52.322422769,5.542995626 52.322415683,5.54300762 52.322410508,5.543051225 52.322397428,5.543059615 52.322397498,5.543092883 52.322397759,5.543126928 52.32240255,5.543133918 52.322404697,5.543163769 52.32241387,5.543205142 52.322416566,5.543238497 52.322420935,5.543332001 52.322187195,5.543244513 52.322171789,5.543173038 52.322159202,5.543100579 52.322146445,5.543092791 52.322163065,5.542879652 52.322170167,5.542773706 52.322173695,5.542644294 52.322178009),(5.542772179 52.319419428,5.54292181 52.319703637,5.543508744 52.319587281,5.543358527 52.319303945,5.542772179 52.319419428),(5.542790179 52.322633797,5.542875253 52.323005836,5.542882761 52.323026229,5.542898409 52.323008709,5.542989288 52.322832512,5.543046664 52.322822936,5.543142461 52.322619213,5.542962467 52.322588074,5.542921765 52.322625948,5.542790179 52.322633797),(5.543039395 52.319917038,5.543089743 52.320012061,5.543515477 52.319916139,5.543608793 52.320092354,5.543186645 52.320165532,5.543197275 52.320185471,5.543182471 52.320188366,5.543239611 52.320296053,5.543281969 52.320287549,5.543283446 52.320290423,5.543861211 52.320175515,5.543826513 52.320110131,5.543818451 52.320111669,5.543663563 52.319819236,5.543649493 52.319822041,5.543636795 52.319798151,5.543039395 52.319917038)),((5.546389867 52.318233703,5.546387771 52.31823412,5.546362375 52.318182637,5.546323757 52.318104334,5.546325867 52.318103945,5.546334909 52.318122294,5.546364471 52.318182211,5.546389867 52.318233703)),((5.543997339 52.318837548,5.543909 52.318670854,5.544002316 52.318652278,5.544034243 52.318709766,5.544036324 52.318709332,5.544004412 52.318651862,5.544014817 52.318649799,5.54492034 52.318469605,5.545805982 52.318293367,5.545931641 52.318268356,5.546133214 52.318648749,5.545121905 52.318849999,5.544110573 52.31905125,5.543997339 52.318837548),(5.544041529 52.31870058,5.544101478 52.318814644,5.544185668 52.318977523,5.544309249 52.318952903,5.544437139 52.318927424,5.544565043 52.318901945,5.544692947 52.318876465,5.54482085 52.318850985,5.544948754 52.318825505,5.545076657 52.318800025,5.545204546 52.318774545,5.545332449 52.318749056,5.545460352 52.318723575,5.545588255 52.318698095,5.545716158 52.318672614,5.54584406 52.318647133,5.545968856 52.318622267,5.54593141 52.31855189,5.545880523 52.318455233,5.545895165 52.31845232,5.545837768 52.318343781,5.545823112 52.318346694,5.545699915 52.318371162,5.545571983 52.31839658,5.545444052 52.318421989,5.545316105 52.318447407,5.545188174 52.318472815,5.545060242 52.318498232,5.544932309 52.318523641,5.544804362 52.318549058,5.54467643 52.318574465,5.544548497 52.318599882,5.54442055 52.318625299,5.544292617 52.318650706,5.544164684 52.318676123,5.544041529 52.31870058),(5.544056385 52.318861952,5.544074135 52.318896315,5.544116082 52.31888817,5.544098331 52.318853816,5.544056385 52.318861952)),((5.544692944 52.321843939,5.544669548 52.321892953,5.544646137 52.321942003,5.544622565 52.321991386,5.544611195 52.322015182,5.54420626 52.321942508,5.544315469 52.321713285,5.544720461 52.321786283,5.544716443 52.321794728,5.544692944 52.321843939)),((5.544771971 52.321678389,5.544739941 52.321745489,5.544720461 52.321786283,5.544315469 52.321713285,5.544369235 52.321600445,5.544520742 52.321627279,5.544646902 52.321649625,5.544775044 52.321672319,5.544771971 52.321678389)),((5.545126123 52.320935356,5.54493628 52.321333628,5.544530824 52.321260991,5.544720405 52.320862612,5.544872982 52.320889974,5.544915324 52.320897557,5.54499829 52.320912438,5.545126123 52.320935356)),((5.545484089 52.319801443,5.545366427 52.319824825,5.545236615 52.319850613,5.545107038 52.319876365,5.544976859 52.319902235,5.544847032 52.319928032,5.544705392 52.319956172,5.544372573 52.319327659,5.54453794 52.319294697,5.544559001 52.319290507,5.544639038 52.319274556,5.544761183 52.319250207,5.544883753 52.319225777,5.544963644 52.319209852,5.544984837 52.319205626,5.545149792 52.319172754,5.54515319 52.31917949,5.545177812 52.319174514,5.545504583 52.319790451,5.545480693 52.319795246,5.545484089 52.319801443)),((5.544429392 52.31904662,5.544509444 52.319030659,5.54452784 52.319064967,5.544570513 52.319145575,5.544639038 52.319274556,5.544559001 52.319290507,5.544447935 52.319080892,5.544429392 52.31904662)),((5.544509444 52.319030659,5.54463175 52.319006274,5.544660304 52.319059452,5.544709604 52.31915205,5.544761183 52.319250207,5.544639038 52.319274556,5.544570513 52.319145575,5.54452784 52.319064967,5.544509444 52.319030659)),((5.544528715 52.319840314,5.544110573 52.31905125,5.545121905 52.318849999,5.545769696 52.320072398,5.544758338 52.320273654,5.544528715 52.319840314),(5.544349487 52.319062544,5.54424279 52.319083816,5.544355003 52.319294653,5.544372573 52.319327659,5.544705392 52.319956172,5.544828687 52.320188699,5.544970342 52.320160495,5.545100477 52.320134581,5.545229924 52.320108802,5.54535956 52.320082987,5.545489299 52.320057153,5.545606653 52.32003379,5.545484089 52.319801443,5.545480693 52.319795246,5.545504583 52.319790451,5.545177812 52.319174514,5.54515319 52.31917949,5.545149792 52.319172754,5.545132177 52.319139568,5.545020298 52.318928822,5.544914027 52.318950004,5.544834122 52.318965938,5.544754202 52.318981872,5.54463175 52.319006274,5.544509444 52.319030659,5.544429392 52.31904662,5.544349487 52.319062544)),((5.544548497 52.318599882,5.54467643 52.318574465,5.54475903 52.318730903,5.544803554 52.31881663,5.54482085 52.318850985,5.544692947 52.318876465,5.544656308 52.318805934,5.544608623 52.318713622,5.544548497 52.318599882)),((5.54442055 52.318625299,5.544548497 52.318599882,5.544608623 52.318713622,5.544656308 52.318805934,5.544692947 52.318876465,5.544565043 52.318901945,5.544547614 52.318867617,5.544503149 52.318781871,5.54442055 52.318625299)),((5.544394684 52.321306856,5.544764619 52.320530387,5.545785364 52.32071299,5.545415445 52.321489463,5.544394684 52.321306856),(5.544720405 52.320862612,5.544530824 52.321260991,5.54493628 52.321333628,5.54534014 52.321406491,5.545530637 52.321007687,5.5456487 52.320759128,5.545540064 52.32073968,5.545454647 52.32072439,5.545369656 52.32070917,5.545244407 52.320686743,5.545119173 52.320664324,5.545033903 52.320649051,5.544948765 52.320633814,5.544839 52.320614161,5.544720405 52.320862612)),((5.544520742 52.321627279,5.544369235 52.321600445,5.54446877 52.321390109,5.544620585 52.321417212,5.544603899 52.321451891,5.544566788 52.321529557,5.544520742 52.321627279)),((5.544646902 52.321649625,5.544520742 52.321627279,5.544566788 52.321529557,5.544603899 52.321451891,5.544620585 52.321417212,5.544747318 52.321439836,5.544646902 52.321649625)),((5.543757537 52.322644113,5.544394684 52.321306856,5.545415445 52.321489463,5.544778327 52.322826725,5.543757537 52.322644113),(5.543993635 52.322388784,5.543893681 52.322598006,5.544045779 52.322625252,5.544172412 52.322647931,5.544299046 52.322670609,5.54442568 52.322693297,5.544552299 52.322715975,5.544703561 52.322743069,5.544806744 52.322527326,5.544838483 52.322460703,5.544861923 52.322411501,5.544885392 52.322362235,5.544908817 52.322313059,5.544932286 52.322263775,5.544968217 52.322188366,5.545004046 52.322113127,5.545027529 52.322063844,5.545050983 52.322014605,5.545074423 52.321965411,5.545097804 52.321916316,5.545121229 52.321867149,5.545144697 52.321817875,5.545176522 52.321751063,5.545278775 52.321534719,5.545127531 52.321507715,5.545000798 52.321485092,5.544874065 52.321462468,5.544747318 52.321439836,5.544620585 52.321417212,5.54446877 52.321390109,5.544369235 52.321600445,5.544315469 52.321713285,5.54420626 52.321942508,5.544072358 52.32222355,5.543993635 52.322388784)),((5.544864506 52.318362717,5.545015125 52.318332731,5.545165744 52.318302744,5.545316363 52.318272758,5.545466981 52.318242771,5.545617599 52.318212784,5.545770298 52.318182381,5.545805982 52.318293367,5.54492034 52.318469605,5.544014817 52.318649799,5.543958693 52.318543046,5.544111262 52.318512672,5.544262014 52.318482651,5.544412634 52.318452665,5.544563253 52.31842268,5.544713873 52.318392694,5.544864506 52.318362717)),((5.545659274 52.317973117,5.545506679 52.318003493,5.545356061 52.318033489,5.545205429 52.318063485,5.545054796 52.31809348,5.544904164 52.318123475,5.544753531 52.318153461,5.544602766 52.318183483,5.544452132 52.318213478,5.544301499 52.318243472,5.544150865 52.318273467,5.544000231 52.318303461,5.543847516 52.318333871,5.543779162 52.318252398,5.544210045 52.3181663,5.544637264 52.318081167,5.544778215 52.318054735,5.545213345 52.317967791,5.545648591 52.317881152,5.545659274 52.317973117)),((5.545823112 52.318346694,5.545837768 52.318343781,5.545895165 52.31845232,5.545880523 52.318455233,5.545823112 52.318346694)),((5.545100477 52.320134581,5.544976859 52.319902235,5.545107038 52.319876365,5.545229924 52.320108802,5.545100477 52.320134581)),((5.545229924 52.320108802,5.545107038 52.319876365,5.545236615 52.319850613,5.54535956 52.320082987,5.545229924 52.320108802)),((5.545489299 52.320057153,5.54535956 52.320082987,5.545236615 52.319850613,5.545366427 52.319824825,5.545384545 52.319859025,5.545427236 52.319940019,5.545489299 52.320057153)),((5.545427236 52.319940019,5.545384545 52.319859025,5.545366427 52.319824825,5.545484089 52.319801443,5.545606653 52.32003379,5.545489299 52.320057153,5.545427236 52.319940019)),((5.545858663 52.319727395,5.545876441 52.319760877,5.54591975 52.319842148,5.545981858 52.319959255,5.545864607 52.319982574,5.54574131 52.319750947,5.545858663 52.319727395)),((5.545858663 52.319727395,5.545988077 52.319701426,5.54611167 52.319933439,5.545981858 52.319959255,5.54591975 52.319842148,5.545876441 52.319760877,5.545858663 52.319727395)),((5.544002316 52.318652278,5.543969917 52.318593937,5.543971998 52.318593503,5.544004412 52.318651862,5.544036324 52.318709332,5.544034243 52.318709766,5.544002316 52.318652278)),((5.545581169 52.321382099,5.545750216 52.321412421,5.54593683 52.321445821,5.545986349 52.321454526,5.54595649 52.321517031,5.545551471 52.32144463,5.545581169 52.321382099)),((5.545603413 52.321335252,5.545772387 52.321365827,5.546008637 52.321407859,5.545986349 52.321454526,5.54593683 52.321445821,5.545750216 52.321412421,5.545581169 52.321382099,5.545603413 52.321335252)),((5.545625425 52.321288901,5.545794573 52.321319232,5.545981878 52.321352954,5.546030955 52.321361147,5.546008637 52.321407859,5.545772387 52.321365827,5.545603413 52.321335252,5.545625425 52.321288901)),((5.545647552 52.321242306,5.545816745 52.321272646,5.546053127 52.321314714,5.546030955 52.321361147,5.545981878 52.321352954,5.545794573 52.321319232,5.545625425 52.321288901,5.545647552 52.321242306)),((5.54566968 52.321195702,5.545838931 52.321226051,5.546025781 52.321259702,5.5460754 52.321267975,5.546064366 52.321291196,5.546053127 52.321314714,5.545816745 52.321272646,5.545647552 52.321242306,5.54566968 52.321195702)),((5.545691807 52.321149107,5.545861103 52.321179456,5.546097455 52.321221516,5.5460754 52.321267975,5.546025781 52.321259702,5.545838931 52.321226051,5.54566968 52.321195702,5.545691807 52.321149107)),((5.54571395 52.321102504,5.545883289 52.32113287,5.546070505 52.321166646,5.54611964 52.32117475,5.546097455 52.321221516,5.545861103 52.321179456,5.545691807 52.321149107,5.54571395 52.321102504)),((5.545315872 52.317308885,5.545316448 52.317309972,5.545343751 52.317304408,5.545445251 52.317496509,5.545009331 52.317582691,5.544941411 52.317454465,5.544907466 52.317390392,5.545315872 52.317308885)),((5.545445251 52.317496509,5.545510532 52.317620371,5.545075037 52.317706723,5.545009331 52.317582691,5.545445251 52.317496509)),((5.545075037 52.317706723,5.545510532 52.317620371,5.545575429 52.317743532,5.545308258 52.317797465,5.545140743 52.317830755,5.545075037 52.317706723)),((5.545316363 52.318272758,5.545289725 52.318222328,5.545227991 52.318106146,5.545205429 52.318063485,5.545356061 52.318033489,5.545384943 52.318088122,5.545416835 52.318147884,5.545466981 52.318242771,5.545316363 52.318272758)),((5.545466981 52.318242771,5.545416835 52.318147884,5.545384943 52.318088122,5.545356061 52.318033489,5.545506679 52.318003493,5.545590946 52.318162354,5.545617599 52.318212784,5.545466981 52.318242771)),((5.545188174 52.318472815,5.545316105 52.318447407,5.545375894 52.318560778,5.54542386 52.318653026,5.545460352 52.318723575,5.545332449 52.318749056,5.545315167 52.318714701,5.545270393 52.318629037,5.545188174 52.318472815)),((5.545316105 52.318447407,5.545444052 52.318421989,5.545526418 52.31857803,5.545571105 52.318663713,5.545588255 52.318698095,5.545460352 52.318723575,5.54542386 52.318653026,5.545375894 52.318560778,5.545316105 52.318447407)),((5.545390405 52.319088532,5.545279127 52.318877875,5.545375344 52.318858738,5.545394473 52.318892838,5.545436356 52.318973536,5.545486798 52.319069331,5.545462 52.319074299,5.545390405 52.319088532)),((5.545390405 52.319088532,5.545462 52.319074299,5.545486798 52.319069331,5.545545452 52.319057596,5.545563186 52.319090943,5.545408036 52.319121898,5.545390405 52.319088532)),((5.545455249 52.318842839,5.54551629 52.318957611,5.545584232 52.319086745,5.545563186 52.319090943,5.545545452 52.319057596,5.545486798 52.319069331,5.545436356 52.318973536,5.545394473 52.318892838,5.545375344 52.318858738,5.545455249 52.318842839)),((5.545253207 52.320958078,5.545313331 52.320831676,5.545352057 52.320750627,5.545349943 52.320750252,5.545369656 52.32070917,5.545454647 52.32072439,5.545435008 52.320765508,5.545340529 52.320964468,5.545336203 52.320972922,5.545253207 52.320958078)),((5.545336203 52.320972922,5.545340529 52.320964468,5.545435008 52.320765508,5.545454647 52.32072439,5.545540064 52.32073968,5.545520484 52.320780852,5.545518371 52.320780468,5.545438506 52.320948285,5.545397544 52.32094097,5.545382768 52.320972015,5.545378471 52.320980478,5.545336203 52.320972922)),((5.545378471 52.320980478,5.545530637 52.321007687,5.54534014 52.321406491,5.54493628 52.321333628,5.545126123 52.320935356,5.545253207 52.320958078,5.545336203 52.320972922,5.545378471 52.320980478))) diff --git a/rust/geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt b/rust/geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt new file mode 100644 index 00000000..79409ad4 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt @@ -0,0 +1 @@ +MULTIPOLYGON(((165810.88331013816 481105.4135319523,165805.03924028226 481087.31955796864,165827.0243031839 481080.140574016,165835.492344386 481077.4156058137,165841.32134709298 481095.4945620494,165810.88331013816 481105.4135319523)),((165841.32134709298 481095.4945620494,165847.1513999863 481113.57252679195,165816.684352003 481123.520548419,165810.88331013816 481105.4135319523,165841.32134709298 481095.4945620494)),((165816.684352003 481123.520548419,165847.1513999863 481113.57252679195,165854.20752218604 481135.45653249667,165823.73143364282 481145.3844633131,165816.684352003 481123.520548419)),((165833.25349588718 481161.17546683183,165834.20445387694 481160.8674610125,165842.05346714336 481158.3225058388,165847.36754182985 481174.9205297333,165851.94157576005 481189.0094869923,165843.1235316795 481191.85549232556,165837.11053207144 481173.1655096956,165833.25349588718 481161.17546683183)),((165837.1465972164 481232.7994343237,165832.3686351562 481234.366448736,165830.64859399022 481234.9194398026,165827.27456949902 481224.218452369,165823.10456946667 481211.45945178793,165829.60356585556 481209.3654743581,165837.1465972164 481232.7994343237)),((165837.1465972164 481232.7994343237,165838.33361808676 481236.48543613846,165827.8525865298 481239.8724551546,165826.6675734102 481236.20047952776,165830.64859399022 481234.9194398026,165832.3686351562 481234.366448736,165837.1465972164 481232.7994343237)),((165851.94157576005 481189.0094869923,165847.36754182985 481174.9205297333,165842.05346714336 481158.3225058388,165850.60753492877 481155.55046525295,165856.1815873062 481173.1014900736,165857.05258033366 481175.793547097,165859.00158758258 481181.6654534509,165860.50362192755 481186.2464934498,165851.94157576005 481189.0094869923)),((165854.44664577578 481227.21249125793,165846.93358080686 481203.7654415951,165854.2025963923 481201.4225106706,165855.32264947437 481205.11148452404,165858.10862015767 481213.5774607407,165861.72971818765 481224.8815075602,165859.98968400923 481225.4384499416,165854.44664577578 481227.21249125793)),((165838.33361808676 481236.48543613846,165838.56360882698 481237.1954718372,165840.09366832077 481236.7153893235,165848.1937031559 481261.8054207434,165793.46357298896 481279.5453289056,165785.32353432756 481254.3953284019,165786.98351243007 481253.8653332394,165786.7535148305 481253.1554111886,165797.33956570356 481249.73437673337,165798.77555773532 481249.27043149626,165804.22552325492 481247.50836312154,165812.5765474452 481244.8093578957,165820.9275807907 481242.11036678863,165826.3776279051 481240.34943564463,165827.8525865298 481239.8724551546,165838.33361808676 481236.48543613846)),((165866.8946775674 481227.2614635345,165855.62366086923 481230.8854573256,165854.44664577578 481227.21249125793,165859.98968400923 481225.4384499416,165861.72971818765 481224.8815075602,165865.69470760453 481223.61247728474,165866.63470314653 481226.45244678966,165866.8946775674 481227.2614635345)),((165834.9897973112 481314.85237311217,165843.37386738468 481340.70629521617,165834.53086462567 481343.55537642253,165826.1607530206 481317.7223063045,165834.9897973112 481314.85237311217)),((165843.37386738468 481340.70629521617,165834.9897973112 481314.85237311217,165843.82383160238 481311.9813540052,165852.23086611537 481337.8533663467,165843.37386738468 481340.70629521617)),((165826.1607530206 481317.7223063045,165817.33076423616 481320.5923644494,165809.32371226288 481323.19531513343,165809.09371874726 481322.4553506549,165807.4537167706 481322.99528463103,165799.3436366324 481297.8053805152,165854.04375129592 481280.1453590037,165862.18384853032 481305.2454062637,165860.56385632814 481305.7653391327,165860.79386263408 481306.4653622439,165852.74684928128 481309.0813951317,165843.82383160238 481311.9813540052,165834.9897973112 481314.85237311217,165826.1607530206 481317.7223063045)),((165856.84086455274 481321.967319789,165861.07293261477 481335.00531610136,165852.23086611537 481337.8533663467,165843.82383160238 481311.9813540052,165852.74684928128 481309.0813951317,165853.9738187968 481312.8804221144,165856.84086455274 481321.967319789)),((165827.9150598663 481472.76617049647,165832.06707809644 481458.72118103574,165834.7140592224 481449.70024741895,165834.85802961228 481449.74317757157,165836.22904270093 481445.12527897663,165844.7631001899 481447.63422229275,165839.82106861868 481464.42724634655,165836.6310674592 481475.3272369474,165827.9150598663 481472.76617049647)),((165845.2901032648 481477.87217160105,165836.6310674592 481475.3272369474,165839.82106861868 481464.42724634655,165844.7631001899 481447.63422229275,165853.2880852939 481450.14126894844,165851.9171189479 481454.76227839023,165852.06109124355 481454.8042076756,165849.44014112678 481463.8181797485,165845.2901032648 481477.87217160105)),((165859.0901429811 481451.847246296,165857.7221495504 481456.47827446036,165855.10815529912 481465.4872519917,165852.2621572328 481475.0532652427,165850.94713900573 481479.5352067781,165845.2901032648 481477.87217160105,165849.44014112678 481463.8181797485,165852.06109124355 481454.8042076756,165851.9171189479 481454.76227839023,165853.2880852939 481450.14126894844,165859.0901429811 481451.847246296)),((165859.0901429811 481451.847246296,165864.89212849856 481453.5532303068,165863.52718054497 481458.19227461156,165863.38416540896 481458.1492344596,165860.74618647926 481467.1472523947,165857.91919632955 481476.7151957553,165855.13816786418 481475.8981865053,165853.82416749134 481480.38124216447,165850.94713900573 481479.5352067781,165852.2621572328 481475.0532652427,165855.10815529912 481465.4872519917,165857.7221495504 481456.47827446036,165859.0901429811 481451.847246296)),((165845.2901032648 481477.87217160105,165850.94713900573 481479.5352067781,165853.82416749134 481480.38124216447,165864.26622637178 481483.4501794296,165851.18822609202 481527.8531666835,165823.56413966522 481519.7282063275,165825.61514416043 481512.7781425044,165827.14610558908 481507.58913941676,165828.6791265633 481502.39513447497,165830.20212846796 481497.23215074255,165830.97413562768 481494.6171360007,165831.73209434262 481492.0351359933,165833.24713194987 481486.86924293207,165834.77111099343 481481.66921192576,165836.6310674592 481475.3272369474,165845.2901032648 481477.87217160105)),((165730.21619993297 481708.4439375155,165742.92118772503 481665.2739500047,165786.68302267324 481516.58014388575,165856.23329322916 481537.0501121804,165799.76645236128 481728.91290228424,165730.21619993297 481708.4439375155),(165746.97817681843 481678.1249967319,165739.51720045673 481703.3929706164,165748.98228750372 481706.1839397019,165754.16228786216 481707.71197579463,165759.34330791573 481709.2399082823,165764.5213269664 481710.7669495632,165769.70131799649 481712.29489069746,165774.88035331282 481713.8219450789,165780.06040613883 481715.3498972343,165785.24938222612 481716.87998835195,165793.0064036057 481719.1679565437,165800.49241780592 481693.8509380728,165800.76337957833 481692.93493719323,165802.38537803394 481693.4000103697,165830.76330596063 481597.13106763444,165829.1522768488 481596.65610686253,165829.66733507172 481594.80413330207,165836.8522983434 481570.4530650798,165783.23205589326 481554.6271463925,165776.42312722164 481578.01311732817,165775.83611402218 481579.7920612626,165773.39511176312 481588.10706181667,165771.791149101 481593.5750843673,165770.18610154392 481599.0419924757,165768.58214810936 481604.5090147985,165766.97710735357 481609.97603531193,165765.37316096094 481615.44305877335,165763.76812530853 481620.9109705391,165761.39818000598 481628.9870259021,165759.00317022737 481637.1490350176,165757.3981507424 481642.6159476773,165755.7941550114 481648.0839757768,165754.18914232866 481653.55100084655,165752.58515606486 481659.0179174441,165750.98021860325 481664.4849438074,165749.3761709623 481669.95197266684,165746.97817681843 481678.1249967319)),((165764.62994572392 481000.72964452335,165770.60704551917 481019.56454185536,165757.8109932328 481023.6556331221,165749.7149720541 481026.265607322,165742.755978062 481028.52258053963,165738.16194859543 481014.2605593478,165736.62288285774 481009.4805378496,165764.5559616496 481000.51162832347,165764.62994572392 481000.72964452335)),((165780.9100788994 481051.4195472039,165753.04303926002 481060.4275618781,165750.7440165607 481053.2945383054,165746.13098868445 481038.97950592457,165773.96205107903 481030.0095373427,165780.9100788994 481051.4195472039)),((165764.39215046004 481095.6485469322,165768.84218902295 481109.45854900277,165752.09916741413 481114.8585235,165739.06214865297 481119.03948478634,165734.55407641333 481105.2304959504,165745.858077976 481101.5475506689,165752.5161283254 481099.4205502416,165764.39215046004 481095.6485469322)),((165739.06214865297 481119.03948478634,165752.09916741413 481114.8585235,165768.84218902295 481109.45854900277,165773.7592437802 481124.71645183617,165744.0691597118 481134.3254810618,165739.06214865297 481119.03948478634)),((165760.15524713008 481165.29146753036,165754.1621837003 481146.74349274713,165752.64022651344 481141.99243090645,165762.91820267861 481138.67746517947,165764.86823752327 481144.76151637506,165767.0322865295 481151.4134816525,165770.4322916698 481161.9774055011,165760.15524713008 481165.29146753036)),((165770.4322916698 481161.9774055011,165767.0322865295 481151.4134816525,165764.86823752327 481144.76151637506,165762.91820267861 481138.67746517947,165773.19626086665 481135.36252099246,165774.72427119376 481140.1124897321,165778.90532097794 481153.0484925419,165780.70934980048 481158.6634761236,165770.4322916698 481161.9774055011)),((165754.46226726277 481186.5204745377,165763.1913428137 481183.7123919793,165767.25433634454 481196.3463805137,165770.48439554079 481206.6294380334,165772.96339762883 481214.47740331833,165764.23735355845 481217.29337498534,165763.0663964398 481213.4674561492,165760.05733901297 481203.9214529135,165754.46226726277 481186.5204745377)),((165763.1913428137 481183.7123919793,165771.9203620799 481180.90343458427,165777.4883933551 481198.2974753085,165780.52041607565 481207.835417028,165781.69040843003 481211.6604477769,165772.96339762883 481214.47740331833,165770.48439554079 481206.6294380334,165767.25433634454 481196.3463805137,165763.1913428137 481183.7123919793)),((165767.94046532223 481255.0803727385,165762.39442858525 481256.88432944176,165760.70244359746 481257.4293949917,165758.18439427088 481249.7603739864,165757.21740785558 481246.7643741759,165754.35638811823 481237.780357234,165753.1123999269 481233.956395535,165760.36338960959 481231.6154014575,165767.94046532223 481255.0803727385)),((165767.94046532223 481255.0803727385,165769.13344454192 481258.7753833276,165757.8784395208 481262.4083133824,165756.68945809107 481258.72132523236,165760.70244359746 481257.4293949917,165762.39442858525 481256.88432944176,165767.94046532223 481255.0803727385)),((165752.72879604952 481450.6481872374,165753.01780734822 481449.7111945327,165754.03076075122 481446.2682207337,165756.9037671212 481436.61820636754,165759.5297725321 481427.5911792049,165760.87376458934 481423.0161490942,165766.68378131933 481424.7281545481,165765.33678659622 481429.30217518256,165765.1928150116 481429.2592470541,165762.5888224881 481438.28620799293,165758.38179191307 481452.3162255302,165752.72879604952 481450.6481872374)),((165758.38179191307 481452.3162255302,165762.5888224881 481438.28620799293,165765.1928150116 481429.2592470541,165765.33678659622 481429.30217518256,165766.68378131933 481424.7281545481,165775.2168089457 481427.24120325147,165772.145797014 481437.6892057502,165770.32284964234 481444.0061394648,165767.09185403027 481454.8851670778,165758.38179191307 481452.3162255302)),((165767.09185403027 481454.8851670778,165770.32284964234 481444.0061394648,165772.145797014 481437.6892057502,165775.2168089457 481427.24120325147,165783.75084868493 481429.75515904836,165782.39683007967 481434.32315151556,165782.5408714928 481434.36519018246,165779.88083834152 481443.37722162984,165775.75088814163 481457.4322048577,165767.09185403027 481454.8851670778)),((165759.97295779423 481542.59013106796,165751.349929424 481540.0420859427,165754.23096464516 481530.2160663096,165755.90595991243 481524.44010320725,165758.41391373967 481516.0321128274,165767.04893821903 481518.56806844496,165763.34993966614 481531.07709912147,165760.82300474338 481539.71614134696,165759.97295779423 481542.59013106796)),((165766.5320427976 481558.5590362891,165738.95195147427 481550.44109771407,165739.22793669422 481549.5020729691,165740.56592901776 481544.9660771371,165743.769969775 481545.91612452094,165768.14401146414 481553.08012593735,165766.5320427976 481558.5590362891)),((165770.3300088621 481545.6511190906,165768.14401146414 481553.08012593735,165743.769969775 481545.91612452094,165740.56592901776 481544.9660771371,165742.76593479898 481537.5050447366,165751.349929424 481540.0420859427,165759.97295779423 481542.59013106796,165770.3300088621 481545.6511190906)),((165770.3300088621 481545.6511190906,165759.97295779423 481542.59013106796,165760.82300474338 481539.71614134696,165763.34993966614 481531.07709912147,165767.04893821903 481518.56806844496,165777.35402061223 481521.5951332937,165770.3300088621 481545.6511190906)),((165759.94208684235 481081.8385492149,165764.39215046004 481095.6485469322,165752.5161283254 481099.4205502416,165745.858077976 481101.5475506689,165734.55407641333 481105.2304959504,165730.10002995466 481091.43053018703,165759.94208684235 481081.8385492149)),((165755.3420530924 481067.5615879822,165759.94208684235 481081.8385492149,165730.10002995466 481091.43053018703,165725.50401482623 481077.15149142453,165755.3420530924 481067.5615879822)),((165753.04303926002 481060.4275618781,165755.3420530924 481067.5615879822,165725.50401482623 481077.15149142453,165720.882987899 481062.85448954423,165750.7440165607 481053.2945383054,165753.04303926002 481060.4275618781)),((165746.13098868445 481038.97950592457,165750.7440165607 481053.2945383054,165720.882987899 481062.85448954423,165716.31991080538 481048.61158124864,165746.13098868445 481038.97950592457)),((165760.2829465038 480980.82661333535,165766.48497205196 481000.12763493793,165764.62994572392 481000.72964452335,165764.5559616496 481000.51162832347,165736.62288285774 481009.4805378496,165733.55590598722 480999.96057572326,165730.4898739962 480990.4396163693,165760.2829465038 480980.82661333535)),((165752.64022651344 481141.99243090645,165754.1621837003 481146.74349274713,165760.15524713008 481165.29146753036,165749.87821666626 481168.6054396765,165746.4742134789 481158.04341274337,165744.30618292658 481151.3924491705,165742.36219818195 481145.3064164967,165752.64022651344 481141.99243090645)),((165739.60024764334 481171.918429759,165733.6001518292 481153.37447009963,165732.07517469442 481148.62440939253,165742.36219818195 481145.3064164967,165744.30618292658 481151.3924491705,165746.4742134789 481158.04341274337,165749.87821666626 481168.6054396765,165739.60024764334 481171.918429759)),((165754.46226726277 481186.5204745377,165760.05733901297 481203.9214529135,165763.0663964398 481213.4674561492,165764.23735355845 481217.29337498534,165755.51036490736 481220.10935998964,165749.8103211655 481201.9753728406,165745.73224516274 481189.3294605534,165754.46226726277 481186.5204745377)),((165745.73224516274 481189.3294605534,165749.8103211655 481201.9753728406,165755.51036490736 481220.10935998964,165746.78331805518 481222.92536026856,165745.61234685374 481219.1003356426,165742.59732487198 481209.55544268835,165737.0032581936 481192.1373515939,165745.73224516274 481189.3294605534)),((165757.8784395208 481262.4083133824,165756.43242557545 481262.8753640524,165751.8144077858 481248.50834933895,165747.66039481142 481235.71740314807,165753.1123999269 481233.956395535,165754.35638811823 481237.780357234,165757.21740785558 481246.7643741759,165758.18439427088 481249.7603739864,165760.70244359746 481257.4293949917,165756.68945809107 481258.72132523236,165757.8784395208 481262.4083133824)),((165742.20737085477 481237.47841455427,165747.66039481142 481235.71740314807,165751.8144077858 481248.50834933895,165756.43242557545 481262.8753640524,165750.98140785462 481264.635368777,165746.36439863997 481250.2683613508,165742.20737085477 481237.47841455427)),((165733.85235512824 481240.17530463496,165742.20737085477 481237.47841455427,165746.36439863997 481250.2683613508,165750.98140785462 481264.635368777,165742.61838084552 481267.3353419938,165739.1253645554 481256.40639819385,165735.78637572107 481246.0963088247,165733.85235512824 481240.17530463496)),((165739.44771866192 481446.73115084914,165747.59369677713 481419.1052129124,165755.07273490838 481421.3081755765,165753.72872813584 481425.89221959456,165753.872770279 481425.93414616835,165751.21877611184 481434.9502114409,165748.3617320527 481444.60115392786,165751.15376605676 481445.4211310361,165750.1407438861 481448.8652179072,165749.84376477124 481449.7981879186,165739.44771866192 481446.73115084914)),((165755.07273490838 481421.3081755765,165760.87376458934 481423.0161490942,165759.5297725321 481427.5911792049,165756.9037671212 481436.61820636754,165754.03076075122 481446.2682207337,165753.01780734822 481449.7111945327,165752.72879604952 481450.6481872374,165749.84376477124 481449.7981879186,165750.1407438861 481448.8652179072,165751.15376605676 481445.4211310361,165748.3617320527 481444.60115392786,165751.21877611184 481434.9502114409,165753.872770279 481425.93414616835,165753.72872813584 481425.89221959456,165755.07273490838 481421.3081755765)),((165742.97691753737 481536.8301309427,165734.24586626413 481534.2861086722,165741.1428862153 481510.9591321961,165749.7788806756 481513.49606105307,165746.0828843547 481525.99109169544,165742.97691753737 481536.8301309427)),((165751.349929424 481540.0420859427,165742.76593479898 481537.5050447366,165742.97691753737 481536.8301309427,165746.0828843547 481525.99109169544,165749.7788806756 481513.49606105307,165758.41391373967 481516.0321128274,165755.90595991243 481524.44010320725,165754.23096464516 481530.2160663096,165751.349929424 481540.0420859427)),((165764.92303530494 481564.0260484118,165737.3379160775 481555.91300334374,165738.95195147427 481550.44109771407,165766.5320427976 481558.5590362891,165764.92303530494 481564.0260484118)),((165756.65861975378 481368.6482390871,165746.99361894192 481371.7652784169,165738.64354107963 481345.87521031464,165748.30754891026 481342.7652734014,165749.53056963885 481346.5632645032,165752.44162214728 481355.59022616025,165756.65861975378 481368.6482390871)),((165752.44162214728 481355.59022616025,165749.53056963885 481346.5632645032,165748.30754891026 481342.7652734014,165757.1655748783 481339.9142905514,165765.53763238693 481365.7842990672,165756.65861975378 481368.6482390871,165752.44162214728 481355.59022616025)),((165931.8740897101 481845.97389222414,165926.63909579924 481844.43286302045,165958.18401185697 481745.6750893561,165967.88499884465 481714.8050392654,165978.03495803892 481683.42508322693,165987.85492324663 481650.42518802424,165995.61388665624 481619.89523620025,166004.04382546115 481580.0652253856,166010.46478895945 481545.80430237454,166014.77372129864 481515.08432910295,166017.944697256 481484.37428252696,166020.5436071265 481447.925407236,166022.89455435504 481414.75537924014,166022.04348282522 481375.44443781814,166020.8944038609 481336.42545843904,166017.34331388713 481290.65451334784,166013.00322002955 481257.715565682,166007.23313360344 481221.6245515634,165999.8039932762 481185.89557452104,165992.08393542428 481153.505664375,165982.45284189627 481118.96567873587,165972.17376532574 481084.43462164776,165922.1182438914 480929.20882226096,165975.01141201917 480912.1598730747,166024.8938545033 481067.4346662247,166037.18297547125 481107.11472961167,166046.7030684515 481141.6757140136,166054.33414940542 481174.0956631055,166061.37422548773 481209.90462836804,166067.3343192893 481245.95563193766,166073.33447668666 481291.5845675772,166076.77359289434 481337.3455119879,166077.9346373195 481376.3654226637,166078.08471020023 481415.6754693985,166076.93381866926 481448.8553972129,166074.02386650007 481485.3043251416,166069.32390902136 481528.5953227781,166064.62495930243 481559.2152395635,166058.68402618731 481593.5952206984,166049.5850707105 481633.26420126244,166041.42513576322 481663.6941479141,166031.79418719656 481696.74509726476,166022.14521790974 481728.24511586566,166012.34424551582 481759.0840178028,165960.17927882302 481921.8258100093,165950.38024911226 481918.9487982852,165970.180244166 481857.2469406328,165931.8740897101 481845.97389222414)),((165891.6666154965 481136.02359245205,165834.14510546066 480957.56464399444,165903.14921352794 480935.321792724,165960.67176963005 481113.7816573767,165891.6666154965 481136.02359245205)),((165811.18078064197 481358.96532213397,165767.3103702741 481222.86038524355,165836.31353847278 481200.6194925535,165880.18498152556 481336.7233748839,165863.38789269142 481342.1373177792,165811.18078064197 481358.96532213397),(165784.58846067498 481223.87043900834,165778.02345562194 481225.98536036786,165785.55950023342 481249.4403665603,165786.7535148305 481253.1554111886,165786.98351243007 481253.8653332394,165785.32353432756 481254.3953284019,165793.46357298896 481279.5453289056,165848.1937031559 481261.8054207434,165840.09366832077 481236.7153893235,165838.56360882698 481237.1954718372,165838.33361808676 481236.48543613846,165837.1465972164 481232.7994343237,165829.60356585556 481209.3654743581,165823.10456946667 481211.45945178793,165817.6525229432 481213.2164879185,165812.20055093075 481214.97241758025,165803.84649189602 481217.6644071663,165795.49251017885 481220.3564110396,165790.040483603 481222.11336638086,165784.58846067498 481223.87043900834),(165799.3436366324 481297.8053805152,165807.4537167706 481322.99528463103,165809.09371874726 481322.4553506549,165809.32371226288 481323.19531513343,165817.67381487784 481348.9853649841,165825.6738182269 481346.4083368862,165834.53086462567 481343.55537642253,165843.37386738468 481340.70629521617,165852.23086611537 481337.8533663467,165861.07293261477 481335.00531610136,165869.11391915628 481332.4153192787,165860.79386263408 481306.4653622439,165860.56385632814 481305.7653391327,165862.18384853032 481305.2454062637,165854.04375129592 481280.1453590037,165799.3436366324 481297.8053805152)),((165890.8257503115 481219.568445799,165896.25174365405 481217.8234493365,165897.75379771486 481217.34054124047,165908.87381045165 481213.76548845315,165931.37404637353 481283.6954208855,165921.7149745366 481286.811464343,165912.9189682873 481289.6493829797,165904.0799201045 481292.50046260294,165895.26694583046 481295.34338203387,165886.31888588314 481298.2294122301,165878.3339113341 481300.80537398526,165878.1138858439 481300.1253995869,165876.44389041603 481300.6554533546,165854.33365392467 481232.05545480386,165855.82369299646 481231.57540042157,165855.62366086923 481230.8854573256,165866.8946775674 481227.2614635345,165868.29369451493 481226.81247772946,165873.70971056758 481225.07043869596,165882.26772553523 481222.31949046534,165890.8257503115 481219.568445799)),((165935.02397284005 481245.53548755957,165931.78590693325 481235.4624807737,165937.3279522924 481233.68351704546,165944.21996750988 481231.4705071231,165946.2929498066 481237.89247930876,165947.4609974654 481241.54953687976,165935.02397284005 481245.53548755957)),((165931.78590693325 481235.4624807737,165928.51389815565 481225.28548057156,165940.92392673437 481221.25650576956,165942.14792768657 481225.0515421137,165944.21996750988 481231.4705071231,165937.3279522924 481233.68351704546,165931.78590693325 481235.4624807737)),((165940.92392673437 481221.25650576956,165940.38089696498 481219.5725450003,165950.59394445625 481216.2815246088,165956.30395514896 481214.44053561985,165960.13897532108 481226.33549698483,165951.09199357682 481229.2654734652,165944.21996750988 481231.4705071231,165942.14792768657 481225.0515421137,165940.92392673437 481221.25650576956)),((165936.54584356796 481207.699518199,165938.6048992502 481214.10754797957,165939.7208855557 481217.54051367636,165927.31390358304 481221.5755064988,165924.12884127168 481211.6925502743,165929.67582654592 481209.9104735108,165936.54584356796 481207.699518199)),((165939.7208855557 481217.54051367636,165938.6048992502 481214.10754797957,165936.54584356796 481207.699518199,165943.42091453492 481205.48758226004,165952.46891637606 481202.5455774916,165956.30395514896 481214.44053561985,165950.59394445625 481216.2815246088,165940.38089696498 481219.5725450003,165939.7208855557 481217.54051367636)),((165928.88381791487 481183.8815045006,165932.12180322534 481193.94749854505,165919.70380637315 481197.9754764354,165916.45976908074 481187.9535376864,165921.9968088786 481186.08553448814,165928.88381791487 481183.8815045006)),((165928.88381791487 481183.8815045006,165935.77478973227 481181.6766027653,165944.79885145818 481178.7555598329,165948.63385924912 481190.6505113363,165942.92389217904 481192.4915092783,165932.71481026363 481195.78856254957,165932.12180322534 481193.94749854505,165928.88381791487 481183.8815045006)),((165925.6577841699 481173.8315612609,165926.81775358738 481177.45555016235,165928.88381791487 481183.8815045006,165921.9968088786 481186.08553448814,165916.45976908074 481187.9535376864,165913.1937729216 481177.86557317525,165925.6577841699 481173.8315612609)),((165921.24274012144 481160.08457912493,165923.31373494447 481166.50753767864,165924.47675393053 481170.1415464862,165911.99370911228 481174.1455892804,165908.7426881924 481164.09159663186,165914.34872256077 481162.2995081409,165921.24274012144 481160.08457912493)),((165925.0648026079 481171.97659024666,165924.47675393053 481170.1415464862,165923.31373494447 481166.50753767864,165921.24274012144 481160.08457912493,165928.1277549979 481157.87353403826,165937.12878032168 481154.9655552655,165940.9638250668 481166.8606115619,165935.2657636092 481168.7025348458,165925.0648026079 481171.97659024666)),((165908.7426881924 481164.09159663186,165905.50370686068 481154.0755739703,165917.98371786345 481150.0455835623,165919.17071490118 481153.6626206272,165921.24274012144 481160.08457912493,165914.34872256077 481162.2995081409,165908.7426881924 481164.09159663186)),((165937.12878032168 481154.9655552655,165928.1277549979 481157.87353403826,165921.24274012144 481160.08457912493,165919.17071490118 481153.6626206272,165917.98371786345 481150.0455835623,165916.79371812948 481146.3055934274,165918.07372073093 481144.83562240377,165932.37375480027 481140.215544091,165937.12878032168 481154.9655552655)),((165981.62270644 481566.05520726903,165982.7517157374 481562.23724365025,165985.8667134712 481551.73628236784,165991.4567438497 481553.39521309774,166000.28978018748 481555.8702663668,165996.0747680759 481570.2552233033,165990.2887963984 481568.5732643481,165981.62270644 481566.05520726903)),((165985.8667134712 481551.73628236784,165988.95169326712 481541.2192343411,165990.07469705105 481536.73523226037,166004.50474845723 481541.48531321733,166000.28978018748 481555.8702663668,165991.4567438497 481553.39521309774,165985.8667134712 481551.73628236784)),((165975.7046653689 481533.0052850057,165990.07469705105 481536.73523226037,165988.95169326712 481541.2192343411,165985.8667134712 481551.73628236784,165980.26768450555 481550.0752239369,165971.4586622845 481547.49222248094,165975.7046653689 481533.0052850057)),((165981.62270644 481566.05520726903,165967.25466094722 481561.8351702114,165971.4586622845 481547.49222248094,165980.26768450555 481550.0752239369,165985.8667134712 481551.73628236784,165982.7517157374 481562.23724365025,165981.62270644 481566.05520726903)),((165939.31052736257 481537.98322753777,165948.14258714658 481540.61517884233,165953.74756907398 481542.2762139906,165950.6586404207 481552.79416514596,165949.52764086245 481556.6282648508,165935.0645508778 481552.3851903837,165939.31052736257 481537.98322753777)),((165968.11566737344 481546.5032211833,165963.90465453628 481560.84526602336,165949.52764086245 481556.6282648508,165950.6586404207 481552.79416514596,165953.74756907398 481542.2762139906,165959.34662016534 481543.9352395898,165968.11566737344 481546.5032211833)),((165968.11566737344 481546.5032211833,165959.34662016534 481543.9352395898,165953.74756907398 481542.2762139906,165956.82960471738 481531.76726200926,165957.95361929305 481527.8292279403,165972.34463824946 481532.0372719382,165968.11566737344 481546.5032211833)),((165939.31052736257 481537.98322753777,165943.5445107696 481523.62018447777,165957.95361929305 481527.8292279403,165956.82960471738 481531.76726200926,165953.74756907398 481542.2762139906,165948.14258714658 481540.61517884233,165939.31052736257 481537.98322753777)),((165943.5445107696 481523.62018447777,165947.79850722943 481509.19020873844,165956.59254258088 481511.865261011,165962.1916013131 481513.50526350754,165959.10157256975 481524.011301254,165957.95361929305 481527.8292279403,165943.5445107696 481523.62018447777)),((165972.34463824946 481532.0372719382,165957.95361929305 481527.8292279403,165959.10157256975 481524.011301254,165962.1916013131 481513.50526350754,165967.79658568368 481515.1462869073,165976.5556365254 481517.7543160746,165972.34463824946 481532.0372719382)),((165976.5556365254 481517.7543160746,165967.79658568368 481515.1462869073,165962.1916013131 481513.50526350754,165965.2815927043 481502.9912167502,165966.3935615073 481499.1412791612,165980.7906309283 481503.33033460635,165976.5556365254 481517.7543160746)),((165951.99551549152 481494.95126221766,165966.3935615073 481499.1412791612,165965.2815927043 481502.9912167502,165962.1916013131 481513.50526350754,165956.59254258088 481511.865261011,165947.79850722943 481509.19020873844,165951.99551549152 481494.95126221766)),((165956.26151080034 481480.4822672796,165965.0625026999 481483.08525067125,165970.69252246595 481484.73534517415,165967.57958312554 481495.2263056233,165966.3935615073 481499.1412791612,165951.99551549152 481494.95126221766,165956.26151080034 481480.4822672796)),((165970.69252246595 481484.73534517415,165985.017608498 481488.9352678822,165980.7906309283 481503.33033460635,165966.3935615073 481499.1412791612,165967.57958312554 481495.2263056233,165970.69252246595 481484.73534517415)),((165985.017608498 481488.9352678822,165970.69252246595 481484.73534517415,165973.75455211758 481474.21033811977,165974.8974974293 481470.2332966167,165989.26357937 481474.4722649936,165985.017608498 481488.9352678822)),((165960.50445133742 481466.0903311382,165974.8974974293 481470.2332966167,165973.75455211758 481474.21033811977,165970.69252246595 481484.73534517415,165965.0625026999 481483.08525067125,165956.26151080034 481480.4822672796,165960.50445133742 481466.0903311382)),((165960.50445133742 481466.0903311382,165964.74948427 481451.6882785512,165973.51751495776 481454.29532028775,165979.1745332628 481455.9592810538,165976.05152430522 481466.4553314901,165974.8974974293 481470.2332966167,165960.50445133742 481466.0903311382)),((165989.26357937 481474.4722649936,165974.8974974293 481470.2332966167,165976.05152430522 481466.4553314901,165979.1745332628 481455.9592810538,165984.73649874856 481457.595332028,165993.45358051884 481460.20129447326,165989.26357937 481474.4722649936)),((165979.1745332628 481455.9592810538,165982.22851159697 481445.4223565114,165983.38548240822 481441.61335710034,165997.67452061403 481445.8253634295,165993.45358051884 481460.20129447326,165984.73649874856 481457.595332028,165979.1745332628 481455.9592810538)),((165964.74948427 481451.6882785512,165965.8944682684 481447.80536906695,165964.21943920254 481447.3353404566,165967.16940644267 481436.83333526517,165983.38548240822 481441.61335710034,165982.22851159697 481445.4223565114,165979.1745332628 481455.9592810538,165973.51751495776 481454.29532028775,165964.74948427 481451.6882785512)),((165931.78434320926 481457.6552447277,165935.97235709074 481443.2893136629,165941.40237306454 481444.85526083026,165947.03838439108 481446.5322673152,165943.89840851355 481457.0212904519,165942.7733832031 481460.8903412712,165931.78434320926 481457.6552447277)),((165961.39641423512 481450.78526691074,165957.19445905197 481465.1353463633,165942.7733832031 481460.8903412712,165943.89840851355 481457.0212904519,165947.03838439108 481446.5322673152,165952.60639016278 481448.19032571657,165961.39641423512 481450.78526691074)),((165967.16940644267 481436.83333526517,165964.21943920254 481447.3353404566,165962.54440981965 481446.8653124131,165961.39641423512 481450.78526691074,165952.60639016278 481448.19032571657,165947.03838439108 481446.5322673152,165950.09037083114 481436.00433123333,165951.29139067512 481432.15236295323,165967.16940644267 481436.83333526517)),((165935.97235709074 481443.2893136629,165940.17434220857 481428.87535132206,165951.29139067512 481432.15236295323,165950.09037083114 481436.00433123333,165947.03838439108 481446.5322673152,165941.40237306454 481444.85526083026,165935.97235709074 481443.2893136629)),((165947.79850722943 481509.19020873844,165943.5445107696 481523.62018447777,165939.31052736257 481537.98322753777,165935.0645508778 481552.3851903837,165949.52764086245 481556.6282648508,165963.90465453628 481560.84526602336,165968.11566737344 481546.5032211833,165972.34463824946 481532.0372719382,165975.7046653689 481533.0052850057,165971.4586622845 481547.49222248094,165967.25466094722 481561.8351702114,165981.62270644 481566.05520726903,165990.2887963984 481568.5732643481,165988.14081311575 481575.871190598,165925.78456217595 481557.5191725351,165951.19443893305 481471.1812507268,165929.6113786002 481464.82930264046,165931.78434320926 481457.6552447277,165942.7733832031 481460.8903412712,165957.19445905197 481465.1353463633,165961.39641423512 481450.78526691074,165962.54440981965 481446.8653124131,165964.21943920254 481447.3353404566,165965.8944682684 481447.80536906695,165964.74948427 481451.6882785512,165960.50445133742 481466.0903311382,165956.26151080034 481480.4822672796,165951.99551549152 481494.95126221766,165947.79850722943 481509.19020873844)),((165941.05912179363 481325.0553667046,165955.3011366293 481320.4854062049,165959.84321633418 481334.64037687157,165951.19216527854 481337.4754338825,165945.62013845862 481339.26544198627,165942.2591185958 481328.84044813446,165941.05912179363 481325.0553667046)),((165941.05912179363 481325.0553667046,165942.2591185958 481328.84044813446,165945.62013845862 481339.26544198627,165940.0661268979 481341.050378153,165934.73211844507 481342.753361227,165930.24406786144 481328.52543277247,165941.05912179363 481325.0553667046)),((165934.73211844507 481342.753361227,165940.0661268979 481341.050378153,165945.62013845862 481339.26544198627,165948.99422618406 481349.69436158845,165950.20422346052 481353.54544691474,165939.25420752895 481357.08540151204,165934.73211844507 481342.753361227)),((165962.87524257202 481338.1164342519,165966.16722080676 481348.3844067348,165950.20422346052 481353.54544691474,165948.99422618406 481349.69436158845,165945.62013845862 481339.26544198627,165951.19216527854 481337.4754338825,165959.84321633418 481334.64037687157,165961.14418771747 481338.6953912655,165962.87524257202 481338.1164342519)),((165966.16722080676 481348.3844067348,165962.87524257202 481338.1164342519,165964.64423360457 481337.52543432114,165963.3402144063 481333.4624012245,165971.93421949708 481330.74640247505,165977.48524113596 481328.96739244333,165980.85626413499 481339.39844098384,165982.07327767808 481343.2424288156,165966.16722080676 481348.3844067348)),((165991.720251199 481324.3384400168,165996.32429299227 481338.6354442758,165982.07327767808 481343.2424288156,165980.85626413499 481339.39844098384,165977.48524113596 481328.96739244333,165983.06424125226 481327.1794385015,165991.720251199 481324.3384400168)),((165987.1412406636 481310.11748955015,165991.720251199 481324.3384400168,165983.06424125226 481327.1794385015,165977.48524113596 481328.96739244333,165974.13820372755 481318.53639975237,165972.92219446276 481314.7565044081,165987.1412406636 481310.11748955015)),((165963.3402144063 481333.4624012245,165958.81514406268 481319.35842404625,165972.92219446276 481314.7565044081,165974.13820372755 481318.53639975237,165977.48524113596 481328.96739244333,165971.93421949708 481330.74640247505,165963.3402144063 481333.4624012245)),((165972.92219446276 481314.7565044081,165958.81514406268 481319.35842404625,165954.19315136166 481304.9514868698,165962.75612083622 481302.2305076738,165968.30917366338 481300.4094340397,165972.92219446276 481314.7565044081)),((165968.30917366338 481300.4094340397,165973.88217284554 481298.6655169666,165982.5412139683 481295.8305174183,165987.1412406636 481310.11748955015,165972.92219446276 481314.7565044081,165968.30917366338 481300.4094340397)),((165968.30917366338 481300.4094340397,165964.9601495697 481290.02650985704,165963.7271422241 481286.15745674213,165977.94914385804 481281.5714949763,165982.5412139683 481295.8305174183,165973.88217284554 481298.6655169666,165968.30917366338 481300.4094340397)),((165963.7271422241 481286.15745674213,165964.9601495697 481290.02650985704,165968.30917366338 481300.4094340397,165962.75612083622 481302.2305076738,165954.19315136166 481304.9514868698,165949.62211592981 481290.70544403687,165963.7271422241 481286.15745674213)),((165959.13904705815 481271.891451392,165962.4810715889 481282.33644102496,165963.7271422241 481286.15745674213,165949.62211592981 481290.70544403687,165945.03602160158 481276.4124190493,165953.5660289468 481273.6634235794,165959.13904705815 481271.891451392)),((165973.36409571537 481267.33151899016,165977.94914385804 481281.5714949763,165963.7271422241 481286.15745674213,165962.4810715889 481282.33644102496,165959.13904705815 481271.891451392,165964.71208475076 481270.1124758971,165973.36409571537 481267.33151899016)),((165968.77606675995 481253.0095394675,165970.30806429673 481257.7664775316,165973.36409571537 481267.33151899016,165964.71208475076 481270.1124758971,165959.13904705815 481271.891451392,165955.79304926845 481261.4484581901,165954.55201612142 481257.6254531015,165968.77606675995 481253.0095394675)),((165954.55201612142 481257.6254531015,165955.79304926845 481261.4484581901,165959.13904705815 481271.891451392,165953.5660289468 481273.6634235794,165945.03602160158 481276.4124190493,165941.9830346947 481266.89747067,165940.47400505433 481262.19544545864,165954.55201612142 481257.6254531015)),((165966.16722080676 481348.3844067348,165982.07327767808 481343.2424288156,165996.32429299227 481338.6354442758,165991.720251199 481324.3384400168,165987.1412406636 481310.11748955015,165982.5412139683 481295.8305174183,165977.94914385804 481281.5714949763,165973.36409571537 481267.33151899016,165970.30806429673 481257.7664775316,165968.77606675995 481253.0095394675,165973.53406971783 481251.476547989,166002.68035683886 481341.89440115006,165936.05519068605 481363.369405808,165923.01604604002 481322.9174133205,165949.18912624416 481314.4813888294,165934.61698036632 481269.27143408824,165941.9830346947 481266.89747067,165945.03602160158 481276.4124190493,165949.62211592981 481290.70544403687,165954.19315136166 481304.9514868698,165958.81514406268 481319.35842404625,165963.3402144063 481333.4624012245,165964.64423360457 481337.52543432114,165962.87524257202 481338.1164342519,165961.14418771747 481338.6953912655,165959.84321633418 481334.64037687157,165955.3011366293 481320.4854062049,165941.05912179363 481325.0553667046,165930.24406786144 481328.52543277247,165934.73211844507 481342.753361227,165939.25420752895 481357.08540151204,165950.20422346052 481353.54544691474,165966.16722080676 481348.3844067348)),((165895.13041732486 481533.24123828445,165910.45443059667 481537.7282090086,165918.892460091 481540.224162435,165922.71948440833 481541.33024989034,165920.67447837786 481548.2551416977,165893.09843377655 481540.1511493943,165895.13041732486 481533.24123828445)),((165896.64740066387 481528.08315691736,165896.65241750143 481528.06514321023,165920.4185142213 481535.0441892801,165924.24847192867 481536.1511745033,165922.71948440833 481541.33024989034,165918.892460091 481540.224162435,165910.45443059667 481537.7282090086,165895.13041732486 481533.24123828445,165896.64740066387 481528.08315691736)),((165896.65241750143 481528.06514321023,165898.16535466668 481522.9191811999,165898.17435241595 481522.8891597626,165921.94347844977 481529.86521559535,165925.7774623816 481530.9722108921,165924.24847192867 481536.1511745033,165920.4185142213 481535.0441892801,165896.65241750143 481528.06514321023)),((165899.69038288604 481517.7331913193,165899.69635646036 481517.7141783537,165923.4694707462 481524.6852433193,165927.30747869454 481525.7932500641,165925.7774623816 481530.9722108921,165921.94347844977 481529.86521559535,165898.17435241595 481522.8891597626,165899.69038288604 481517.7331913193)),((165901.21136076152 481512.5612122759,165901.218365878 481512.5381960822,165902.19538995755 481512.8091679609,165916.5504016183 481517.0312113604,165924.99546621574 481519.5052715604,165928.8364779695 481520.61317485454,165927.30747869454 481525.7932500641,165923.4694707462 481524.6852433193,165899.69635646036 481517.7141783537,165901.21136076152 481512.5612122759)),((165902.7343960123 481507.3852327769,165902.74037624605 481507.3632156981,165926.5204402043 481514.3261881598,165930.36547795995 481515.43421280093,165928.8364779695 481520.61317485454,165924.99546621574 481519.5052715604,165916.5504016183 481517.0312113604,165902.19538995755 481512.8091679609,165901.218365878 481512.5381960822,165902.7343960123 481507.3852327769)),((165904.25833845264 481502.20124477724,165904.2623919882 481502.18723446043,165905.24435118132 481502.44720268424,165928.0404683249 481509.1652303686,165931.89543563488 481510.25525337853,165930.36547795995 481515.43421280093,165926.5204402043 481514.3261881598,165902.74037624605 481507.3632156981,165904.25833845264 481502.20124477724)),((165914.80236954536 481498.40129218134,165920.4864416878 481500.0572347831,165923.36639387568 481500.89619632973,165933.76447955295 481503.92523969157,165931.89543563488 481510.25525337853,165928.0404683249 481509.1652303686,165905.24435118132 481502.44720268424,165904.2623919882 481502.18723446043,165906.11937296687 481495.87120313005,165914.80236954536 481498.40129218134)),((165933.76447955295 481503.92523969157,165923.36639387568 481500.89619632973,165923.65443714958 481499.88622205233,165924.6673896757 481496.43126609793,165927.45044080383 481497.24820778926,165932.95342380035 481478.61931950756,165933.09739250087 481478.6622525252,165933.3244254117 481477.8952557339,165934.4303817035 481474.0422937281,165941.84446005966 481476.2252570742,165933.76447955295 481503.92523969157)),((165928.61836432802 481472.3313100361,165934.4303817035 481474.0422937281,165933.3244254117 481477.8952557339,165933.09739250087 481478.6622525252,165932.95342380035 481478.61931950756,165927.45044080383 481497.24820778926,165924.6673896757 481496.43126609793,165923.65443714958 481499.88622205233,165923.36639387568 481500.89619632973,165920.4864416878 481500.0572347831,165920.77538404206 481499.0412540726,165921.78942337478 481495.5873013189,165927.29739742447 481476.94328597013,165928.61836432802 481472.3313100361)),((165928.61836432802 481472.3313100361,165927.29739742447 481476.94328597013,165921.78942337478 481495.5873013189,165920.77538404206 481499.0412540726,165920.4864416878 481500.0572347831,165914.80236954536 481498.40129218134,165919.0003527469 481484.2682437183,165921.6313492792 481475.26523400156,165921.4873803808 481475.22230131645,165921.71434346386 481474.4553038453,165922.81533845488 481470.62224457925,165928.61836432802 481472.3313100361)),((165914.80236954536 481498.40129218134,165906.11937296687 481495.87120313005,165909.38437225827 481484.88029707095,165911.20331499135 481478.59823054564,165914.2793231971 481468.1092675604,165922.81533845488 481470.62224457925,165921.71434346386 481474.4553038453,165921.4873803808 481475.22230131645,165921.6313492792 481475.26523400156,165919.0003527469 481484.2682437183,165914.80236954536 481498.40129218134)),((165906.11937296687 481495.87120313005,165897.47634055186 481493.30127379094,165901.6643087399 481479.175198381,165904.17528002078 481470.14120556315,165904.41532065 481470.21227725974,165904.6443266929 481469.44528353587,165905.76231058137 481465.6012429256,165914.2793231971 481468.1092675604,165911.20331499135 481478.59823054564,165909.38437225827 481484.88029707095,165906.11937296687 481495.87120313005)),((165897.47634055186 481493.30127379094,165891.82230733614 481491.62027832307,165893.12732160438 481487.17626645276,165895.98731684854 481477.5102808174,165898.60226602363 481468.5012153713,165899.950275644 481463.88929162023,165905.76231058137 481465.6012429256,165904.6443266929 481469.44528353587,165904.41532065 481470.21227725974,165904.17528002078 481470.14120556315,165901.6643087399 481479.175198381,165897.47634055186 481493.30127379094)),((165894.1482505075 481462.18126349826,165899.950275644 481463.88929162023,165898.60226602363 481468.5012153713,165895.98731684854 481477.5102808174,165893.12732160438 481487.17626645276,165891.82230733614 481491.62027832307,165888.9282799268 481490.7592738712,165890.23026762213 481486.32626971306,165887.46628168572 481485.51517682313,165892.9422399973 481466.8352261978,165892.79827060597 481466.7922943458,165894.1482505075 481462.18126349826)),((165888.9282799268 481490.7592738712,165878.61824088683 481487.69324565696,165886.72425100228 481459.99523461866,165894.1482505075 481462.18126349826,165892.79827060597 481466.7922943458,165892.9422399973 481466.8352261978,165887.46628168572 481485.51517682313,165890.23026762213 481486.32626971306,165888.9282799268 481490.7592738712)),((165856.23329322916 481537.0501121804,165881.64417191545 481450.71128487133,165929.6113786002 481464.82930264046,165951.19443893305 481471.1812507268,165925.78456217595 481557.5191725351,165856.23329322916 481537.0501121804),(165867.54927288933 481525.10522256023,165865.49131977314 481532.05914822913,165893.09843377655 481540.1511493943,165920.67447837786 481548.2551416977,165922.71948440833 481541.33024989034,165924.24847192867 481536.1511745033,165925.7774623816 481530.9722108921,165927.30747869454 481525.7932500641,165928.8364779695 481520.61317485454,165930.36547795995 481515.43421280093,165931.89543563488 481510.25525337853,165933.76447955295 481503.92523969157,165941.84446005966 481476.2252570742,165934.4303817035 481474.0422937281,165928.61836432802 481472.3313100361,165922.81533845488 481470.62224457925,165914.2793231971 481468.1092675604,165905.76231058137 481465.6012429256,165899.950275644 481463.88929162023,165894.1482505075 481462.18126349826,165886.72425100228 481459.99523461866,165878.61824088683 481487.69324565696,165876.74125623505 481494.0361689687,165875.20924209635 481499.2132491519,165873.67729294812 481504.3932228555,165872.1452832179 481509.57119418646,165870.61327667205 481514.749166038,165869.08127331096 481519.9271384061,165867.54927288933 481525.10522256023)),((165864.26622637178 481483.4501794296,165853.82416749134 481480.38124216447,165855.13816786418 481475.8981865053,165857.91919632955 481476.7151957553,165860.74618647926 481467.1472523947,165863.38416540896 481458.1492344596,165863.52718054497 481458.19227461156,165864.89212849856 481453.5532303068,165872.31417887198 481455.7352165087,165864.26622637178 481483.4501794296)),((165786.68302267324 481516.58014388575,165812.09292220575 481430.24218691647,165881.64417191545 481450.71128487133,165856.23329322916 481537.0501121804,165786.68302267324 481516.58014388575),(165798.00803197207 481504.65914855164,165795.9680335119 481511.61214057665,165823.56413966522 481519.7282063275,165851.18822609202 481527.8531666835,165864.26622637178 481483.4501794296,165872.31417887198 481455.7352165087,165864.89212849856 481453.5532303068,165859.0901429811 481451.847246296,165853.2880852939 481450.14126894844,165844.7631001899 481447.63422229275,165836.22904270093 481445.12527897663,165830.42703771713 481443.41921739513,165824.62502849937 481441.7132738949,165817.18399556502 481439.5251983774,165808.99602089508 481467.20522848406,165807.1290240118 481473.57022994,165805.60797486416 481478.7521396871,165804.0880216979 481483.9331622273,165802.56800132265 481489.1151865056,165801.0480544796 481494.29621007456,165799.53601079423 481499.45010300004,165798.00803197207 481504.65914855164)),((165866.8946775674 481227.2614635345,165866.63470314653 481226.45244678966,165865.69470760453 481223.61247728474,165861.72971818765 481224.8815075602,165858.10862015767 481213.5774607407,165855.32264947437 481205.11148452404,165854.2025963923 481201.4225106706,165859.62464855894 481199.67446122796,165860.78461601818 481203.3495048612,165863.5306689735 481211.82552133844,165866.60869701818 481221.50948498544,165868.17671572493 481221.01046857407,165868.8797176592 481223.22550298803,165867.311701787 481223.7235178127,165868.29369451493 481226.81247772946,165866.8946775674 481227.2614635345)),((165873.70971056758 481225.07043869596,165868.29369451493 481226.81247772946,165867.311701787 481223.7235178127,165868.8797176592 481223.22550298803,165868.17671572493 481221.01046857407,165866.60869701818 481221.50948498544,165863.5306689735 481211.82552133844,165860.78461601818 481203.3495048612,165859.62464855894 481199.67446122796,165865.04766110049 481197.9255297347,165866.20967289337 481201.5994664963,165868.9526537095 481210.0734764689,165873.70971056758 481225.07043869596)),((165882.26772553523 481222.31949046534,165873.70971056758 481225.07043869596,165868.9526537095 481210.0734764689,165866.20967289337 481201.5994664963,165865.04766110049 481197.9255297347,165873.60068580566 481195.1685472645,165877.02172582838 481205.785442737,165882.26772553523 481222.31949046534)),((165890.8257503115 481219.568445799,165882.26772553523 481222.31949046534,165877.02172582838 481205.785442737,165873.60068580566 481195.1685472645,165882.15365215074 481192.4114681889,165886.07474011733 481204.540549042,165890.8257503115 481219.568445799)),((165890.8257503115 481219.568445799,165886.07474011733 481204.540549042,165882.15365215074 481192.4114681889,165887.5766784854 481190.6635628014,165891.4977636454 481202.7885311759,165894.58876734154 481212.5644449591,165893.0167248861 481213.0614413691,165893.71779667106 481215.2814819412,165895.29079305512 481214.7844878564,165896.25174365405 481217.8234493365,165890.8257503115 481219.568445799)),((165896.25174365405 481217.8234493365,165895.29079305512 481214.7844878564,165893.71779667106 481215.2814819412,165893.0167248861 481213.0614413691,165894.58876734154 481212.5644449591,165891.4977636454 481202.7885311759,165887.5766784854 481190.6635628014,165892.9997111255 481188.9145507321,165894.19671993738 481192.5715478998,165896.91976828402 481201.0365170132,165899.76578669314 481210.19148501434,165900.4868094275 481212.4224744692,165896.5847507168 481213.6844948627,165897.75379771486 481217.34054124047,165896.25174365405 481217.8234493365)),((165907.70576258353 481210.1234609238,165902.2817912834 481211.8425247669,165900.4868094275 481212.4224744692,165899.76578669314 481210.19148501434,165896.91976828402 481201.0365170132,165894.19671993738 481192.5715478998,165892.9997111255 481188.9145507321,165900.16369288534 481186.6055023801,165907.70576258353 481210.1234609238)),((165907.70576258353 481210.1234609238,165908.87381045165 481213.76548845315,165897.75379771486 481217.34054124047,165896.5847507168 481213.6844948627,165900.4868094275 481212.4224744692,165902.2817912834 481211.8425247669,165907.70576258353 481210.1234609238)),((165880.18498152556 481336.7233748839,165836.31353847278 481200.6194925535,165905.31869812732 481178.3775641539,165934.61698036632 481269.27143408824,165949.18912624416 481314.4813888294,165923.01604604002 481322.9174133205,165880.18498152556 481336.7233748839),(165854.2025963923 481201.4225106706,165846.93358080686 481203.7654415951,165854.44664577578 481227.21249125793,165855.62366086923 481230.8854573256,165855.82369299646 481231.57540042157,165854.33365392467 481232.05545480386,165876.44389041603 481300.6554533546,165878.1138858439 481300.1253995869,165878.3339113341 481300.80537398526,165886.68397781134 481326.77534298535,165894.68699622378 481324.19342627533,165903.4679854846 481321.36145030503,165912.37800999396 481318.48738357215,165921.19804856065 481315.64239624795,165930.08209634136 481312.7774275843,165939.79406761308 481309.6453844185,165931.37404637353 481283.6954208855,165908.87381045165 481213.76548845315,165907.70576258353 481210.1234609238,165900.16369288534 481186.6055023801,165892.9997111255 481188.9145507321,165887.5766784854 481190.6635628014,165882.15365215074 481192.4114681889,165873.60068580566 481195.1685472645,165865.04766110049 481197.9255297347,165859.62464855894 481199.67446122796,165854.2025963923 481201.4225106706)),((165876.25758868846 481147.235518126,165886.28362180485 481143.98556564905,165896.2337106576 481174.71549742355,165886.18763645564 481177.9574857892,165881.60664909615 481163.8455611428,165876.25758868846 481147.235518126)),((165877.62665215324 481180.720548479,165876.1156383474 481176.1364793717,165874.2206071835 481170.222516107,165867.70355799777 481150.00851581164,165876.25758868846 481147.235518126,165881.60664909615 481163.8455611428,165886.18763645564 481177.9574857892,165877.62665215324 481180.720548479)),((165869.06465495183 481183.48351249145,165864.4985981491 481169.38354181446,165859.15056190282 481152.7805291889,165867.70355799777 481150.00851581164,165874.2206071835 481170.222516107,165876.1156383474 481176.1364793717,165877.62665215324 481180.720548479,165869.06465495183 481183.48351249145)),((165853.91450703648 481154.47847423767,165859.15056190282 481152.7805291889,165864.4985981491 481169.38354181446,165869.06465495183 481183.48351249145,165860.50362192755 481186.2464934498,165859.00158758258 481181.6654534509,165857.05258033366 481175.793547097,165856.1815873062 481173.1014900736,165850.60753492877 481155.55046525295,165853.77149161507 481154.5245568851,165853.91450703648 481154.47847423767)),((165924.52807736598 481843.81189789885,165956.08599516712 481745.01508612063,165965.7919827646 481714.12902105553,165975.93794683047 481682.76206980716,165985.7359202118 481649.83511083043,165993.46790969896 481619.4111303698,166001.88886370874 481579.6282719317,166008.29380160503 481545.4542077084,166012.5927007486 481514.79429283564,166015.75270217698 481484.19937875186,166018.35059922235 481447.76941500005,166020.69352027407 481414.70640413306,166019.8444648481 481375.4923786521,166018.69738716728 481336.5465047899,166015.15530439743 481290.8855103039,166010.82720700584 481258.03348857275,166005.06812188454 481222.01660339045,165997.66299492292 481186.39761198557,165989.9529152416 481154.0525668103,165980.3347990849 481119.55767611903,165970.06673855023 481085.06470021605,165920.02428878422 480929.8827890846,165922.1182438914 480929.20882226096,165972.17376532574 481084.43462164776,165982.45284189627 481118.96567873587,165992.08393542428 481153.505664375,165999.8039932762 481185.89557452104,166007.23313360344 481221.6245515634,166013.00322002955 481257.715565682,166017.34331388713 481290.65451334784,166020.8944038609 481336.42545843904,166022.04348282522 481375.44443781814,166022.89455435504 481414.75537924014,166020.5436071265 481447.925407236,166017.944697256 481484.37428252696,166014.77372129864 481515.08432910295,166010.46478895945 481545.80430237454,166004.04382546115 481580.0652253856,165995.61388665624 481619.89523620025,165987.85492324663 481650.42518802424,165978.03495803892 481683.42508322693,165967.88499884465 481714.8050392654,165958.18401185697 481745.6750893561,165926.63909579924 481844.43286302045,165924.52807736598 481843.81189789885)),((165619.34493397814 481753.9937822201,165621.25993950333 481746.4797864231,165726.6254969247 481332.95825022587,165742.17659175242 481381.20723075565,165811.18078064197 481358.96532213397,165863.38789269142 481342.1373177792,165880.18498152556 481336.7233748839,165923.01604604002 481322.9174133205,165936.05519068605 481363.369405808,166002.68035683886 481341.89440115006,165973.53406971783 481251.476547989,165994.94911866274 481244.573534503,165983.4440417146 481208.88056617026,165990.58306434262 481206.5796042553,165960.67176963005 481113.7816573767,165903.14921352794 480935.321792724,165920.02428878422 480929.8827890846,165970.06673855023 481085.06470021605,165980.3347990849 481119.55767611903,165989.9529152416 481154.0525668103,165997.66299492292 481186.39761198557,166005.06812188454 481222.01660339045,166010.82720700584 481258.03348857275,166015.15530439743 481290.8855103039,166018.69738716728 481336.5465047899,166019.8444648481 481375.4923786521,166020.69352027407 481414.70640413306,166018.35059922235 481447.76941500005,166015.75270217698 481484.19937875186,166012.5927007486 481514.79429283564,166008.29380160503 481545.4542077084,166001.88886370874 481579.6282719317,165993.46790969896 481619.4111303698,165985.7359202118 481649.83511083043,165975.93794683047 481682.76206980716,165965.7919827646 481714.12902105553,165956.08599516712 481745.01508612063,165924.52807736598 481843.81189789885,165853.94681607577 481823.0388199289,165677.60915791194 481771.1417838235,165619.34493397814 481753.9937822201),(165673.3708977106 481644.8049006763,165647.9609629814 481731.14381613344,165787.06153932825 481772.0818594473,165926.16303056382 481813.0209374773,165951.5729883572 481726.68209263764,165995.3347822398 481577.9882105603,165988.14081311575 481575.871190598,165990.2887963984 481568.5732643481,165996.0747680759 481570.2552233033,166000.28978018748 481555.8702663668,166004.50474845723 481541.48531321733,165990.07469705105 481536.73523226037,165975.7046653689 481533.0052850057,165972.34463824946 481532.0372719382,165976.5556365254 481517.7543160746,165980.7906309283 481503.33033460635,165985.017608498 481488.9352678822,165989.26357937 481474.4722649936,165993.45358051884 481460.20129447326,165997.67452061403 481445.8253634295,165983.38548240822 481441.61335710034,165967.16940644267 481436.83333526517,165951.29139067512 481432.15236295323,165940.17434220857 481428.87535132206,165935.97235709074 481443.2893136629,165931.78434320926 481457.6552447277,165929.6113786002 481464.82930264046,165881.64417191545 481450.71128487133,165812.09292220575 481430.24218691647,165742.54266873017 481409.7731823477,165717.13279208494 481496.11104573845,165673.3708977106 481644.8049006763)),((165944.21996750988 481231.4705071231,165951.09199357682 481229.2654734652,165960.13897532108 481226.33549698483,165963.05302768055 481235.37549498817,165960.19799728072 481236.29654102743,165962.03901342853 481242.00547000783,165964.4030222143 481249.38752608956,165961.2800567513 481250.39353844704,165958.91504699853 481243.0305077823,165957.41400492916 481238.35853659053,165947.4609974654 481241.54953687976,165946.2929498066 481237.89247930876,165944.21996750988 481231.4705071231)),((165964.89403841048 481241.0855376612,165967.25804585416 481248.46648246696,165964.41803350058 481249.3825525534,165964.4030222143 481249.38752608956,165962.03901342853 481242.00547000783,165960.19799728072 481236.29654102743,165963.05302768055 481235.37549498817,165964.89403841048 481241.0855376612)),((165799.76645236128 481728.91290228424,165856.23329322916 481537.0501121804,165925.78456217595 481557.5191725351,165882.02270928613 481706.2129920733,165869.31776905607 481749.3819606654,165799.76645236128 481728.91290228424),(165818.18347132907 481699.0759244936,165810.6795268119 481724.3238936018,165818.52953724368 481726.63391340274,165823.7105264967 481728.1579079759,165828.8165668759 481729.65993579174,165834.0725614319 481731.2069149638,165839.2525866725 481732.73092375806,165844.43165426826 481734.254935893,165849.6136502441 481735.7789599037,165854.79468637242 481737.3039886345,165864.21673524188 481740.07594691927,165871.61166309135 481714.8499591504,165873.5856655602 481708.1559845713,165875.19665619102 481702.68901061267,165876.80867300337 481697.2220394776,165878.42062517727 481691.7550687749,165880.0326493108 481686.2879875313,165881.64365188024 481680.82201724674,165883.25561466636 481675.3550482706,165885.81462477864 481666.6750804727,165862.71556835776 481659.87201639387,165858.18350495028 481662.28103755135,165857.22255387413 481661.9990944326,165860.42351585196 481651.13507619646,165887.98459628696 481659.2750171646,165890.5355846362 481650.59203018417,165892.1425944516 481645.1230506564,165893.74858513728 481639.6540694473,165895.3556020077 481634.18509106763,165896.961599746 481628.7161110021,165898.56855549413 481623.2471336177,165900.5446102156 481616.5211311452,165907.9205223746 481591.3661466478,165854.4933637975 481575.62010088266,165846.79339518113 481601.7910717138,165845.1543742347 481601.3041389397,165816.8084509125 481697.6910105642,165818.44844988626 481698.18494588154,165818.18347132907 481699.0759244936),(165913.7345330837 481561.835152511,165911.98453541263 481567.87514941185,165914.68449818296 481568.66519705893,165916.4345449143 481562.6352149766,165913.7345330837 481561.835152511)),((165948.95499848967 481246.2335059524,165936.5469794084 481250.24243752443,165935.02397284005 481245.53548755957,165947.4609974654 481241.54953687976,165948.95499848967 481246.2335059524)),((165947.4609974654 481241.54953687976,165957.41400492916 481238.35853659053,165958.91504699853 481243.0305077823,165948.95499848967 481246.2335059524,165947.4609974654 481241.54953687976)),((165905.31869812732 481178.3775641539,165891.6666154965 481136.02359245205,165960.67176963005 481113.7816573767,165990.58306434262 481206.5796042553,165983.4440417146 481208.88056617026,165994.94911866274 481244.573534503,165973.53406971783 481251.476547989,165968.77606675995 481253.0095394675,165954.55201612142 481257.6254531015,165940.47400505433 481262.19544545864,165941.9830346947 481266.89747067,165934.61698036632 481269.27143408824,165905.31869812732 481178.3775641539),(165905.50370686068 481154.0755739703,165908.7426881924 481164.09159663186,165911.99370911228 481174.1455892804,165924.47675393053 481170.1415464862,165925.0648026079 481171.97659024666,165925.6577841699 481173.8315612609,165913.1937729216 481177.86557317525,165916.45976908074 481187.9535376864,165919.70380637315 481197.9754764354,165932.12180322534 481193.94749854505,165932.71481026363 481195.78856254957,165933.3258276864 481197.68652243924,165920.90381222923 481201.6855597624,165924.12884127168 481211.6925502743,165927.31390358304 481221.5755064988,165939.7208855557 481217.54051367636,165940.38089696498 481219.5725450003,165940.92392673437 481221.25650576956,165928.51389815565 481225.28548057156,165931.78590693325 481235.4624807737,165935.02397284005 481245.53548755957,165936.5469794084 481250.24243752443,165948.95499848967 481246.2335059524,165958.91504699853 481243.0305077823,165961.2800567513 481250.39353844704,165964.4030222143 481249.38752608956,165964.41803350058 481249.3825525534,165967.25804585416 481248.46648246696,165964.89403841048 481241.0855376612,165968.73504042928 481239.8365646448,165963.9829787248 481225.09053244634,165960.15095575404 481213.20058163744,165956.3139019831 481201.2956022904,165952.48285594245 481189.4095544417,165948.64786753405 481177.50959311274,165944.81482477117 481165.61553636834,165940.9817653917 481153.7205927461,165936.22770472043 481138.9705800083,165932.37375480027 481140.215544091,165918.07372073093 481144.83562240377,165916.79371812948 481146.3055934274,165917.98371786345 481150.0455835623,165905.50370686068 481154.0755739703)),((165856.84086455274 481321.967319789,165853.9738187968 481312.8804221144,165852.74684928128 481309.0813951317,165860.79386263408 481306.4653622439,165869.11391915628 481332.4153192787,165861.07293261477 481335.00531610136,165856.84086455274 481321.967319789)),((165878.3339113341 481300.80537398526,165886.31888588314 481298.2294122301,165887.55189386752 481302.06239640043,165890.49793373534 481311.10642862413,165894.68699622378 481324.19342627533,165886.68397781134 481326.77534298535,165878.3339113341 481300.80537398526)),((165886.31888588314 481298.2294122301,165895.26694583046 481295.34338203387,165903.4679854846 481321.36145030503,165894.68699622378 481324.19342627533,165890.49793373534 481311.10642862413,165887.55189386752 481302.06239640043,165886.31888588314 481298.2294122301)),((165904.0799201045 481292.50046260294,165912.37800999396 481318.48738357215,165903.4679854846 481321.36145030503,165895.26694583046 481295.34338203387,165904.0799201045 481292.50046260294)),((165912.9189682873 481289.6493829797,165921.19804856065 481315.64239624795,165912.37800999396 481318.48738357215,165904.0799201045 481292.50046260294,165912.9189682873 481289.6493829797)),((165921.7149745366 481286.811464343,165922.95697104238 481290.6694003715,165925.87703315547 481299.68747166824,165930.08209634136 481312.7774275843,165921.19804856065 481315.64239624795,165912.9189682873 481289.6493829797,165921.7149745366 481286.811464343)),((165925.87703315547 481299.68747166824,165922.95697104238 481290.6694003715,165921.7149745366 481286.811464343,165931.37404637353 481283.6954208855,165939.79406761308 481309.6453844185,165930.08209634136 481312.7774275843,165925.87703315547 481299.68747166824)),((165859.39522142088 482267.4240714624,165864.58023530198 482251.2500981201,165870.91425172254 482253.2841598908,165879.3223348805 482255.98515759007,165880.66728750238 482251.79012318875,166036.17032815237 481766.6561312795,166046.02629930346 481735.6421578694,166055.72829030015 481703.96917686274,166065.4712408115 481670.5332167183,166073.85019402683 481639.2992494934,166083.20415541553 481598.5192454308,166089.29909334317 481563.24629943684,166094.11802925434 481531.8473813481,166098.9169394697 481487.64036907634,166101.8988601309 481450.2853709817,166103.08684389706 481416.0574241747,166102.93369437646 481375.9605096085,166101.7456417802 481336.0315043455,166098.21153095478 481289.0156036395,166092.06841256854 481242.295594639,166085.97631042093 481205.444609844,166078.7762296343 481168.82068623864,166070.93011676625 481135.4857379878,166061.18305531278 481100.10373740544,166048.71992073982 481059.8637894088,165962.33810554908 480790.9669277343,166126.4834736357 480738.2440844735,166284.86517634048 481326.3456167291,166308.26957530715 481457.38460489427,166313.80279147168 481573.28041882324,166138.78833844126 482338.71614736825,166081.8201098793 482362.2970864991,166078.87909140653 482354.8260973728,166065.03704142952 482350.38408176304,166067.1140423639 482343.91004357993,166047.4829979523 482337.61111607857,166046.74999094714 482339.89406430745,166011.74583306516 482328.6640402399,166011.13186545088 482330.5790858652,166004.40580526416 482313.8841250333,165995.45578310077 482311.04407232424,165986.90472601514 482308.30205776816,165982.0726736712 482294.6751175899,165979.4386831764 482292.11407342803,165976.74666644353 482289.497158236,165899.84941197015 482264.8940946159,165869.29827784642 482255.2771259079,165868.52726891052 482258.56606753974,165868.38028862118 482260.3340663107,165868.4712669673 482261.86314850824,165868.77225205908 482263.40203940653,165869.67226675144 482265.7321144773,165870.67225428545 482267.33307287534,165871.79227875813 482268.6280967436,165873.43232301722 482269.94106750196,165872.85431873804 482271.73604384495,165859.39522142088 482267.4240714624),(165940.77448270976 482218.33322843845,165944.22452076612 482227.1041601321,165950.84449544462 482224.5042468528,165947.40550719973 482215.704183836,165940.77448270976 482218.33322843845),(165988.2834341863 481993.02561051334,165987.16844019052 481996.4996890827,165988.64441476608 481996.9726212037,165987.372450483 482000.9536037061,165989.25942115605 482001.5556273442,165987.4364448771 482007.27065934683,165996.94850338978 482010.288634211,165999.36648882768 482002.6816601978,166004.11051088283 482004.19563692395,166006.53747695938 481996.633637221,166001.79845842728 481995.1046486911,166004.25946674342 481987.5016673862,165994.78641562958 481984.4296911814,165992.936448327 481990.13664986735,165991.03443861072 481989.5206833329,165989.74945852134 481993.497630687,165988.2834341863 481993.02561051334)),((165770.70677304774 480876.53069712035,165770.536768592 480876.0047152948,165773.1827870658 480875.57578046166,165775.54973754956 480875.19775313267,165805.11504480283 480966.92162979336,165834.14510546066 480957.56464399444,165891.6666154965 481136.02359245205,165905.31869812732 481178.3775641539,165836.31353847278 481200.6194925535,165822.6624279071 481158.26549094514,165814.0884203272 481161.02952517034,165811.68239555878 481148.67550719803,165823.73143364282 481145.3844633131,165854.20752218604 481135.45653249667,165847.1513999863 481113.57252679195,165841.32134709298 481095.4945620494,165835.492344386 481077.4156058137,165829.66525436094 481059.3465638337,165822.60918593645 481037.46259682236,165815.54912171973 481015.56861839304,165809.99907371998 480998.4285956074,165802.02399302027 480973.6876148568,165794.05297156327 480948.95566952834,165788.1319265725 480930.5877322591,165782.22086577112 480912.2487532343,165776.30278118345 480893.88973914855,165770.70677304774 480876.53069712035),(165833.25349588718 481161.17546683183,165832.3144548628 481161.5215512784,165836.15848971994 481173.47150982666,165837.11053207144 481173.1655096956,165843.1235316795 481191.85549232556,165851.94157576005 481189.0094869923,165860.50362192755 481186.2464934498,165869.06465495183 481183.48351249145,165877.62665215324 481180.720548479,165886.18763645564 481177.9574857892,165896.2337106576 481174.71549742355,165886.28362180485 481143.98556564905,165876.25758868846 481147.235518126,165867.70355799777 481150.00851581164,165859.15056190282 481152.7805291889,165853.91450703648 481154.47847423767,165852.19550400035 481148.7454882739,165850.19450258528 481142.07448384096,165849.5824694122 481140.03155528376,165849.43850588406 481140.07452058146,165852.05248622812 481148.7925723464,165853.77149161507 481154.5245568851,165850.60753492877 481155.55046525295,165842.05346714336 481158.3225058388,165834.20445387694 481160.8674610125,165833.25349588718 481161.17546683183)),((165960.17927882302 481921.8258100093,166012.34424551582 481759.0840178028,166022.14521790974 481728.24511586566,166031.79418719656 481696.74509726476,166041.42513576322 481663.6941479141,166049.5850707105 481633.26420126244,166058.68402618731 481593.5952206984,166064.62495930243 481559.2152395635,166069.32390902136 481528.5953227781,166074.02386650007 481485.3043251416,166076.93381866926 481448.8553972129,166078.08471020023 481415.6754693985,166077.9346373195 481376.3654226637,166076.77359289434 481337.3455119879,166073.33447668666 481291.5845675772,166067.3343192893 481245.95563193766,166061.37422548773 481209.90462836804,166054.33414940542 481174.0956631055,166046.7030684515 481141.6757140136,166037.18297547125 481107.11472961167,166024.8938545033 481067.4346662247,165975.01141201917 480912.1598730747,165908.78982323577 480706.0200216608,165932.4678412107 480697.9859559182,165962.33810554908 480790.9669277343,166048.71992073982 481059.8637894088,166061.18305531278 481100.10373740544,166070.93011676625 481135.4857379878,166078.7762296343 481168.82068623864,166085.97631042093 481205.444609844,166092.06841256854 481242.295594639,166098.21153095478 481289.0156036395,166101.7456417802 481336.0315043455,166102.93369437646 481375.9605096085,166103.08684389706 481416.0574241747,166101.8988601309 481450.2853709817,166098.9169394697 481487.64036907634,166094.11802925434 481531.8473813481,166089.29909334317 481563.24629943684,166083.20415541553 481598.5192454308,166073.85019402683 481639.2992494934,166065.4712408115 481670.5332167183,166055.72829030015 481703.96917686274,166046.02629930346 481735.6421578694,166036.17032815237 481766.6561312795,165880.66728750238 482251.79012318875,165879.3223348805 482255.98515759007,165870.91425172254 482253.2841598908,165864.58023530198 482251.2500981201,165859.39522142088 482267.4240714624,165850.33523032715 482264.5140551999,165960.17927882302 481921.8258100093)),((165893.09843377655 481540.1511493943,165865.49131977314 481532.05914822913,165867.54927288933 481525.10522256023,165879.0643191656 481528.5361596588,165891.77638575548 481532.2681751332,165895.13041732486 481533.24123828445,165893.09843377655 481540.1511493943)),((165869.08127331096 481519.9271384061,165880.59932803316 481523.3591982882,165893.3063660066 481527.08920379117,165896.64740066387 481528.08315691736,165895.13041732486 481533.24123828445,165891.77638575548 481532.2681751332,165879.0643191656 481528.5361596588,165867.54927288933 481525.10522256023,165869.08127331096 481519.9271384061)),((165869.08127331096 481519.9271384061,165870.61327667205 481514.749166038,165882.13434009094 481518.1822374329,165894.84434836917 481521.9311682699,165898.16535466668 481522.9191811999,165896.65241750143 481528.06514321023,165896.64740066387 481528.08315691736,165893.3063660066 481527.08920379117,165880.59932803316 481523.3591982882,165869.08127331096 481519.9271384061)),((165872.1452832179 481509.57119418646,165883.66833510826 481513.0041622153,165896.3713373239 481516.7511899681,165899.69038288604 481517.7331913193,165898.17435241595 481522.8891597626,165898.16535466668 481522.9191811999,165894.84434836917 481521.9311682699,165882.13434009094 481518.1822374329,165870.61327667205 481514.749166038,165872.1452832179 481509.57119418646)),((165872.1452832179 481509.57119418646,165873.67729294812 481504.3932228555,165885.20328536665 481507.8272022588,165897.90333968002 481511.55620259815,165901.21136076152 481512.5612122759,165899.69635646036 481517.7141783537,165899.69038288604 481517.7331913193,165896.3713373239 481516.7511899681,165883.66833510826 481513.0041622153,165872.1452832179 481509.57119418646)),((165875.20924209635 481499.2132491519,165886.73728430836 481502.6502407134,165899.42234036024 481506.3842186977,165902.7343960123 481507.3852327769,165901.218365878 481512.5381960822,165901.21136076152 481512.5612122759,165897.90333968002 481511.55620259815,165885.20328536665 481507.8272022588,165873.67729294812 481504.3932228555,165875.20924209635 481499.2132491519)),((165876.74125623505 481494.0361689687,165888.2723115794 481497.4721693098,165900.94134198249 481501.21323667804,165903.3433580554 481501.92918564315,165904.25833845264 481502.20124477724,165902.74037624605 481507.3632156981,165902.7343960123 481507.3852327769,165899.42234036024 481506.3842186977,165886.73728430836 481502.6502407134,165875.20924209635 481499.2132491519,165876.74125623505 481494.0361689687)),((165891.82230733614 481491.62027832307,165897.47634055186 481493.30127379094,165906.11937296687 481495.87120313005,165904.2623919882 481502.18723446043,165904.25833845264 481502.20124477724,165903.3433580554 481501.92918564315,165900.94134198249 481501.21323667804,165888.2723115794 481497.4721693098,165876.74125623505 481494.0361689687,165878.61824088683 481487.69324565696,165888.9282799268 481490.7592738712,165891.82230733614 481491.62027832307)),((165944.79885145818 481178.7555598329,165940.9638250668 481166.8606115619,165944.81482477117 481165.61553636834,165948.64786753405 481177.50959311274,165944.79885145818 481178.7555598329)),((165936.54584356796 481207.699518199,165929.67582654592 481209.9104735108,165924.12884127168 481211.6925502743,165920.90381222923 481201.6855597624,165933.3258276864 481197.68652243924,165934.48284759425 481201.28257951763,165936.54584356796 481207.699518199)),((165932.71481026363 481195.78856254957,165942.92389217904 481192.4915092783,165948.63385924912 481190.6505113363,165952.46891637606 481202.5455774916,165943.42091453492 481205.48758226004,165936.54584356796 481207.699518199,165934.48284759425 481201.28257951763,165933.3258276864 481197.68652243924,165932.71481026363 481195.78856254957)),((165928.88381791487 481183.8815045006,165926.81775358738 481177.45555016235,165925.6577841699 481173.8315612609,165925.0648026079 481171.97659024666,165935.2657636092 481168.7025348458,165940.9638250668 481166.8606115619,165944.79885145818 481178.7555598329,165935.77478973227 481181.6766027653,165928.88381791487 481183.8815045006)),((165960.13897532108 481226.33549698483,165956.30395514896 481214.44053561985,165960.15095575404 481213.20058163744,165963.9829787248 481225.09053244634,165960.13897532108 481226.33549698483)),((165956.30395514896 481214.44053561985,165952.46891637606 481202.5455774916,165956.3139019831 481201.2956022904,165960.15095575404 481213.20058163744,165956.30395514896 481214.44053561985)),((165952.48285594245 481189.4095544417,165956.3139019831 481201.2956022904,165952.46891637606 481202.5455774916,165948.63385924912 481190.6505113363,165952.48285594245 481189.4095544417)),((165944.79885145818 481178.7555598329,165948.64786753405 481177.50959311274,165952.48285594245 481189.4095544417,165948.63385924912 481190.6505113363,165944.79885145818 481178.7555598329)),((165940.9817653917 481153.7205927461,165944.81482477117 481165.61553636834,165940.9638250668 481166.8606115619,165937.12878032168 481154.9655552655,165940.9817653917 481153.7205927461)),((165940.9817653917 481153.7205927461,165937.12878032168 481154.9655552655,165932.37375480027 481140.215544091,165936.22770472043 481138.9705800083,165940.9817653917 481153.7205927461)),((165964.89403841048 481241.0855376612,165963.05302768055 481235.37549498817,165960.13897532108 481226.33549698483,165963.9829787248 481225.09053244634,165968.73504042928 481239.8365646448,165964.89403841048 481241.0855376612)),((165802.02399302027 480973.6876148568,165809.99907371998 480998.4285956074,165779.5610147902 481008.2696508966,165771.58796925325 480983.53361928085,165802.02399302027 480973.6876148568)),((165822.60918593645 481037.46259682236,165817.2181719826 481039.1916174552,165794.19015259045 481046.6316150005,165787.17005423043 481024.74455156905,165815.54912171973 481015.56861839304,165822.60918593645 481037.46259682236)),((165798.50226476917 481099.8185601817,165803.45727884932 481115.1415537492,165773.7592437802 481124.71645183617,165768.84218902295 481109.45854900277,165780.27220397923 481105.77951771766,165798.50226476917 481099.8185601817)),((165799.21918812083 481069.22953836713,165792.16316066612 481047.3965737889,165794.19015259045 481046.6316150005,165817.2181719826 481039.1916174552,165822.60918593645 481037.46259682236,165829.66525436094 481059.3465638337,165799.21918812083 481069.22953836713)),((165793.75132829722 481128.7324718677,165804.16329833507 481125.3754932473,165805.13332047366 481128.41556881135,165811.68239555878 481148.67550719803,165801.26337168008 481152.0354586903,165799.45834097321 481146.42046541837,165793.75132829722 481128.7324718677)),((165799.21918812083 481069.22953836713,165829.66525436094 481059.3465638337,165835.492344386 481077.4156058137,165827.0243031839 481080.140574016,165805.03924028226 481087.31955796864,165799.21918812083 481069.22953836713)),((165805.03924028226 481087.31955796864,165810.88331013816 481105.4135319523,165816.684352003 481123.520548419,165823.73143364282 481145.3844633131,165811.68239555878 481148.67550719803,165805.13332047366 481128.41556881135,165804.16329833507 481125.3754932473,165803.45727884932 481115.1415537492,165798.50226476917 481099.8185601817,165794.10724982165 481086.1055626836,165789.6861977294 481072.3145165163,165782.8121049136 481050.9255724577,165780.94908950687 481051.5405763582,165780.9100788994 481051.4195472039,165773.96205107903 481030.0095373427,165770.60704551917 481019.56454185536,165764.62994572392 481000.72964452335,165766.48497205196 481000.12763493793,165760.2829465038 480980.82661333535,165754.13286905934 480961.78963160724,165749.70980006928 480948.00763282424,165745.2717564758 480934.2646594566,165740.36473812314 480918.93471362256,165737.27473821864 480909.47467202117,165735.34367652657 480903.5747064268,165728.6406590719 480882.8817283568,165738.63867681925 480881.33275286073,165745.8437160834 480903.65674301836,165751.77780333883 480922.0406786393,165757.69286757722 480940.40366301994,165763.60686910295 480958.7646501255,165771.58796925325 480983.53361928085,165779.5610147902 481008.2696508966,165809.99907371998 480998.4285956074,165815.54912171973 481015.56861839304,165787.17005423043 481024.74455156905,165794.19015259045 481046.6316150005,165792.16316066612 481047.3965737889,165799.21918812083 481069.22953836713,165805.03924028226 481087.31955796864)),((165789.3793831147 481175.28645827976,165798.1083621269 481172.4784371293,165802.17141415383 481185.08041044057,165805.42044916144 481195.3554100336,165807.87149465547 481203.2124552643,165799.14445585056 481206.0284744372,165797.98348239536 481202.20045515895,165794.95742641244 481192.6604017623,165789.3793831147 481175.28645827976)),((165816.59847525915 481200.39645136514,165807.87149465547 481203.2124552643,165805.42044916144 481195.3554100336,165802.17141415383 481185.08041044057,165798.1083621269 481172.4784371293,165806.8374214708 481169.66943018365,165812.40746069382 481187.03046920174,165815.44652074503 481196.56544361706,165816.59847525915 481200.39645136514)),((165804.22552325492 481247.50836312154,165798.77555773532 481249.27043149626,165794.17451525794 481234.89239922474,165790.040483603 481222.11336638086,165795.49251017885 481220.3564110396,165796.72551110067 481224.17145823693,165799.6014908201 481233.142403265,165804.22552325492 481247.50836312154)),((165806.8374214708 481169.66943018365,165815.2434093422 481166.9654316354,165819.13143646508 481179.05043658486,165822.57751450696 481189.81243685796,165825.1135385119 481197.6484255169,165816.59847525915 481200.39645136514,165815.44652074503 481196.56544361706,165812.40746069382 481187.03046920174,165806.8374214708 481169.66943018365)),((165832.3144548628 481161.5215512784,165833.25349588718 481161.17546683183,165837.11053207144 481173.1655096956,165836.15848971994 481173.47150982666,165832.3144548628 481161.5215512784)),((165812.5765474452 481244.8093578957,165804.22552325492 481247.50836312154,165799.6014908201 481233.142403265,165796.72551110067 481224.17145823693,165795.49251017885 481220.3564110396,165803.84649189602 481217.6644071663,165809.0895179343 481233.8873874305,165812.5765474452 481244.8093578957)),((165812.5765474452 481244.8093578957,165809.0895179343 481233.8873874305,165803.84649189602 481217.6644071663,165812.20055093075 481214.97241758025,165813.447537585 481218.7784872005,165816.36456501708 481227.73640273476,165817.3325355461 481230.73542040045,165820.9275807907 481242.11036678863,165812.5765474452 481244.8093578957)),((165826.3776279051 481240.34943564463,165820.9275807907 481242.11036678863,165817.3325355461 481230.73542040045,165816.36456501708 481227.73640273476,165813.447537585 481218.7784872005,165812.20055093075 481214.97241758025,165817.6525229432 481213.2164879185,165818.91056491237 481217.01646362,165821.8195992788 481225.9774802488,165826.3776279051 481240.34943564463)),((165830.64859399022 481234.9194398026,165826.6675734102 481236.20047952776,165827.8525865298 481239.8724551546,165826.3776279051 481240.34943564463,165821.8195992788 481225.9774802488,165818.91056491237 481217.01646362,165817.6525229432 481213.2164879185,165823.10456946667 481211.45945178793,165827.27456949902 481224.218452369,165830.64859399022 481234.9194398026)),((165784.28590465026 481459.9431598627,165784.580929966 481459.00217660615,165785.5959004123 481455.5502011837,165788.38689940557 481456.3701971199,165793.87290232416 481437.7101881182,165794.01687317196 481437.75322834554,165795.3618555604 481433.1752054869,165802.763925968 481435.3552630413,165794.65391076147 481462.99320677517,165784.28590465026 481459.9431598627)),((165808.99602089508 481467.20522848406,165817.18399556502 481439.5251983774,165824.62502849937 481441.7132738949,165823.24797464852 481446.3232626617,165823.3920156111 481446.3651912605,165820.74502463543 481455.3992599747,165817.9330455101 481464.9632532137,165820.70304772386 481465.77721317613,165819.68900930948 481469.22918355267,165819.3730647613 481470.2552359135,165808.99602089508 481467.20522848406)),((165819.3730647613 481470.2552359135,165819.68900930948 481469.22918355267,165820.70304772386 481465.77721317613,165817.9330455101 481464.9632532137,165820.74502463543 481455.3992599747,165823.3920156111 481446.3651912605,165823.24797464852 481446.3232626617,165824.62502849937 481441.7132738949,165830.42703771713 481443.41921739513,165829.05303822085 481448.0332167751,165826.41504651489 481457.0631854822,165823.5790666665 481466.6232286844,165822.25705417473 481471.10315962805,165819.3730647613 481470.2552359135)),((165822.25705417473 481471.10315962805,165823.5790666665 481466.6232286844,165826.41504651489 481457.0631854822,165829.05303822085 481448.0332167751,165830.42703771713 481443.41921739513,165836.22904270093 481445.12527897663,165834.85802961228 481449.74317757157,165834.7140592224 481449.70024741895,165832.06707809644 481458.72118103574,165827.9150598663 481472.76617049647,165827.6230319796 481472.67918898124,165822.25705417473 481471.10315962805)),((165836.6310674592 481475.3272369474,165834.77111099343 481481.66921192576,165831.42309653418 481480.7601800219,165818.66706306094 481476.97414995317,165807.1290240118 481473.57022994,165808.99602089508 481467.20522848406,165819.3730647613 481470.2552359135,165822.25705417473 481471.10315962805,165827.6230319796 481472.67918898124,165827.9150598663 481472.76617049647,165836.6310674592 481475.3272369474)),((165702.08617533752 481203.37240525684,165707.698228188 481220.81630912225,165710.67626070618 481230.3733395914,165711.8762536899 481234.1892952708,165703.4442182028 481236.91032514203,165697.7431872291 481218.77539447945,165693.68317810545 481206.0753786871,165702.08617533752 481203.37240525684)),((165720.60230581425 481231.373342504,165711.8762536899 481234.1892952708,165710.67626070618 481230.3733395914,165707.698228188 481220.81630912225,165702.08617533752 481203.37240525684,165710.81519307548 481200.5633400208,165714.9112243282 481213.23540953355,165718.11326585078 481223.5293871783,165720.60230581425 481231.373342504)),((165714.91335148847 481272.22036780615,165707.31329987882 481248.74530289543,165714.59331353637 481246.3942909105,165715.8582840432 481250.2073845911,165722.21137888666 481269.8803100119,165720.5043766146 481270.4373732078,165714.91335148847 481272.22036780615)),((165727.38639761863 481272.2523536715,165716.10334139835 481275.895331588,165714.91335148847 481272.22036780615,165720.5043766146 481270.4373732078,165722.21137888666 481269.8803100119,165726.19135907304 481268.5822718183,165727.38639761863 481272.2523536715)),((165714.59331353637 481246.3942909105,165720.04529258763 481244.63435943174,165721.30132114777 481248.45032795117,165728.82339729104 481271.7892804257,165727.38639761863 481272.2523536715,165726.19135907304 481268.5822718183,165722.21137888666 481269.8803100119,165715.8582840432 481250.2073845911,165714.59331353637 481246.3942909105)),((165720.60230581425 481231.373342504,165718.11326585078 481223.5293871783,165714.9112243282 481213.23540953355,165710.81519307548 481200.5633400208,165719.54421835704 481197.7554028533,165725.1382394831 481215.1883834767,165728.14926428013 481224.7353711206,165729.32932247905 481228.5574072319,165720.60230581425 481231.373342504)),((165705.3020483263 481146.65442658326,165675.90201051926 481156.17036465387,165669.55094053983 481136.19542623137,165698.88103838265 481126.7204665121,165700.41401468738 481131.47843376535,165705.3020483263 481146.65442658326)),((165695.87495793874 481117.38646867196,165698.88103838265 481126.7204665121,165669.55094053983 481136.19542623137,165663.1508710861 481116.216385467,165692.44894243017 481106.7494406987,165695.87495793874 481117.38646867196)),((165692.44894243017 481106.7494406987,165663.1508710861 481116.216385467,165656.7638580151 481096.22948227986,165686.00988237115 481086.7584927733,165686.81593508384 481089.2614522431,165691.34494702617 481103.3244577809,165692.44894243017 481106.7494406987)),((165682.26786047127 481075.1414428623,165686.00988237115 481086.7584927733,165656.7638580151 481096.22948227986,165650.34775066923 481076.2404114006,165679.56785737386 481066.7585352824,165682.26786047127 481075.1414428623)),((165677.7228085178 481061.03045700997,165679.56785737386 481066.7585352824,165650.34775066923 481076.2404114006,165643.97375326228 481056.2404253602,165673.12279942227 481046.74945683393,165677.7228085178 481061.03045700997)),((165665.2167271966 481022.23148489284,165669.75774128851 481036.3195289759,165657.01070788447 481040.44147329027,165640.6076735651 481045.7844793601,165633.76962697253 481024.34352915717,165662.85469769547 481014.9065478738,165665.2167271966 481022.23148489284)),((165656.1386727924 480994.0735551053,165660.6777128998 481008.1525733653,165662.85469769547 481014.9065478738,165633.76962697253 481024.34352915717,165626.91556022537 481002.9364904099,165655.95464276624 480993.50259621587,165656.1386727924 480994.0735551053)),((165649.0525699072 480972.0895271607,165651.6006294285 480979.9945435866,165655.95464276624 480993.50259621587,165626.91556022537 481002.9364904099,165620.04149362512 480981.51150561386,165649.0525699072 480972.0895271607)),((165656.1386727924 480994.0735551053,165655.95464276624 480993.50259621587,165651.6006294285 480979.9945435866,165680.7376970608 480970.5815901459,165685.28873225473 480984.6725617586,165656.1386727924 480994.0735551053)),((165660.6777128998 481008.1525733653,165656.1386727924 480994.0735551053,165685.28873225473 480984.6725617586,165689.82074318492 480998.7515915497,165671.74072219664 481004.55650303455,165660.6777128998 481008.1525733653)),((165660.6777128998 481008.1525733653,165671.74072219664 481004.55650303455,165689.82074318492 480998.7515915497,165694.39581986226 481012.8314980565,165665.2167271966 481022.23148489284,165662.85469769547 481014.9065478738,165660.6777128998 481008.1525733653)),((165694.39581986226 481012.8314980565,165698.92286276966 481026.9135303987,165685.32080501522 481031.3154916907,165678.1797602082 481033.61855879077,165669.75774128851 481036.3195289759,165665.2167271966 481022.23148489284,165694.39581986226 481012.8314980565)),((165677.7228085178 481061.03045700997,165673.12279942227 481046.74945683393,165700.16085605856 481038.04550473945,165704.7448605624 481052.2855502074,165677.7228085178 481061.03045700997)),((165682.26786047127 481075.1414428623,165679.56785737386 481066.7585352824,165677.7228085178 481061.03045700997,165704.7448605624 481052.2855502074,165706.80189334918 481051.65246858,165711.3709330973 481065.73549467267,165694.0118988219 481071.4235043166,165682.26786047127 481075.1414428623)),((165682.26786047127 481075.1414428623,165694.0118988219 481071.4235043166,165711.3709330973 481065.73549467267,165715.89894905448 481079.7955159842,165686.81593508384 481089.2614522431,165686.00988237115 481086.7584927733,165682.26786047127 481075.1414428623)),((165686.81593508384 481089.2614522431,165715.89894905448 481079.7955159842,165720.4460383135 481093.8835105415,165706.03001425508 481098.5694844996,165691.34494702617 481103.3244577809,165686.81593508384 481089.2614522431)),((165692.44894243017 481106.7494406987,165691.34494702617 481103.3244577809,165706.03001425508 481098.5694844996,165720.4460383135 481093.8835105415,165724.99705833508 481107.97051686584,165710.78603248336 481112.59450324246,165695.87495793874 481117.38646867196,165692.44894243017 481106.7494406987)),((165724.99705833508 481107.97051686584,165729.54009859625 481122.04649532033,165711.89106420428 481127.78944391175,165700.41401468738 481131.47843376535,165698.88103838265 481126.7204665121,165695.87495793874 481117.38646867196,165710.78603248336 481112.59450324246,165724.99705833508 481107.97051686584)),((165734.4521396814 481137.24548951746,165705.3020483263 481146.65442658326,165700.41401468738 481131.47843376535,165711.89106420428 481127.78944391175,165729.54009859625 481122.04649532033,165734.4521396814 481137.24548951746)),((165738.16194859543 481014.2605593478,165742.755978062 481028.52258053963,165715.05491697186 481037.37150660635,165710.47685048796 481023.1045389031,165738.16194859543 481014.2605593478)),((165733.55590598722 480999.96057572326,165736.62288285774 481009.4805378496,165738.16194859543 481014.2605593478,165710.47685048796 481023.1045389031,165710.46285964557 481023.0475413903,165708.35282638256 481023.71555468504,165703.78783296674 481009.5996071852,165733.55590598722 480999.96057572326)),((165699.20177862456 480995.4046212557,165716.56078040772 480989.73153913725,165728.96582642768 480985.70758491463,165730.4898739962 480990.4396163693,165733.55590598722 480999.96057572326,165703.78783296674 481009.5996071852,165699.20177862456 480995.4046212557)),((165699.20177862456 480995.4046212557,165694.5887459312 480981.1235745071,165724.35281870016 480971.3875680756,165728.96582642768 480985.70758491463,165716.56078040772 480989.73153913725,165699.20177862456 480995.4046212557)),((165690.96304236684 481161.88443377306,165698.48310648455 481185.17838073144,165688.07310791782 481188.53536355897,165681.53306035264 481168.2743844818,165680.54303647086 481165.24541627563,165690.96304236684 481161.88443377306)),((165701.241071616 481158.56945126434,165703.20107209298 481164.64838160586,165708.76914462214 481181.860427097,165698.48310648455 481185.17838073144,165690.96304236684 481161.88443377306,165701.241071616 481158.56945126434)),((165711.51911494508 481155.254378882,165717.22517172978 481172.9383812277,165719.04618793767 481178.5463695621,165708.76914462214 481181.860427097,165703.20107209298 481164.64838160586,165701.241071616 481158.56945126434,165711.51911494508 481155.254378882)),((165721.79710368768 481151.9394390017,165723.74411552557 481158.02346741577,165725.91517520873 481164.6724258073,165729.32317666116 481175.2324445252,165719.04618793767 481178.5463695621,165717.22517172978 481172.9383812277,165711.51911494508 481155.254378882,165721.79710368768 481151.9394390017)),((165729.32317666116 481175.2324445252,165725.91517520873 481164.6724258073,165723.74411552557 481158.02346741577,165721.79710368768 481151.9394390017,165732.07517469442 481148.62440939253,165733.6001518292 481153.37447009963,165739.60024764334 481171.918429759,165729.32317666116 481175.2324445252)),((165744.0691597118 481134.3254810618,165734.4521396814 481137.24548951746,165729.54009859625 481122.04649532033,165724.99705833508 481107.97051686584,165720.4460383135 481093.8835105415,165715.89894905448 481079.7955159842,165711.3709330973 481065.73549467267,165706.80189334918 481051.65246858,165704.7448605624 481052.2855502074,165700.16085605856 481038.04550473945,165673.12279942227 481046.74945683393,165643.97375326228 481056.2404253602,165640.6076735651 481045.7844793601,165657.01070788447 481040.44147329027,165669.75774128851 481036.3195289759,165678.1797602082 481033.61855879077,165685.32080501522 481031.3154916907,165698.92286276966 481026.9135303987,165694.39581986226 481012.8314980565,165689.82074318492 480998.7515915497,165685.28873225473 480984.6725617586,165680.7376970608 480970.5815901459,165676.18266685502 480956.4655801002,165671.2726088129 480941.31761282677,165680.77863373855 480938.2345733982,165685.66868356994 480953.4786388692,165690.1106654938 480967.2975605761,165694.5887459312 480981.1235745071,165699.20177862456 480995.4046212557,165703.78783296674 481009.5996071852,165708.35282638256 481023.71555468504,165710.46285964557 481023.0475413903,165710.47685048796 481023.1045389031,165715.05491697186 481037.37150660635,165742.755978062 481028.52258053963,165749.7149720541 481026.265607322,165757.8109932328 481023.6556331221,165770.60704551917 481019.56454185536,165773.96205107903 481030.0095373427,165746.13098868445 481038.97950592457,165716.31991080538 481048.61158124864,165720.882987899 481062.85448954423,165725.50401482623 481077.15149142453,165730.10002995466 481091.43053018703,165734.55407641333 481105.2304959504,165739.06214865297 481119.03948478634,165744.0691597118 481134.3254810618)),((165601.6954647942 481546.6719394332,165603.2665091612 481557.8749336627,165605.13056301366 481571.1788902562,165606.29552746078 481579.4919302932,165603.93553425858 481579.8729459884,165601.81456528604 481580.6709376807,165600.84352435562 481581.3269791026,165599.85957510618 481582.0889164069,165597.87554561417 481582.77493841195,165596.68251470744 481583.4638832395,165593.01144504713 481547.03092506714,165601.6954647942 481546.6719394332)),((165613.28859894958 481577.5799795205,165608.9645699642 481578.9539187594,165606.29552746078 481579.4919302932,165605.13056301366 481571.1788902562,165603.2665091612 481557.8749336627,165601.6954647942 481546.6719394332,165608.92851025684 481546.3739382984,165610.40250501593 481556.91793163173,165612.08657528792 481568.9728984502,165613.28859894958 481577.5799795205)),((165620.21859594 481575.1679933951,165619.30361080015 481575.3409318947,165618.05659153924 481575.7699537777,165615.57457625074 481577.282924743,165613.28859894958 481577.5799795205,165612.08657528792 481568.9728984502,165610.40250501593 481556.91793163173,165608.92851025684 481546.3739382984,165616.15855676873 481546.07594130037,165617.5385718406 481555.9609400558,165619.04956229002 481566.7919658535,165620.21859594 481575.1679933951)),((165623.9376382452 481574.2589582951,165623.01662087196 481574.6369428262,165620.21859594 481575.1679933951,165619.04956229002 481566.7919658535,165617.5385718406 481555.9609400558,165616.15855676873 481546.07594130037,165630.81959485167 481545.47095438227,165630.21454977486 481547.5409433741,165628.09460247122 481555.2969364661,165625.4496212022 481564.38196237275,165623.9376382452 481574.2589582951)),((165628.31663550483 481572.72292747104,165628.04863887076 481572.71700972883,165627.295598274 481572.8799478917,165623.9376382452 481574.2589582951,165625.4496212022 481564.38196237275,165628.09460247122 481555.2969364661,165630.21454977486 481547.5409433741,165630.81959485167 481545.47095438227,165631.22455350097 481544.08903662313,165633.3745833264 481544.7169693225,165636.29257085733 481545.5699760255,165633.00861587102 481556.7359281843,165630.34462376888 481565.81200944126,165628.31663550483 481572.72292747104)),((165633.3856519854 481573.5369492708,165632.82463946828 481573.27093218954,165630.5476559399 481572.77791210177,165628.31663550483 481572.72292747104,165630.34462376888 481565.81200944126,165633.00861587102 481556.7359281843,165636.29257085733 481545.5699760255,165639.0665883725 481546.3799487256,165641.1875889794 481547.00003377564,165640.17763841612 481550.4559441469,165637.91261260203 481558.1710089705,165635.23962159565 481567.2429514656,165633.3856519854 481573.5369492708)),((165641.1875889794 481547.00003377564,165643.28964864177 481547.61395936704,165646.08260235947 481548.430986488,165642.7976639682 481559.6009356378,165640.13564119017 481568.67301044683,165638.23264531 481575.1569398359,165637.4426444891 481575.10194171686,165635.3536547517 481574.47091204784,165633.3856519854 481573.5369492708,165635.23962159565 481567.2429514656,165637.91261260203 481558.1710089705,165640.17763841612 481550.4559441469,165641.1875889794 481547.00003377564)),((165646.08260235947 481548.430986488,165648.85661667652 481549.24096469354,165650.96862176774 481549.85803041206,165649.958664692 481553.31405006663,165647.69163715083 481561.03400178667,165645.03063553 481570.10296081327,165643.2706992526 481576.0999714038,165639.91967184047 481575.27395426604,165638.23264531 481575.1569398359,165640.13564119017 481568.67301044683,165642.7976639682 481559.6009356378,165646.08260235947 481548.430986488)),((165650.96862176774 481549.85803041206,165653.05364497183 481550.467027788,165657.99464405555 481551.91099821345,165650.32766874752 481578.0449577952,165648.0466597634 481577.8079396033,165644.648671317 481576.43896047387,165643.2706992526 481576.0999714038,165645.03063553 481570.10296081327,165647.69163715083 481561.03400178667,165649.958664692 481553.31405006663,165650.96862176774 481549.85803041206)),((165597.10836855051 481501.71796845895,165598.75642536755 481513.5499901675,165600.78144138883 481528.0779719089,165601.90946393978 481536.1719631933,165601.79148220416 481536.1869529567,165600.50544929018 481536.5239913413,165598.6064298529 481537.42793941393,165597.56047163295 481538.20198303956,165595.37948262927 481538.55801897385,165594.34147427918 481538.8050224204,165592.372445522 481540.68994923134,165588.5163591032 481502.0869509593,165597.10836855051 481501.71796845895)),((165597.10836855051 481501.71796845895,165604.32943953897 481501.40702809585,165605.8934301998 481512.59698919836,165607.74949452898 481525.88001087715,165608.8854826356 481534.00595366396,165608.20447646998 481534.1490220308,165606.98346215248 481534.59201060794,165605.26547829775 481535.54897306906,165604.510497712 481535.8509906347,165601.90946393978 481536.1719631933,165600.78144138883 481528.0779719089,165598.75642536755 481513.5499901675,165597.10836855051 481501.71796845895)),((165615.8315313926 481531.766010167,165615.3114868945 481531.91298419517,165611.34546807274 481533.4889680317,165608.8854826356 481534.00595366396,165607.74949452898 481525.88001087715,165605.8934301998 481512.59698919836,165604.32943953897 481501.40702809585,165611.56142035974 481501.0960104723,165613.03043996624 481511.64299716364,165614.70650677482 481523.6830372915,165615.8315313926 481531.766010167)),((165622.75852275462 481529.29204706463,165620.85555015082 481529.8120057646,165618.75952816228 481531.2989910082,165616.7705169842 481531.50099598616,165615.8315313926 481531.766010167,165614.70650677482 481523.6830372915,165613.03043996624 481511.64299716364,165611.56142035974 481501.0960104723,165618.78644569792 481500.7859898448,165620.16649585604 481510.6900147568,165621.67753720444 481521.5330571065,165622.75852275462 481529.29204706463)),((165625.36251695952 481528.5799986202,165622.75852275462 481529.29204706463,165621.67753720444 481521.5330571065,165620.16649585604 481510.6900147568,165618.78644569792 481500.7859898448,165633.42851383932 481500.1560463788,165632.83250715226 481502.20502546395,165630.69952356882 481510.02007002296,165628.0715206423 481519.09099991864,165625.36251695952 481528.5799986202)),((165631.39255629783 481525.9149679285,165630.9685436477 481525.75995393127,165626.60055760553 481527.95702596626,165625.36251695952 481528.5799986202,165628.0715206423 481519.09099991864,165630.69952356882 481510.02007002296,165632.83250715226 481502.20502546395,165633.42851383932 481500.1560463788,165633.83247599567 481498.76400175615,165635.98251853054 481499.39505090343,165638.89950109937 481500.2520623487,165635.61351528965 481511.4580626708,165632.96656307607 481520.5230521847,165631.39255629783 481525.9149679285)),((165636.15255543543 481527.8090347562,165635.76454149632 481527.74900617154,165633.54852585605 481526.7010197023,165631.39255629783 481525.9149679285,165632.96656307607 481520.5230521847,165635.61351528965 481511.4580626708,165638.89950109937 481500.2520623487,165641.6435532639 481501.0580775339,165643.76354626822 481501.6800529023,165642.74956631157 481505.1340623208,165640.50856337114 481512.89001112076,165637.8615369034 481521.9539965238,165636.15255543543 481527.8090347562)),((165641.0645587276 481529.1800476667,165638.37758717962 481528.1529627594,165636.15255543543 481527.8090347562,165637.8615369034 481521.9539965238,165640.50856337114 481512.89001112076,165642.74956631157 481505.1340623208,165643.76354626822 481501.6800529023,165645.86452733708 481502.2970925542,165648.68557037693 481503.12608684925,165645.4025835435 481514.32307485805,165642.75657368667 481523.3860584972,165641.0645587276 481529.1800476667)),((165645.72461313903 481531.4160453151,165643.13460460407 481529.8150443105,165641.31457092945 481529.27504986216,165641.0645587276 481529.1800476667,165642.75657368667 481523.3860584972,165645.4025835435 481514.32307485805,165648.68557037693 481503.12608684925,165651.4875353038 481503.949033332,165653.5885826305 481504.5660764206,165652.57459638227 481508.0200838466,165650.2975556335 481515.7560342427,165647.65160788404 481524.81801406626,165645.72461313903 481531.4160453151)),((165594.43835523605 481468.28806687647,165600.1983606112 481464.6210421077,165612.83637232205 481459.5890219916,165620.33443431728 481482.60899424774,165617.41239246196 481483.43207033456,165615.567429844 481484.39298408286,165611.76339167368 481487.9240030302,165610.4653846653 481489.7019940075,165609.1804135772 481491.25203327456,165594.43835523605 481468.28806687647)),((165651.00263553346 481531.53602544207,165650.68361048083 481531.4800387959,165648.0476012429 481531.2610583079,165646.0606299827 481531.6230536444,165645.72461313903 481531.4160453151,165647.65160788404 481524.81801406626,165650.2975556335 481515.7560342427,165652.57459638227 481508.0200838466,165653.5885826305 481504.5660764206,165655.69957732878 481505.1860347452,165658.47258306312 481506.00002155197,165655.1925952362 481517.1879972574,165652.54664141696 481526.2489731121,165651.00263553346 481531.53602544207)),((165655.69661185972 481533.65705866605,165655.4066068051 481533.64397103206,165653.0226090003 481532.37297374895,165652.3046370842 481531.7630322554,165651.00263553346 481531.53602544207,165652.54664141696 481526.2489731121,165655.1925952362 481517.1879972574,165658.47258306312 481506.00002155197,165661.29362405348 481506.82802168775,165663.39460076226 481507.4450688031,165662.38060607156 481510.9000756058,165660.08660692768 481518.6210755559,165657.4416015454 481527.68104950315,165655.69661185972 481533.65705866605)),((165663.39460076226 481507.4450688031,165665.47860903255 481508.0580746425,165670.22964096483 481509.46604211105,165662.57364781812 481535.79004389286,165661.11068602707 481535.338044527,165660.1266268186 481534.8480261718,165658.27065199334 481533.7779970369,165655.69661185972 481533.65705866605,165657.4416015454 481527.68104950315,165660.08660692768 481518.6210755559,165662.38060607156 481510.9000756058,165663.39460076226 481507.4450688031)),((165609.1804135772 481491.25203327456,165606.64137371397 481493.6790316174,165604.2244188458 481495.22997775994,165602.0863669969 481495.8700489089,165597.89835535063 481496.7679685144,165593.188377013 481497.3100615866,165588.03632643542 481497.5650396594,165587.65731793118 481493.6549637098,165585.72233638985 481491.07004353654,165587.94934977996 481486.58998821466,165587.7653250545 481478.26604016084,165588.21129993236 481474.9870435183,165590.01334120362 481471.9130116907,165592.43131333546 481469.63706420065,165594.43835523605 481468.28806687647,165609.1804135772 481491.25203327456)),((165625.61842997943 481484.47602831735,165621.1104070053 481482.5680497702,165620.85143608338 481482.51608853386,165620.5864597661 481482.53009397513,165620.33443431728 481482.60899424774,165612.83637232205 481459.5890219916,165620.71241652773 481456.7870874901,165627.99739901253 481454.5000468303,165635.8624803692 481479.10100514797,165634.66750241435 481480.9960390412,165634.4774464169 481481.29904667084,165634.34248522227 481481.63110167166,165634.2674835271 481481.98108809546,165634.09446386903 481482.3830462035,165633.8515055482 481482.7470238606,165633.54647508613 481483.0610215058,165633.18948459928 481483.31504716893,165631.25648065427 481484.411062512,165629.91048233415 481484.59909278114,165627.1144806144 481484.76809059485,165626.603464249 481484.74106588034,165626.10146400786 481484.64307415194,165625.61842997943 481484.47602831735)),((165648.08653428173 481476.2990276144,165647.86148435998 481475.94605757366,165647.57353313183 481475.643020685,165647.2324787548 481475.39906175155,165646.85247903992 481475.2251152005,165646.44552518346 481475.1251011414,165646.02749005595 481475.10506207735,165643.58148713713 481475.28804590553,165642.12246694972 481475.65507555055,165638.07150308546 481477.1080192522,165636.6764993843 481477.95206626377,165636.23644210448 481478.47005359555,165635.8624803692 481479.10100514797,165627.99739901253 481454.5000468303,165636.2674338283 481452.2540818349,165643.30345424515 481450.68607193313,165649.01146646184 481450.635073883,165648.08653428173 481476.2990276144)),((165649.01146646184 481450.635073883,165661.20053165723 481452.01012863585,165669.51655038618 481453.89110264566,165660.14857230982 481485.5410656815,165654.23356992472 481483.0190674538,165653.72155860608 481482.7580494559,165653.2395243348 481482.4440232437,165652.79249916642 481482.08311920054,165652.38654961833 481481.6760179917,165652.02452553634 481481.2290678083,165648.08653428173 481476.2990276144,165649.01146646184 481450.635073883)),((165669.51655038618 481453.89110264566,165677.21057037477 481455.7971147626,165678.09361457388 481474.8440950918,165679.7696094002 481477.1761442125,165675.3816531761 481492.013062,165671.26163448754 481491.7910823835,165667.6125819265 481490.75711747725,165663.79056113077 481487.1331103664,165660.14857230982 481485.5410656815,165669.51655038618 481453.89110264566)),((165681.03342769816 481370.15520559694,165641.61332610715 481382.8551930367,165641.5133125544 481382.5352045473,165638.62327390848 481383.47516436345,165634.75324187803 481371.4851336322,165635.76328570157 481371.1652004403,165635.0433026686 481368.94515537814,165663.8433302382 481360.86520960403,165657.52328062925 481341.24516691454,165628.47320274284 481351.8552004529,165625.06317551967 481341.27521638497,165665.82326523197 481328.1352726176,165666.68328978316 481330.79522885894,165667.64327717246 481330.48520777485,165678.1333795042 481363.04516690416,165678.6834249223 481362.87523271586,165681.03342769816 481370.15520559694)),((165617.09714722337 481317.51421955513,165606.96301187953 481285.8701942276,165646.96914224676 481273.1072177767,165657.14321245725 481304.6542777951,165617.09714722337 481317.51421955513)),((165697.51917027353 481223.1333431713,165698.7212011478 481226.9583123765,165695.85917038817 481227.8583556615,165694.65720787522 481224.0323859261,165697.51917027353 481223.1333431713)),((165691.0211510048 481200.6953381686,165684.65409020818 481202.74839304714,165627.13258731828 481024.289515661,165607.1455695246 481030.731438868,165566.96323440745 480906.0715719191,165574.42528150935 480904.9875946103,165574.58128517252 480905.4695904154,165583.41331453214 480932.7785604291,165586.3243433018 480937.3354978831,165597.32340997134 480954.55349533306,165613.19249478946 480960.0385192044,165620.04149362512 480981.51150561386,165626.91556022537 481002.9364904099,165633.76962697253 481024.34352915717,165640.6076735651 481045.7844793601,165643.97375326228 481056.2404253602,165650.34775066923 481076.2404114006,165656.7638580151 481096.22948227986,165663.1508710861 481116.216385467,165669.55094053983 481136.19542623137,165675.90201051926 481156.17036465387,165680.54303647086 481165.24541627563,165681.53306035264 481168.2743844818,165688.07310791782 481188.53536355897,165691.87410709585 481200.42136204895,165691.16416331995 481200.64936207084,165688.9681318548 481194.1513498069,165688.82613778592 481194.19933092536,165691.0211510048 481200.6953381686)),((165394.9029742899 481052.66726315656,165391.35300913145 481055.2353273808,165419.3029016435 480960.14942550805,165522.93914092943 480915.56648424943,165552.40018022567 480908.1865915554,165566.96323440745 480906.0715719191,165607.1455695246 481030.731438868,165627.13258731828 481024.289515661,165684.65409020818 481202.74839304714,165690.637159789 481221.30839094444,165698.30625700488 481245.10234980984,165726.6254969247 481332.95825022587,165621.25993950333 481746.4797864231,165608.29683258527 481742.66481066804,165530.07598408076 481402.1821074725,165504.24280883875 481322.0651372312,165506.19878915494 481318.29511296586,165535.80903714304 481410.38904937153,165552.20405153732 481405.0530219699,165546.18801888666 481386.17912897764,165541.54601756966 481371.76508184953,165554.2629943963 481367.735124824,165562.40305383655 481365.1051199224,165574.37903995242 481361.12113882875,165564.77300100867 481331.25810891256,165509.9188188538 481314.44116910786,165465.68434751168 481121.8952823013,165427.8932166291 481135.29226641194,165401.2360271267 481050.67228847835,165394.9029742899 481052.66726315656),(165427.52394187503 480977.50537967804,165440.88706372227 481019.16937753715,165489.6121819983 481003.45438690356,165489.7661682667 481003.89342792385,165501.345250247 481038.8804116276,165549.2653961326 481023.05548012163,165537.74729069465 480988.0414772943,165536.48827910237 480984.2474703807,165550.1163297019 480979.8685207914,165551.204297186 480983.2904326845,165554.06332501216 480982.3815094123,165552.97231042304 480978.9504667289,165550.39932501575 480970.86152901244,165538.51629952638 480974.6894406412,165529.12722465204 480945.6495404934,165506.22314893643 480953.0694465758,165498.83109759056 480930.19554248103,165465.89800546746 480944.3154379804,165467.87100096743 480950.48842851777,165464.2350314395 480954.8794289921,165466.6010389317 480962.2814950371,165481.35811240494 480957.5234483394,165482.11709943743 480959.9004340465,165427.52394187503 480977.50537967804),(165584.85220088865 481409.5310950002,165586.09217947957 481413.3250766451,165588.95218029778 481412.39013984415,165587.7132266067 481408.5960484149,165584.85220088865 481409.5310950002),(165585.72233638985 481491.07004353654,165587.65731793118 481493.6549637098,165588.03632643542 481497.5650396594,165593.188377013 481497.3100615866,165597.89835535063 481496.7679685144,165602.0863669969 481495.8700489089,165604.2244188458 481495.22997775994,165606.64137371397 481493.6790316174,165609.1804135772 481491.25203327456,165610.4653846653 481489.7019940075,165611.76339167368 481487.9240030302,165615.567429844 481484.39298408286,165617.41239246196 481483.43207033456,165620.33443431728 481482.60899424774,165620.5864597661 481482.53009397513,165620.85143608338 481482.51608853386,165621.1104070053 481482.5680497702,165625.61842997943 481484.47602831735,165626.10146400786 481484.64307415194,165626.603464249 481484.74106588034,165627.1144806144 481484.76809059485,165629.91048233415 481484.59909278114,165631.25648065427 481484.411062512,165633.18948459928 481483.31504716893,165633.54647508613 481483.0610215058,165633.8515055482 481482.7470238606,165634.09446386903 481482.3830462035,165634.2674835271 481481.98108809546,165634.34248522227 481481.63110167166,165634.4774464169 481481.29904667084,165634.66750241435 481480.9960390412,165635.8624803692 481479.10100514797,165636.23644210448 481478.47005359555,165636.6764993843 481477.95206626377,165638.07150308546 481477.1080192522,165642.12246694972 481475.65507555055,165643.58148713713 481475.28804590553,165646.02749005595 481475.10506207735,165646.44552518346 481475.1251011414,165646.85247903992 481475.2251152005,165647.2324787548 481475.39906175155,165647.57353313183 481475.643020685,165647.86148435998 481475.94605757366,165648.08653428173 481476.2990276144,165652.02452553634 481481.2290678083,165652.38654961833 481481.6760179917,165652.79249916642 481482.08311920054,165653.2395243348 481482.4440232437,165653.72155860608 481482.7580494559,165654.23356992472 481483.0190674538,165660.14857230982 481485.5410656815,165663.79056113077 481487.1331103664,165667.6125819265 481490.75711747725,165671.26163448754 481491.7910823835,165675.3816531761 481492.013062,165679.7696094002 481477.1761442125,165678.09361457388 481474.8440950918,165677.21057037477 481455.7971147626,165669.51655038618 481453.89110264566,165661.20053165723 481452.01012863585,165649.01146646184 481450.635073883,165643.30345424515 481450.68607193313,165636.2674338283 481452.2540818349,165627.99739901253 481454.5000468303,165620.71241652773 481456.7870874901,165612.83637232205 481459.5890219916,165600.1983606112 481464.6210421077,165594.43835523605 481468.28806687647,165592.43131333546 481469.63706420065,165590.01334120362 481471.9130116907,165588.21129993236 481474.9870435183,165587.7653250545 481478.26604016084,165587.94934977996 481486.58998821466,165585.72233638985 481491.07004353654),(165588.5163591032 481502.0869509593,165592.372445522 481540.68994923134,165594.34147427918 481538.8050224204,165595.37948262927 481538.55801897385,165597.56047163295 481538.20198303956,165598.6064298529 481537.42793941393,165600.50544929018 481536.5239913413,165601.79148220416 481536.1869529567,165601.90946393978 481536.1719631933,165604.510497712 481535.8509906347,165605.26547829775 481535.54897306906,165606.98346215248 481534.59201060794,165608.20447646998 481534.1490220308,165608.8854826356 481534.00595366396,165611.34546807274 481533.4889680317,165615.3114868945 481531.91298419517,165615.8315313926 481531.766010167,165616.7705169842 481531.50099598616,165618.75952816228 481531.2989910082,165620.85555015082 481529.8120057646,165622.75852275462 481529.29204706463,165625.36251695952 481528.5799986202,165626.60055760553 481527.95702596626,165630.9685436477 481525.75995393127,165631.39255629783 481525.9149679285,165633.54852585605 481526.7010197023,165635.76454149632 481527.74900617154,165636.15255543543 481527.8090347562,165638.37758717962 481528.1529627594,165641.0645587276 481529.1800476667,165641.31457092945 481529.27504986216,165643.13460460407 481529.8150443105,165645.72461313903 481531.4160453151,165646.0606299827 481531.6230536444,165648.0476012429 481531.2610583079,165650.68361048083 481531.4800387959,165651.00263553346 481531.53602544207,165652.3046370842 481531.7630322554,165653.0226090003 481532.37297374895,165655.4066068051 481533.64397103206,165655.69661185972 481533.65705866605,165658.27065199334 481533.7779970369,165660.1266268186 481534.8480261718,165661.11068602707 481535.338044527,165662.57364781812 481535.79004389286,165670.22964096483 481509.46604211105,165665.47860903255 481508.0580746425,165663.39460076226 481507.4450688031,165661.29362405348 481506.82802168775,165658.47258306312 481506.00002155197,165655.69957732878 481505.1860347452,165653.5885826305 481504.5660764206,165651.4875353038 481503.949033332,165648.68557037693 481503.12608684925,165645.86452733708 481502.2970925542,165643.76354626822 481501.6800529023,165641.6435532639 481501.0580775339,165638.89950109937 481500.2520623487,165635.98251853054 481499.39505090343,165633.83247599567 481498.76400175615,165633.42851383932 481500.1560463788,165618.78644569792 481500.7859898448,165611.56142035974 481501.0960104723,165604.32943953897 481501.40702809585,165597.10836855051 481501.71796845895,165588.5163591032 481502.0869509593),(165593.01144504713 481547.03092506714,165596.68251470744 481583.4638832395,165597.87554561417 481582.77493841195,165599.85957510618 481582.0889164069,165600.84352435562 481581.3269791026,165601.81456528604 481580.6709376807,165603.93553425858 481579.8729459884,165606.29552746078 481579.4919302932,165608.9645699642 481578.9539187594,165613.28859894958 481577.5799795205,165615.57457625074 481577.282924743,165618.05659153924 481575.7699537777,165619.30361080015 481575.3409318947,165620.21859594 481575.1679933951,165623.01662087196 481574.6369428262,165623.9376382452 481574.2589582951,165627.295598274 481572.8799478917,165628.04863887076 481572.71700972883,165628.31663550483 481572.72292747104,165630.5476559399 481572.77791210177,165632.82463946828 481573.27093218954,165633.3856519854 481573.5369492708,165635.3536547517 481574.47091204784,165637.4426444891 481575.10194171686,165638.23264531 481575.1569398359,165639.91967184047 481575.27395426604,165643.2706992526 481576.0999714038,165644.648671317 481576.43896047387,165648.0466597634 481577.8079396033,165650.32766874752 481578.0449577952,165657.99464405555 481551.91099821345,165653.05364497183 481550.467027788,165650.96862176774 481549.85803041206,165648.85661667652 481549.24096469354,165646.08260235947 481548.430986488,165643.28964864177 481547.61395936704,165641.1875889794 481547.00003377564,165639.0665883725 481546.3799487256,165636.29257085733 481545.5699760255,165633.3745833264 481544.7169693225,165631.22455350097 481544.08903662313,165630.81959485167 481545.47095438227,165616.15855676873 481546.07594130037,165608.92851025684 481546.3739382984,165601.6954647942 481546.6719394332,165593.01144504713 481547.03092506714),(165597.5845531633 481592.7809603289,165601.46063956618 481624.22684115765,165602.4566080327 481626.1179109706,165603.4766237798 481624.7488834811,165603.94560087743 481624.40786518116,165605.9586501752 481623.6938694143,165608.3766218822 481622.2119098665,165609.59865615456 481622.0139273513,165610.50162004144 481622.1958936819,165610.90362644003 481622.2768680413,165612.98163506953 481622.0459009408,165615.42563522808 481620.3188860079,165616.78266352086 481620.37387635745,165617.541648888 481620.5498598102,165617.8856379771 481620.6299310871,165620.35871091337 481620.06290929666,165621.48069942274 481619.27690625296,165622.2996590703 481618.7028769826,165625.2756705811 481617.25394821167,165625.84766296556 481617.26296805777,165628.1157292097 481617.2968912284,165630.43568379804 481617.8349535341,165630.91172989132 481618.07486284024,165632.94469717392 481619.0998674647,165635.7647570934 481619.4059113776,165638.03776862158 481619.89692265476,165644.46871871245 481593.9039186575,165638.50767270915 481592.1769323115,165633.6376789234 481590.7659570493,165628.70063606824 481589.335927328,165628.16568494434 481591.1839845278,165613.63262675228 481591.94290989527,165606.4086137545 481592.319920889,165597.5845531633 481592.7809603289),(165606.96301187953 481285.8701942276,165617.09714722337 481317.51421955513,165657.14321245725 481304.6542777951,165646.96914224676 481273.1072177767,165606.96301187953 481285.8701942276),(165607.4216895084 481643.51492878806,165613.1327812483 481684.9217904698,165613.63977163073 481687.1918895534,165614.71079015185 481685.2448456506,165620.94879263086 481665.6538638274,165624.86279959895 481664.59682269074,165631.44275984986 481641.9439352179,165619.17873585294 481638.4528815434,165616.39472356904 481642.6609089703,165607.4216895084 481643.51492878806),(165625.06317551967 481341.27521638497,165628.47320274284 481351.8552004529,165657.52328062925 481341.24516691454,165663.8433302382 481360.86520960403,165635.0433026686 481368.94515537814,165635.76328570157 481371.1652004403,165634.75324187803 481371.4851336322,165638.62327390848 481383.47516436345,165641.5133125544 481382.5352045473,165641.61332610715 481382.8551930367,165681.03342769816 481370.15520559694,165678.6834249223 481362.87523271586,165678.1333795042 481363.04516690416,165667.64327717246 481330.48520777485,165666.68328978316 481330.79522885894,165665.82326523197 481328.1352726176,165625.06317551967 481341.27521638497)),((165853.91450703648 481154.47847423767,165853.77149161507 481154.5245568851,165852.05248622812 481148.7925723464,165849.43850588406 481140.07452058146,165849.5824694122 481140.03155528376,165850.19450258528 481142.07448384096,165852.19550400035 481148.7454882739,165853.91450703648 481154.47847423767)),((165690.637159789 481221.30839094444,165684.65409020818 481202.74839304714,165691.0211510048 481200.6953381686,165693.18418155596 481207.09636898787,165693.32617529767 481207.04838799126,165691.16416331995 481200.64936207084,165691.87410709585 481200.42136204895,165753.65927694863 481180.5064628724,165814.0884203272 481161.02952517034,165822.6624279071 481158.26549094514,165836.31353847278 481200.6194925535,165767.3103702741 481222.86038524355,165698.30625700488 481245.10234980984,165690.637159789 481221.30839094444),(165693.68317810545 481206.0753786871,165697.7431872291 481218.77539447945,165703.4442182028 481236.91032514203,165711.8762536899 481234.1892952708,165720.60230581425 481231.373342504,165729.32932247905 481228.5574072319,165738.05634936754 481225.7413761125,165746.78331805518 481222.92536026856,165755.51036490736 481220.10935998964,165764.23735355845 481217.29337498534,165772.96339762883 481214.47740331833,165781.69040843003 481211.6604477769,165790.41742727094 481208.8443977667,165799.14445585056 481206.0284744372,165807.87149465547 481203.2124552643,165816.59847525915 481200.39645136514,165825.1135385119 481197.6484255169,165822.57751450696 481189.81243685796,165819.13143646508 481179.05043658486,165820.13049025944 481178.728514202,165816.24341989227 481166.6435105667,165815.2434093422 481166.9654316354,165806.8374214708 481169.66943018365,165798.1083621269 481172.4784371293,165789.3793831147 481175.28645827976,165780.6493209348 481178.09549384686,165771.9203620799 481180.90343458427,165763.1913428137 481183.7123919793,165754.46226726277 481186.5204745377,165745.73224516274 481189.3294605534,165737.0032581936 481192.1373515939,165728.27421057862 481194.94637054345,165719.54421835704 481197.7554028533,165710.81519307548 481200.5633400208,165702.08617533752 481203.37240525684,165693.68317810545 481206.0753786871),(165694.65720787522 481224.0323859261,165695.85917038817 481227.8583556615,165698.7212011478 481226.9583123765,165697.51917027353 481223.1333431713,165694.65720787522 481224.0323859261)),((165737.3379160775 481555.91300334374,165735.73095426153 481561.36300590524,165734.12296457813 481566.8170122977,165732.5039211776 481572.30804616894,165731.722979526 481574.95398846315,165704.13282570825 481566.80807221646,165711.63384485795 481541.3200574355,165739.22793669422 481549.5020729691,165738.95195147427 481550.44109771407,165737.3379160775 481555.91300334374)),((165742.76593479898 481537.5050447366,165740.56592901776 481544.9660771371,165739.22793669422 481549.5020729691,165711.63384485795 481541.3200574355,165715.32678747826 481528.77303401113,165725.64985202887 481531.7811151973,165734.24586626413 481534.2861086722,165742.97691753737 481536.8301309427,165742.76593479898 481537.5050447366)),((165767.09185403027 481454.8851670778,165754.05186441253 481499.1701048759,165726.42579294113 481491.028104843,165739.44771866192 481446.73115084914,165749.84376477124 481449.7981879186,165752.72879604952 481450.6481872374,165758.38179191307 481452.3162255302,165767.09185403027 481454.8851670778)),((165791.7737026315 481328.7753049603,165783.7456507334 481331.359336259,165774.88861889107 481334.2092723015,165766.04762865734 481337.0552536876,165757.1655748783 481339.9142905514,165748.30754891026 481342.7652734014,165738.64354107963 481345.87521031464,165716.10334139835 481275.895331588,165727.38639761863 481272.2523536715,165728.82339729104 481271.7892804257,165734.2843600761 481270.0263800398,165742.61838084552 481267.3353419938,165750.98140785462 481264.635368777,165756.43242557545 481262.8753640524,165757.8784395208 481262.4083133824,165769.13344454192 481258.7753833276,165769.3634933841 481259.5253597224,165771.04348919258 481258.97537535493,165793.1736878639 481327.55535145255,165791.54366571992 481328.0852987592,165791.7737026315 481328.7753049603)),((165720.04529258763 481244.63435943174,165725.5073073317 481242.8703389998,165726.75330058602 481246.6902926032,165729.64336236584 481255.6653443158,165734.2843600761 481270.0263800398,165728.82339729104 481271.7892804257,165721.30132114777 481248.45032795117,165720.04529258763 481244.63435943174)),((165725.5073073317 481242.8703389998,165733.85235512824 481240.17530463496,165735.78637572107 481246.0963088247,165739.1253645554 481256.40639819385,165742.61838084552 481267.3353419938,165734.2843600761 481270.0263800398,165729.64336236584 481255.6653443158,165726.75330058602 481246.6902926032,165725.5073073317 481242.8703389998)),((165726.6254969247 481332.95825022587,165698.30625700488 481245.10234980984,165767.3103702741 481222.86038524355,165811.18078064197 481358.96532213397,165742.17659175242 481381.20723075565,165726.6254969247 481332.95825022587),(165714.59331353637 481246.3942909105,165707.31329987882 481248.74530289543,165714.91335148847 481272.22036780615,165716.10334139835 481275.895331588,165738.64354107963 481345.87521031464,165746.99361894192 481371.7652784169,165756.65861975378 481368.6482390871,165765.53763238693 481365.7842990672,165774.3697140342 481362.9352931985,165783.21470086896 481360.0823257834,165792.06672522734 481357.2272755572,165800.07373514827 481354.6453257462,165791.7737026315 481328.7753049603,165791.54366571992 481328.0852987592,165793.1736878639 481327.55535145255,165771.04348919258 481258.97537535493,165769.3634933841 481259.5253597224,165769.13344454192 481258.7753833276,165767.94046532223 481255.0803727385,165760.36338960959 481231.6154014575,165753.1123999269 481233.956395535,165747.66039481142 481235.71740314807,165742.20737085477 481237.47841455427,165733.85235512824 481240.17530463496,165725.5073073317 481242.8703389998,165720.04529258763 481244.63435943174,165714.59331353637 481246.3942909105)),((165728.27421057862 481194.94637054345,165737.0032581936 481192.1373515939,165742.59732487198 481209.55544268835,165745.61234685374 481219.1003356426,165746.78331805518 481222.92536026856,165738.05634936754 481225.7413761125,165735.57526303138 481217.8884169158,165732.34628696222 481207.6103914263,165728.27421057862 481194.94637054345)),((165719.54421835704 481197.7554028533,165728.27421057862 481194.94637054345,165732.34628696222 481207.6103914263,165735.57526303138 481217.8884169158,165738.05634936754 481225.7413761125,165729.32932247905 481228.5574072319,165728.14926428013 481224.7353711206,165725.1382394831 481215.1883834767,165719.54421835704 481197.7554028533)),((165717.13279208494 481496.11104573845,165742.54266873017 481409.7731823477,165812.09292220575 481430.24218691647,165786.68302267324 481516.58014388575,165717.13279208494 481496.11104573845),(165739.44771866192 481446.73115084914,165726.42579294113 481491.028104843,165754.05186441253 481499.1701048759,165781.5689765867 481507.33716742526,165794.65391076147 481462.99320677517,165802.763925968 481435.3552630413,165795.3618555604 481433.1752054869,165789.54184028375 481431.46125288424,165783.75084868493 481429.75515904836,165775.2168089457 481427.24120325147,165766.68378131933 481424.7281545481,165760.87376458934 481423.0161490942,165755.07273490838 481421.3081755765,165747.59369677713 481419.1052129124,165739.44771866192 481446.73115084914)),((165725.64985202887 481531.7811151973,165715.32678747826 481528.77303401113,165722.1637920794 481505.38503976824,165732.5078354939 481508.4231106378,165731.36181199265 481512.2791458858,165728.8128404287 481520.9150407567,165725.64985202887 481531.7811151973)),((165734.24586626413 481534.2861086722,165725.64985202887 481531.7811151973,165728.8128404287 481520.9150407567,165731.36181199265 481512.2791458858,165732.5078354939 481508.4231106378,165741.1428862153 481510.9591321961,165734.24586626413 481534.2861086722)),((165673.3708977106 481644.8049006763,165717.13279208494 481496.11104573845,165786.68302267324 481516.58014388575,165742.92118772503 481665.2739500047,165673.3708977106 481644.8049006763),(165689.5289023787 481616.43091684714,165682.66390541804 481639.6949511576,165693.02695096543 481642.74889270985,165701.65495568834 481645.29095071973,165710.28301998795 481647.8329127002,165718.91107302954 481650.3760023997,165727.5380969889 481652.91799232236,165737.844128147 481655.95499203826,165744.93108682157 481631.96596303635,165747.11110594447 481624.55796098587,165748.72110548115 481619.0870505108,165750.3331012124 481613.60902404686,165751.94207886027 481608.14100534626,165753.55408603878 481602.66097729624,165756.02206237818 481594.2760404996,165758.48305164994 481585.91000471317,165760.09602746696 481580.43009233876,165761.7070189946 481574.9550718272,165763.31704865114 481569.4850566739,165764.92303530494 481564.0260484118,165766.5320427976 481558.5590362891,165768.14401146414 481553.08012593735,165770.3300088621 481545.6511190906,165777.35402061223 481521.5951332937,165767.04893821903 481518.56806844496,165758.41391373967 481516.0321128274,165749.7788806756 481513.49606105307,165741.1428862153 481510.9591321961,165732.5078354939 481508.4231106378,165722.1637920794 481505.38503976824,165715.32678747826 481528.77303401113,165711.63384485795 481541.3200574355,165704.13282570825 481566.80807221646,165694.93587527092 481598.058018297,165689.5289023787 481616.43091684714)),((165749.87821666626 481168.6054396765,165760.15524713008 481165.29146753036,165770.4322916698 481161.9774055011,165780.70934980048 481158.6634761236,165790.9863538234 481155.3494567121,165801.26337168008 481152.0354586903,165811.68239555878 481148.67550719803,165814.0884203272 481161.02952517034,165753.65927694863 481180.5064628724,165691.87410709585 481200.42136204895,165688.07310791782 481188.53536355897,165698.48310648455 481185.17838073144,165708.76914462214 481181.860427097,165719.04618793767 481178.5463695621,165729.32317666116 481175.2324445252,165739.60024764334 481171.918429759,165749.87821666626 481168.6054396765)),((165804.16329833507 481125.3754932473,165793.75132829722 481128.7324718677,165783.4742649519 481132.0474867819,165773.19626086665 481135.36252099246,165762.91820267861 481138.67746517947,165752.64022651344 481141.99243090645,165742.36219818195 481145.3064164967,165732.07517469442 481148.62440939253,165721.79710368768 481151.9394390017,165711.51911494508 481155.254378882,165701.241071616 481158.56945126434,165690.96304236684 481161.88443377306,165680.54303647086 481165.24541627563,165675.90201051926 481156.17036465387,165705.3020483263 481146.65442658326,165734.4521396814 481137.24548951746,165744.0691597118 481134.3254810618,165773.7592437802 481124.71645183617,165803.45727884932 481115.1415537492,165804.16329833507 481125.3754932473)),((165815.2434093422 481166.9654316354,165816.24341989227 481166.6435105667,165820.13049025944 481178.728514202,165819.13143646508 481179.05043658486,165815.2434093422 481166.9654316354)),((165765.53763238693 481365.7842990672,165757.1655748783 481339.9142905514,165766.04762865734 481337.0552536876,165774.3697140342 481362.9352931985,165765.53763238693 481365.7842990672)),((165774.3697140342 481362.9352931985,165766.04762865734 481337.0552536876,165774.88861889107 481334.2092723015,165783.21470086896 481360.0823257834,165774.3697140342 481362.9352931985)),((165792.06672522734 481357.2272755572,165783.21470086896 481360.0823257834,165774.88861889107 481334.2092723015,165783.7456507334 481331.359336259,165784.97264818248 481335.1672473105,165787.86368516678 481344.1852849584,165792.06672522734 481357.2272755572)),((165787.86368516678 481344.1852849584,165784.97264818248 481335.1672473105,165783.7456507334 481331.359336259,165791.7737026315 481328.7753049603,165800.07373514827 481354.6453257462,165792.06672522734 481357.2272755572,165787.86368516678 481344.1852849584)),((165817.33076423616 481320.5923644494,165818.53473190608 481324.32034577214,165821.46778268923 481333.36931528937,165825.6738182269 481346.4083368862,165817.67381487784 481348.9853649841,165809.32371226288 481323.19531513343,165817.33076423616 481320.5923644494)),((165817.33076423616 481320.5923644494,165826.1607530206 481317.7223063045,165834.53086462567 481343.55537642253,165825.6738182269 481346.4083368862,165821.46778268923 481333.36931528937,165818.53473190608 481324.32034577214,165817.33076423616 481320.5923644494)),((165691.0211510048 481200.6953381686,165688.82613778592 481194.19933092536,165688.9681318548 481194.1513498069,165691.16416331995 481200.64936207084,165693.32617529767 481207.04838799126,165693.18418155596 481207.09636898787,165691.0211510048 481200.6953381686)),((165798.00803197207 481504.65914855164,165809.52610699498 481508.05810830294,165822.24111503712 481511.8021899461,165825.61514416043 481512.7781425044,165823.56413966522 481519.7282063275,165795.9680335119 481511.61214057665,165798.00803197207 481504.65914855164)),((165799.53601079423 481499.45010300004,165811.0490582101 481502.8772050506,165827.14610558908 481507.58913941676,165825.61514416043 481512.7781425044,165822.24111503712 481511.8021899461,165809.52610699498 481508.05810830294,165798.00803197207 481504.65914855164,165799.53601079423 481499.45010300004)),((165801.0480544796 481494.29621007456,165812.57303552347 481497.69619328826,165825.33510116214 481501.4762128732,165828.6791265633 481502.39513447497,165827.14610558908 481507.58913941676,165811.0490582101 481502.8772050506,165799.53601079423 481499.45010300004,165801.0480544796 481494.29621007456)),((165802.56800132265 481489.1151865056,165814.09605930385 481492.51618132205,165830.20212846796 481497.23215074255,165828.6791265633 481502.39513447497,165825.33510116214 481501.4762128732,165812.57303552347 481497.69619328826,165801.0480544796 481494.29621007456,165802.56800132265 481489.1151865056)),((165804.0880216979 481483.9331622273,165815.62004295533 481487.3351705922,165828.35112886416 481491.10723019537,165831.73209434262 481492.0351359933,165830.97413562768 481494.6171360007,165830.20212846796 481497.23215074255,165814.09605930385 481492.51618132205,165802.56800132265 481489.1151865056,165804.0880216979 481483.9331622273)),((165805.60797486416 481478.7521396871,165817.14307526563 481482.1541582829,165833.24713194987 481486.86924293207,165831.73209434262 481492.0351359933,165828.35112886416 481491.10723019537,165815.62004295533 481487.3351705922,165804.0880216979 481483.9331622273,165805.60797486416 481478.7521396871)),((165807.1290240118 481473.57022994,165818.66706306094 481476.97414995317,165831.42309653418 481480.7601800219,165834.77111099343 481481.66921192576,165833.24713194987 481486.86924293207,165817.14307526563 481482.1541582829,165805.60797486416 481478.7521396871,165807.1290240118 481473.57022994)),((165780.9100788994 481051.4195472039,165780.94908950687 481051.5405763582,165782.8121049136 481050.9255724577,165789.6861977294 481072.3145165163,165759.94208684235 481081.8385492149,165755.3420530924 481067.5615879822,165753.04303926002 481060.4275618781,165780.9100788994 481051.4195472039)),((165789.6861977294 481072.3145165163,165794.10724982165 481086.1055626836,165764.39215046004 481095.6485469322,165759.94208684235 481081.8385492149,165789.6861977294 481072.3145165163)),((165764.39215046004 481095.6485469322,165794.10724982165 481086.1055626836,165798.50226476917 481099.8185601817,165780.27220397923 481105.77951771766,165768.84218902295 481109.45854900277,165764.39215046004 481095.6485469322)),((165780.70934980048 481158.6634761236,165778.90532097794 481153.0484925419,165774.72427119376 481140.1124897321,165773.19626086665 481135.36252099246,165783.4742649519 481132.0474867819,165785.43027980113 481138.130446508,165787.59027662704 481144.78452594153,165790.9863538234 481155.3494567121,165780.70934980048 481158.6634761236)),((165790.9863538234 481155.3494567121,165787.59027662704 481144.78452594153,165785.43027980113 481138.130446508,165783.4742649519 481132.0474867819,165793.75132829722 481128.7324718677,165799.45834097321 481146.42046541837,165801.26337168008 481152.0354586903,165790.9863538234 481155.3494567121)),((165771.9203620799 481180.90343458427,165780.6493209348 481178.09549384686,165784.69838921897 481190.71845116117,165787.94644276387 481200.9894316278,165790.41742727094 481208.8443977667,165781.69040843003 481211.6604477769,165780.52041607565 481207.835417028,165777.4883933551 481198.2974753085,165771.9203620799 481180.90343458427)),((165780.6493209348 481178.09549384686,165789.3793831147 481175.28645827976,165794.95742641244 481192.6604017623,165797.98348239536 481202.20045515895,165799.14445585056 481206.0284744372,165790.41742727094 481208.8443977667,165787.94644276387 481200.9894316278,165784.69838921897 481190.71845116117,165780.6493209348 481178.09549384686)),((165785.55950023342 481249.4403665603,165778.02345562194 481225.98536036786,165784.58846067498 481223.87043900834,165785.88444177373 481227.66737380484,165788.72052130097 481236.65235585446,165792.13649313548 481247.3183605189,165790.44449281244 481247.86742136953,165785.55950023342 481249.4403665603)),((165785.55950023342 481249.4403665603,165790.44449281244 481247.86742136953,165792.13649313548 481247.3183605189,165796.1385307854 481246.02142821206,165797.33956570356 481249.73437673337,165786.7535148305 481253.1554111886,165785.55950023342 481249.4403665603)),((165790.040483603 481222.11336638086,165794.17451525794 481234.89239922474,165798.77555773532 481249.27043149626,165797.33956570356 481249.73437673337,165796.1385307854 481246.02142821206,165792.13649313548 481247.3183605189,165788.72052130097 481236.65235585446,165785.88444177373 481227.66737380484,165784.58846067498 481223.87043900834,165790.040483603 481222.11336638086)),((165775.75088814163 481457.4322048577,165779.88083834152 481443.37722162984,165782.5408714928 481434.36519018246,165782.39683007967 481434.32315151556,165783.75084868493 481429.75515904836,165789.54184028375 481431.46125288424,165788.19285334527 481436.0332602932,165781.70292275774 481458.1561794963,165781.4059229174 481459.0961572339,165775.75088814163 481457.4322048577)),((165781.4059229174 481459.0961572339,165781.70292275774 481458.1561794963,165788.19285334527 481436.0332602932,165789.54184028375 481431.46125288424,165795.3618555604 481433.1752054869,165794.01687317196 481437.75322834554,165793.87290232416 481437.7101881182,165788.38689940557 481456.3701971199,165785.5959004123 481455.5502011837,165784.580929966 481459.00217660615,165784.28590465026 481459.9431598627,165781.4059229174 481459.0961572339)),((165784.28590465026 481459.9431598627,165794.65391076147 481462.99320677517,165781.5689765867 481507.33716742526,165754.05186441253 481499.1701048759,165767.09185403027 481454.8851670778,165775.75088814163 481457.4322048577,165781.4059229174 481459.0961572339,165784.28590465026 481459.9431598627))) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/nl_zones.wkt b/rust/geo-test-fixtures/fixtures/nl_zones.wkt new file mode 100644 index 00000000..1aa1b1c8 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/nl_zones.wkt @@ -0,0 +1 @@ +MULTIPOLYGON(((5.543993 52.322388,5.544071 52.322222,5.544205 52.321941,5.544315 52.321712,5.544368 52.321599,5.544468 52.321389,5.54462 52.321416,5.544746 52.321439,5.544873 52.321461,5.545 52.321484,5.545127 52.321507,5.545278 52.321534,5.545176 52.32175,5.545144 52.321817,5.54512 52.321866,5.545097 52.321915,5.545073 52.321964,5.54505 52.322013,5.545027 52.322063,5.545003 52.322112,5.544967 52.322187,5.544931 52.322263,5.544908 52.322312,5.544884 52.322361,5.544861 52.32241,5.544838 52.32246,5.544806 52.322526,5.544703 52.322742,5.544551 52.322715,5.544425 52.322692,5.544298 52.322669,5.544171 52.322647,5.544045 52.322624,5.543893 52.322597,5.543993 52.322388)),((5.544655 52.322696,5.544481 52.322665,5.544402 52.32265,5.544227 52.322619,5.544148 52.322605,5.543974 52.322574,5.544011 52.322496,5.544057 52.322399,5.544049 52.322398,5.544053 52.32239,5.544153 52.322181,5.544252 52.321972,5.544272 52.321931,5.544421 52.321617,5.544509 52.321434,5.544516 52.321435,5.54469 52.321466,5.544857 52.321496,5.545023 52.321526,5.545197 52.321557,5.545205 52.321558,5.545111 52.321756,5.544993 52.322003,5.544922 52.322152,5.544899 52.322202,5.544757 52.3225,5.544708 52.322602,5.544723 52.322605,5.544711 52.322631,5.544688 52.322627,5.544655 52.322696)),((5.547922 52.321005,5.547914 52.321023,5.547702 52.320985,5.547541 52.320956,5.547549 52.320938,5.547922 52.321005)),((5.548023 52.321865,5.548015 52.321883,5.547804 52.321845,5.547592 52.321807,5.547654 52.321678,5.547715 52.321548,5.547777 52.321419,5.547816 52.321337,5.547838 52.321291,5.547901 52.32116,5.547962 52.321031,5.548024 52.320902,5.548041 52.320867,5.548069 52.320871,5.548052 52.320907,5.54799 52.321036,5.547929 52.321166,5.547867 52.321296,5.547845 52.321342,5.547806 52.321424,5.547744 52.321553,5.547682 52.321683,5.547628 52.321795,5.547812 52.321828,5.548023 52.321865)),((5.548496 52.321949,5.548411 52.321934,5.548283 52.321912,5.548073 52.321874,5.548126 52.321762,5.548187 52.321632,5.548203 52.321635,5.548398 52.321665,5.548545 52.321695,5.54861 52.321708,5.548573 52.321785,5.548549 52.321837,5.548546 52.321844,5.548496 52.321949)),((5.542525 52.32132,5.542617 52.321284,5.542718 52.321243,5.542791 52.321177,5.542892 52.321137,5.543013 52.321155,5.543127 52.321132,5.543225 52.321079,5.54334 52.321056,5.543423 52.321104,5.543539 52.321124,5.543634 52.321187,5.54375 52.321208,5.543806 52.321218,5.543781 52.32127,5.543721 52.321268,5.543667 52.321259,5.543611 52.321226,5.543558 52.321212,5.543471 52.321189,5.543463 52.321187,5.543456 52.321184,5.54345 52.321181,5.543444 52.321177,5.543438 52.321173,5.54338 52.321129,5.543377 52.321126,5.543373 52.321123,5.543368 52.321121,5.543362 52.321119,5.543356 52.321118,5.54335 52.321118,5.543314 52.32112,5.543293 52.321123,5.543234 52.321136,5.543213 52.321144,5.543207 52.321149,5.543201 52.321154,5.543184 52.321171,5.543181 52.321174,5.543179 52.321177,5.543178 52.32118,5.543175 52.321184,5.543172 52.321187,5.543167 52.32119,5.543162 52.321192,5.543134 52.321202,5.543114 52.321204,5.543073 52.321205,5.543066 52.321205,5.543058 52.321204,5.543051 52.321203,5.542985 52.321186,5.542981 52.321185,5.542977 52.321185,5.542974 52.321186,5.542931 52.321194,5.542904 52.321202,5.542848 52.321234,5.542829 52.32125,5.54281 52.321264,5.542773 52.321286,5.542738 52.3213,5.542706 52.321306,5.542645 52.321314,5.542576 52.321319,5.542525 52.32132)),((5.542594 52.321692,5.542565 52.321709,5.542552 52.321627,5.542589 52.321624,5.542632 52.321621,5.54304 52.321541,5.543037 52.321527,5.543072 52.321521,5.543068 52.32151,5.543593 52.321604,5.543621 52.321609,5.543595 52.321663,5.543573 52.321659,5.543559 52.321655,5.543532 52.321645,5.543494 52.321644,5.54349 52.321644,5.543455 52.321633,5.543444 52.321627,5.543425 52.321625,5.54342 52.321625,5.543382 52.321623,5.543352 52.321626,5.543347 52.321624,5.543309 52.32161,5.543283 52.321605,5.543279 52.321604,5.54324 52.321595,5.543207 52.321592,5.543201 52.321592,5.543169 52.321582,5.543137 52.321575,5.543131 52.321574,5.543067 52.321594,5.543049 52.321599,5.543011 52.321606,5.542983 52.32161,5.542952 52.321624,5.542923 52.321626,5.542909 52.321628,5.542901 52.321629,5.542843 52.321644,5.542807 52.321648,5.542797 52.32165,5.542779 52.321654,5.542754 52.321662,5.542743 52.321665,5.542705 52.321668,5.542703 52.321668,5.542684 52.321671,5.542657 52.321679,5.542641 52.321686,5.542609 52.32169,5.542594 52.321692)),((5.547922 52.321005,5.547549 52.320938,5.547602 52.320827,5.547618 52.320793,5.547663 52.320697,5.547826 52.320726,5.548059 52.320768,5.548297 52.320811,5.548507 52.320848,5.548468 52.32093,5.548445 52.320977,5.548384 52.321106,5.548323 52.321236,5.548275 52.321336,5.548261 52.321365,5.548199 52.321495,5.548138 52.321624,5.548077 52.321754,5.548023 52.321865,5.547812 52.321828,5.547628 52.321795,5.547682 52.321683,5.547744 52.321553,5.547806 52.321424,5.547845 52.321342,5.547867 52.321296,5.547929 52.321166,5.54799 52.321036,5.548052 52.320907,5.548069 52.320871,5.548041 52.320867,5.548016 52.320862,5.547992 52.320858,5.547975 52.320893,5.547922 52.321005)),((5.542507 52.321321,5.5425 52.321321,5.542495 52.321286,5.542466 52.321263,5.542499 52.321223,5.542496 52.321148,5.542502 52.321118,5.542528 52.321091,5.542564 52.32107,5.542593 52.321058,5.542678 52.321025,5.542863 52.320979,5.542978 52.320954,5.543085 52.320933,5.543206 52.320913,5.543309 52.320899,5.543393 52.320898,5.543572 52.32091,5.543694 52.320927,5.543807 52.320944,5.54382 52.321115,5.543845 52.321136,5.543806 52.321218,5.54375 52.321208,5.543634 52.321187,5.543539 52.321124,5.543423 52.321104,5.54334 52.321056,5.543225 52.321079,5.543127 52.321132,5.543013 52.321155,5.542892 52.321137,5.542791 52.321177,5.542718 52.321243,5.542617 52.321284,5.542525 52.32132,5.542507 52.321321)),((5.542552 52.321627,5.542507 52.321362,5.542633 52.321358,5.542739 52.321355,5.542845 52.321353,5.542951 52.32135,5.543166 52.321344,5.543166 52.321343,5.543172 52.321331,5.543204 52.321337,5.543239 52.321343,5.543246 52.321344,5.543287 52.321352,5.543318 52.321357,5.543349 52.321363,5.54339 52.32137,5.543431 52.321377,5.543462 52.321383,5.543493 52.321388,5.543534 52.321396,5.543575 52.321403,5.543606 52.321409,5.543636 52.321414,5.543706 52.321427,5.543621 52.321609,5.543593 52.321604,5.543068 52.32151,5.543072 52.321521,5.543037 52.321527,5.54304 52.321541,5.542632 52.321621,5.542589 52.321624,5.542552 52.321627)),((5.544719 52.320861,5.544838 52.320613,5.544948 52.320633,5.545033 52.320648,5.545118 52.320663,5.545243 52.320686,5.545369 52.320708,5.545454 52.320723,5.545539 52.320738,5.545648 52.320758,5.54553 52.321006,5.54537 52.32134,5.545339 52.321405,5.544981 52.321341,5.544935 52.321332,5.54453 52.32126,5.544719 52.320861)),((5.545969 52.320815,5.546054 52.32083,5.546139 52.320845,5.546264 52.320867,5.546389 52.32089,5.546474 52.320905,5.54656 52.32092,5.546668 52.32094,5.546551 52.321189,5.54648 52.321339,5.546361 52.321588,5.545551 52.321443,5.5456 52.32134,5.54574 52.321044,5.545859 52.320795,5.545969 52.320815)),((5.546709 52.321338,5.546762 52.321227,5.54688 52.320978,5.546989 52.320997,5.547074 52.321012,5.547159 52.321028,5.547284 52.32105,5.54741 52.321073,5.547495 52.321088,5.54758 52.321103,5.547689 52.321122,5.547588 52.321337,5.547571 52.321372,5.547544 52.321429,5.547522 52.321475,5.5475 52.321522,5.547477 52.321568,5.547455 52.321615,5.547433 52.321661,5.547411 52.321708,5.547381 52.32177,5.546976 52.321698,5.546571 52.321626,5.546709 52.321338)),((5.546076 52.321924,5.545379 52.3218,5.545384 52.321792,5.545411 52.321734,5.545452 52.321648,5.545463 52.321624,5.545488 52.321574,5.545556 52.321586,5.545682 52.321609,5.54578 52.321627,5.545783 52.321625,5.545792 52.321627,5.545843 52.321636,5.545916 52.321649,5.545921 52.32165,5.545919 52.321652,5.546242 52.32171,5.546286 52.321716,5.546298 52.321718,5.546249 52.321822,5.546191 52.321945,5.546175 52.321942,5.546098 52.321928,5.546076 52.321924)),((5.547511 52.32137,5.547331 52.321747,5.546747 52.321642,5.546634 52.321622,5.546814 52.321245,5.546818 52.321237,5.546789 52.321232,5.546889 52.321024,5.546969 52.321039,5.546973 52.321032,5.547143 52.321062,5.54714 52.321069,5.54722 52.321084,5.547309 52.3211,5.54739 52.321114,5.547394 52.321107,5.547564 52.321138,5.547561 52.321145,5.547641 52.321159,5.547603 52.32124,5.547543 52.321367,5.547515 52.321362,5.547511 52.32137)),((5.546311 52.321564,5.546198 52.321544,5.545726 52.32146,5.545613 52.32144,5.545793 52.321063,5.545797 52.321054,5.545769 52.321049,5.545829 52.320923,5.545868 52.320842,5.545949 52.320856,5.545952 52.320849,5.546122 52.32088,5.546119 52.320887,5.5462 52.320901,5.546289 52.320917,5.546369 52.320931,5.546373 52.320924,5.546543 52.320955,5.54654 52.320962,5.546621 52.320976,5.546568 52.321088,5.546523 52.321184,5.546494 52.321179,5.54649 52.321187,5.546311 52.321564)),((5.545601 52.320794,5.545562 52.320875,5.545502 52.321002,5.545473 52.320996,5.545289 52.321382,5.545177 52.321362,5.544719 52.32128,5.544592 52.321257,5.544776 52.320872,5.544749 52.320867,5.544796 52.320767,5.544847 52.320659,5.544928 52.320674,5.544932 52.320667,5.545102 52.320697,5.545099 52.320704,5.545179 52.320719,5.545268 52.320735,5.545349 52.320749,5.545352 52.320742,5.545523 52.320773,5.54552 52.32078,5.545601 52.320794)),((5.547269 52.318403,5.547241 52.318408,5.547193 52.318318,5.547146 52.318228,5.547173 52.318222,5.547221 52.318312,5.547269 52.318403)),((5.547604 52.319092,5.547632 52.319086,5.547786 52.319056,5.547932 52.319026,5.547967 52.319092,5.547968 52.319094,5.547945 52.319099,5.547904 52.319088,5.547695 52.31913,5.547667 52.319154,5.547657 52.319137,5.547631 52.319142,5.547604 52.319092)),((5.547967 52.319092,5.547932 52.319026,5.548019 52.319009,5.548054 52.319075,5.548013 52.319083,5.547967 52.319092)),((5.547604 52.319092,5.547581 52.319049,5.547534 52.318959,5.547485 52.318867,5.547513 52.318862,5.547562 52.318953,5.547609 52.319044,5.547632 52.319086,5.547604 52.319092)),((5.542459 52.316451,5.542465 52.316449,5.542473 52.316456,5.542473 52.316456,5.542473 52.316456,5.542474 52.316457,5.542474 52.316457,5.542475 52.316458,5.542475 52.316458,5.542476 52.316459,5.542477 52.316459,5.542477 52.31646,5.542478 52.31646,5.542479 52.316461,5.542479 52.316461,5.54248 52.316462,5.542481 52.316462,5.542482 52.316463,5.542482 52.316463,5.542483 52.316464,5.542484 52.316464,5.542484 52.316465,5.542485 52.316465,5.542486 52.316466,5.542487 52.316466,5.542488 52.316467,5.542488 52.316467,5.542489 52.316467,5.54249 52.316468,5.542491 52.316468,5.542492 52.316469,5.542492 52.316469,5.542493 52.316469,5.542494 52.31647,5.542495 52.31647,5.542496 52.31647,5.542497 52.316471,5.542498 52.316471,5.542499 52.316472,5.542499 52.316472,5.5425 52.316472,5.542501 52.316472,5.542502 52.316473,5.542503 52.316473,5.542504 52.316473,5.542505 52.316474,5.542506 52.316474,5.542507 52.316474,5.542508 52.316475,5.542509 52.316475,5.54251 52.316475,5.542511 52.316475,5.542512 52.316476,5.542513 52.316476,5.542514 52.316476,5.542515 52.316476,5.542516 52.316476,5.542517 52.316477,5.542518 52.316477,5.542519 52.316477,5.54252 52.316477,5.542521 52.316477,5.542522 52.316477,5.542523 52.316478,5.542524 52.316478,5.542525 52.316478,5.542526 52.316478,5.542527 52.316478,5.542528 52.316478,5.542529 52.316478,5.54253 52.316478,5.542531 52.316478,5.542532 52.316479,5.542533 52.316479,5.542534 52.316479,5.542535 52.316479,5.542536 52.316479,5.542537 52.316479,5.542538 52.316479,5.542539 52.316479,5.542541 52.316479,5.542542 52.316479,5.542543 52.316479,5.542544 52.316479,5.542545 52.316479,5.542546 52.316479,5.542547 52.316479,5.542548 52.316479,5.542549 52.316479,5.54255 52.316479,5.542551 52.316478,5.542552 52.316478,5.542553 52.316478,5.542554 52.316478,5.542555 52.316478,5.542556 52.316478,5.542557 52.316478,5.542558 52.316478,5.542559 52.316478,5.54256 52.316477,5.542561 52.316477,5.542562 52.316477,5.542563 52.316477,5.542563 52.316477,5.542578 52.316474,5.542561 52.316449,5.542502 52.316391,5.54242 52.31632,5.542352 52.316228,5.542251 52.31604,5.542256 52.316035,5.54225 52.316018,5.542248 52.316011,5.542266 52.31601,5.542288 52.316007,5.542415 52.316245,5.542458 52.316286,5.542577 52.316401,5.542619 52.316441,5.542866 52.316392,5.542843 52.316348,5.542777 52.316223,5.542804 52.316217,5.542805 52.316218,5.542833 52.316212,5.542899 52.316337,5.542922 52.316381,5.543206 52.316325,5.543444 52.316277,5.543681 52.31623,5.543918 52.316183,5.544155 52.316135,5.544392 52.316088,5.54467 52.316033,5.544652 52.315999,5.544642 52.31598,5.544543 52.315794,5.54469 52.31578,5.544796 52.31598,5.544884 52.316145,5.544971 52.31631,5.545058 52.316475,5.545176 52.316698,5.545255 52.316846,5.545294 52.31692,5.545325 52.316914,5.545406 52.317068,5.54551 52.317264,5.54548 52.317271,5.545584 52.317467,5.54567 52.31763,5.545756 52.317792,5.545842 52.317955,5.545946 52.318151,5.545979 52.318207,5.545932 52.318217,5.545983 52.318314,5.545995 52.318312,5.546044 52.318302,5.546072 52.318296,5.546129 52.318404,5.546143 52.318401,5.546214 52.318534,5.546232 52.318569,5.546361 52.318543,5.546487 52.318518,5.546612 52.318493,5.546738 52.318468,5.546863 52.318443,5.54701 52.318414,5.546992 52.318379,5.546907 52.31822,5.546909 52.31822,5.547121 52.318178,5.547129 52.318195,5.547148 52.318192,5.547311 52.318159,5.547328 52.318191,5.547173 52.318222,5.547146 52.318228,5.547193 52.318318,5.547241 52.318408,5.547269 52.318403,5.547424 52.318372,5.547433 52.318388,5.547442 52.318405,5.547287 52.318436,5.547259 52.318442,5.547307 52.318532,5.547355 52.318622,5.547383 52.318617,5.547537 52.318586,5.547546 52.318602,5.547555 52.318619,5.547401 52.31865,5.547373 52.318655,5.547421 52.318745,5.547468 52.318834,5.547495 52.318828,5.547649 52.318798,5.547659 52.318816,5.547667 52.318831,5.547513 52.318862,5.547485 52.318867,5.547534 52.318959,5.547581 52.319049,5.547604 52.319092,5.547631 52.319142,5.547657 52.319137,5.547667 52.319154,5.547695 52.31913,5.547904 52.319088,5.547945 52.319099,5.547968 52.319094,5.547967 52.319092,5.548013 52.319083,5.548054 52.319075,5.54806 52.319085,5.548125 52.319073,5.548174 52.319167,5.548501 52.319783,5.548436 52.319796,5.548416 52.319756,5.548348 52.319629,5.54828 52.3195,5.548212 52.319372,5.548144 52.319244,5.548099 52.319159,5.548077 52.319116,5.547868 52.319158,5.54769 52.319193,5.547662 52.319199,5.547684 52.319241,5.547729 52.319327,5.547797 52.319455,5.547865 52.319583,5.547933 52.319712,5.547942 52.319729,5.548 52.319839,5.548019 52.319875,5.547993 52.319881,5.547968 52.319886,5.547948 52.31985,5.54789 52.31974,5.547881 52.319722,5.547673 52.319764,5.547514 52.319795,5.547523 52.319812,5.54758 52.319923,5.547608 52.319977,5.547558 52.319987,5.547456 52.31979,5.547435 52.319754,5.547131 52.319815,5.547125 52.319814,5.54712 52.31981,5.547115 52.319807,5.547109 52.319806,5.547103 52.319807,5.546954 52.319836,5.546948 52.319838,5.546946 52.319841,5.546944 52.319844,5.546944 52.319851,5.54694 52.319852,5.546939 52.319853,5.546813 52.319878,5.546811 52.319879,5.546762 52.319888,5.546636 52.319913,5.546093 52.320021,5.546047 52.32003,5.546024 52.320035,5.545919 52.320056,5.54587 52.320065,5.545659 52.320107,5.545141 52.32021,5.544775 52.320283,5.54478 52.320294,5.544734 52.320302,5.544588 52.320026,5.544593 52.320024,5.544596 52.320021,5.544597 52.320018,5.544596 52.320014,5.544394 52.319632,5.544371 52.319589,5.544228 52.319319,5.544225 52.319317,5.544215 52.319317,5.544211 52.319314,5.544112 52.319128,5.544104 52.319117,5.544094 52.319108,5.54408 52.319101,5.544065 52.319095,5.544057 52.319093,5.544039 52.31909,5.54402 52.31909,5.544002 52.319093,5.543982 52.319098,5.543975 52.319099,5.543975 52.319099,5.543975 52.319099,5.543974 52.319099,5.543974 52.3191,5.543973 52.3191,5.543973 52.3191,5.543973 52.3191,5.543972 52.3191,5.543972 52.3191,5.543971 52.319101,5.543971 52.319101,5.543971 52.319101,5.54397 52.319101,5.54397 52.319101,5.54397 52.319101,5.543969 52.319101,5.543969 52.319102,5.543968 52.319102,5.543968 52.319102,5.543968 52.319102,5.543967 52.319102,5.543967 52.319103,5.543967 52.319103,5.543966 52.319103,5.543966 52.319103,5.543965 52.319103,5.543965 52.319103,5.543965 52.319104,5.543964 52.319104,5.543964 52.319104,5.543964 52.319104,5.543963 52.319104,5.543963 52.319104,5.543963 52.319105,5.543962 52.319105,5.543962 52.319105,5.543962 52.319105,5.543961 52.319105,5.543961 52.319106,5.543961 52.319106,5.54396 52.319106,5.54396 52.319106,5.54396 52.319106,5.543959 52.319107,5.543959 52.319107,5.543959 52.319107,5.543958 52.319107,5.543958 52.319107,5.543958 52.319108,5.543957 52.319108,5.543957 52.319108,5.543957 52.319108,5.543956 52.319108,5.543956 52.319109,5.543956 52.319109,5.543955 52.319109,5.543955 52.319109,5.543955 52.31911,5.543955 52.31911,5.543954 52.31911,5.543954 52.31911,5.543954 52.31911,5.543953 52.319111,5.543953 52.319111,5.543953 52.319111,5.543953 52.319111,5.543952 52.319112,5.543952 52.319112,5.543952 52.319112,5.543951 52.319112,5.543951 52.319112,5.543951 52.319113,5.543951 52.319113,5.54395 52.319113,5.54395 52.319113,5.54395 52.319114,5.54395 52.319114,5.543949 52.319114,5.543949 52.319114,5.543949 52.319115,5.543948 52.319115,5.543948 52.319115,5.543948 52.319115,5.543948 52.319116,5.543948 52.319116,5.543947 52.319116,5.543947 52.319116,5.543947 52.319117,5.543947 52.319117,5.543946 52.319117,5.543946 52.319117,5.543946 52.319118,5.543946 52.319118,5.543945 52.319118,5.543945 52.319118,5.543945 52.319119,5.543945 52.319119,5.543945 52.319119,5.543944 52.319119,5.543944 52.31912,5.543944 52.31912,5.543848 52.318945,5.543897 52.318936,5.544135 52.318989,5.544185 52.318976,5.544308 52.318952,5.544436 52.318926,5.544564 52.318901,5.544692 52.318875,5.54482 52.31885,5.544948 52.318824,5.545076 52.318799,5.545204 52.318773,5.545332 52.318748,5.545459 52.318722,5.545587 52.318697,5.545715 52.318671,5.545843 52.318646,5.545968 52.318621,5.54595 52.318587,5.54593 52.318551,5.54588 52.318454,5.545894 52.318451,5.545837 52.318343,5.545918 52.318326,5.545932 52.318323,5.54588 52.318224,5.545789 52.318242,5.545769 52.318181,5.545681 52.318015,5.545673 52.317999,5.545658 52.317972,5.545506 52.318002,5.545355 52.318032,5.545204 52.318062,5.545054 52.318092,5.544903 52.318122,5.544753 52.318152,5.544602 52.318182,5.544451 52.318212,5.544301 52.318242,5.54415 52.318272,5.543999 52.318302,5.543847 52.318333,5.543846 52.318332,5.543738 52.318354,5.543735 52.318354,5.54361 52.318466,5.543595 52.318469,5.543569 52.318433,5.543545 52.318437,5.543535 52.318418,5.54346 52.318286,5.543467 52.318285,5.543474 52.318284,5.543474 52.318284,5.543474 52.318284,5.543475 52.318285,5.543475 52.318286,5.543476 52.318287,5.543476 52.318288,5.543477 52.318288,5.543478 52.318289,5.543478 52.31829,5.543479 52.318291,5.54348 52.318291,5.54348 52.318292,5.543481 52.318293,5.543482 52.318294,5.543482 52.318294,5.543483 52.318295,5.543484 52.318296,5.543485 52.318296,5.543486 52.318297,5.543486 52.318298,5.543487 52.318299,5.543488 52.318299,5.543489 52.3183,5.54349 52.318301,5.543491 52.318301,5.543492 52.318302,5.543493 52.318302,5.543494 52.318303,5.543495 52.318304,5.543496 52.318304,5.543497 52.318305,5.543498 52.318305,5.543499 52.318306,5.5435 52.318307,5.543501 52.318307,5.543502 52.318308,5.543503 52.318308,5.543504 52.318309,5.543505 52.318309,5.543507 52.31831,5.543508 52.31831,5.543509 52.318311,5.54351 52.318311,5.543511 52.318312,5.543513 52.318312,5.543514 52.318313,5.543515 52.318313,5.543516 52.318313,5.543517 52.318314,5.543519 52.318314,5.54352 52.318315,5.543521 52.318315,5.543523 52.318315,5.543524 52.318316,5.543525 52.318316,5.543526 52.318316,5.543528 52.318317,5.543529 52.318317,5.54353 52.318317,5.543532 52.318317,5.543533 52.318318,5.543534 52.318318,5.543536 52.318318,5.543537 52.318318,5.543539 52.318319,5.54354 52.318319,5.543541 52.318319,5.543543 52.318319,5.543544 52.318319,5.543545 52.318319,5.543547 52.31832,5.543548 52.31832,5.54355 52.31832,5.543551 52.31832,5.543552 52.31832,5.543554 52.31832,5.543555 52.31832,5.543557 52.31832,5.543558 52.31832,5.543559 52.31832,5.543561 52.31832,5.543562 52.31832,5.543564 52.31832,5.543565 52.31832,5.543567 52.31832,5.543568 52.31832,5.543569 52.31832,5.543571 52.31832,5.543572 52.31832,5.543574 52.318319,5.543575 52.318319,5.543576 52.318319,5.543578 52.318319,5.543579 52.318319,5.54358 52.318319,5.543582 52.318318,5.543583 52.318318,5.543585 52.318318,5.543586 52.318318,5.543587 52.318317,5.543587 52.318317,5.543594 52.318316,5.543601 52.318315,5.543603 52.318314,5.543609 52.318313,5.543625 52.318307,5.543639 52.318298,5.54365 52.318288,5.543658 52.318275,5.543661 52.318265,5.543662 52.31826,5.54366 52.318251,5.543656 52.318243,5.543653 52.31824,5.543648 52.318238,5.543628 52.318232,5.543624 52.31823,5.543613 52.31821,5.543606 52.318211,5.543198 52.317435,5.543205 52.317427,5.543219 52.317411,5.543216 52.3174,5.543108 52.317195,5.543104 52.317187,5.543099 52.317183,5.543072 52.317175,5.543061 52.317174,5.542756 52.316591,5.542758 52.316591,5.542763 52.316584,5.542774 52.316569,5.542774 52.316564,5.542758 52.316534,5.542749 52.316524,5.54274 52.316517,5.542737 52.316515,5.54273 52.316511,5.542726 52.316509,5.542708 52.316503,5.542691 52.3165,5.542674 52.3165,5.542666 52.3165,5.542634 52.316505,5.542631 52.316507,5.542625 52.316508,5.542598 52.316514,5.542598 52.316514,5.542597 52.316514,5.542596 52.316514,5.542595 52.316514,5.542594 52.316515,5.542593 52.316515,5.542592 52.316515,5.542591 52.316515,5.54259 52.316516,5.542589 52.316516,5.542588 52.316516,5.542587 52.316517,5.542586 52.316517,5.542585 52.316517,5.542584 52.316518,5.542583 52.316518,5.542582 52.316518,5.542582 52.316519,5.542581 52.316519,5.54258 52.316519,5.542579 52.31652,5.542578 52.31652,5.542577 52.316521,5.542576 52.316521,5.542576 52.316521,5.542575 52.316522,5.542574 52.316522,5.542573 52.316523,5.542572 52.316523,5.542572 52.316524,5.542571 52.316524,5.54257 52.316525,5.54257 52.316525,5.542569 52.316525,5.542568 52.316526,5.542567 52.316526,5.542567 52.316527,5.542566 52.316527,5.542565 52.316528,5.542565 52.316528,5.542564 52.316529,5.542564 52.31653,5.542563 52.31653,5.542562 52.316531,5.542562 52.316531,5.542561 52.316532,5.542561 52.316532,5.54256 52.316533,5.54256 52.316533,5.542559 52.316534,5.542559 52.316535,5.542558 52.316535,5.542558 52.316536,5.542557 52.316536,5.542557 52.316537,5.542556 52.316537,5.542556 52.316538,5.542556 52.316539,5.542555 52.316539,5.542555 52.31654,5.542555 52.31654,5.542554 52.316541,5.542554 52.316542,5.542554 52.316542,5.542553 52.316543,5.542553 52.316544,5.542553 52.316544,5.542553 52.316545,5.542552 52.316545,5.542552 52.316546,5.542552 52.316547,5.542552 52.316547,5.542552 52.316548,5.542552 52.316549,5.542551 52.316549,5.542551 52.31655,5.542551 52.316551,5.542551 52.316551,5.542551 52.316552,5.542551 52.316553,5.542551 52.316553,5.542551 52.316554,5.542551 52.316554,5.542551 52.316555,5.542551 52.316556,5.542551 52.316556,5.542551 52.316557,5.542551 52.316558,5.542551 52.316558,5.542552 52.316559,5.542552 52.31656,5.542552 52.31656,5.542552 52.316561,5.542552 52.316562,5.542552 52.316562,5.542553 52.316563,5.542553 52.316563,5.542553 52.316564,5.542553 52.316565,5.542554 52.316565,5.542554 52.316565,5.54256 52.316577,5.542553 52.316577,5.542459 52.316451)),((5.547495 52.318828,5.547468 52.318834,5.547421 52.318745,5.547373 52.318655,5.547401 52.31865,5.547448 52.31874,5.547495 52.318828)),((5.547383 52.318617,5.547355 52.318622,5.547307 52.318532,5.547259 52.318442,5.547287 52.318436,5.547335 52.318527,5.547383 52.318617)),((5.547523 52.319812,5.547514 52.319795,5.547673 52.319764,5.547881 52.319722,5.54789 52.31974,5.547682 52.319781,5.547523 52.319812)),((5.547942 52.319729,5.547933 52.319712,5.547865 52.319583,5.547797 52.319455,5.547729 52.319327,5.547684 52.319241,5.547662 52.319199,5.54769 52.319193,5.547712 52.319236,5.547757 52.319321,5.547825 52.319449,5.547892 52.319577,5.547961 52.319707,5.54797 52.319724,5.547942 52.319729)),((5.547173 52.318222,5.547328 52.318191,5.547311 52.318159,5.547311 52.318158,5.54733 52.318145,5.547539 52.318103,5.547596 52.318091,5.547666 52.318224,5.547722 52.318331,5.547779 52.318438,5.547836 52.318544,5.547892 52.318651,5.547949 52.318758,5.548005 52.318865,5.548076 52.318997,5.548019 52.319009,5.547932 52.319026,5.547786 52.319056,5.547632 52.319086,5.547609 52.319044,5.547562 52.318953,5.547513 52.318862,5.547667 52.318831,5.547659 52.318816,5.547649 52.318798,5.547495 52.318828,5.547448 52.31874,5.547401 52.31865,5.547555 52.318619,5.547546 52.318602,5.547537 52.318586,5.547383 52.318617,5.547335 52.318527,5.547287 52.318436,5.547442 52.318405,5.547433 52.318388,5.547424 52.318372,5.547269 52.318403,5.547221 52.318312,5.547173 52.318222)),((5.547523 52.319812,5.547682 52.319781,5.54789 52.31974,5.547948 52.31985,5.547968 52.319886,5.547993 52.319881,5.548019 52.319875,5.548 52.319839,5.547942 52.319729,5.54797 52.319724,5.547961 52.319707,5.547892 52.319577,5.547825 52.319449,5.547757 52.319321,5.547712 52.319236,5.54769 52.319193,5.547868 52.319158,5.548077 52.319116,5.548099 52.319159,5.548144 52.319244,5.548212 52.319372,5.54828 52.3195,5.548348 52.319629,5.548416 52.319756,5.548436 52.319796,5.548484 52.319885,5.548275 52.319926,5.548042 52.319973,5.547808 52.32002,5.547647 52.320052,5.547608 52.319977,5.54758 52.319923,5.547523 52.319812)),((5.543595 52.318469,5.54361 52.318466,5.543735 52.318354,5.543738 52.318354,5.543846 52.318332,5.543847 52.318333,5.543861 52.31836,5.543869 52.318375,5.543958 52.318542,5.54411 52.318511,5.544261 52.318481,5.544412 52.318451,5.544562 52.318421,5.544713 52.318391,5.544864 52.318362,5.545014 52.318332,5.545165 52.318302,5.545315 52.318272,5.545466 52.318242,5.545617 52.318212,5.545769 52.318181,5.545789 52.318242,5.54397 52.318592,5.543969 52.318591,5.543752 52.318633,5.543712 52.318642,5.543693 52.318647,5.54369 52.318648,5.543688 52.318648,5.54368 52.318633,5.543679 52.318631,5.543671 52.318596,5.54367 52.318595,5.543663 52.318596,5.543595 52.318469)),((5.546907 52.31822,5.546868 52.318147,5.546869 52.318147,5.547122 52.318095,5.547177 52.318084,5.547498 52.318017,5.547562 52.318027,5.547596 52.318091,5.547539 52.318103,5.54733 52.318145,5.547311 52.318158,5.547311 52.318159,5.547148 52.318192,5.547129 52.318195,5.547121 52.318178,5.546909 52.31822,5.546907 52.31822)),((5.546724 52.319546,5.546398 52.31893,5.546419 52.318925,5.546416 52.318919,5.54645 52.318912,5.546461 52.318933,5.546566 52.319131,5.546583 52.319128,5.546684 52.31932,5.546668 52.319323,5.546773 52.319521,5.546844 52.319657,5.546888 52.31974,5.54706 52.319705,5.547148 52.319688,5.547319 52.319654,5.547407 52.319636,5.547579 52.319602,5.547535 52.319519,5.547463 52.319383,5.547152 52.318795,5.547141 52.318775,5.547197 52.318764,5.547529 52.319392,5.547653 52.319625,5.547511 52.319654,5.547381 52.31968,5.547252 52.319705,5.547121 52.319731,5.546992 52.319757,5.546875 52.31978,5.546752 52.319547,5.546749 52.319541,5.546724 52.319546)),((5.546306 52.318709,5.54633 52.318704,5.546653 52.318639,5.54674 52.318622,5.547063 52.318558,5.547086 52.318553,5.54718 52.318732,5.547197 52.318764,5.547141 52.318775,5.547152 52.318795,5.547463 52.319383,5.547535 52.319519,5.547579 52.319602,5.547407 52.319636,5.547319 52.319654,5.547148 52.319688,5.54706 52.319705,5.546888 52.31974,5.546844 52.319657,5.546773 52.319521,5.546668 52.319323,5.546684 52.31932,5.546583 52.319128,5.546566 52.319131,5.546461 52.318933,5.54645 52.318912,5.546416 52.318919,5.546399 52.318886,5.546306 52.318709)),((5.534427 52.316093,5.534432 52.316092,5.53562 52.315857,5.536219 52.315738,5.537247 52.315534,5.541639 52.314661,5.542974 52.314395,5.546084 52.313775,5.546114 52.31377,5.546126 52.313793,5.546146 52.313838,5.546503 52.314521,5.546542 52.314519,5.546597 52.314629,5.546521 52.314644,5.546844 52.315257,5.547309 52.31614,5.547681 52.316843,5.548068 52.317581,5.548135 52.317708,5.548157 52.317756,5.54816 52.317759,5.54816 52.317763,5.548156 52.317766,5.548151 52.317768,5.547268 52.31793,5.546898 52.317997,5.546487 52.318064,5.546473 52.318069,5.546464 52.318056,5.546467 52.318047,5.546399 52.317929,5.5464 52.317912,5.5464 52.317907,5.54638 52.317882,5.546317 52.317731,5.546319 52.317721,5.54632 52.317707,5.546319 52.317694,5.546315 52.31768,5.54631 52.317667,5.546301 52.317655,5.546291 52.317642,5.546279 52.317631,5.546265 52.31762,5.546214 52.317533,5.546195 52.317458,5.546157 52.317425,5.546067 52.317249,5.546071 52.317228,5.546071 52.317215,5.546068 52.317203,5.546063 52.317191,5.546056 52.317179,5.546047 52.317168,5.546037 52.317157,5.546024 52.317147,5.54601 52.317138,5.545981 52.317078,5.545928 52.316968,5.54592 52.316924,5.545884 52.316883,5.545866 52.31685,5.545868 52.316808,5.545859 52.316799,5.545835 52.316787,5.545825 52.316766,5.545829 52.316752,5.54583 52.316744,5.545827 52.316728,5.545824 52.31672,5.545819 52.316712,5.545806 52.316698,5.545798 52.316691,5.545778 52.31668,5.54576 52.316635,5.54574 52.316586,5.545726 52.316565,5.545693 52.316513,5.545698 52.316473,5.545662 52.316433,5.54565 52.316429,5.545618 52.316358,5.545588 52.316307,5.545578 52.316254,5.545547 52.316224,5.545516 52.316169,5.545523 52.316134,5.545507 52.3161,5.54549 52.316063,5.545443 52.316022,5.5454 52.315938,5.545288 52.315812,5.545266 52.31578,5.545256 52.315761,5.545269 52.315748,5.545369 52.315714,5.545497 52.315669,5.546468 52.315331,5.546446 52.315296,5.546364 52.315318,5.546211 52.31535,5.54604 52.315397,5.545938 52.3154,5.545775 52.315415,5.54568 52.31548,5.545572 52.315554,5.545428 52.315621,5.545231 52.315667,5.544959 52.315683,5.544794 52.315704,5.544696 52.315724,5.544741 52.315775,5.54469 52.31578,5.544543 52.315794,5.544538 52.31578,5.544534 52.315762,5.544387 52.315731,5.544074 52.315771,5.543813 52.315794,5.543598 52.315828,5.543359 52.315856,5.543262 52.315866,5.543133 52.315879,5.543064 52.315867,5.542959 52.315896,5.542849 52.31591,5.542748 52.31591,5.542708 52.315907,5.542644 52.315903,5.542617 52.315901,5.54259 52.315904,5.542569 52.315908,5.54255 52.315918,5.542546 52.315932,5.542535 52.315935,5.542411 52.315946,5.542335 52.315962,5.542287 52.315979,5.542274 52.315981,5.542258 52.315982,5.542241 52.315985,5.542172 52.315984,5.542097 52.315961,5.54194 52.315947,5.541844 52.315923,5.54165 52.315863,5.541644 52.315873,5.541641 52.315876,5.541614 52.315915,5.541614 52.315915,5.541608 52.315913,5.541601 52.315911,5.541595 52.315908,5.541588 52.315906,5.541582 52.315903,5.541575 52.315901,5.541569 52.315899,5.541562 52.315896,5.541556 52.315894,5.541549 52.315891,5.541542 52.315889,5.541536 52.315887,5.541529 52.315885,5.541523 52.315882,5.541516 52.31588,5.541509 52.315878,5.541503 52.315875,5.541496 52.315873,5.541489 52.315871,5.541483 52.315869,5.541476 52.315867,5.541469 52.315865,5.541462 52.315862,5.541456 52.31586,5.541449 52.315858,5.541442 52.315856,5.541435 52.315854,5.541429 52.315852,5.541422 52.31585,5.541415 52.315848,5.541408 52.315846,5.541401 52.315844,5.541394 52.315842,5.541388 52.31584,5.541381 52.315838,5.541374 52.315836,5.541367 52.315834,5.54136 52.315832,5.541353 52.31583,5.541346 52.315828,5.541339 52.315826,5.541332 52.315824,5.541325 52.315822,5.541318 52.31582,5.541311 52.315819,5.541304 52.315817,5.541297 52.315815,5.54129 52.315813,5.541283 52.315811,5.541276 52.31581,5.541269 52.315808,5.541262 52.315806,5.541255 52.315804,5.541248 52.315803,5.541241 52.315801,5.541234 52.315799,5.541227 52.315798,5.54122 52.315796,5.541213 52.315794,5.541205 52.315793,5.541198 52.315791,5.541191 52.31579,5.541184 52.315788,5.541177 52.315787,5.54117 52.315785,5.541163 52.315783,5.541155 52.315782,5.541148 52.31578,5.541141 52.315779,5.541134 52.315778,5.541126 52.315776,5.541119 52.315775,5.541112 52.315773,5.541105 52.315772,5.541098 52.31577,5.54109 52.315769,5.541083 52.315768,5.541076 52.315766,5.541068 52.315765,5.541061 52.315764,5.541054 52.315762,5.541047 52.315761,5.541039 52.31576,5.541032 52.315759,5.541025 52.315757,5.541017 52.315756,5.54101 52.315755,5.541003 52.315754,5.540995 52.315753,5.540988 52.315751,5.54098 52.31575,5.540973 52.315749,5.540966 52.315748,5.540958 52.315747,5.540951 52.315746,5.540944 52.315745,5.540936 52.315744,5.540929 52.315743,5.540921 52.315742,5.540921 52.315742,5.540919 52.315741,5.540917 52.315741,5.540915 52.315741,5.540913 52.315741,5.540911 52.31574,5.540909 52.31574,5.540907 52.31574,5.540905 52.315739,5.540903 52.315739,5.5409 52.315739,5.540898 52.315739,5.540896 52.315738,5.540894 52.315738,5.540892 52.315738,5.54089 52.315738,5.540888 52.315737,5.540886 52.315737,5.540884 52.315737,5.540882 52.315737,5.540879 52.315736,5.540877 52.315736,5.540875 52.315736,5.540873 52.315736,5.540871 52.315735,5.540869 52.315735,5.540867 52.315735,5.540865 52.315734,5.540863 52.315734,5.540861 52.315734,5.540859 52.315734,5.540856 52.315734,5.540854 52.315733,5.540852 52.315733,5.54085 52.315733,5.540848 52.315733,5.540846 52.315732,5.540844 52.315732,5.540842 52.315732,5.54084 52.315732,5.540837 52.315731,5.540835 52.315731,5.540833 52.315731,5.540831 52.315731,5.540829 52.31573,5.540827 52.31573,5.540825 52.31573,5.540823 52.31573,5.540821 52.315729,5.540819 52.315729,5.540816 52.315729,5.540814 52.315729,5.540812 52.315729,5.54081 52.315728,5.540808 52.315728,5.540806 52.315728,5.540804 52.315728,5.540802 52.315728,5.5408 52.315727,5.540797 52.315727,5.540795 52.315727,5.540793 52.315727,5.540791 52.315726,5.540789 52.315726,5.540787 52.315726,5.540785 52.315726,5.540783 52.315726,5.540781 52.315725,5.540778 52.315725,5.540776 52.315725,5.540774 52.315725,5.540772 52.315725,5.54077 52.315724,5.540768 52.315724,5.540766 52.315724,5.540764 52.315724,5.540761 52.315724,5.540759 52.315724,5.540757 52.315723,5.540755 52.315723,5.540753 52.315723,5.540751 52.315723,5.540749 52.315723,5.540747 52.315722,5.540745 52.315722,5.540742 52.315722,5.54074 52.315722,5.540738 52.315722,5.540736 52.315722,5.540734 52.315721,5.540732 52.315721,5.54073 52.315721,5.540728 52.315721,5.540725 52.315721,5.540723 52.31572,5.540721 52.31572,5.540719 52.31572,5.540717 52.31572,5.540715 52.31572,5.540713 52.31572,5.540713 52.31572,5.540703 52.315719,5.540693 52.315718,5.540683 52.315717,5.540673 52.315717,5.540663 52.315716,5.540653 52.315716,5.540643 52.315715,5.540633 52.315714,5.540623 52.315714,5.540613 52.315713,5.540603 52.315713,5.540593 52.315712,5.540583 52.315712,5.540573 52.315712,5.540564 52.315711,5.540554 52.315711,5.540544 52.31571,5.540534 52.31571,5.540524 52.31571,5.540514 52.31571,5.540504 52.315709,5.540494 52.315709,5.540484 52.315709,5.540474 52.315709,5.540464 52.315709,5.540454 52.315709,5.540444 52.315709,5.540434 52.315709,5.540424 52.315709,5.540414 52.315709,5.540404 52.315709,5.540394 52.315709,5.540384 52.315709,5.540374 52.315709,5.540364 52.315709,5.540354 52.31571,5.540344 52.31571,5.540334 52.31571,5.540324 52.31571,5.540314 52.315711,5.540304 52.315711,5.540294 52.315711,5.540284 52.315712,5.540274 52.315712,5.540264 52.315712,5.540254 52.315713,5.540244 52.315713,5.540234 52.315714,5.540224 52.315715,5.540214 52.315715,5.540204 52.315716,5.540194 52.315716,5.540184 52.315717,5.540174 52.315718,5.540164 52.315718,5.540155 52.315719,5.540145 52.31572,5.540135 52.315721,5.540125 52.315721,5.540115 52.315722,5.540105 52.315723,5.540095 52.315724,5.540085 52.315725,5.540075 52.315726,5.540065 52.315727,5.540056 52.315728,5.540046 52.315729,5.540036 52.31573,5.540026 52.315731,5.540016 52.315732,5.540006 52.315733,5.539997 52.315735,5.539987 52.315736,5.539977 52.315737,5.539967 52.315738,5.539957 52.31574,5.539948 52.315741,5.539938 52.315742,5.539928 52.315744,5.539918 52.315745,5.539909 52.315746,5.539899 52.315748,5.539889 52.315749,5.53988 52.315751,5.53987 52.315752,5.53986 52.315754,5.539851 52.315755,5.539841 52.315757,5.539831 52.315759,5.539822 52.31576,5.539812 52.315762,5.539802 52.315764,5.539793 52.315765,5.539783 52.315767,5.539774 52.315769,5.539764 52.315771,5.539755 52.315772,5.539745 52.315774,5.539736 52.315776,5.539736 52.315776,5.539643 52.315795,5.537417 52.316237,5.537382 52.316244,5.537375 52.316245,5.537331 52.316254,5.537325 52.316255,5.536882 52.316344,5.536656 52.316387,5.536422 52.316424,5.536189 52.316453,5.536002 52.316471,5.535108 52.316552,5.534949 52.316564,5.53481 52.316572,5.534783 52.3165,5.534621 52.316384,5.53459 52.316331,5.53457 52.316304,5.534473 52.316194,5.53448 52.316165,5.534427 52.316093)),((5.544349 52.317183,5.544419 52.317169,5.544755 52.317103,5.544857 52.317082,5.544975 52.317059,5.545103 52.317033,5.545163 52.317022,5.545212 52.317115,5.545153 52.317127,5.544804 52.317197,5.544452 52.317267,5.544399 52.317277,5.544349 52.317183)),((5.544419 52.317169,5.544402 52.317136,5.544365 52.317067,5.544352 52.317041,5.544306 52.31705,5.544292 52.317022,5.544257 52.316956,5.544225 52.316895,5.544186 52.316821,5.544157 52.316767,5.544116 52.316691,5.544085 52.316632,5.54405 52.316567,5.544019 52.316507,5.543985 52.316442,5.543953 52.316383,5.543924 52.316329,5.543908 52.316298,5.544288 52.316222,5.544668 52.316146,5.544685 52.316178,5.544717 52.316238,5.544747 52.316295,5.544782 52.316361,5.544811 52.316416,5.544848 52.316486,5.544863 52.316514,5.544831 52.31652,5.544855 52.316565,5.544901 52.31665,5.544941 52.316727,5.544971 52.316783,5.545046 52.316925,5.54509 52.317008,5.545103 52.317033,5.544975 52.317059,5.544857 52.317082,5.544755 52.317103,5.544419 52.317169)),((5.543688 52.318648,5.54369 52.318648,5.543693 52.318647,5.543712 52.318642,5.543752 52.318633,5.543969 52.318591,5.54397 52.318592,5.545789 52.318242,5.54588 52.318224,5.545932 52.318323,5.545918 52.318326,5.545837 52.318343,5.545822 52.318345,5.545699 52.31837,5.545571 52.318395,5.545443 52.318421,5.545315 52.318446,5.545187 52.318472,5.545059 52.318497,5.544931 52.318522,5.544803 52.318548,5.544675 52.318573,5.544548 52.318599,5.54442 52.318624,5.544292 52.31865,5.544164 52.318675,5.544041 52.318699,5.544043 52.318704,5.544042 52.318704,5.544033 52.318706,5.543751 52.318757,5.543748 52.318758,5.543746 52.318758,5.543692 52.318655,5.543688 52.318648)),((5.543746 52.318758,5.543748 52.318758,5.543751 52.318757,5.544033 52.318706,5.544042 52.318704,5.544043 52.318704,5.544101 52.318813,5.544167 52.318942,5.544185 52.318976,5.544135 52.318989,5.543897 52.318936,5.543848 52.318945,5.54384 52.318931,5.54378 52.318818,5.543788 52.318816,5.543787 52.318815,5.54376 52.318783,5.543759 52.318782,5.543752 52.318768,5.543746 52.318758)),((5.545406 52.317068,5.545325 52.316914,5.545382 52.316902,5.545664 52.316846,5.54574 52.316831,5.545748 52.316846,5.545822 52.316985,5.545462 52.317057,5.545406 52.317068)),((5.545562 52.319347,5.545506 52.319358,5.545386 52.319132,5.54541 52.319127,5.545407 52.319121,5.545439 52.319114,5.54545 52.319134,5.545555 52.319333,5.545562 52.319347)),((5.54469 52.31578,5.544741 52.315775,5.544748 52.315774,5.544793 52.315858,5.54483 52.315928,5.544883 52.316028,5.544921 52.3161,5.544955 52.316165,5.544993 52.316235,5.544996 52.31624,5.545051 52.316345,5.545096 52.31643,5.545114 52.316464,5.545146 52.316458,5.545209 52.316579,5.545236 52.316631,5.5453 52.31675,5.545382 52.316902,5.545325 52.316914,5.545294 52.31692,5.545255 52.316846,5.545176 52.316698,5.545058 52.316475,5.544971 52.31631,5.544884 52.316145,5.544796 52.31598,5.54469 52.31578)),((5.545946 52.318151,5.545842 52.317955,5.545756 52.317792,5.54567 52.31763,5.545584 52.317467,5.54548 52.317271,5.54551 52.317264,5.545406 52.317068,5.545462 52.317057,5.545549 52.317219,5.545567 52.317253,5.545564 52.317254,5.545613 52.317346,5.545644 52.317404,5.545669 52.31745,5.545656 52.317453,5.54567 52.317479,5.545705 52.317545,5.545743 52.317615,5.545733 52.317617,5.545747 52.317643,5.545804 52.31775,5.54582 52.31778,5.545813 52.317781,5.545827 52.317807,5.545863 52.317876,5.545898 52.317944,5.545967 52.31807,5.54599 52.318113,5.546004 52.31814,5.545946 52.318151)),((5.543869 52.318375,5.543861 52.31836,5.543847 52.318333,5.543999 52.318302,5.54415 52.318272,5.544301 52.318242,5.544451 52.318212,5.544602 52.318182,5.544753 52.318152,5.544903 52.318122,5.545054 52.318092,5.545204 52.318062,5.545355 52.318032,5.545506 52.318002,5.545658 52.317972,5.545673 52.317999,5.545681 52.318015,5.545606 52.31803,5.545451 52.31806,5.545304 52.31809,5.54515 52.31812,5.545003 52.31815,5.544848 52.31818,5.544702 52.31821,5.544547 52.31824,5.5444 52.31827,5.544246 52.3183,5.544099 52.318329,5.543944 52.31836,5.543869 52.318375)),((5.546992 52.318379,5.54701 52.318414,5.546863 52.318443,5.546738 52.318468,5.546612 52.318493,5.546487 52.318518,5.546361 52.318543,5.546232 52.318569,5.546214 52.318534,5.546261 52.318525,5.546425 52.318492,5.546512 52.318475,5.546675 52.318442,5.546763 52.318425,5.546926 52.318392,5.546992 52.318379)),((5.544185 52.318976,5.544167 52.318942,5.544209 52.318934,5.544372 52.318901,5.544465 52.318883,5.544628 52.31885,5.544721 52.318832,5.544884 52.318799,5.544977 52.318781,5.54514 52.318748,5.545232 52.31873,5.545396 52.318697,5.545488 52.318679,5.545652 52.318646,5.545745 52.318628,5.545908 52.318595,5.54595 52.318587,5.545968 52.318621,5.545843 52.318646,5.545715 52.318671,5.545587 52.318697,5.545459 52.318722,5.545332 52.318748,5.545204 52.318773,5.545076 52.318799,5.544948 52.318824,5.54482 52.31885,5.544692 52.318875,5.544564 52.318901,5.544436 52.318926,5.544308 52.318952,5.544185 52.318976)),((5.545382 52.316902,5.5453 52.31675,5.545236 52.316631,5.545209 52.316579,5.545146 52.316458,5.545114 52.316464,5.545096 52.31643,5.545051 52.316345,5.544996 52.31624,5.544993 52.316235,5.544955 52.316165,5.544921 52.3161,5.544883 52.316028,5.54483 52.315928,5.544793 52.315858,5.544748 52.315774,5.54516 52.315736,5.545242 52.315892,5.54533 52.316057,5.545417 52.316222,5.545504 52.316387,5.545622 52.316609,5.54574 52.316831,5.545664 52.316846,5.545382 52.316902)),((5.54599 52.318113,5.545967 52.31807,5.545898 52.317944,5.545863 52.317876,5.545827 52.317807,5.545813 52.317781,5.54582 52.31778,5.545804 52.31775,5.545747 52.317643,5.545733 52.317617,5.545743 52.317615,5.545705 52.317545,5.54567 52.317479,5.545656 52.317453,5.545669 52.31745,5.545644 52.317404,5.545613 52.317346,5.545564 52.317254,5.545567 52.317253,5.545549 52.317219,5.545462 52.317057,5.545822 52.316985,5.545926 52.317181,5.54603 52.317378,5.546116 52.31754,5.546202 52.317703,5.546288 52.317865,5.546393 52.318062,5.546381 52.318064,5.546004 52.31814,5.54599 52.318113)),((5.545769 52.318181,5.545617 52.318212,5.545466 52.318242,5.545315 52.318272,5.545165 52.318302,5.545014 52.318332,5.544864 52.318362,5.544713 52.318391,5.544562 52.318421,5.544412 52.318451,5.544261 52.318481,5.54411 52.318511,5.543958 52.318542,5.543869 52.318375,5.543944 52.31836,5.544099 52.318329,5.544246 52.3183,5.5444 52.31827,5.544547 52.31824,5.544702 52.31821,5.544848 52.31818,5.545003 52.31815,5.54515 52.31812,5.545304 52.31809,5.545451 52.31806,5.545606 52.31803,5.545681 52.318015,5.545769 52.318181)),((5.544043 52.318704,5.544041 52.318699,5.544164 52.318675,5.544292 52.31865,5.54442 52.318624,5.544548 52.318599,5.544675 52.318573,5.544803 52.318548,5.544931 52.318522,5.545059 52.318497,5.545187 52.318472,5.545315 52.318446,5.545443 52.318421,5.545571 52.318395,5.545699 52.31837,5.545822 52.318345,5.545837 52.318343,5.545894 52.318451,5.54588 52.318454,5.54593 52.318551,5.54595 52.318587,5.545908 52.318595,5.545745 52.318628,5.545652 52.318646,5.545488 52.318679,5.545396 52.318697,5.545232 52.31873,5.54514 52.318748,5.544977 52.318781,5.544884 52.318799,5.544721 52.318832,5.544628 52.31885,5.544465 52.318883,5.544372 52.318901,5.544209 52.318934,5.544167 52.318942,5.544101 52.318813,5.544043 52.318704)),((5.546214 52.318534,5.546143 52.318401,5.546129 52.318404,5.546072 52.318296,5.546086 52.318293,5.5461 52.31829,5.546215 52.318267,5.54634 52.318242,5.546466 52.318217,5.546591 52.318192,5.546716 52.318167,5.546863 52.318138,5.546868 52.318147,5.546907 52.31822,5.546992 52.318379,5.546926 52.318392,5.546763 52.318425,5.546675 52.318442,5.546512 52.318475,5.546425 52.318492,5.546261 52.318525,5.546214 52.318534)),((5.545979 52.318207,5.545946 52.318151,5.546004 52.31814,5.546381 52.318064,5.546394 52.318095,5.546399 52.318106,5.546334 52.318121,5.546254 52.318145,5.545979 52.318207)),((5.544349 52.317183,5.544281 52.317055,5.544281 52.317054,5.54425 52.31706,5.544183 52.316933,5.544137 52.316848,5.544115 52.316806,5.544047 52.316678,5.543981 52.316553,5.543915 52.316429,5.543843 52.316292,5.543899 52.316281,5.544279 52.316205,5.544659 52.316129,5.544716 52.316118,5.544789 52.316255,5.544854 52.316379,5.544919 52.316503,5.54501 52.316674,5.545102 52.316847,5.545075 52.316852,5.545163 52.317022,5.545103 52.317033,5.54509 52.317008,5.545046 52.316925,5.544971 52.316783,5.544941 52.316727,5.544901 52.31665,5.544855 52.316565,5.544831 52.31652,5.544863 52.316514,5.544848 52.316486,5.544811 52.316416,5.544782 52.316361,5.544747 52.316295,5.544717 52.316238,5.544685 52.316178,5.544668 52.316146,5.544288 52.316222,5.543908 52.316298,5.543924 52.316329,5.543953 52.316383,5.543985 52.316442,5.544019 52.316507,5.54405 52.316567,5.544085 52.316632,5.544116 52.316691,5.544157 52.316767,5.544186 52.316821,5.544225 52.316895,5.544257 52.316956,5.544292 52.317022,5.544306 52.31705,5.544352 52.317041,5.544365 52.317067,5.544402 52.317136,5.544419 52.317169,5.544349 52.317183)),((5.545212 52.317115,5.545315 52.317308,5.545316 52.317309,5.545343 52.317303,5.545444 52.317495,5.54551 52.317619,5.545574 52.317742,5.545648 52.31788,5.545593 52.317891,5.545212 52.317967,5.544832 52.318043,5.544777 52.318054,5.544703 52.317916,5.544637 52.317792,5.544571 52.317668,5.544503 52.31754,5.544435 52.317412,5.544368 52.317284,5.544399 52.317277,5.544452 52.317267,5.54452 52.317395,5.544506 52.317398,5.544511 52.317407,5.544574 52.317526,5.54456 52.317529,5.544693 52.317781,5.544715 52.317776,5.544781 52.317901,5.54476 52.317905,5.544778 52.317939,5.544814 52.318008,5.544819 52.318016,5.54558 52.317866,5.545574 52.317856,5.545543 52.317797,5.545502 52.31772,5.545467 52.317655,5.545439 52.317602,5.545402 52.317532,5.545388 52.317506,5.545358 52.317512,5.545344 52.317486,5.545269 52.317346,5.54522 52.317253,5.545176 52.31717,5.545153 52.317127,5.545212 52.317115)),((5.546306 52.318709,5.546288 52.318676,5.546395 52.318654,5.546474 52.318639,5.546554 52.318623,5.546679 52.318598,5.546804 52.318573,5.546884 52.318557,5.546963 52.318541,5.547068 52.31852,5.547086 52.318553,5.547063 52.318558,5.54674 52.318622,5.546653 52.318639,5.54633 52.318704,5.546306 52.318709)),((5.545296 52.318911,5.545278 52.318877,5.545374 52.318858,5.545454 52.318842,5.545534 52.318826,5.545657 52.318801,5.545779 52.318777,5.545859 52.318761,5.545939 52.318745,5.546034 52.318726,5.546052 52.31876,5.546039 52.318763,5.545716 52.318827,5.545634 52.318844,5.545311 52.318908,5.545296 52.318911)),((5.54426 52.319117,5.544242 52.319083,5.544349 52.319061,5.544428 52.319045,5.544509 52.319029,5.544631 52.319005,5.544753 52.318981,5.544833 52.318965,5.544913 52.318949,5.545019 52.318928,5.545038 52.318962,5.545013 52.318967,5.54469 52.319031,5.544608 52.319048,5.54426 52.319117)),((5.544372 52.319326,5.544428 52.319315,5.544439 52.319336,5.54475 52.319924,5.544821 52.320059,5.544865 52.320142,5.545037 52.320108,5.545125 52.32009,5.545297 52.320056,5.545384 52.320039,5.545556 52.320005,5.545501 52.3199,5.54544 52.319786,5.545335 52.319588,5.545319 52.319591,5.545217 52.3194,5.545234 52.319397,5.545129 52.319198,5.545118 52.319178,5.545149 52.319172,5.545152 52.319178,5.545177 52.319173,5.545504 52.319789,5.54548 52.319794,5.545483 52.3198,5.545606 52.320033,5.545488 52.320056,5.545359 52.320082,5.545229 52.320108,5.5451 52.320133,5.544969 52.320159,5.544828 52.320187,5.544704 52.319955,5.544372 52.319326)),((5.545713 52.319748,5.545593 52.319522,5.545649 52.319511,5.545656 52.319524,5.545761 52.319722,5.545833 52.319858,5.545877 52.319941,5.546049 52.319907,5.546136 52.319889,5.546308 52.319855,5.546396 52.319838,5.546567 52.319804,5.546523 52.319721,5.546481 52.319639,5.546466 52.319611,5.546451 52.319585,5.546346 52.319387,5.546339 52.319373,5.546395 52.319362,5.546515 52.319587,5.546491 52.319592,5.546495 52.319598,5.546618 52.319831,5.5465 52.319855,5.54637 52.319881,5.54624 52.319906,5.546111 52.319932,5.545981 52.319958,5.545864 52.319981,5.54574 52.31975,5.545737 52.319743,5.545713 52.319748)),((5.546252 52.319208,5.546245 52.319195,5.54614 52.318997,5.546129 52.318977,5.546163 52.31897,5.546166 52.318976,5.546189 52.318972,5.546308 52.319197,5.546252 52.319208)),((5.544819 52.318016,5.544814 52.318008,5.544778 52.317939,5.54476 52.317905,5.544781 52.317901,5.544715 52.317776,5.544693 52.317781,5.54456 52.317529,5.544574 52.317526,5.544511 52.317407,5.544506 52.317398,5.54452 52.317395,5.544452 52.317267,5.544804 52.317197,5.545153 52.317127,5.545176 52.31717,5.54522 52.317253,5.545269 52.317346,5.545344 52.317486,5.545358 52.317512,5.545388 52.317506,5.545402 52.317532,5.545439 52.317602,5.545467 52.317655,5.545502 52.31772,5.545543 52.317797,5.545574 52.317856,5.54558 52.317866,5.544819 52.318016)),((5.545649 52.319511,5.546339 52.319373,5.546346 52.319387,5.546451 52.319585,5.546466 52.319611,5.546481 52.319639,5.546523 52.319721,5.546567 52.319804,5.546396 52.319838,5.546308 52.319855,5.546136 52.319889,5.546049 52.319907,5.545877 52.319941,5.545833 52.319858,5.545761 52.319722,5.545656 52.319524,5.545649 52.319511)),((5.54426 52.319117,5.544608 52.319048,5.54469 52.319031,5.545013 52.318967,5.545038 52.318962,5.545131 52.319138,5.545149 52.319172,5.545118 52.319178,5.545129 52.319198,5.545234 52.319397,5.545217 52.3194,5.545319 52.319591,5.545335 52.319588,5.54544 52.319786,5.545501 52.3199,5.545556 52.320005,5.545384 52.320039,5.545297 52.320056,5.545125 52.32009,5.545037 52.320108,5.544865 52.320142,5.544821 52.320059,5.54475 52.319924,5.544439 52.319336,5.544428 52.319315,5.544372 52.319326,5.544354 52.319293,5.54426 52.319117)),((5.545296 52.318911,5.545311 52.318908,5.545634 52.318844,5.545716 52.318827,5.546039 52.318763,5.546052 52.31876,5.546146 52.318937,5.546163 52.31897,5.546129 52.318977,5.54614 52.318997,5.546245 52.319195,5.546252 52.319208,5.545562 52.319347,5.545555 52.319333,5.54545 52.319134,5.545439 52.319114,5.545407 52.319121,5.545389 52.319087,5.545296 52.318911)),((5.545504 52.319789,5.545177 52.319173,5.545248 52.31916,5.545317 52.319147,5.545386 52.319132,5.545506 52.319358,5.545562 52.319347,5.546252 52.319208,5.546308 52.319197,5.546189 52.318972,5.546203 52.318969,5.546272 52.318955,5.546292 52.318951,5.546315 52.318946,5.546383 52.318933,5.546398 52.31893,5.546724 52.319546,5.54671 52.319549,5.546642 52.319562,5.546619 52.319567,5.546599 52.319571,5.54653 52.319585,5.546515 52.319587,5.546395 52.319362,5.546339 52.319373,5.545649 52.319511,5.545593 52.319522,5.545713 52.319748,5.545643 52.319761,5.545574 52.319775,5.545504 52.319789)),((5.540945 52.318346,5.540906 52.318242,5.54001 52.316532,5.54001 52.316528,5.540011 52.316523,5.540014 52.316519,5.540018 52.316515,5.540024 52.316511,5.540034 52.316508,5.540041 52.316507,5.540614 52.316356,5.541557 52.316106,5.541613 52.316092,5.541631 52.316101,5.541694 52.316134,5.54176 52.316174,5.541828 52.316218,5.541897 52.316265,5.541957 52.316308,5.542015 52.316351,5.542066 52.316391,5.542113 52.316432,5.542149 52.316467,5.542192 52.316516,5.542217 52.316546,5.542252 52.316589,5.54227 52.316624,5.543265 52.31852,5.543261 52.318531,5.543261 52.318538,5.543261 52.318545,5.543266 52.318559,5.543333 52.31868,5.543334 52.318682,5.543332 52.318684,5.543341 52.3187,5.543348 52.318714,5.543333 52.318718,5.543098 52.318761,5.541819 52.319015,5.541763 52.319026,5.541707 52.319037,5.541351 52.319108,5.541271 52.318958,5.541253 52.318924,5.540945 52.318346)),((5.540458 52.321156,5.54026 52.320781,5.539814 52.319939,5.53937 52.319101,5.539214 52.318809,5.539136 52.318795,5.539076 52.318794,5.537682 52.318544,5.536393 52.318313,5.536369 52.318309,5.534356 52.317949,5.534336 52.317945,5.534314 52.317916,5.534314 52.317915,5.534315 52.317893,5.534319 52.317884,5.534322 52.317878,5.534344 52.317858,5.5344 52.317843,5.534641 52.317886,5.536418 52.318205,5.536442 52.318209,5.537527 52.318403,5.539011 52.318669,5.539011 52.318669,5.539068 52.318669,5.539069 52.318669,5.539199 52.318694,5.540925 52.31835,5.54093 52.318349,5.540945 52.318346,5.541253 52.318924,5.541271 52.318958,5.541351 52.319108,5.541707 52.319037,5.541763 52.319026,5.541819 52.319015,5.543098 52.318761,5.543333 52.318718,5.543348 52.318714,5.543352 52.318721,5.543408 52.318826,5.542469 52.319014,5.541248 52.319256,5.541214 52.31934,5.541154 52.319456,5.541107 52.319533,5.541077 52.31954,5.54063 52.319428,5.540243 52.319359,5.54018 52.319498,5.540631 52.319579,5.540976 52.319639,5.541041 52.319653,5.54102 52.319754,5.54092 52.319974,5.540815 52.320204,5.540578 52.320708,5.540564 52.320718,5.540546 52.320721,5.540601 52.320829,5.54074 52.321101,5.540458 52.321156)),((5.54074 52.321101,5.540601 52.320829,5.540546 52.320721,5.540564 52.320718,5.540578 52.320708,5.540815 52.320204,5.54092 52.319974,5.54102 52.319754,5.541041 52.319653,5.540976 52.319639,5.540631 52.319579,5.54018 52.319498,5.540243 52.319359,5.54063 52.319428,5.541077 52.31954,5.541107 52.319533,5.541154 52.319456,5.541214 52.31934,5.541248 52.319256,5.542469 52.319014,5.543408 52.318826,5.543428 52.318862,5.543431 52.318863,5.543555 52.319097,5.543526 52.319103,5.54214 52.319381,5.541195 52.31957,5.541131 52.319582,5.541088 52.319571,5.54109 52.319567,5.540614 52.319449,5.540616 52.319444,5.540263 52.319382,5.540214 52.319486,5.541056 52.319636,5.541058 52.319632,5.541192 52.319656,5.541195 52.319649,5.541269 52.319662,5.541279 52.319682,5.541732 52.320539,5.541795 52.320526,5.541972 52.32049,5.541975 52.320496,5.542028 52.320486,5.542047 52.320522,5.542361 52.320458,5.542371 52.320478,5.542474 52.320458,5.542523 52.320548,5.542658 52.320521,5.542702 52.320605,5.542648 52.320616,5.542593 52.320625,5.542354 52.320708,5.542027 52.320821,5.541859 52.320876,5.541807 52.320886,5.541614 52.320925,5.541209 52.321004,5.541025 52.321041,5.540941 52.321062,5.540929 52.321064,5.540823 52.321085,5.54074 52.321101)),((5.531933 52.32246,5.531956 52.322414,5.531785 52.322383,5.531438 52.322323,5.531327 52.322304,5.531311 52.322302,5.53114 52.322287,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.53136 52.32225,5.531405 52.322258,5.531405 52.322258,5.531405 52.322258,5.531406 52.322258,5.531406 52.322258,5.531407 52.322258,5.531407 52.322258,5.531408 52.322258,5.531409 52.322258,5.531409 52.322258,5.53141 52.322258,5.53141 52.322258,5.531411 52.322258,5.531412 52.322258,5.531412 52.322258,5.531413 52.322258,5.531413 52.322258,5.531414 52.322258,5.531415 52.322258,5.531415 52.322258,5.531416 52.322258,5.531416 52.322258,5.531417 52.322258,5.531417 52.322258,5.531418 52.322257,5.531419 52.322257,5.531419 52.322257,5.53142 52.322257,5.53142 52.322257,5.531421 52.322257,5.531421 52.322257,5.531422 52.322257,5.531423 52.322257,5.531423 52.322257,5.531424 52.322257,5.531424 52.322256,5.531425 52.322256,5.531425 52.322256,5.531426 52.322256,5.531426 52.322256,5.531427 52.322256,5.531428 52.322256,5.531428 52.322256,5.531429 52.322255,5.531429 52.322255,5.53143 52.322255,5.53143 52.322255,5.531431 52.322255,5.531431 52.322255,5.531432 52.322254,5.531432 52.322254,5.531433 52.322254,5.531433 52.322254,5.531434 52.322254,5.531434 52.322253,5.531435 52.322253,5.531435 52.322253,5.531436 52.322253,5.531436 52.322253,5.531437 52.322252,5.531437 52.322252,5.531438 52.322252,5.531438 52.322252,5.531438 52.322252,5.531439 52.322251,5.531439 52.322251,5.53144 52.322251,5.53144 52.322251,5.531441 52.32225,5.531441 52.32225,5.531441 52.32225,5.531442 52.32225,5.531442 52.322249,5.531443 52.322249,5.531443 52.322249,5.531443 52.322248,5.531444 52.322248,5.531444 52.322248,5.531445 52.322248,5.531445 52.322247,5.531445 52.322247,5.531446 52.322247,5.531446 52.322246,5.531446 52.322246,5.531447 52.322246,5.531447 52.322246,5.531447 52.322245,5.531448 52.322245,5.531448 52.322245,5.531448 52.322244,5.531448 52.322244,5.531449 52.322244,5.531449 52.322243,5.531449 52.322243,5.531449 52.322243,5.53145 52.322242,5.53145 52.322242,5.53145 52.322242,5.53145 52.322241,5.531451 52.322241,5.531451 52.322241,5.531451 52.322241,5.531464 52.322214,5.531474 52.322194,5.531549 52.322038,5.531768 52.321581,5.531846 52.321423,5.531883 52.321357,5.531963 52.321238,5.532019 52.321172,5.532055 52.321129,5.53211 52.321063,5.532154 52.321021,5.532327 52.320873,5.532431 52.320796,5.532515 52.32074,5.532722 52.320605,5.53274 52.320593,5.532754 52.320584,5.532772 52.320573,5.532924 52.320474,5.532975 52.320441,5.533392 52.32017,5.533599 52.320016,5.533627 52.319992,5.533687 52.319936,5.533703 52.319922,5.533716 52.31991,5.533739 52.319887,5.533787 52.319836,5.533824 52.319794,5.533849 52.319761,5.53384 52.319758,5.533852 52.319741,5.533852 52.319741,5.533853 52.31974,5.533853 52.31974,5.533853 52.319739,5.533853 52.319739,5.533853 52.319738,5.533853 52.319737,5.533853 52.319737,5.533853 52.319736,5.533853 52.319736,5.533852 52.319735,5.533852 52.319735,5.533852 52.319734,5.533852 52.319734,5.533852 52.319733,5.533852 52.319732,5.533852 52.319732,5.533852 52.319731,5.533852 52.319731,5.533852 52.31973,5.533851 52.31973,5.533851 52.319729,5.533851 52.319729,5.533851 52.319728,5.533851 52.319727,5.533851 52.319727,5.53385 52.319726,5.53385 52.319726,5.53385 52.319725,5.53385 52.319725,5.533849 52.319724,5.533849 52.319724,5.533849 52.319723,5.533849 52.319723,5.533848 52.319722,5.533848 52.319722,5.533848 52.319721,5.533848 52.31972,5.533847 52.31972,5.533847 52.319719,5.533847 52.319719,5.533846 52.319718,5.533846 52.319718,5.533846 52.319717,5.533845 52.319717,5.533845 52.319716,5.533844 52.319716,5.533844 52.319715,5.533844 52.319715,5.533843 52.319714,5.533843 52.319714,5.533842 52.319713,5.533842 52.319713,5.533841 52.319712,5.533841 52.319712,5.533841 52.319711,5.53384 52.319711,5.53384 52.31971,5.533839 52.31971,5.533839 52.319709,5.533838 52.319709,5.533838 52.319709,5.533837 52.319708,5.533837 52.319708,5.533836 52.319707,5.533835 52.319707,5.533835 52.319706,5.533834 52.319706,5.533834 52.319705,5.533833 52.319705,5.533833 52.319705,5.533832 52.319704,5.533831 52.319704,5.533831 52.319703,5.53383 52.319703,5.53383 52.319702,5.533829 52.319702,5.533828 52.319702,5.533828 52.319701,5.533827 52.319701,5.533826 52.3197,5.533826 52.3197,5.533825 52.3197,5.533824 52.319699,5.533824 52.319699,5.533823 52.319699,5.533822 52.319698,5.533822 52.319698,5.533821 52.319698,5.53382 52.319697,5.53382 52.319697,5.533819 52.319696,5.533818 52.319696,5.533817 52.319696,5.533817 52.319695,5.533816 52.319695,5.533815 52.319695,5.533814 52.319695,5.533814 52.319694,5.533813 52.319694,5.533813 52.319694,5.533681 52.319652,5.533681 52.319652,5.533681 52.319652,5.53368 52.319651,5.53368 52.319651,5.533679 52.319651,5.533678 52.319651,5.533678 52.319651,5.533677 52.319651,5.533677 52.31965,5.533676 52.31965,5.533675 52.31965,5.533675 52.31965,5.533674 52.31965,5.533674 52.31965,5.533673 52.31965,5.533672 52.31965,5.533672 52.319649,5.533671 52.319649,5.533671 52.319649,5.53367 52.319649,5.533669 52.319649,5.533669 52.319649,5.533668 52.319649,5.533668 52.319648,5.533667 52.319648,5.533666 52.319648,5.533666 52.319648,5.533665 52.319648,5.533665 52.319648,5.533664 52.319648,5.533663 52.319648,5.533663 52.319647,5.533662 52.319647,5.533662 52.319647,5.533661 52.319647,5.53366 52.319647,5.53366 52.319647,5.533659 52.319647,5.533658 52.319647,5.533658 52.319647,5.533657 52.319646,5.533657 52.319646,5.533656 52.319646,5.533655 52.319646,5.533655 52.319646,5.533654 52.319646,5.533654 52.319646,5.533653 52.319646,5.533652 52.319646,5.533652 52.319645,5.533651 52.319645,5.53365 52.319645,5.53365 52.319645,5.533649 52.319645,5.533649 52.319645,5.533648 52.319645,5.533647 52.319645,5.533647 52.319645,5.533646 52.319645,5.533645 52.319645,5.533645 52.319644,5.533644 52.319644,5.533644 52.319644,5.533643 52.319644,5.533642 52.319644,5.533642 52.319644,5.533641 52.319644,5.53364 52.319644,5.53364 52.319644,5.533639 52.319644,5.533639 52.319644,5.533638 52.319644,5.533637 52.319644,5.533637 52.319643,5.533636 52.319643,5.533635 52.319643,5.533635 52.319643,5.533634 52.319643,5.533633 52.319643,5.533633 52.319643,5.533632 52.319643,5.533632 52.319643,5.533631 52.319643,5.53363 52.319643,5.53363 52.319643,5.533629 52.319643,5.533628 52.319643,5.533628 52.319643,5.533627 52.319643,5.533626 52.319643,5.533626 52.319643,5.533625 52.319642,5.533625 52.319642,5.533624 52.319642,5.533623 52.319642,5.533623 52.319642,5.533622 52.319642,5.533621 52.319642,5.533621 52.319642,5.53362 52.319642,5.53362 52.319642,5.533666 52.319578,5.533666 52.319578,5.533667 52.319579,5.533667 52.319579,5.533668 52.319579,5.533668 52.31958,5.533669 52.31958,5.533669 52.31958,5.53367 52.319581,5.53367 52.319581,5.533671 52.319581,5.533672 52.319582,5.533672 52.319582,5.533673 52.319582,5.533673 52.319583,5.533674 52.319583,5.533674 52.319583,5.533675 52.319584,5.533675 52.319584,5.533676 52.319584,5.533677 52.319585,5.533677 52.319585,5.533678 52.319585,5.533678 52.319586,5.533679 52.319586,5.533679 52.319586,5.53368 52.319587,5.53368 52.319587,5.533681 52.319587,5.533682 52.319588,5.533682 52.319588,5.533683 52.319588,5.533683 52.319588,5.533684 52.319589,5.533685 52.319589,5.533685 52.319589,5.533686 52.31959,5.533686 52.31959,5.533687 52.31959,5.533687 52.319591,5.533688 52.319591,5.533689 52.319591,5.533689 52.319592,5.53369 52.319592,5.53369 52.319592,5.533691 52.319592,5.533692 52.319593,5.533692 52.319593,5.533693 52.319593,5.533693 52.319594,5.533694 52.319594,5.533695 52.319594,5.533695 52.319594,5.533696 52.319595,5.533697 52.319595,5.533697 52.319595,5.533698 52.319596,5.533698 52.319596,5.533699 52.319596,5.5337 52.319596,5.5337 52.319597,5.533701 52.319597,5.533701 52.319597,5.533702 52.319598,5.533703 52.319598,5.533703 52.319598,5.533704 52.319598,5.533705 52.319599,5.533705 52.319599,5.533706 52.319599,5.533707 52.319599,5.533707 52.3196,5.533708 52.3196,5.533708 52.3196,5.533709 52.3196,5.53371 52.319601,5.53371 52.319601,5.533711 52.319601,5.533712 52.319601,5.533712 52.319602,5.533713 52.319602,5.533714 52.319602,5.533714 52.319602,5.533715 52.319603,5.533716 52.319603,5.533716 52.319603,5.533717 52.319603,5.533718 52.319604,5.533718 52.319604,5.533719 52.319604,5.53372 52.319604,5.53372 52.319605,5.533721 52.319605,5.533722 52.319605,5.533722 52.319605,5.533723 52.319606,5.533724 52.319606,5.533724 52.319606,5.533725 52.319606,5.533726 52.319606,5.533726 52.319607,5.533726 52.319607,5.533843 52.319644,5.533843 52.319644,5.533844 52.319644,5.533845 52.319645,5.533846 52.319645,5.533847 52.319645,5.533847 52.319645,5.533848 52.319646,5.533849 52.319646,5.53385 52.319646,5.533851 52.319646,5.533852 52.319646,5.533852 52.319647,5.533853 52.319647,5.533854 52.319647,5.533855 52.319647,5.533856 52.319647,5.533857 52.319647,5.533857 52.319648,5.533858 52.319648,5.533859 52.319648,5.53386 52.319648,5.533861 52.319648,5.533862 52.319648,5.533863 52.319648,5.533864 52.319648,5.533864 52.319649,5.533865 52.319649,5.533866 52.319649,5.533867 52.319649,5.533868 52.319649,5.533869 52.319649,5.53387 52.319649,5.533871 52.319649,5.533871 52.319649,5.533872 52.319649,5.533873 52.319649,5.533874 52.319649,5.533875 52.319649,5.533876 52.319649,5.533877 52.319649,5.533878 52.319649,5.533879 52.319649,5.533879 52.319649,5.53388 52.319649,5.533881 52.319649,5.533882 52.319649,5.533883 52.319649,5.533884 52.319649,5.533885 52.319649,5.533886 52.319649,5.533886 52.319649,5.533887 52.319649,5.533888 52.319649,5.533889 52.319649,5.53389 52.319649,5.533891 52.319649,5.533892 52.319649,5.533893 52.319649,5.533894 52.319649,5.533894 52.319649,5.533895 52.319648,5.533896 52.319648,5.533897 52.319648,5.533898 52.319648,5.533899 52.319648,5.5339 52.319648,5.5339 52.319648,5.533901 52.319648,5.533902 52.319647,5.533903 52.319647,5.533904 52.319647,5.533905 52.319647,5.533906 52.319647,5.533906 52.319647,5.533907 52.319646,5.533908 52.319646,5.533909 52.319646,5.53391 52.319646,5.533911 52.319646,5.533911 52.319645,5.533912 52.319645,5.533913 52.319645,5.533914 52.319645,5.533915 52.319644,5.533915 52.319644,5.533916 52.319644,5.533917 52.319644,5.533918 52.319643,5.533919 52.319643,5.533919 52.319643,5.53392 52.319643,5.533921 52.319642,5.533922 52.319642,5.533922 52.319642,5.533923 52.319642,5.533924 52.319641,5.533925 52.319641,5.533925 52.319641,5.533926 52.31964,5.533927 52.31964,5.533927 52.31964,5.533943 52.319618,5.533951 52.319621,5.533971 52.319592,5.533977 52.319582,5.533998 52.319547,5.534033 52.319478,5.534054 52.319431,5.534096 52.319322,5.534182 52.319045,5.534196 52.318999,5.534212 52.318947,5.53422 52.318921,5.534225 52.318904,5.534467 52.318122,5.534472 52.318111,5.534515 52.318119,5.534567 52.318128,5.534985 52.318203,5.534999 52.318205,5.535013 52.318208,5.535391 52.318276,5.535478 52.318291,5.535784 52.318346,5.535798 52.318348,5.535812 52.318351,5.536128 52.318408,5.53631 52.31844,5.536352 52.318448,5.536381 52.318453,5.536403 52.318456,5.536455 52.318474,5.536916 52.319012,5.536944 52.319044,5.537938 52.320205,5.538744 52.321176,5.538767 52.321186,5.538857 52.321219,5.538912 52.321234,5.538953 52.321246,5.53906 52.321273,5.539139 52.321291,5.539259 52.321309,5.539381 52.32132,5.539505 52.321323,5.539595 52.321319,5.539694 52.321308,5.539791 52.321291,5.540154 52.32122,5.540266 52.321193,5.540345 52.321178,5.540387 52.32117,5.540458 52.321156,5.54074 52.321101,5.540823 52.321085,5.540929 52.321064,5.540941 52.321062,5.541025 52.321041,5.541209 52.321004,5.541614 52.320925,5.541807 52.320886,5.541859 52.320876,5.542027 52.320821,5.542354 52.320708,5.542593 52.320625,5.542648 52.320616,5.542702 52.320605,5.542658 52.320521,5.542544 52.320304,5.542551 52.320303,5.542534 52.32027,5.542526 52.320272,5.542512 52.320245,5.54242 52.320071,5.542296 52.320095,5.542154 52.319827,5.541452 52.319696,5.541349 52.319677,5.541269 52.319662,5.541195 52.319649,5.541192 52.319656,5.541058 52.319632,5.541088 52.319571,5.541131 52.319582,5.541195 52.31957,5.54214 52.319381,5.543526 52.319103,5.543555 52.319097,5.54357 52.319126,5.5436 52.319178,5.543611 52.319197,5.543609 52.319198,5.542658 52.319388,5.542836 52.319723,5.542812 52.319728,5.542331 52.319823,5.542901 52.31993,5.542936 52.319939,5.542997 52.319927,5.543 52.319935,5.543122 52.320165,5.543183 52.32028,5.543204 52.32032,5.54322 52.320317,5.543868 52.320188,5.543918 52.320283,5.543893 52.320287,5.543255 52.320415,5.543301 52.320502,5.543311 52.320502,5.543311 52.320503,5.544044 52.320356,5.544044 52.320358,5.54405 52.320401,5.544064 52.32048,5.544071 52.320534,5.544078 52.320586,5.544089 52.320685,5.544085 52.320714,5.544084 52.320713,5.543794 52.320672,5.543464 52.320697,5.542883 52.32081,5.542713 52.320843,5.542318 52.320912,5.542295 52.320916,5.542289 52.320917,5.54227 52.320919,5.542038 52.320948,5.541209 52.321114,5.541084 52.321139,5.541069 52.321139,5.54106 52.321141,5.540994 52.321154,5.54099 52.321155,5.540977 52.321157,5.540871 52.321178,5.540788 52.321194,5.540785 52.321189,5.540777 52.321173,5.540496 52.321228,5.540426 52.321242,5.540384 52.32125,5.540304 52.321266,5.540287 52.321269,5.540273 52.321273,5.539887 52.321347,5.539806 52.321363,5.539777 52.321368,5.539729 52.321376,5.539672 52.321383,5.539643 52.321386,5.539599 52.32139,5.539585 52.321392,5.539556 52.321393,5.539511 52.321395,5.539477 52.321395,5.539447 52.321395,5.539403 52.321394,5.539359 52.321391,5.53933 52.321389,5.53931 52.321388,5.539297 52.321387,5.539294 52.321387,5.53929 52.321388,5.539278 52.321389,5.539273 52.32139,5.53927 52.32139,5.539243 52.321394,5.539241 52.321395,5.53922 52.321399,5.539219 52.321399,5.539197 52.321404,5.539195 52.321405,5.539192 52.321406,5.53919 52.321407,5.539182 52.321409,5.539176 52.321411,5.539176 52.321411,5.539175 52.321412,5.539175 52.321412,5.539174 52.321412,5.539174 52.321412,5.539173 52.321413,5.539173 52.321413,5.539172 52.321413,5.539172 52.321414,5.539171 52.321414,5.539171 52.321414,5.53917 52.321414,5.53917 52.321415,5.539169 52.321415,5.539169 52.321415,5.539168 52.321416,5.539168 52.321416,5.539167 52.321416,5.539167 52.321417,5.539166 52.321417,5.539166 52.321417,5.539165 52.321418,5.539165 52.321418,5.539164 52.321418,5.539164 52.321419,5.539164 52.321419,5.539163 52.321419,5.539163 52.32142,5.539162 52.32142,5.539162 52.32142,5.539161 52.321421,5.539161 52.321421,5.539161 52.321421,5.53916 52.321422,5.53916 52.321422,5.539159 52.321422,5.539159 52.321423,5.539159 52.321423,5.539158 52.321423,5.539158 52.321424,5.539157 52.321424,5.539157 52.321425,5.539157 52.321425,5.539156 52.321425,5.539156 52.321426,5.539156 52.321426,5.539155 52.321426,5.539155 52.321427,5.539155 52.321427,5.539154 52.321427,5.539154 52.321428,5.539154 52.321428,5.539153 52.321429,5.539153 52.321429,5.539153 52.321429,5.539152 52.32143,5.539152 52.32143,5.539152 52.321431,5.539151 52.321431,5.539151 52.321431,5.539151 52.321432,5.539151 52.321432,5.53915 52.321433,5.53915 52.321433,5.53915 52.321433,5.539149 52.321434,5.539149 52.321434,5.539149 52.321435,5.539149 52.321435,5.539148 52.321435,5.539148 52.321436,5.539148 52.321436,5.539148 52.321437,5.539148 52.321437,5.539147 52.321437,5.539147 52.321438,5.539147 52.321438,5.539147 52.321439,5.539147 52.321439,5.539146 52.321439,5.539146 52.32144,5.539146 52.32144,5.539146 52.321441,5.539146 52.321441,5.539146 52.321442,5.539145 52.321442,5.539145 52.321442,5.539145 52.321443,5.539145 52.321443,5.539145 52.321444,5.539145 52.321444,5.539145 52.321445,5.539145 52.321445,5.539144 52.321445,5.539144 52.321446,5.539144 52.321446,5.539144 52.321447,5.539144 52.321447,5.539144 52.321447,5.539144 52.321448,5.539144 52.321448,5.53914 52.321466,5.539136 52.321487,5.539129 52.321514,5.539129 52.321514,5.539129 52.321515,5.539129 52.321515,5.539129 52.321516,5.539129 52.321517,5.539129 52.321517,5.539129 52.321518,5.539129 52.321519,5.539129 52.321519,5.539129 52.32152,5.539129 52.32152,5.539129 52.321521,5.53913 52.321522,5.53913 52.321522,5.53913 52.321523,5.53913 52.321524,5.53913 52.321524,5.53913 52.321525,5.53913 52.321526,5.53913 52.321526,5.539131 52.321527,5.539131 52.321527,5.539131 52.321528,5.539131 52.321529,5.539131 52.321529,5.539132 52.32153,5.539132 52.321531,5.539132 52.321531,5.539132 52.321532,5.539133 52.321533,5.539133 52.321533,5.539133 52.321534,5.539134 52.321534,5.539134 52.321535,5.539134 52.321536,5.539135 52.321536,5.539135 52.321537,5.539135 52.321537,5.539136 52.321538,5.539136 52.321539,5.539137 52.321539,5.539137 52.32154,5.539138 52.32154,5.539138 52.321541,5.539138 52.321542,5.539139 52.321542,5.539139 52.321543,5.53914 52.321543,5.53914 52.321544,5.539141 52.321544,5.539141 52.321545,5.539142 52.321545,5.539143 52.321546,5.539143 52.321547,5.539144 52.321547,5.539144 52.321548,5.539145 52.321548,5.539145 52.321549,5.539146 52.321549,5.539147 52.32155,5.539147 52.32155,5.539148 52.321551,5.539149 52.321551,5.539149 52.321552,5.53915 52.321552,5.539151 52.321553,5.539151 52.321553,5.539152 52.321554,5.539153 52.321554,5.539153 52.321555,5.539154 52.321555,5.539155 52.321556,5.539156 52.321556,5.539156 52.321557,5.539157 52.321557,5.539158 52.321557,5.539159 52.321558,5.539159 52.321558,5.53916 52.321559,5.539161 52.321559,5.539162 52.32156,5.539163 52.32156,5.539164 52.32156,5.539164 52.321561,5.539165 52.321561,5.539166 52.321562,5.539167 52.321562,5.539168 52.321562,5.539169 52.321563,5.53917 52.321563,5.53917 52.321563,5.539171 52.321564,5.539172 52.321564,5.539173 52.321564,5.539174 52.321565,5.539175 52.321565,5.539176 52.321565,5.539177 52.321566,5.539178 52.321566,5.539179 52.321566,5.539179 52.321566,5.539223 52.321577,5.539223 52.321577,5.539224 52.321577,5.539225 52.321577,5.539226 52.321577,5.539226 52.321578,5.539227 52.321578,5.539228 52.321578,5.539228 52.321578,5.539229 52.321579,5.53923 52.321579,5.539231 52.321579,5.539231 52.321579,5.539232 52.32158,5.539233 52.32158,5.539233 52.32158,5.539234 52.32158,5.539235 52.321581,5.539235 52.321581,5.539236 52.321581,5.539237 52.321581,5.539237 52.321582,5.539238 52.321582,5.539239 52.321582,5.539239 52.321583,5.53924 52.321583,5.539241 52.321583,5.539241 52.321583,5.539242 52.321584,5.539243 52.321584,5.539243 52.321584,5.539244 52.321585,5.539245 52.321585,5.539245 52.321585,5.539246 52.321586,5.539247 52.321586,5.539247 52.321586,5.539248 52.321587,5.539248 52.321587,5.539249 52.321587,5.53925 52.321588,5.53925 52.321588,5.539251 52.321588,5.539252 52.321589,5.539252 52.321589,5.539253 52.321589,5.539253 52.32159,5.539254 52.32159,5.539255 52.32159,5.539255 52.321591,5.539256 52.321591,5.539256 52.321591,5.539257 52.321592,5.539257 52.321592,5.539258 52.321592,5.539259 52.321593,5.539259 52.321593,5.53926 52.321593,5.53926 52.321594,5.539261 52.321594,5.539261 52.321594,5.539262 52.321595,5.539263 52.321595,5.539263 52.321596,5.539264 52.321596,5.539264 52.321596,5.539265 52.321597,5.539265 52.321597,5.539266 52.321597,5.539266 52.321598,5.539267 52.321598,5.539267 52.321599,5.539268 52.321599,5.539268 52.321599,5.539269 52.3216,5.539269 52.3216,5.53927 52.321601,5.53927 52.321601,5.539271 52.321601,5.539271 52.321602,5.539272 52.321602,5.539272 52.321603,5.539273 52.321603,5.539273 52.321603,5.539274 52.321604,5.539274 52.321604,5.539275 52.321605,5.539275 52.321605,5.539276 52.321605,5.539276 52.321606,5.539276 52.321606,5.539277 52.321607,5.539277 52.321607,5.539278 52.321608,5.539278 52.321608,5.539279 52.321608,5.539279 52.321609,5.539279 52.321609,5.53928 52.32161,5.53928 52.32161,5.539281 52.321611,5.539281 52.321611,5.539287 52.321618,5.539287 52.321618,5.539287 52.321618,5.539287 52.321619,5.539287 52.321619,5.539287 52.321619,5.539287 52.321619,5.539287 52.321619,5.539288 52.321619,5.539288 52.321619,5.539288 52.321619,5.539288 52.321619,5.539288 52.321619,5.539288 52.321619,5.539288 52.32162,5.539288 52.32162,5.539288 52.32162,5.539288 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.539291 52.321621,5.539291 52.321621,5.539291 52.321621,5.539291 52.321621,5.539291 52.321621,5.539291 52.321621,5.539291 52.321621,5.539292 52.321622,5.539292 52.321622,5.539292 52.321622,5.539292 52.321622,5.539292 52.321622,5.539292 52.321622,5.539292 52.321622,5.539293 52.321622,5.539293 52.321622,5.539293 52.321622,5.539293 52.321622,5.539293 52.321622,5.539293 52.321622,5.539293 52.321622,5.539294 52.321622,5.539294 52.321622,5.539294 52.321622,5.539294 52.321622,5.539294 52.321623,5.539294 52.321623,5.539295 52.321623,5.539295 52.321623,5.539295 52.321623,5.539295 52.321623,5.539295 52.321623,5.539295 52.321623,5.539296 52.321623,5.539296 52.321623,5.539296 52.321623,5.539296 52.321623,5.539296 52.321623,5.539296 52.321623,5.539297 52.321623,5.539297 52.321623,5.539297 52.321623,5.539297 52.321623,5.539297 52.321623,5.539297 52.321623,5.539298 52.321623,5.539298 52.321623,5.539298 52.321623,5.539298 52.321623,5.539298 52.321623,5.539298 52.321623,5.539299 52.321623,5.539299 52.321623,5.539299 52.321623,5.539299 52.321623,5.539299 52.321623,5.539299 52.321623,5.5393 52.321623,5.5393 52.321623,5.5393 52.321623,5.5393 52.321623,5.5393 52.321623,5.5393 52.321623,5.539301 52.321623,5.539301 52.321623,5.539301 52.321623,5.539301 52.321623,5.539301 52.321623,5.539315 52.32164,5.539315 52.32164,5.539315 52.32164,5.539314 52.32164,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539313 52.321641,5.539313 52.321641,5.539313 52.321641,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539312 52.321642,5.539312 52.321642,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539311 52.321644,5.539311 52.321644,5.539311 52.321644,5.539311 52.321644,5.539311 52.321644,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321648,5.539311 52.321648,5.539311 52.321648,5.539342 52.321685,5.539422 52.321791,5.539535 52.321932,5.539643 52.32207,5.53971 52.322155,5.539726 52.322176,5.539753 52.32221,5.539883 52.322375,5.539894 52.322388,5.540347 52.322966,5.540363 52.322985,5.540444 52.323089,5.54042 52.323141,5.540341 52.323292,5.54032 52.323335,5.540265 52.32345,5.540244 52.323495,5.540214 52.323558,5.540206 52.323576,5.540194 52.323601,5.540121 52.323588,5.540104 52.323585,5.539972 52.323562,5.539502 52.323478,5.539275 52.323437,5.539259 52.323434,5.539172 52.323419,5.53894 52.323377,5.538396 52.32328,5.538391 52.323279,5.538381 52.323278,5.538372 52.323278,5.538354 52.323279,5.538336 52.323282,5.538325 52.323286,5.538316 52.32329,5.538302 52.323301,5.538296 52.323307,5.538289 52.323316,5.538261 52.323375,5.538256 52.323385,5.538233 52.323433,5.538233 52.323434,5.538231 52.323445,5.538233 52.323456,5.538239 52.323467,5.538248 52.323476,5.53826 52.323484,5.538275 52.323491,5.538291 52.323495,5.538295 52.323496,5.538307 52.323498,5.539038 52.323629,5.539054 52.323632,5.539069 52.323635,5.53915 52.323649,5.539166 52.323652,5.539189 52.323657,5.539762 52.323759,5.539829 52.323771,5.539984 52.323799,5.540007 52.323803,5.540027 52.323807,5.5401 52.32382,5.540109 52.323821,5.540131 52.323825,5.540244 52.323846,5.540713 52.32393,5.540786 52.323951,5.540851 52.323976,5.540889 52.323993,5.540896 52.323996,5.54092 52.324007,5.540881 52.324081,5.540787 52.324035,5.540722 52.32401,5.540322 52.32484,5.540308 52.324838,5.540263 52.32483,5.540259 52.324831,5.540258 52.324833,5.54026 52.324837,5.540268 52.324845,5.540278 52.324851,5.540291 52.324857,5.540307 52.32486,5.540328 52.324864,5.540339 52.324866,5.540386 52.324874,5.540425 52.324882,5.540435 52.324883,5.540453 52.324884,5.540472 52.324882,5.540445 52.324936,5.540442 52.324935,5.540428 52.324931,5.540414 52.324928,5.540394 52.324927,5.540382 52.324929,5.540366 52.324934,5.540353 52.324942,5.540345 52.324952,5.540311 52.325025,5.540307 52.325033,5.540308 52.325039,5.540374 52.325051,5.540379 52.325052,5.54038 52.325056,5.540297 52.325229,5.540293 52.325232,5.540288 52.325232,5.540222 52.32522,5.540216 52.325224,5.540208 52.325241,5.540208 52.325246,5.540275 52.325258,5.54028 52.32526,5.54028 52.325264,5.540197 52.325436,5.540194 52.325439,5.540189 52.325439,5.540122 52.325427,5.540117 52.325431,5.54005 52.325571,5.540051 52.325577,5.540119 52.325588,5.540122 52.32559,5.540123 52.325594,5.540053 52.325741,5.54005 52.325743,5.540045 52.325743,5.539977 52.325732,5.539972 52.325736,5.539964 52.325753,5.539964 52.325758,5.540032 52.32577,5.540036 52.325772,5.540037 52.325776,5.539966 52.325922,5.539963 52.325925,5.539958 52.325925,5.53989 52.325913,5.539886 52.325917,5.539848 52.325999,5.539835 52.326026,5.539826 52.326044,5.539825 52.326054,5.539826 52.326061,5.53983 52.326068,5.539838 52.326075,5.539849 52.326081,5.539861 52.326085,5.539877 52.326087,5.539887 52.326087,5.539899 52.326086,5.539899 52.326086,5.53987 52.326149,5.539861 52.326146,5.539852 52.326143,5.539839 52.326142,5.539824 52.326143,5.539803 52.326148,5.539795 52.326151,5.53978 52.326158,5.539774 52.326162,5.539764 52.326172,5.539757 52.326182,5.539735 52.32623,5.53972 52.326265,5.539721 52.32627,5.539787 52.326282,5.539792 52.326284,5.539792 52.326287,5.539722 52.326433,5.539718 52.326436,5.539714 52.326437,5.539646 52.326425,5.539641 52.326429,5.539633 52.326446,5.539633 52.326451,5.539701 52.326463,5.539705 52.326465,5.539706 52.326468,5.539637 52.32661,5.539634 52.326613,5.539629 52.326613,5.539562 52.326601,5.539558 52.326606,5.539544 52.326634,5.539543 52.32664,5.539611 52.326652,5.539616 52.326654,5.539616 52.326657,5.539538 52.326822,5.539534 52.326824,5.539528 52.326825,5.539461 52.326813,5.539457 52.326817,5.539448 52.326836,5.539436 52.326861,5.539432 52.326869,5.539431 52.326874,5.539498 52.326886,5.539503 52.326888,5.539504 52.326892,5.539445 52.327013,5.539442 52.327015,5.539437 52.327016,5.539373 52.327005,5.53937 52.327004,5.539364 52.327009,5.539331 52.327079,5.539311 52.327121,5.539343 52.327134,5.539354 52.327139,5.53936 52.327146,5.539362 52.32715,5.539363 52.327155,5.53936 52.327163,5.53934 52.327206,5.539298 52.327198,5.539308 52.327178,5.539308 52.327175,5.539304 52.327174,5.538958 52.327113,5.538933 52.327109,5.538184 52.326975,5.538118 52.326989,5.537998 52.327242,5.538021 52.327246,5.538213 52.327281,5.538203 52.327303,5.538193 52.327323,5.538185 52.327339,5.538143 52.327332,5.538136 52.327347,5.538128 52.327364,5.538125 52.327364,5.538043 52.327349,5.537904 52.327636,5.537855 52.327627,5.537799 52.327617,5.537793 52.327617,5.537789 52.327617,5.537784 52.32762,5.537781 52.327623,5.537756 52.327674,5.537735 52.32772,5.536908 52.327572,5.536752 52.327544,5.536417 52.327484,5.536416 52.327484,5.536411 52.327492,5.536406 52.327502,5.536322 52.32751,5.536299 52.327557,5.536302 52.327558,5.536278 52.327589,5.536263 52.327621,5.536221 52.327708,5.536198 52.327703,5.536182 52.327736,5.536159 52.327785,5.53608 52.327949,5.536071 52.327969,5.536048 52.328017,5.536051 52.328017,5.53605 52.328018,5.536026 52.328072,5.536026 52.328072,5.536026 52.328072,5.536026 52.328072,5.536026 52.328072,5.536026 52.328072,5.536026 52.328072,5.536026 52.328073,5.536026 52.328073,5.536025 52.328073,5.536025 52.328073,5.536025 52.328073,5.536025 52.328074,5.536025 52.328074,5.536025 52.328074,5.536025 52.328074,5.536025 52.328074,5.536025 52.328074,5.536025 52.328075,5.536025 52.328075,5.536025 52.328075,5.536025 52.328075,5.536025 52.328075,5.536025 52.328075,5.536025 52.328076,5.536025 52.328076,5.536024 52.328076,5.536024 52.328076,5.536024 52.328076,5.536024 52.328076,5.536024 52.328077,5.536024 52.328077,5.536024 52.328077,5.536024 52.328077,5.536024 52.328077,5.536024 52.328077,5.536024 52.328078,5.536024 52.328078,5.536024 52.328078,5.536024 52.328078,5.536024 52.328078,5.536024 52.328078,5.536024 52.328079,5.536024 52.328079,5.536024 52.328079,5.536024 52.328079,5.536024 52.328079,5.536024 52.32808,5.536024 52.32808,5.536024 52.32808,5.536024 52.32808,5.536024 52.32808,5.536024 52.32808,5.536024 52.328081,5.536024 52.328081,5.536024 52.328081,5.536024 52.328081,5.536024 52.328081,5.536024 52.328081,5.536023 52.328082,5.536023 52.328082,5.536023 52.328082,5.536023 52.328082,5.536023 52.328082,5.536023 52.328082,5.536023 52.328083,5.536023 52.328083,5.536023 52.328083,5.536023 52.328083,5.536023 52.328083,5.536023 52.328084,5.536023 52.328084,5.536023 52.328084,5.536023 52.328084,5.536023 52.328084,5.536023 52.328084,5.536023 52.328085,5.536023 52.328085,5.536023 52.328085,5.536023 52.328085,5.536023 52.328085,5.536023 52.328085,5.536023 52.328086,5.536023 52.328086,5.536024 52.328086,5.536024 52.328086,5.536024 52.328086,5.536024 52.328087,5.536024 52.328087,5.536024 52.328087,5.536024 52.328087,5.536024 52.328087,5.536024 52.328087,5.536024 52.328088,5.536024 52.328088,5.536024 52.328088,5.536024 52.328088,5.536024 52.328088,5.536024 52.328088,5.536024 52.328089,5.536024 52.328089,5.536024 52.328089,5.535822 52.327993,5.535427 52.327863,5.535471 52.327767,5.535493 52.327723,5.535512 52.327681,5.536047 52.327776,5.53606 52.327749,5.536057 52.327748,5.536081 52.327717,5.536096 52.327685,5.536136 52.327598,5.536153 52.327567,5.536159 52.327533,5.536163 52.327533,5.536185 52.327486,5.536136 52.327453,5.53614 52.327445,5.536141 52.327446,5.536146 52.327435,5.536129 52.327432,5.536097 52.327426,5.53607 52.327422,5.536056 52.327419,5.536029 52.327414,5.534805 52.327195,5.534734 52.327182,5.534211 52.32709,5.533553 52.326973,5.533383 52.326942,5.533378 52.326935,5.53336 52.326931,5.533373 52.326904,5.533386 52.326878,5.533509 52.326619,5.533594 52.32644,5.53368 52.326262,5.533765 52.326083,5.53385 52.325905,5.533876 52.325849,5.533891 52.325818,5.533935 52.325727,5.53402 52.325548,5.534105 52.32537,5.53419 52.32519,5.534113 52.325176,5.533889 52.325136,5.5337 52.325102,5.533683 52.325137,5.533667 52.325171,5.533653 52.325142,5.533664 52.325095,5.533672 52.325061,5.53365 52.325056,5.533675 52.325006,5.5337 52.324952,5.533721 52.324956,5.533765 52.324964,5.53378 52.324933,5.533931 52.32496,5.534064 52.324983,5.534149 52.324998,5.534233 52.325013,5.534318 52.325028,5.534402 52.325043,5.534476 52.325057,5.534483 52.325058,5.534489 52.325059,5.53452 52.325064,5.534526 52.325065,5.534564 52.325072,5.534571 52.325038,5.534564 52.325038,5.534565 52.325035,5.534571 52.325035,5.534606 52.324867,5.534598 52.324865,5.534592 52.324864,5.53461 52.324828,5.534601 52.324827,5.534513 52.324811,5.534428 52.324796,5.534344 52.324781,5.53426 52.324766,5.534174 52.32475,5.534042 52.324727,5.534047 52.324718,5.534523 52.324803,5.534621 52.324821,5.53465 52.324675,5.534679 52.324529,5.534709 52.324383,5.534739 52.324236,5.53475 52.324176,5.534765 52.324107,5.53478 52.324043,5.534799 52.323972,5.534815 52.323916,5.534838 52.323839,5.534857 52.323781,5.534884 52.323706,5.534906 52.323651,5.534937 52.323575,5.53496 52.323521,5.534996 52.323446,5.535045 52.323342,5.535094 52.323239,5.535143 52.323135,5.535192 52.323032,5.535204 52.323016,5.535212 52.323,5.535193 52.322993,5.535173 52.322989,5.534749 52.322914,5.534556 52.322879,5.534488 52.322867,5.534408 52.322852,5.534276 52.322828,5.533798 52.322743,5.533798 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533785 52.322742,5.533785 52.322742,5.533785 52.322742,5.533766 52.322783,5.533693 52.322771,5.533598 52.322754,5.533511 52.322738,5.533532 52.322695,5.532206 52.322458,5.532185 52.322504,5.532114 52.322492,5.532021 52.322476,5.531933 52.32246)),((5.531048 52.322305,5.53083 52.322267,5.530883 52.322155,5.530888 52.322155,5.530909 52.322152,5.530937 52.322145,5.530978 52.322133,5.531008 52.322124,5.53103 52.322076,5.531068 52.321993,5.531371 52.321358,5.531469 52.321184,5.531529 52.321099,5.531685 52.320919,5.531788 52.320822,5.531966 52.32068,5.53208 52.320603,5.532826 52.32012,5.533115 52.319919,5.533149 52.319893,5.533274 52.319788,5.53329 52.31977,5.533292 52.319768,5.533308 52.319751,5.533327 52.319732,5.533327 52.319727,5.533326 52.319719,5.533326 52.319719,5.533326 52.319719,5.533326 52.319718,5.533326 52.319717,5.533327 52.319716,5.533327 52.319716,5.533327 52.319715,5.533327 52.319714,5.533327 52.319713,5.533327 52.319713,5.533327 52.319712,5.533327 52.319711,5.533327 52.31971,5.533327 52.319709,5.533327 52.319709,5.533327 52.319708,5.533327 52.319707,5.533327 52.319706,5.533327 52.319706,5.533327 52.319705,5.533327 52.319704,5.533327 52.319703,5.533327 52.319703,5.533326 52.319702,5.533326 52.319701,5.533326 52.3197,5.533326 52.319699,5.533326 52.319699,5.533326 52.319698,5.533326 52.319697,5.533326 52.319696,5.533326 52.319696,5.533325 52.319695,5.533325 52.319694,5.533325 52.319693,5.533325 52.319693,5.533325 52.319692,5.533325 52.319691,5.533324 52.31969,5.533324 52.31969,5.533324 52.319689,5.533324 52.319688,5.533324 52.319687,5.533323 52.319687,5.533323 52.319686,5.533323 52.319685,5.533323 52.319684,5.533322 52.319684,5.533322 52.319683,5.533322 52.319682,5.533322 52.319681,5.533321 52.319681,5.533321 52.31968,5.533321 52.319679,5.53332 52.319678,5.53332 52.319678,5.53332 52.319677,5.533319 52.319676,5.533319 52.319675,5.533319 52.319675,5.533318 52.319674,5.533318 52.319673,5.533318 52.319672,5.533317 52.319672,5.533317 52.319671,5.533316 52.31967,5.533316 52.31967,5.533316 52.319669,5.533315 52.319668,5.533315 52.319667,5.533314 52.319667,5.533314 52.319666,5.533313 52.319665,5.533313 52.319665,5.533312 52.319664,5.533312 52.319663,5.533312 52.319662,5.533311 52.319662,5.533311 52.319661,5.53331 52.31966,5.53331 52.31966,5.533309 52.319659,5.533309 52.319658,5.533308 52.319657,5.533307 52.319657,5.533307 52.319656,5.533306 52.319655,5.533306 52.319655,5.533305 52.319654,5.533305 52.319653,5.533304 52.319653,5.533304 52.319652,5.533303 52.319651,5.533302 52.319651,5.533302 52.31965,5.533301 52.319649,5.533301 52.319649,5.5333 52.319648,5.533299 52.319647,5.533299 52.319647,5.533299 52.319647,5.533299 52.319647,5.533299 52.319647,5.533299 52.319647,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533294 52.319643,5.533294 52.319642,5.533294 52.319642,5.533337 52.319597,5.533341 52.319591,5.533371 52.319589,5.533389 52.319587,5.533406 52.319583,5.533422 52.319578,5.533437 52.319572,5.533452 52.319564,5.533464 52.319556,5.533476 52.319547,5.533502 52.319519,5.533535 52.319476,5.53356 52.31943,5.533674 52.319174,5.534042 52.317991,5.534052 52.317956,5.534088 52.317842,5.534115 52.317756,5.534128 52.317716,5.534226 52.317404,5.534301 52.317135,5.534317 52.317053,5.534328 52.316894,5.534323 52.316818,5.534317 52.316774,5.534305 52.316699,5.534256 52.316534,5.534205 52.31641,5.534108 52.316239,5.534083 52.316202,5.534056 52.316167,5.534055 52.316167,5.534089 52.31616,5.534157 52.316147,5.534208 52.316194,5.534275 52.31627,5.534348 52.316384,5.534416 52.31651,5.534425 52.316523,5.534425 52.316523,5.534426 52.316524,5.534426 52.316524,5.534426 52.316525,5.534427 52.316525,5.534427 52.316525,5.534427 52.316526,5.534427 52.316526,5.534428 52.316526,5.534428 52.316527,5.534428 52.316527,5.534429 52.316528,5.534429 52.316528,5.534429 52.316528,5.53443 52.316529,5.53443 52.316529,5.53443 52.316529,5.534431 52.31653,5.534431 52.31653,5.534431 52.31653,5.534432 52.316531,5.534432 52.316531,5.534432 52.316531,5.534433 52.316532,5.534433 52.316532,5.534433 52.316532,5.534434 52.316533,5.534434 52.316533,5.534435 52.316534,5.534435 52.316534,5.534435 52.316534,5.534436 52.316535,5.534436 52.316535,5.534437 52.316535,5.534437 52.316536,5.534437 52.316536,5.534438 52.316536,5.534438 52.316537,5.534439 52.316537,5.534439 52.316537,5.534439 52.316538,5.53444 52.316538,5.53444 52.316538,5.534441 52.316538,5.534441 52.316539,5.534442 52.316539,5.534442 52.316539,5.534442 52.31654,5.534443 52.31654,5.534443 52.31654,5.534444 52.316541,5.534444 52.316541,5.534445 52.316541,5.534445 52.316542,5.534446 52.316542,5.534446 52.316542,5.534447 52.316542,5.534447 52.316543,5.534448 52.316543,5.534448 52.316543,5.534449 52.316544,5.534449 52.316544,5.53445 52.316544,5.53445 52.316544,5.534451 52.316545,5.534451 52.316545,5.534452 52.316545,5.534452 52.316546,5.534453 52.316546,5.534453 52.316546,5.534454 52.316546,5.534454 52.316547,5.534455 52.316547,5.534455 52.316547,5.534456 52.316547,5.534456 52.316548,5.534457 52.316548,5.534457 52.316548,5.534458 52.316548,5.534458 52.316549,5.534459 52.316549,5.534459 52.316549,5.53446 52.316549,5.534461 52.31655,5.534461 52.31655,5.534462 52.31655,5.534462 52.31655,5.534463 52.316551,5.534463 52.316551,5.534464 52.316551,5.534464 52.316551,5.534465 52.316551,5.534466 52.316552,5.534466 52.316552,5.534467 52.316552,5.534467 52.316552,5.534468 52.316553,5.534468 52.316553,5.534469 52.316553,5.53447 52.316553,5.53447 52.316553,5.534548 52.31657,5.534552 52.316571,5.534625 52.316574,5.534684 52.316575,5.534722 52.316573,5.534786 52.316573,5.53481 52.316572,5.534949 52.316564,5.535108 52.316552,5.536002 52.316471,5.536189 52.316453,5.536422 52.316424,5.536656 52.316387,5.536882 52.316344,5.537325 52.316255,5.537331 52.316254,5.537375 52.316245,5.537382 52.316244,5.537417 52.316237,5.539643 52.315795,5.539736 52.315776,5.539736 52.315776,5.539745 52.315774,5.539755 52.315772,5.539764 52.315771,5.539774 52.315769,5.539783 52.315767,5.539793 52.315765,5.539802 52.315764,5.539812 52.315762,5.539822 52.31576,5.539831 52.315759,5.539841 52.315757,5.539851 52.315755,5.53986 52.315754,5.53987 52.315752,5.53988 52.315751,5.539889 52.315749,5.539899 52.315748,5.539909 52.315746,5.539918 52.315745,5.539928 52.315744,5.539938 52.315742,5.539948 52.315741,5.539957 52.31574,5.539967 52.315738,5.539977 52.315737,5.539987 52.315736,5.539997 52.315735,5.540006 52.315733,5.540016 52.315732,5.540026 52.315731,5.540036 52.31573,5.540046 52.315729,5.540056 52.315728,5.540065 52.315727,5.540075 52.315726,5.540085 52.315725,5.540095 52.315724,5.540105 52.315723,5.540115 52.315722,5.540125 52.315721,5.540135 52.315721,5.540145 52.31572,5.540155 52.315719,5.540164 52.315718,5.540174 52.315718,5.540184 52.315717,5.540194 52.315716,5.540204 52.315716,5.540214 52.315715,5.540224 52.315715,5.540234 52.315714,5.540244 52.315713,5.540254 52.315713,5.540264 52.315712,5.540274 52.315712,5.540284 52.315712,5.540294 52.315711,5.540304 52.315711,5.540314 52.315711,5.540324 52.31571,5.540334 52.31571,5.540344 52.31571,5.540354 52.31571,5.540364 52.315709,5.540374 52.315709,5.540384 52.315709,5.540394 52.315709,5.540404 52.315709,5.540414 52.315709,5.540424 52.315709,5.540434 52.315709,5.540444 52.315709,5.540454 52.315709,5.540464 52.315709,5.540474 52.315709,5.540484 52.315709,5.540494 52.315709,5.540504 52.315709,5.540514 52.31571,5.540524 52.31571,5.540534 52.31571,5.540544 52.31571,5.540554 52.315711,5.540564 52.315711,5.540573 52.315712,5.540583 52.315712,5.540593 52.315712,5.540603 52.315713,5.540613 52.315713,5.540623 52.315714,5.540633 52.315714,5.540643 52.315715,5.540653 52.315716,5.540663 52.315716,5.540673 52.315717,5.540683 52.315717,5.540693 52.315718,5.540703 52.315719,5.540713 52.31572,5.540713 52.31572,5.540715 52.31572,5.540717 52.31572,5.540719 52.31572,5.540721 52.31572,5.540723 52.31572,5.540725 52.315721,5.540728 52.315721,5.54073 52.315721,5.540732 52.315721,5.540734 52.315721,5.540736 52.315722,5.540738 52.315722,5.54074 52.315722,5.540742 52.315722,5.540745 52.315722,5.540747 52.315722,5.540749 52.315723,5.540751 52.315723,5.540753 52.315723,5.540755 52.315723,5.540757 52.315723,5.540759 52.315724,5.540761 52.315724,5.540764 52.315724,5.540766 52.315724,5.540768 52.315724,5.54077 52.315724,5.540772 52.315725,5.540774 52.315725,5.540776 52.315725,5.540778 52.315725,5.540781 52.315725,5.540783 52.315726,5.540785 52.315726,5.540787 52.315726,5.540789 52.315726,5.540791 52.315726,5.540793 52.315727,5.540795 52.315727,5.540797 52.315727,5.5408 52.315727,5.540802 52.315728,5.540804 52.315728,5.540806 52.315728,5.540808 52.315728,5.54081 52.315728,5.540812 52.315729,5.540814 52.315729,5.540816 52.315729,5.540819 52.315729,5.540821 52.315729,5.540823 52.31573,5.540825 52.31573,5.540827 52.31573,5.540829 52.31573,5.540831 52.315731,5.540833 52.315731,5.540835 52.315731,5.540837 52.315731,5.54084 52.315732,5.540842 52.315732,5.540844 52.315732,5.540846 52.315732,5.540848 52.315733,5.54085 52.315733,5.540852 52.315733,5.540854 52.315733,5.540856 52.315734,5.540859 52.315734,5.540861 52.315734,5.540863 52.315734,5.540865 52.315734,5.540867 52.315735,5.540869 52.315735,5.540871 52.315735,5.540873 52.315736,5.540875 52.315736,5.540877 52.315736,5.540879 52.315736,5.540882 52.315737,5.540884 52.315737,5.540886 52.315737,5.540888 52.315737,5.54089 52.315738,5.540892 52.315738,5.540894 52.315738,5.540896 52.315738,5.540898 52.315739,5.5409 52.315739,5.540903 52.315739,5.540905 52.315739,5.540907 52.31574,5.540909 52.31574,5.540911 52.31574,5.540913 52.315741,5.540915 52.315741,5.540917 52.315741,5.540919 52.315741,5.540921 52.315742,5.540921 52.315742,5.540929 52.315743,5.540936 52.315744,5.540944 52.315745,5.540951 52.315746,5.540958 52.315747,5.540966 52.315748,5.540973 52.315749,5.54098 52.31575,5.540988 52.315751,5.540995 52.315753,5.541003 52.315754,5.54101 52.315755,5.541017 52.315756,5.541025 52.315757,5.541032 52.315759,5.541039 52.31576,5.541047 52.315761,5.541054 52.315762,5.541061 52.315764,5.541068 52.315765,5.541076 52.315766,5.541083 52.315768,5.54109 52.315769,5.541098 52.31577,5.541105 52.315772,5.541112 52.315773,5.541119 52.315775,5.541126 52.315776,5.541134 52.315778,5.541141 52.315779,5.541148 52.31578,5.541155 52.315782,5.541163 52.315783,5.54117 52.315785,5.541177 52.315787,5.541184 52.315788,5.541191 52.31579,5.541198 52.315791,5.541205 52.315793,5.541213 52.315794,5.54122 52.315796,5.541227 52.315798,5.541234 52.315799,5.541241 52.315801,5.541248 52.315803,5.541255 52.315804,5.541262 52.315806,5.541269 52.315808,5.541276 52.31581,5.541283 52.315811,5.54129 52.315813,5.541297 52.315815,5.541304 52.315817,5.541311 52.315819,5.541318 52.31582,5.541325 52.315822,5.541332 52.315824,5.541339 52.315826,5.541346 52.315828,5.541353 52.31583,5.54136 52.315832,5.541367 52.315834,5.541374 52.315836,5.541381 52.315838,5.541388 52.31584,5.541394 52.315842,5.541401 52.315844,5.541408 52.315846,5.541415 52.315848,5.541422 52.31585,5.541429 52.315852,5.541435 52.315854,5.541442 52.315856,5.541449 52.315858,5.541456 52.31586,5.541462 52.315862,5.541469 52.315865,5.541476 52.315867,5.541483 52.315869,5.541489 52.315871,5.541496 52.315873,5.541503 52.315875,5.541509 52.315878,5.541516 52.31588,5.541523 52.315882,5.541529 52.315885,5.541536 52.315887,5.541542 52.315889,5.541549 52.315891,5.541556 52.315894,5.541562 52.315896,5.541569 52.315899,5.541575 52.315901,5.541582 52.315903,5.541588 52.315906,5.541595 52.315908,5.541601 52.315911,5.541608 52.315913,5.541614 52.315915,5.541614 52.315915,5.541615 52.315916,5.541616 52.315916,5.541617 52.315917,5.541618 52.315917,5.541619 52.315917,5.54162 52.315918,5.541621 52.315918,5.541622 52.315918,5.541623 52.315919,5.541624 52.315919,5.541625 52.31592,5.541626 52.31592,5.541627 52.31592,5.541628 52.315921,5.541629 52.315921,5.54163 52.315921,5.541631 52.315922,5.541631 52.315922,5.541632 52.315922,5.541633 52.315923,5.541634 52.315923,5.541635 52.315924,5.541636 52.315924,5.541637 52.315924,5.541638 52.315925,5.541639 52.315925,5.54164 52.315925,5.541641 52.315926,5.541642 52.315926,5.541643 52.315927,5.541644 52.315927,5.541645 52.315927,5.541646 52.315928,5.541647 52.315928,5.541648 52.315929,5.541649 52.315929,5.54165 52.315929,5.541651 52.31593,5.541652 52.31593,5.541652 52.31593,5.541653 52.315931,5.541654 52.315931,5.541655 52.315932,5.541656 52.315932,5.541657 52.315932,5.541658 52.315933,5.541659 52.315933,5.54166 52.315933,5.541661 52.315934,5.541662 52.315934,5.541663 52.315935,5.541664 52.315935,5.541665 52.315935,5.541666 52.315936,5.541667 52.315936,5.541668 52.315937,5.541669 52.315937,5.54167 52.315937,5.54167 52.315938,5.541671 52.315938,5.541672 52.315938,5.541673 52.315939,5.541674 52.315939,5.541675 52.31594,5.541676 52.31594,5.541677 52.31594,5.541678 52.315941,5.541679 52.315941,5.54168 52.315942,5.541681 52.315942,5.541682 52.315942,5.541683 52.315943,5.541684 52.315943,5.541685 52.315944,5.541686 52.315944,5.541687 52.315944,5.541687 52.315945,5.541688 52.315945,5.541689 52.315945,5.54169 52.315946,5.541691 52.315946,5.541692 52.315947,5.541693 52.315947,5.541694 52.315947,5.541695 52.315948,5.541696 52.315948,5.541697 52.315949,5.541698 52.315949,5.541699 52.315949,5.5417 52.31595,5.541701 52.31595,5.541701 52.315951,5.541702 52.315951,5.541703 52.315951,5.541704 52.315952,5.541705 52.315952,5.541706 52.315953,5.541707 52.315953,5.541708 52.315953,5.541708 52.315953,5.541793 52.31599,5.541872 52.316031,5.541919 52.316055,5.542018 52.316112,5.54206 52.316139,5.542154 52.316202,5.542187 52.316227,5.542217 52.31625,5.542401 52.316396,5.54243 52.316419,5.542453 52.316442,5.542459 52.316451,5.542553 52.316577,5.542565 52.316621,5.54259 52.316685,5.542619 52.316747,5.542674 52.316852,5.542767 52.317027,5.542859 52.317203,5.542952 52.317378,5.543045 52.317553,5.543138 52.317729,5.543231 52.317904,5.543281 52.317998,5.543329 52.318078,5.543419 52.318221,5.54346 52.318286,5.543535 52.318418,5.543545 52.318437,5.543569 52.318433,5.543595 52.318469,5.543663 52.318596,5.54367 52.318595,5.543671 52.318596,5.543679 52.318631,5.54368 52.318633,5.543688 52.318648,5.543692 52.318655,5.543746 52.318758,5.543752 52.318768,5.543759 52.318782,5.54376 52.318783,5.543787 52.318815,5.543788 52.318816,5.54378 52.318818,5.54384 52.318931,5.543848 52.318945,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543943 52.31912,5.543943 52.319121,5.543943 52.319121,5.543943 52.319121,5.543943 52.319121,5.543942 52.319122,5.543942 52.319122,5.543942 52.319122,5.543942 52.319122,5.543942 52.319123,5.543942 52.319123,5.543941 52.319123,5.543941 52.319123,5.543941 52.319124,5.543941 52.319124,5.543941 52.319124,5.543941 52.319124,5.543941 52.319125,5.54394 52.319125,5.54394 52.319125,5.54394 52.319125,5.54394 52.319126,5.54394 52.319126,5.54394 52.319126,5.54394 52.319126,5.543939 52.319127,5.543939 52.319127,5.543939 52.319127,5.543939 52.319127,5.543939 52.319128,5.543939 52.319128,5.543939 52.319128,5.543939 52.319128,5.543938 52.319129,5.543938 52.319129,5.543938 52.319129,5.543938 52.319129,5.543938 52.31913,5.543938 52.31913,5.543938 52.31913,5.543938 52.319131,5.543938 52.319131,5.543938 52.319131,5.543937 52.319131,5.543937 52.319132,5.543937 52.319132,5.543937 52.319132,5.543937 52.319132,5.543937 52.319133,5.543937 52.319133,5.543937 52.319133,5.543937 52.319133,5.543937 52.319134,5.543937 52.319134,5.543937 52.319134,5.543937 52.319134,5.543937 52.319135,5.543936 52.319135,5.543936 52.319135,5.543936 52.319135,5.543936 52.319136,5.543936 52.319136,5.543936 52.319136,5.543936 52.319137,5.543936 52.319137,5.543936 52.319137,5.543936 52.319137,5.543936 52.319138,5.543936 52.319138,5.543936 52.319138,5.543936 52.319138,5.543936 52.319139,5.543936 52.319139,5.543936 52.319139,5.543936 52.319139,5.543936 52.31914,5.543936 52.31914,5.543936 52.31914,5.543936 52.319141,5.543936 52.319141,5.543936 52.319141,5.543936 52.319141,5.543936 52.319142,5.543936 52.319142,5.543936 52.319142,5.543936 52.319142,5.543936 52.319143,5.543936 52.319143,5.543936 52.319143,5.543936 52.319143,5.543936 52.319144,5.543936 52.319144,5.543936 52.319144,5.543936 52.319145,5.543936 52.319145,5.543936 52.319145,5.543936 52.319145,5.543938 52.319155,5.543929 52.319157,5.543922 52.319157,5.543929 52.319173,5.543947 52.319219,5.543955 52.319236,5.54397 52.31927,5.544025 52.319385,5.544097 52.319535,5.544139 52.319626,5.544169 52.319695,5.54418 52.319724,5.544223 52.319841,5.544267 52.319974,5.544294 52.320053,5.544327 52.320161,5.544355 52.320274,5.544363 52.32031,5.544365 52.320334,5.544371 52.320387,5.544376 52.320467,5.544376 52.320545,5.544372 52.32064,5.544358 52.320721,5.544348 52.320756,5.544317 52.320836,5.544295 52.32089,5.54426 52.320997,5.544232 52.321097,5.544207 52.321172,5.544195 52.321207,5.544172 52.321269,5.544145 52.321325,5.544141 52.321332,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544104 52.321387,5.544027 52.321501,5.543997 52.321559,5.543617 52.322357,5.543603 52.322397,5.543578 52.322484,5.543563 52.322552,5.543572 52.322553,5.543568 52.322568,5.543575 52.322575,5.543575 52.322575,5.543575 52.322575,5.543575 52.322575,5.543576 52.322576,5.543576 52.322576,5.543576 52.322576,5.543577 52.322576,5.543577 52.322577,5.543577 52.322577,5.543577 52.322577,5.543578 52.322577,5.543578 52.322577,5.543578 52.322578,5.543578 52.322578,5.543579 52.322578,5.543579 52.322578,5.543579 52.322579,5.54358 52.322579,5.54358 52.322579,5.54358 52.322579,5.543581 52.32258,5.543581 52.32258,5.543581 52.32258,5.543582 52.32258,5.543582 52.322581,5.543582 52.322581,5.543582 52.322581,5.543583 52.322581,5.543583 52.322581,5.543583 52.322582,5.543584 52.322582,5.543584 52.322582,5.543584 52.322582,5.543585 52.322582,5.543585 52.322583,5.543585 52.322583,5.543586 52.322583,5.543586 52.322583,5.543587 52.322584,5.543587 52.322584,5.543587 52.322584,5.543588 52.322584,5.543588 52.322584,5.543588 52.322585,5.543589 52.322585,5.543589 52.322585,5.543589 52.322585,5.54359 52.322585,5.54359 52.322586,5.543591 52.322586,5.543591 52.322586,5.543591 52.322586,5.543592 52.322586,5.543592 52.322586,5.543592 52.322587,5.543593 52.322587,5.543593 52.322587,5.543594 52.322587,5.543594 52.322587,5.543594 52.322587,5.543595 52.322588,5.543595 52.322588,5.543596 52.322588,5.543596 52.322588,5.543596 52.322588,5.543597 52.322588,5.543597 52.322589,5.543598 52.322589,5.543598 52.322589,5.543598 52.322589,5.543599 52.322589,5.543599 52.322589,5.5436 52.32259,5.5436 52.32259,5.543601 52.32259,5.543601 52.32259,5.543601 52.32259,5.543602 52.32259,5.543602 52.32259,5.543603 52.322591,5.543603 52.322591,5.543604 52.322591,5.543604 52.322591,5.543604 52.322591,5.543605 52.322591,5.543605 52.322591,5.543606 52.322591,5.543606 52.322592,5.543607 52.322592,5.543607 52.322592,5.543608 52.322592,5.543608 52.322592,5.543608 52.322592,5.543609 52.322592,5.543609 52.322592,5.54361 52.322592,5.54361 52.322593,5.543611 52.322593,5.543611 52.322593,5.543612 52.322593,5.543612 52.322593,5.543635 52.322597,5.543615 52.322638,5.543589 52.322634,5.543589 52.322634,5.543588 52.322634,5.543588 52.322634,5.543587 52.322634,5.543587 52.322634,5.543586 52.322634,5.543586 52.322633,5.543585 52.322633,5.543585 52.322633,5.543584 52.322633,5.543584 52.322633,5.543583 52.322633,5.543583 52.322633,5.543582 52.322633,5.543582 52.322633,5.543581 52.322633,5.543581 52.322633,5.54358 52.322633,5.543579 52.322633,5.543579 52.322633,5.543578 52.322633,5.543578 52.322633,5.543577 52.322633,5.543577 52.322633,5.543576 52.322633,5.543576 52.322633,5.543575 52.322633,5.543575 52.322633,5.543574 52.322633,5.543574 52.322633,5.543573 52.322633,5.543573 52.322633,5.543572 52.322633,5.543572 52.322633,5.543571 52.322633,5.54357 52.322633,5.54357 52.322633,5.543569 52.322633,5.543569 52.322633,5.543568 52.322633,5.543568 52.322633,5.543567 52.322633,5.543567 52.322633,5.543566 52.322633,5.543566 52.322633,5.543565 52.322633,5.543565 52.322633,5.543564 52.322633,5.543564 52.322633,5.543563 52.322633,5.543563 52.322633,5.543562 52.322633,5.543562 52.322633,5.543561 52.322633,5.54356 52.322633,5.54356 52.322633,5.543559 52.322634,5.543559 52.322634,5.543558 52.322634,5.543558 52.322634,5.543557 52.322634,5.543557 52.322634,5.543556 52.322634,5.543556 52.322634,5.543555 52.322634,5.543555 52.322634,5.543554 52.322634,5.543554 52.322634,5.543553 52.322634,5.543553 52.322635,5.543552 52.322635,5.543552 52.322635,5.543551 52.322635,5.543551 52.322635,5.54355 52.322635,5.54355 52.322635,5.543549 52.322635,5.543549 52.322635,5.543548 52.322636,5.543548 52.322636,5.543547 52.322636,5.543547 52.322636,5.543546 52.322636,5.543546 52.322636,5.543545 52.322636,5.543545 52.322636,5.543544 52.322637,5.543544 52.322637,5.543543 52.322637,5.543543 52.322637,5.543543 52.322637,5.543542 52.322637,5.543542 52.322637,5.543541 52.322638,5.543541 52.322638,5.54354 52.322638,5.54354 52.322638,5.543539 52.322638,5.543539 52.322638,5.543538 52.322639,5.543538 52.322639,5.54353 52.322653,5.543521 52.322652,5.54351 52.322669,5.543493 52.322693,5.543489 52.322697,5.543412 52.322804,5.543367 52.322881,5.5432 52.323233,5.543182 52.323273,5.54316 52.323333,5.543155 52.323351,5.543146 52.323378,5.54314 52.323393,5.543127 52.323426,5.543126 52.323427,5.543103 52.323462,5.543103 52.323463,5.543079 52.323495,5.543088 52.323498,5.543081 52.323505,5.543073 52.323513,5.543071 52.323515,5.542968 52.323625,5.542803 52.32372,5.54278 52.323721,5.542757 52.323724,5.542732 52.323728,5.542685 52.323739,5.542602 52.323758,5.542519 52.323777,5.542407 52.323796,5.542319 52.323809,5.542307 52.323811,5.542242 52.323824,5.542144 52.323843,5.541905 52.323889,5.541836 52.323903,5.541793 52.323911,5.541742 52.323921,5.541697 52.323926,5.541551 52.32396,5.541449 52.323991,5.541363 52.324022,5.541334 52.324033,5.541316 52.324041,5.54128 52.324054,5.54122 52.324086,5.541157 52.324126,5.541101 52.32417,5.541066 52.324204,5.540954 52.324345,5.54094 52.324371,5.540773 52.324719,5.540762 52.324753,5.540736 52.324846,5.540736 52.324923,5.540695 52.324988,5.540681 52.324992,5.540666 52.324997,5.540653 52.325002,5.540643 52.325007,5.540635 52.325011,5.540628 52.325024,5.540618 52.325022,5.540604 52.325038,5.540526 52.32517,5.540504 52.325212,5.540423 52.325385,5.540171 52.325912,5.540153 52.325962,5.540129 52.326051,5.540121 52.326079,5.540096 52.326134,5.540088 52.326151,5.54006 52.326198,5.540031 52.326244,5.540027 52.32625,5.539977 52.326327,5.539936 52.326404,5.53977 52.326756,5.539762 52.326778,5.539732 52.326887,5.539724 52.326914,5.539721 52.32692,5.539731 52.326922,5.539726 52.326934,5.539732 52.326945,5.53974 52.326955,5.539752 52.326965,5.539766 52.326974,5.539738 52.327035,5.539716 52.327038,5.539699 52.327042,5.539683 52.327048,5.539671 52.327053,5.539659 52.327059,5.53965 52.327073,5.53964 52.32707,5.539569 52.327182,5.539496 52.32733,5.53942 52.327508,5.53929 52.327839,5.53927 52.32796,5.539266 52.327988,5.539263 52.328003,5.539272 52.328003,5.539269 52.328018,5.53928 52.328037,5.539295 52.328052,5.539304 52.328059,5.539315 52.328065,5.539326 52.32807,5.539338 52.328074,5.539319 52.32812,5.539289 52.328123,5.539258 52.32813,5.539235 52.328141,5.539222 52.32815,5.539216 52.328163,5.539207 52.328162,5.539202 52.328173,5.539146 52.328306,5.539125 52.328374,5.539007 52.328879,5.539007 52.328881,5.538993 52.328955,5.538984 52.329001,5.538972 52.329094,5.539024 52.3291,5.539074 52.329105,5.539092 52.329101,5.539091 52.329113,5.539092 52.329128,5.539096 52.329143,5.539101 52.329155,5.539105 52.329163,5.539111 52.329172,5.539121 52.329184,5.539132 52.329194,5.539145 52.329204,5.539156 52.32921,5.539165 52.329214,5.539271 52.329233,5.539271 52.329233,5.53927 52.329233,5.53927 52.329233,5.53927 52.329233,5.539269 52.329233,5.539269 52.329233,5.539268 52.329233,5.539268 52.329233,5.539267 52.329233,5.539267 52.329233,5.539267 52.329233,5.539266 52.329233,5.539266 52.329233,5.539265 52.329233,5.539265 52.329233,5.539264 52.329233,5.539264 52.329233,5.539264 52.329233,5.539263 52.329233,5.539263 52.329233,5.539262 52.329233,5.539262 52.329233,5.539261 52.329233,5.539261 52.329233,5.539261 52.329233,5.53926 52.329233,5.53926 52.329233,5.539259 52.329233,5.539259 52.329233,5.539258 52.329233,5.539258 52.329233,5.539258 52.329233,5.539257 52.329233,5.539257 52.329234,5.539256 52.329234,5.539256 52.329234,5.539256 52.329234,5.539255 52.329234,5.539255 52.329234,5.539254 52.329234,5.539254 52.329234,5.539254 52.329234,5.539253 52.329234,5.539253 52.329234,5.539252 52.329235,5.539252 52.329235,5.539252 52.329235,5.539251 52.329235,5.539251 52.329235,5.53925 52.329235,5.53925 52.329235,5.53925 52.329235,5.539249 52.329236,5.539249 52.329236,5.539249 52.329236,5.539248 52.329236,5.539248 52.329236,5.539247 52.329236,5.539247 52.329236,5.539247 52.329237,5.539246 52.329237,5.539246 52.329237,5.539246 52.329237,5.539245 52.329237,5.539245 52.329237,5.539245 52.329238,5.539244 52.329238,5.539244 52.329238,5.539244 52.329238,5.539244 52.329238,5.539243 52.329239,5.539243 52.329239,5.539243 52.329239,5.539242 52.329239,5.539242 52.329239,5.539242 52.329239,5.539242 52.32924,5.539241 52.32924,5.539241 52.32924,5.539241 52.32924,5.53924 52.329241,5.53924 52.329241,5.53924 52.329241,5.53924 52.329241,5.53924 52.329241,5.539239 52.329242,5.539239 52.329242,5.539239 52.329242,5.539239 52.329242,5.539238 52.329243,5.539238 52.329243,5.539238 52.329243,5.539238 52.329243,5.539238 52.329244,5.539238 52.329244,5.539237 52.329244,5.539237 52.329244,5.539237 52.329245,5.539237 52.329245,5.539237 52.329245,5.539237 52.329245,5.539213 52.329293,5.539213 52.329293,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329297,5.539217 52.329297,5.539217 52.329297,5.539217 52.329297,5.539217 52.329297,5.539217 52.329297,5.539217 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539276 52.329306,5.539251 52.329367,5.539225 52.329364,5.539208 52.329361,5.539191 52.329358,5.539191 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539184 52.329358,5.539184 52.329358,5.539184 52.329358,5.539184 52.329358,5.539184 52.329358,5.539184 52.329359,5.539184 52.329359,5.539184 52.329359,5.539184 52.329359,5.539184 52.329359,5.539184 52.329359,5.539184 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.329361,5.539182 52.329361,5.539181 52.329361,5.539181 52.329362,5.539181 52.329362,5.539181 52.329362,5.539181 52.329362,5.53918 52.329363,5.53918 52.329363,5.53918 52.329363,5.53918 52.329364,5.53918 52.329364,5.539179 52.329364,5.539179 52.329364,5.539179 52.329365,5.539179 52.329365,5.539179 52.329365,5.539178 52.329366,5.539178 52.329366,5.539178 52.329366,5.539178 52.329366,5.539177 52.329367,5.539177 52.329367,5.539177 52.329367,5.539177 52.329368,5.539176 52.329368,5.539176 52.329368,5.539176 52.329368,5.539176 52.329369,5.539176 52.329369,5.539175 52.329369,5.539175 52.32937,5.539175 52.32937,5.539175 52.32937,5.539174 52.32937,5.539174 52.329371,5.539174 52.329371,5.539174 52.329371,5.539173 52.329372,5.539173 52.329372,5.539173 52.329372,5.539173 52.329372,5.539172 52.329373,5.539172 52.329373,5.539172 52.329373,5.539171 52.329374,5.539171 52.329374,5.539171 52.329374,5.539171 52.329374,5.53917 52.329375,5.53917 52.329375,5.53917 52.329375,5.53917 52.329375,5.539169 52.329376,5.539169 52.329376,5.539169 52.329376,5.539168 52.329376,5.539168 52.329377,5.539168 52.329377,5.539168 52.329377,5.539167 52.329378,5.539167 52.329378,5.539167 52.329378,5.539166 52.329378,5.539166 52.329379,5.539166 52.329379,5.539166 52.329379,5.539165 52.329379,5.539165 52.32938,5.539165 52.32938,5.539164 52.32938,5.539164 52.32938,5.539164 52.329381,5.539163 52.329381,5.539163 52.329381,5.539163 52.329381,5.539162 52.329382,5.539162 52.329382,5.539162 52.329382,5.539162 52.329382,5.539161 52.329383,5.539161 52.329383,5.539161 52.329383,5.53916 52.329383,5.53916 52.329384,5.53916 52.329384,5.539159 52.329384,5.539159 52.329384,5.539159 52.329385,5.539158 52.329385,5.539158 52.329385,5.539158 52.329385,5.539157 52.329386,5.539157 52.329386,5.539157 52.329386,5.539156 52.329386,5.539156 52.329387,5.539156 52.329387,5.539155 52.329387,5.539155 52.329387,5.539155 52.329388,5.539155 52.329388,5.539154 52.329388,5.539154 52.329388,5.539153 52.329388,5.539153 52.329389,5.539153 52.329389,5.539152 52.329389,5.539152 52.32939,5.539152 52.32939,5.539151 52.32939,5.539151 52.329391,5.53915 52.329391,5.53915 52.329391,5.53915 52.329391,5.539149 52.329392,5.539149 52.329392,5.539149 52.329392,5.539148 52.329393,5.539148 52.329393,5.539147 52.329393,5.539147 52.329393,5.539147 52.329394,5.539146 52.329394,5.539146 52.329394,5.539145 52.329395,5.539145 52.329395,5.539145 52.329395,5.539144 52.329395,5.539144 52.329396,5.539144 52.329396,5.539143 52.329396,5.539143 52.329397,5.539142 52.329397,5.539142 52.329397,5.539142 52.329397,5.539141 52.329398,5.539141 52.329398,5.53914 52.329398,5.53914 52.329399,5.53914 52.329399,5.539139 52.329399,5.539139 52.329399,5.539138 52.3294,5.539138 52.3294,5.539138 52.3294,5.539137 52.329401,5.539137 52.329401,5.539136 52.329401,5.539136 52.329401,5.539136 52.329402,5.539135 52.329402,5.539135 52.329402,5.539134 52.329403,5.539134 52.329403,5.539134 52.329403,5.539133 52.329403,5.539133 52.329404,5.539132 52.329404,5.539132 52.329404,5.539131 52.329404,5.539131 52.329405,5.539131 52.329405,5.53913 52.329405,5.53913 52.329406,5.539129 52.329406,5.539129 52.329406,5.539129 52.329406,5.539128 52.329407,5.539128 52.329407,5.539127 52.329407,5.539127 52.329407,5.539127 52.329408,5.539126 52.329408,5.539126 52.329408,5.539125 52.329409,5.539125 52.329409,5.539124 52.329409,5.539124 52.329409,5.539124 52.32941,5.539123 52.32941,5.539123 52.32941,5.539122 52.32941,5.539122 52.329411,5.539121 52.329411,5.539121 52.329411,5.539121 52.329411,5.53912 52.329412,5.53912 52.329412,5.539119 52.329412,5.539119 52.329413,5.539118 52.329413,5.539118 52.329413,5.539118 52.329413,5.539117 52.329414,5.539117 52.329414,5.539116 52.329414,5.539116 52.329414,5.539115 52.329415,5.539115 52.329415,5.539114 52.329415,5.539114 52.329415,5.539114 52.329415,5.539114 52.329416,5.539113 52.329416,5.539113 52.329416,5.539113 52.329416,5.539112 52.329416,5.539112 52.329417,5.539111 52.329417,5.539111 52.329417,5.539111 52.329417,5.53911 52.329417,5.53911 52.329418,5.539109 52.329418,5.539109 52.329418,5.539109 52.329418,5.539108 52.329418,5.539108 52.329419,5.539107 52.329419,5.539107 52.329419,5.539107 52.329419,5.539106 52.329419,5.539106 52.32942,5.539105 52.32942,5.539105 52.32942,5.539105 52.32942,5.539104 52.32942,5.539104 52.329421,5.539103 52.329421,5.539103 52.329421,5.539103 52.329421,5.539102 52.329421,5.539102 52.329422,5.539101 52.329422,5.539101 52.329422,5.539101 52.329422,5.5391 52.329422,5.5391 52.329423,5.539099 52.329423,5.539099 52.329423,5.539099 52.329423,5.539098 52.329423,5.539098 52.329423,5.539097 52.329424,5.539097 52.329424,5.539096 52.329424,5.539096 52.329424,5.539096 52.329424,5.539095 52.329425,5.539095 52.329425,5.539094 52.329425,5.539094 52.329425,5.539094 52.329425,5.539093 52.329426,5.539093 52.329426,5.539092 52.329426,5.539092 52.329426,5.539091 52.329426,5.539091 52.329426,5.539091 52.329427,5.53909 52.329427,5.53909 52.329427,5.539089 52.329427,5.539089 52.329427,5.539089 52.329428,5.539088 52.329428,5.539088 52.329428,5.539087 52.329428,5.539087 52.329428,5.539086 52.329428,5.539086 52.329429,5.539086 52.329429,5.539085 52.329429,5.539085 52.329429,5.539084 52.329429,5.539084 52.329429,5.539083 52.32943,5.539083 52.32943,5.539083 52.32943,5.539082 52.32943,5.539082 52.32943,5.539081 52.32943,5.539081 52.329431,5.53908 52.329431,5.53908 52.329431,5.53908 52.329431,5.539079 52.329431,5.539079 52.329432,5.539078 52.329432,5.539078 52.329432,5.539077 52.329432,5.539077 52.329432,5.539077 52.329432,5.539076 52.329433,5.539076 52.329433,5.539075 52.329433,5.539075 52.329433,5.539074 52.329433,5.539074 52.329433,5.539073 52.329434,5.539073 52.329434,5.539073 52.329434,5.539072 52.329434,5.539072 52.329434,5.539071 52.329434,5.539071 52.329435,5.53907 52.329435,5.539069 52.329435,5.539069 52.329435,5.539068 52.329435,5.539068 52.329436,5.539067 52.329436,5.539066 52.329436,5.539066 52.329436,5.539065 52.329437,5.539065 52.329437,5.539064 52.329437,5.539063 52.329437,5.539063 52.329437,5.539062 52.329438,5.539062 52.329438,5.539061 52.329438,5.53906 52.329438,5.53906 52.329438,5.539059 52.329439,5.539058 52.329439,5.539058 52.329439,5.539057 52.329439,5.539057 52.329439,5.539056 52.32944,5.539055 52.32944,5.539055 52.32944,5.539054 52.32944,5.539054 52.32944,5.539053 52.329441,5.539052 52.329441,5.539052 52.329441,5.539051 52.329441,5.53905 52.329441,5.53905 52.329442,5.539049 52.329442,5.539049 52.329442,5.539048 52.329442,5.539047 52.329442,5.539047 52.329443,5.539046 52.329443,5.539046 52.329443,5.539045 52.329443,5.539044 52.329443,5.539044 52.329443,5.539043 52.329444,5.539042 52.329444,5.539042 52.329444,5.539041 52.329444,5.53904 52.329444,5.53904 52.329445,5.539039 52.329445,5.539039 52.329445,5.539038 52.329445,5.539037 52.329445,5.539037 52.329445,5.539036 52.329446,5.539035 52.329446,5.539035 52.329446,5.539034 52.329446,5.539034 52.329446,5.539033 52.329446,5.539032 52.329447,5.539032 52.329447,5.539031 52.329447,5.53903 52.329447,5.53903 52.329447,5.539029 52.329447,5.539028 52.329448,5.539028 52.329448,5.539027 52.329448,5.539026 52.329448,5.539026 52.329448,5.539025 52.329448,5.539025 52.329449,5.539024 52.329449,5.539023 52.329449,5.539023 52.329449,5.539022 52.329449,5.539021 52.329449,5.539021 52.329449,5.53902 52.32945,5.539019 52.32945,5.539019 52.32945,5.539018 52.32945,5.539017 52.32945,5.539017 52.32945,5.539016 52.32945,5.539015 52.329451,5.539015 52.329451,5.539014 52.329451,5.539014 52.329451,5.539013 52.329451,5.539012 52.329451,5.539012 52.329451,5.539012 52.329451,5.539011 52.329451,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.538966 52.329461,5.538946 52.329462,5.538929 52.329461,5.538929 52.329461,5.538929 52.329461,5.538929 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538907 52.329515,5.538903 52.329514,5.538812 52.329498,5.538813 52.329491,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538797 52.329452,5.538793 52.329452,5.538793 52.329452,5.538793 52.329452,5.538793 52.329452,5.538792 52.329452,5.538792 52.329452,5.538792 52.329452,5.538792 52.329452,5.538792 52.329452,5.538791 52.329452,5.538791 52.329452,5.538791 52.329451,5.538791 52.329451,5.53879 52.329451,5.53879 52.329451,5.53879 52.329451,5.53879 52.329451,5.538789 52.329451,5.538789 52.329451,5.538789 52.329451,5.538789 52.329451,5.538789 52.329451,5.538788 52.329451,5.538788 52.329451,5.538788 52.329451,5.538788 52.329451,5.538787 52.329451,5.538787 52.329451,5.538787 52.329451,5.538787 52.32945,5.538786 52.32945,5.538786 52.32945,5.538786 52.32945,5.538786 52.32945,5.538786 52.32945,5.538785 52.32945,5.538785 52.32945,5.538785 52.32945,5.538785 52.32945,5.538784 52.32945,5.538784 52.32945,5.538784 52.32945,5.538784 52.32945,5.538783 52.32945,5.538783 52.32945,5.538783 52.329449,5.538783 52.329449,5.538783 52.329449,5.538782 52.329449,5.538782 52.329449,5.538782 52.329449,5.538782 52.329449,5.538781 52.329449,5.538781 52.329449,5.538781 52.329449,5.538781 52.329449,5.53878 52.329449,5.53878 52.329449,5.53878 52.329449,5.53878 52.329449,5.53878 52.329449,5.538779 52.329448,5.538779 52.329448,5.538779 52.329448,5.538779 52.329448,5.538778 52.329448,5.538778 52.329448,5.538778 52.329448,5.538778 52.329448,5.538778 52.329448,5.538777 52.329448,5.538777 52.329448,5.538777 52.329448,5.538777 52.329448,5.538776 52.329448,5.538776 52.329448,5.538776 52.329448,5.538776 52.329447,5.538775 52.329447,5.538775 52.329447,5.538775 52.329447,5.538775 52.329447,5.538775 52.329447,5.538774 52.329447,5.538774 52.329447,5.538774 52.329447,5.538774 52.329447,5.538773 52.329447,5.538773 52.329447,5.538773 52.329447,5.538773 52.329447,5.538773 52.329447,5.538772 52.329446,5.538772 52.329446,5.538772 52.329446,5.538772 52.329446,5.538771 52.329446,5.538771 52.329446,5.538771 52.329446,5.538771 52.329446,5.538771 52.329446,5.538771 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.538769 52.329446,5.538769 52.329446,5.538769 52.329446,5.538769 52.329446,5.538769 52.329445,5.538769 52.329445,5.538769 52.329445,5.538769 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538766 52.329445,5.538766 52.329445,5.538766 52.329445,5.538766 52.329445,5.538766 52.329445,5.538766 52.329444,5.538766 52.329444,5.538766 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329443,5.538763 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329442,5.53876 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538756 52.329441,5.538754 52.329441,5.538752 52.32944,5.538749 52.329439,5.538747 52.329438,5.538745 52.329437,5.538743 52.329436,5.538741 52.329436,5.538738 52.329435,5.538736 52.329434,5.538734 52.329433,5.538732 52.329432,5.53873 52.329431,5.538727 52.32943,5.538725 52.329429,5.538723 52.329428,5.538721 52.329427,5.538719 52.329426,5.538717 52.329425,5.538715 52.329424,5.538713 52.329423,5.538711 52.329422,5.538709 52.329421,5.538707 52.32942,5.538705 52.329419,5.538703 52.329418,5.538701 52.329417,5.538699 52.329416,5.538697 52.329415,5.538695 52.329414,5.538693 52.329413,5.538691 52.329412,5.538689 52.32941,5.538687 52.329409,5.538686 52.329408,5.538684 52.329407,5.538682 52.329406,5.53868 52.329405,5.538678 52.329403,5.538677 52.329402,5.538675 52.329401,5.538673 52.3294,5.538672 52.329399,5.53867 52.329397,5.538668 52.329396,5.538667 52.329395,5.538665 52.329394,5.538663 52.329392,5.538662 52.329391,5.53866 52.32939,5.538659 52.329389,5.538657 52.329387,5.538655 52.329386,5.538654 52.329385,5.538652 52.329383,5.538651 52.329382,5.53865 52.329381,5.538648 52.329379,5.538647 52.329378,5.538645 52.329377,5.538644 52.329375,5.538643 52.329374,5.538641 52.329372,5.53864 52.329371,5.538639 52.32937,5.538637 52.329368,5.538636 52.329367,5.538635 52.329365,5.538634 52.329364,5.538632 52.329363,5.538631 52.329361,5.53863 52.32936,5.538629 52.329358,5.538628 52.329357,5.538627 52.329355,5.538626 52.329354,5.538625 52.329352,5.538623 52.329351,5.538622 52.329349,5.538621 52.329348,5.53862 52.329346,5.53862 52.329345,5.538619 52.329343,5.538618 52.329342,5.538617 52.32934,5.538616 52.329339,5.538615 52.329337,5.538614 52.329336,5.538613 52.329334,5.538613 52.329333,5.538612 52.329331,5.538611 52.32933,5.53861 52.329328,5.53861 52.329327,5.538609 52.329325,5.538608 52.329323,5.538608 52.329322,5.538607 52.32932,5.538607 52.329319,5.538607 52.329319,5.538591 52.329291,5.538591 52.329291,5.538591 52.329291,5.538591 52.329291,5.538591 52.32929,5.53859 52.32929,5.53859 52.32929,5.53859 52.329289,5.53859 52.329289,5.53859 52.329289,5.538589 52.329289,5.538589 52.329288,5.538589 52.329288,5.538589 52.329288,5.538589 52.329287,5.538589 52.329287,5.538588 52.329287,5.538588 52.329286,5.538588 52.329286,5.538588 52.329286,5.538587 52.329286,5.538587 52.329285,5.538587 52.329285,5.538587 52.329285,5.538587 52.329284,5.538586 52.329284,5.538586 52.329284,5.538586 52.329284,5.538586 52.329283,5.538585 52.329283,5.538585 52.329283,5.538585 52.329282,5.538585 52.329282,5.538584 52.329282,5.538584 52.329282,5.538584 52.329281,5.538584 52.329281,5.538583 52.329281,5.538583 52.32928,5.538583 52.32928,5.538583 52.32928,5.538582 52.32928,5.538582 52.329279,5.538582 52.329279,5.538581 52.329279,5.538581 52.329278,5.538581 52.329278,5.538581 52.329278,5.53858 52.329278,5.53858 52.329277,5.53858 52.329277,5.538579 52.329277,5.538579 52.329277,5.538579 52.329276,5.538578 52.329276,5.538578 52.329276,5.538578 52.329276,5.538577 52.329275,5.538577 52.329275,5.538577 52.329275,5.538577 52.329275,5.538576 52.329274,5.538576 52.329274,5.538576 52.329274,5.538575 52.329274,5.538575 52.329273,5.538575 52.329273,5.538574 52.329273,5.538574 52.329273,5.538573 52.329272,5.538573 52.329272,5.538573 52.329272,5.538572 52.329272,5.538572 52.329271,5.538572 52.329271,5.538571 52.329271,5.538571 52.329271,5.538571 52.32927,5.53857 52.32927,5.53857 52.32927,5.53857 52.32927,5.538569 52.329269,5.538569 52.329269,5.538568 52.329269,5.538568 52.329269,5.538568 52.329269,5.538567 52.329268,5.538567 52.329268,5.538566 52.329268,5.538566 52.329268,5.538566 52.329267,5.538565 52.329267,5.538565 52.329267,5.538564 52.329267,5.538564 52.329267,5.538564 52.329266,5.538563 52.329266,5.538563 52.329266,5.538562 52.329266,5.538562 52.329266,5.538562 52.329265,5.538562 52.329265,5.538481 52.32924,5.538428 52.329227,5.538295 52.329187,5.538167 52.329146,5.538061 52.329117,5.537958 52.329085,5.537914 52.32907,5.537869 52.329053,5.537848 52.329046,5.53768 52.328976,5.537666 52.32897,5.537597 52.328942,5.537584 52.328936,5.537547 52.328921,5.537147 52.328744,5.537004 52.328681,5.536447 52.328432,5.536369 52.328398,5.536369 52.328398,5.536368 52.328398,5.536367 52.328397,5.536366 52.328397,5.536365 52.328396,5.536363 52.328396,5.536362 52.328395,5.536361 52.328395,5.53636 52.328394,5.536358 52.328394,5.536357 52.328393,5.536356 52.328393,5.536355 52.328392,5.536354 52.328392,5.536352 52.328391,5.536351 52.328391,5.53635 52.32839,5.536348 52.32839,5.536347 52.328389,5.536346 52.328389,5.536345 52.328388,5.536343 52.328388,5.536342 52.328387,5.536341 52.328387,5.536339 52.328387,5.536338 52.328386,5.536337 52.328386,5.536336 52.328385,5.536334 52.328385,5.536333 52.328384,5.536332 52.328384,5.53633 52.328384,5.536329 52.328383,5.536328 52.328383,5.536326 52.328382,5.536325 52.328382,5.536324 52.328381,5.536322 52.328381,5.536321 52.328381,5.53632 52.32838,5.536318 52.32838,5.536317 52.32838,5.536316 52.328379,5.536314 52.328379,5.536313 52.328378,5.536311 52.328378,5.53631 52.328378,5.536309 52.328377,5.536307 52.328377,5.536306 52.328377,5.536305 52.328376,5.536303 52.328376,5.536302 52.328376,5.5363 52.328375,5.536299 52.328375,5.536298 52.328375,5.536296 52.328374,5.536295 52.328374,5.536293 52.328374,5.536292 52.328373,5.536291 52.328373,5.536289 52.328373,5.536288 52.328373,5.536286 52.328372,5.536285 52.328372,5.536283 52.328372,5.536282 52.328371,5.536281 52.328371,5.536279 52.328371,5.536278 52.328371,5.536276 52.32837,5.536275 52.32837,5.536273 52.32837,5.536272 52.32837,5.536271 52.328369,5.536269 52.328369,5.536268 52.328369,5.536266 52.328369,5.536265 52.328369,5.536263 52.328368,5.536262 52.328368,5.53626 52.328368,5.536259 52.328368,5.536257 52.328368,5.536256 52.328367,5.536255 52.328367,5.536253 52.328367,5.536252 52.328367,5.53625 52.328367,5.536249 52.328367,5.536247 52.328366,5.536246 52.328366,5.536244 52.328366,5.536243 52.328366,5.536241 52.328366,5.53624 52.328366,5.536238 52.328366,5.536237 52.328365,5.536235 52.328365,5.536234 52.328365,5.536234 52.328365,5.536232 52.328365,5.536231 52.328365,5.53623 52.328365,5.536228 52.328364,5.536227 52.328364,5.536225 52.328364,5.536224 52.328364,5.536222 52.328363,5.536221 52.328363,5.53622 52.328363,5.536218 52.328363,5.536217 52.328362,5.536215 52.328362,5.536214 52.328362,5.536212 52.328362,5.536211 52.328361,5.53621 52.328361,5.536208 52.328361,5.536207 52.328361,5.536205 52.32836,5.536204 52.32836,5.536202 52.32836,5.536201 52.328359,5.5362 52.328359,5.536198 52.328359,5.536197 52.328358,5.536195 52.328358,5.536194 52.328358,5.536193 52.328357,5.536191 52.328357,5.53619 52.328357,5.536189 52.328356,5.536187 52.328356,5.536186 52.328356,5.536184 52.328355,5.536183 52.328355,5.536182 52.328355,5.53618 52.328354,5.536179 52.328354,5.536178 52.328354,5.536176 52.328353,5.536175 52.328353,5.536173 52.328353,5.536172 52.328352,5.536171 52.328352,5.536169 52.328351,5.536168 52.328351,5.536167 52.328351,5.536165 52.32835,5.536164 52.32835,5.536163 52.32835,5.536161 52.328349,5.53616 52.328349,5.536159 52.328348,5.536157 52.328348,5.536156 52.328347,5.536155 52.328347,5.536153 52.328347,5.536152 52.328346,5.536151 52.328346,5.536149 52.328345,5.536148 52.328345,5.536147 52.328344,5.536146 52.328344,5.536144 52.328344,5.536143 52.328343,5.536142 52.328343,5.53614 52.328342,5.536139 52.328342,5.536138 52.328341,5.536137 52.328341,5.536135 52.32834,5.536134 52.32834,5.536133 52.328339,5.536132 52.328339,5.53613 52.328338,5.536129 52.328338,5.536128 52.328337,5.536127 52.328337,5.536125 52.328336,5.536124 52.328336,5.536123 52.328335,5.536122 52.328335,5.53612 52.328334,5.536119 52.328334,5.536118 52.328333,5.536117 52.328333,5.536115 52.328332,5.536114 52.328332,5.536113 52.328331,5.536112 52.328331,5.536111 52.32833,5.536109 52.32833,5.536108 52.328329,5.536107 52.328328,5.536106 52.328328,5.536105 52.328327,5.536104 52.328327,5.536102 52.328326,5.536102 52.328326,5.535958 52.328264,5.535954 52.328265,5.535947 52.328267,5.535937 52.328272,5.535929 52.328278,5.535928 52.328278,5.535848 52.328248,5.535855 52.328234,5.535855 52.328234,5.535855 52.328233,5.535855 52.328233,5.535855 52.328233,5.535856 52.328233,5.535856 52.328233,5.535856 52.328233,5.535856 52.328233,5.535856 52.328233,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328231,5.535856 52.328231,5.535856 52.328231,5.535856 52.328231,5.535856 52.328231,5.535857 52.328231,5.535857 52.328231,5.535857 52.328231,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328227,5.535857 52.328227,5.535857 52.328227,5.535857 52.328227,5.535857 52.328227,5.535857 52.328227,5.535858 52.328227,5.535858 52.328227,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328223,5.535858 52.328223,5.535857 52.328223,5.535857 52.328223,5.535857 52.328223,5.535857 52.328223,5.535857 52.328223,5.535857 52.328223,5.535857 52.328222,5.535857 52.328222,5.535857 52.328222,5.535857 52.328222,5.535857 52.328222,5.535857 52.328222,5.535857 52.328222,5.535857 52.328221,5.535857 52.328221,5.535857 52.328221,5.535857 52.328221,5.535857 52.328221,5.535844 52.328216,5.535758 52.328178,5.535709 52.328157,5.53558 52.328101,5.535573 52.328098,5.535536 52.328082,5.53553 52.32808,5.535386 52.328017,5.535373 52.328013,5.535241 52.327968,5.534915 52.327865,5.534848 52.327846,5.534351 52.327704,5.533897 52.327592,5.533835 52.327577,5.533632 52.327532,5.533424 52.327489,5.53338 52.327481,5.532914 52.327393,5.532827 52.327377,5.532792 52.327366,5.532746 52.327351,5.532744 52.327354,5.532708 52.327343,5.532697 52.32734,5.532696 52.327339,5.532637 52.327329,5.532573 52.327317,5.532622 52.327213,5.532687 52.327224,5.532745 52.327235,5.532748 52.327235,5.532768 52.327236,5.532775 52.327219,5.532787 52.327214,5.532797 52.327212,5.532807 52.327211,5.53282 52.327212,5.533251 52.32729,5.533278 52.327296,5.533306 52.327302,5.533334 52.327307,5.533362 52.327313,5.53339 52.327319,5.533417 52.327325,5.533573 52.327384,5.533828 52.327436,5.534313 52.327555,5.535243 52.327824,5.535359 52.327839,5.535427 52.327863,5.535822 52.327993,5.536024 52.328089,5.536024 52.328089,5.536024 52.328089,5.536024 52.328089,5.536024 52.32809,5.536024 52.32809,5.536024 52.32809,5.536024 52.328091,5.536024 52.328091,5.536024 52.328091,5.536025 52.328092,5.536025 52.328092,5.536025 52.328092,5.536025 52.328093,5.536025 52.328093,5.536025 52.328093,5.536025 52.328094,5.536025 52.328094,5.536025 52.328094,5.536026 52.328095,5.536026 52.328095,5.536026 52.328095,5.536026 52.328096,5.536026 52.328096,5.536026 52.328096,5.536026 52.328096,5.536026 52.328097,5.536027 52.328097,5.536027 52.328097,5.536027 52.328098,5.536027 52.328098,5.536027 52.328098,5.536027 52.328099,5.536028 52.328099,5.536028 52.328099,5.536028 52.3281,5.536028 52.3281,5.536028 52.3281,5.536029 52.3281,5.536029 52.328101,5.536029 52.328101,5.536029 52.328101,5.536029 52.328102,5.53603 52.328102,5.53603 52.328102,5.53603 52.328103,5.53603 52.328103,5.53603 52.328103,5.536031 52.328104,5.536031 52.328104,5.536031 52.328104,5.536031 52.328104,5.536032 52.328105,5.536032 52.328105,5.536032 52.328105,5.536032 52.328106,5.536033 52.328106,5.536033 52.328106,5.536033 52.328106,5.536033 52.328107,5.536034 52.328107,5.536034 52.328107,5.536034 52.328108,5.536034 52.328108,5.536035 52.328108,5.536035 52.328108,5.536035 52.328109,5.536036 52.328109,5.536036 52.328109,5.536036 52.328109,5.536037 52.32811,5.536037 52.32811,5.536037 52.32811,5.536037 52.328111,5.536038 52.328111,5.536038 52.328111,5.536038 52.328111,5.536039 52.328112,5.536039 52.328112,5.536039 52.328112,5.53604 52.328112,5.53604 52.328113,5.53604 52.328113,5.536041 52.328113,5.536041 52.328113,5.536041 52.328114,5.536042 52.328114,5.536042 52.328114,5.536042 52.328114,5.536043 52.328115,5.536043 52.328115,5.536043 52.328115,5.536044 52.328115,5.536044 52.328116,5.536045 52.328116,5.536045 52.328116,5.536045 52.328116,5.536046 52.328117,5.536046 52.328117,5.536046 52.328117,5.536047 52.328117,5.536047 52.328117,5.536045 52.328119,5.536054 52.328122,5.536049 52.328127,5.53611 52.328153,5.536139 52.328165,5.536532 52.328329,5.536769 52.328437,5.536861 52.328479,5.537961 52.328964,5.538052 52.328994,5.538214 52.329049,5.538222 52.329051,5.538341 52.329089,5.538475 52.329129,5.538516 52.32914,5.538524 52.329143,5.538646 52.329176,5.538668 52.329155,5.5387 52.329136,5.538744 52.329115,5.538784 52.329103,5.538829 52.329094,5.538856 52.329091,5.538883 52.32909,5.538938 52.328813,5.538949 52.328761,5.539008 52.328479,5.539013 52.32846,5.539045 52.328332,5.53906 52.328276,5.53907 52.328213,5.539078 52.328148,5.539088 52.328093,5.539098 52.328056,5.539104 52.328031,5.539117 52.327996,5.539131 52.327966,5.539145 52.327937,5.539192 52.327853,5.539204 52.327829,5.539232 52.327748,5.539298 52.327581,5.539336 52.327489,5.539405 52.32733,5.539464 52.327202,5.539498 52.32711,5.539537 52.326988,5.539573 52.326908,5.539585 52.326889,5.539601 52.326864,5.53967 52.326763,5.539689 52.326729,5.53986 52.326369,5.539912 52.326228,5.539916 52.326217,5.53992 52.326207,5.539916 52.326193,5.539905 52.326173,5.539888 52.326158,5.53987 52.326149,5.539899 52.326086,5.539899 52.326086,5.539908 52.326085,5.539919 52.326082,5.539939 52.326076,5.539948 52.326072,5.539966 52.326062,5.539971 52.326052,5.53998 52.326054,5.539981 52.326052,5.540001 52.326027,5.540067 52.325928,5.540087 52.325894,5.540417 52.325203,5.540446 52.32514,5.54049 52.325008,5.540492 52.325001,5.540482 52.325,5.540489 52.324979,5.540486 52.324971,5.540482 52.324963,5.540478 52.324958,5.540471 52.324951,5.540464 52.324946,5.540455 52.32494,5.54045 52.324938,5.540445 52.324936,5.540472 52.324882,5.540484 52.324882,5.540512 52.324874,5.540537 52.324862,5.540546 52.324845,5.540556 52.324847,5.540562 52.324837,5.540574 52.324819,5.540642 52.32472,5.540663 52.324679,5.540769 52.324462,5.540893 52.324205,5.540893 52.324205,5.540893 52.324204,5.540893 52.324204,5.540893 52.324203,5.540894 52.324203,5.540894 52.324202,5.540894 52.324202,5.540894 52.324201,5.540895 52.3242,5.540895 52.3242,5.540895 52.324199,5.540896 52.324199,5.540896 52.324198,5.540896 52.324198,5.540896 52.324197,5.540897 52.324197,5.540897 52.324196,5.540897 52.324196,5.540897 52.324195,5.540898 52.324195,5.540898 52.324194,5.540898 52.324194,5.540899 52.324193,5.540899 52.324192,5.540899 52.324192,5.540899 52.324191,5.5409 52.324191,5.5409 52.32419,5.5409 52.32419,5.5409 52.324189,5.540901 52.324189,5.540901 52.324188,5.540901 52.324188,5.540902 52.324187,5.540902 52.324187,5.540902 52.324186,5.540903 52.324186,5.540903 52.324185,5.540903 52.324184,5.540903 52.324184,5.540904 52.324183,5.540904 52.324183,5.540904 52.324182,5.540905 52.324182,5.540905 52.324181,5.540905 52.324181,5.540905 52.32418,5.540906 52.32418,5.540906 52.324179,5.540906 52.324179,5.540907 52.324178,5.540907 52.324178,5.540907 52.324177,5.540908 52.324177,5.540908 52.324176,5.540908 52.324175,5.540909 52.324175,5.540909 52.324174,5.540909 52.324174,5.540909 52.324173,5.54091 52.324173,5.54091 52.324172,5.54091 52.324172,5.540911 52.324171,5.540911 52.324171,5.540911 52.32417,5.540912 52.32417,5.540912 52.324169,5.540912 52.324169,5.540913 52.324168,5.540913 52.324168,5.540913 52.324167,5.540914 52.324167,5.540914 52.324166,5.540914 52.324166,5.540915 52.324165,5.540915 52.324164,5.540915 52.324164,5.540916 52.324163,5.540916 52.324163,5.540916 52.324162,5.540917 52.324162,5.540917 52.324161,5.540917 52.324161,5.540918 52.32416,5.540918 52.32416,5.540918 52.324159,5.540919 52.324159,5.540919 52.324158,5.540919 52.324158,5.54092 52.324157,5.54092 52.324157,5.54092 52.324156,5.540921 52.324156,5.540921 52.324155,5.540921 52.324155,5.540922 52.324154,5.540922 52.324154,5.540922 52.324153,5.540923 52.324152,5.540923 52.324152,5.540913 52.32415,5.54093 52.324129,5.540933 52.324122,5.540933 52.324112,5.540932 52.324106,5.540932 52.324106,5.540881 52.324081,5.54092 52.324007,5.540932 52.323998,5.540941 52.323992,5.54095 52.323986,5.540963 52.323978,5.540975 52.323974,5.540986 52.323969,5.540999 52.323966,5.541019 52.323961,5.541083 52.323944,5.541101 52.32394,5.541212 52.323912,5.54158 52.323833,5.541587 52.323829,5.541684 52.32381,5.541734 52.323801,5.541777 52.323792,5.541847 52.323779,5.542087 52.323732,5.542184 52.323713,5.542251 52.3237,5.542331 52.323684,5.542332 52.323684,5.54234 52.323683,5.542354 52.323678,5.5425 52.323638,5.542521 52.32363,5.542614 52.323591,5.542674 52.323561,5.542755 52.323512,5.542827 52.323459,5.542882 52.323408,5.542905 52.323387,5.542908 52.323384,5.542928 52.323366,5.542932 52.323362,5.542945 52.323349,5.542967 52.32332,5.54302 52.323225,5.543196 52.322858,5.543199 52.322848,5.543199 52.322848,5.5432 52.322847,5.5432 52.322846,5.543201 52.322845,5.543201 52.322844,5.543201 52.322843,5.543202 52.322842,5.543202 52.322841,5.543203 52.32284,5.543203 52.322839,5.543203 52.322838,5.543204 52.322837,5.543204 52.322836,5.543204 52.322835,5.543205 52.322834,5.543205 52.322833,5.543205 52.322832,5.543206 52.322831,5.543206 52.32283,5.543206 52.322829,5.543207 52.322828,5.543207 52.322827,5.543207 52.322826,5.543207 52.322825,5.543208 52.322824,5.543208 52.322823,5.543208 52.322822,5.543208 52.322821,5.543209 52.32282,5.543209 52.322819,5.543209 52.322818,5.543209 52.322817,5.543209 52.322816,5.543209 52.322815,5.54321 52.322814,5.54321 52.322813,5.54321 52.322812,5.54321 52.322811,5.54321 52.32281,5.54321 52.322809,5.54321 52.322808,5.54321 52.322807,5.54321 52.322806,5.54321 52.322805,5.54321 52.322804,5.54321 52.322803,5.54321 52.322802,5.543211 52.322801,5.543211 52.3228,5.543211 52.322799,5.543211 52.322798,5.54321 52.322797,5.54321 52.322796,5.54321 52.322795,5.54321 52.322794,5.54321 52.322793,5.54321 52.322792,5.54321 52.322791,5.54321 52.32279,5.54321 52.322789,5.54321 52.322788,5.54321 52.322788,5.54321 52.322787,5.543209 52.322786,5.543209 52.322785,5.543209 52.322784,5.543209 52.322783,5.543209 52.322782,5.543209 52.322781,5.543208 52.32278,5.543208 52.322779,5.543208 52.322778,5.543208 52.322777,5.543208 52.322776,5.543207 52.322775,5.543207 52.322774,5.543207 52.322773,5.543207 52.322772,5.543206 52.322771,5.543206 52.32277,5.543206 52.322769,5.543205 52.322768,5.543205 52.322767,5.543205 52.322766,5.543204 52.322765,5.543204 52.322764,5.543204 52.322763,5.543203 52.322762,5.543203 52.322761,5.543202 52.32276,5.543202 52.322759,5.543202 52.322758,5.543201 52.322757,5.543201 52.322756,5.5432 52.322755,5.5432 52.322754,5.5432 52.322753,5.543199 52.322752,5.543199 52.322751,5.543198 52.32275,5.543198 52.32275,5.543244 52.322742,5.543342 52.322532,5.543342 52.322532,5.543343 52.322532,5.543343 52.322532,5.543344 52.322532,5.543344 52.322532,5.543345 52.322532,5.543345 52.322532,5.543346 52.322532,5.543346 52.322532,5.543347 52.322532,5.543347 52.322532,5.543348 52.322533,5.543348 52.322533,5.543349 52.322533,5.543349 52.322533,5.54335 52.322533,5.54335 52.322533,5.543351 52.322533,5.543351 52.322533,5.543352 52.322533,5.543352 52.322533,5.543353 52.322533,5.543353 52.322533,5.543354 52.322533,5.543354 52.322533,5.543355 52.322533,5.543355 52.322533,5.543356 52.322533,5.543356 52.322533,5.543357 52.322533,5.543357 52.322533,5.543358 52.322533,5.543358 52.322533,5.543359 52.322533,5.543359 52.322533,5.54336 52.322533,5.54336 52.322533,5.543361 52.322533,5.543361 52.322533,5.543362 52.322533,5.543362 52.322533,5.543363 52.322533,5.543363 52.322533,5.543364 52.322533,5.543364 52.322533,5.543365 52.322533,5.543365 52.322533,5.543366 52.322533,5.543366 52.322533,5.543367 52.322533,5.543367 52.322533,5.543368 52.322533,5.543368 52.322533,5.543369 52.322532,5.543369 52.322532,5.54337 52.322532,5.54337 52.322532,5.543371 52.322532,5.543371 52.322532,5.543372 52.322532,5.543372 52.322532,5.543373 52.322532,5.543373 52.322532,5.543374 52.322532,5.543374 52.322532,5.543375 52.322532,5.543375 52.322531,5.543376 52.322531,5.543376 52.322531,5.543377 52.322531,5.543377 52.322531,5.543378 52.322531,5.543378 52.322531,5.543379 52.322531,5.543379 52.322531,5.54338 52.322531,5.54338 52.32253,5.543381 52.32253,5.543381 52.32253,5.543382 52.32253,5.543382 52.32253,5.543383 52.32253,5.543383 52.32253,5.543383 52.322529,5.543384 52.322529,5.543384 52.322529,5.543385 52.322529,5.543385 52.322529,5.543386 52.322529,5.543386 52.322529,5.543387 52.322528,5.543387 52.322528,5.543387 52.322528,5.543388 52.322528,5.543388 52.322528,5.543389 52.322528,5.543389 52.322527,5.54339 52.322527,5.54339 52.322527,5.54339 52.322527,5.54339 52.322527,5.543396 52.322519,5.543405 52.322521,5.543517 52.322359,5.543524 52.322349,5.543525 52.322346,5.543557 52.322289,5.543608 52.322183,5.543692 52.322007,5.543776 52.321831,5.543859 52.321655,5.543914 52.321541,5.543932 52.321497,5.543938 52.321478,5.543981 52.321348,5.543983 52.321342,5.543984 52.321339,5.543993 52.321312,5.543999 52.321296,5.544031 52.321203,5.544032 52.321199,5.544043 52.321177,5.544068 52.321136,5.544108 52.321065,5.544123 52.321036,5.544158 52.320944,5.544159 52.320941,5.544185 52.320832,5.54419 52.320799,5.544196 52.320752,5.544198 52.32073,5.544134 52.320721,5.544085 52.320714,5.544089 52.320685,5.544078 52.320586,5.544071 52.320534,5.544064 52.32048,5.54405 52.320401,5.544044 52.320358,5.544044 52.320356,5.544038 52.320315,5.544035 52.320299,5.544014 52.320159,5.544012 52.320143,5.543984 52.319999,5.543943 52.319826,5.54393 52.31979,5.543906 52.319746,5.543902 52.319737,5.543609 52.319198,5.543611 52.319197,5.5436 52.319178,5.54357 52.319126,5.543555 52.319097,5.543431 52.318863,5.543428 52.318862,5.543408 52.318826,5.543352 52.318721,5.543348 52.318714,5.543341 52.3187,5.543332 52.318684,5.543334 52.318682,5.543333 52.31868,5.543266 52.318559,5.543261 52.318545,5.543261 52.318538,5.543261 52.318531,5.543265 52.31852,5.543271 52.318512,5.543278 52.318504,5.543287 52.318496,5.5433 52.318488,5.543307 52.318485,5.543322 52.31848,5.543376 52.318469,5.543394 52.318465,5.543373 52.318426,5.543357 52.318396,5.543322 52.318325,5.543289 52.31825,5.543226 52.318102,5.543174 52.317992,5.543136 52.317921,5.543044 52.317746,5.542951 52.31757,5.542858 52.317395,5.542766 52.317221,5.542673 52.317046,5.542581 52.316871,5.542539 52.316791,5.542524 52.316766,5.542482 52.316706,5.542449 52.316663,5.542399 52.316604,5.54231 52.316481,5.542279 52.316437,5.542279 52.316437,5.542277 52.316436,5.542276 52.316434,5.542275 52.316433,5.542274 52.316431,5.542273 52.316429,5.542271 52.316428,5.54227 52.316426,5.542269 52.316425,5.542268 52.316423,5.542266 52.316421,5.542265 52.31642,5.542264 52.316418,5.542263 52.316417,5.542261 52.316415,5.54226 52.316413,5.542259 52.316412,5.542258 52.31641,5.542256 52.316409,5.542255 52.316407,5.542254 52.316405,5.542252 52.316404,5.542251 52.316402,5.54225 52.316401,5.542248 52.316399,5.542247 52.316397,5.542246 52.316396,5.542244 52.316394,5.542243 52.316393,5.542242 52.316391,5.54224 52.31639,5.542239 52.316388,5.542238 52.316386,5.542236 52.316385,5.542235 52.316383,5.542234 52.316382,5.542232 52.31638,5.542231 52.316379,5.542229 52.316377,5.542228 52.316376,5.542227 52.316374,5.542225 52.316372,5.542224 52.316371,5.542222 52.316369,5.542221 52.316368,5.54222 52.316366,5.542218 52.316365,5.542217 52.316363,5.542215 52.316362,5.542214 52.31636,5.542213 52.316358,5.542211 52.316357,5.54221 52.316355,5.542208 52.316354,5.542207 52.316352,5.542205 52.316351,5.542204 52.316349,5.542202 52.316348,5.542201 52.316346,5.542199 52.316345,5.542198 52.316343,5.542196 52.316342,5.542195 52.31634,5.542193 52.316339,5.542192 52.316337,5.54219 52.316336,5.542189 52.316334,5.542187 52.316333,5.542186 52.316331,5.542184 52.31633,5.542183 52.316328,5.542181 52.316327,5.54218 52.316325,5.542178 52.316324,5.542176 52.316322,5.542175 52.316321,5.542173 52.316319,5.542172 52.316318,5.54217 52.316316,5.542169 52.316315,5.542167 52.316313,5.542165 52.316312,5.542164 52.31631,5.542162 52.316309,5.542161 52.316307,5.542159 52.316306,5.542157 52.316304,5.542156 52.316303,5.542154 52.316301,5.542153 52.3163,5.542151 52.316298,5.542149 52.316297,5.542148 52.316295,5.542146 52.316294,5.542144 52.316292,5.542143 52.316291,5.542141 52.31629,5.542139 52.316288,5.542138 52.316287,5.542136 52.316285,5.542136 52.316285,5.542053 52.316224,5.541947 52.316154,5.541947 52.316154,5.541945 52.316152,5.541943 52.316151,5.541942 52.31615,5.54194 52.316149,5.541938 52.316148,5.541936 52.316147,5.541935 52.316146,5.541933 52.316145,5.541931 52.316144,5.541929 52.316143,5.541928 52.316142,5.541926 52.316141,5.541924 52.31614,5.541922 52.316139,5.541921 52.316138,5.541919 52.316137,5.541917 52.316136,5.541915 52.316135,5.541914 52.316134,5.541912 52.316133,5.54191 52.316132,5.541908 52.316131,5.541907 52.31613,5.541905 52.316128,5.541903 52.316127,5.541901 52.316126,5.541899 52.316125,5.541898 52.316124,5.541896 52.316123,5.541894 52.316122,5.541892 52.316121,5.541891 52.31612,5.541889 52.316119,5.541887 52.316118,5.541885 52.316117,5.541883 52.316116,5.541882 52.316115,5.54188 52.316114,5.541878 52.316113,5.541876 52.316112,5.541874 52.316111,5.541873 52.31611,5.541871 52.316109,5.541869 52.316108,5.541867 52.316107,5.541865 52.316106,5.541864 52.316105,5.541862 52.316104,5.54186 52.316103,5.541858 52.316102,5.541856 52.316101,5.541855 52.3161,5.541853 52.316099,5.541851 52.316098,5.541849 52.316097,5.541847 52.316096,5.541845 52.316095,5.541844 52.316094,5.541842 52.316093,5.54184 52.316092,5.541838 52.316091,5.541836 52.31609,5.541834 52.316089,5.541833 52.316088,5.541831 52.316087,5.541829 52.316086,5.541827 52.316085,5.541825 52.316084,5.541823 52.316083,5.541822 52.316082,5.54182 52.316081,5.541818 52.31608,5.541816 52.316079,5.541814 52.316078,5.541812 52.316077,5.54181 52.316077,5.541809 52.316076,5.541807 52.316075,5.541805 52.316074,5.541803 52.316073,5.541801 52.316072,5.541799 52.316071,5.541797 52.31607,5.541796 52.316069,5.541794 52.316068,5.541792 52.316067,5.54179 52.316066,5.541788 52.316065,5.541786 52.316064,5.541784 52.316063,5.541782 52.316062,5.541781 52.316061,5.541779 52.31606,5.541777 52.316059,5.541775 52.316058,5.541773 52.316057,5.541771 52.316056,5.541769 52.316055,5.541767 52.316055,5.541767 52.316055,5.541767 52.316054,5.541767 52.316054,5.541767 52.316054,5.541767 52.316054,5.541766 52.316054,5.541766 52.316054,5.541766 52.316054,5.541766 52.316054,5.541766 52.316054,5.541766 52.316054,5.541765 52.316054,5.541765 52.316054,5.541765 52.316053,5.541765 52.316053,5.541765 52.316053,5.541765 52.316053,5.541765 52.316053,5.541764 52.316053,5.541764 52.316053,5.541764 52.316053,5.541764 52.316053,5.541764 52.316053,5.541764 52.316053,5.541763 52.316053,5.541763 52.316053,5.541763 52.316052,5.541763 52.316052,5.541763 52.316052,5.541763 52.316052,5.541762 52.316052,5.541762 52.316052,5.541762 52.316052,5.541762 52.316052,5.541762 52.316052,5.541762 52.316052,5.541761 52.316052,5.541761 52.316052,5.541761 52.316051,5.541761 52.316051,5.541761 52.316051,5.541761 52.316051,5.54176 52.316051,5.54176 52.316051,5.54176 52.316051,5.54176 52.316051,5.54176 52.316051,5.54176 52.316051,5.541759 52.316051,5.541759 52.316051,5.541759 52.316051,5.541759 52.31605,5.541759 52.31605,5.541759 52.31605,5.541759 52.31605,5.541758 52.31605,5.541758 52.31605,5.541758 52.31605,5.541758 52.31605,5.541758 52.31605,5.541758 52.31605,5.541757 52.31605,5.541757 52.31605,5.541757 52.316049,5.541757 52.316049,5.541757 52.316049,5.541757 52.316049,5.541756 52.316049,5.541756 52.316049,5.541756 52.316049,5.541756 52.316049,5.541756 52.316049,5.541756 52.316049,5.541755 52.316049,5.541755 52.316049,5.541755 52.316049,5.541755 52.316048,5.541755 52.316048,5.541755 52.316048,5.541754 52.316048,5.541754 52.316048,5.541754 52.316048,5.541754 52.316048,5.541754 52.316048,5.541754 52.316048,5.541753 52.316048,5.541753 52.316048,5.541753 52.316048,5.541753 52.316047,5.541753 52.316047,5.541753 52.316047,5.541753 52.316047,5.541752 52.316047,5.541752 52.316047,5.541752 52.316047,5.541752 52.316047,5.541752 52.316047,5.541752 52.316047,5.541751 52.316047,5.541751 52.316047,5.541751 52.316047,5.541751 52.316047,5.541751 52.316046,5.541751 52.316046,5.54175 52.316046,5.54175 52.316046,5.54175 52.316046,5.54175 52.316046,5.54175 52.316046,5.54175 52.316046,5.541749 52.316046,5.541749 52.316046,5.541749 52.316045,5.541749 52.316045,5.541749 52.316045,5.541748 52.316045,5.541748 52.316045,5.541748 52.316045,5.541748 52.316045,5.541748 52.316045,5.541747 52.316045,5.541747 52.316045,5.541747 52.316045,5.541747 52.316044,5.541747 52.316044,5.541746 52.316044,5.541746 52.316044,5.541746 52.316044,5.541746 52.316044,5.541746 52.316044,5.541746 52.316044,5.541745 52.316044,5.541745 52.316044,5.541745 52.316044,5.541745 52.316043,5.541745 52.316043,5.541744 52.316043,5.541744 52.316043,5.541744 52.316043,5.541744 52.316043,5.541744 52.316043,5.541743 52.316043,5.541743 52.316043,5.541743 52.316043,5.541743 52.316043,5.541743 52.316042,5.541742 52.316042,5.541742 52.316042,5.541742 52.316042,5.541742 52.316042,5.541742 52.316042,5.541742 52.316042,5.541741 52.316042,5.541741 52.316042,5.541741 52.316042,5.541741 52.316042,5.541741 52.316041,5.54174 52.316041,5.54174 52.316041,5.54174 52.316041,5.54174 52.316041,5.54174 52.316041,5.541739 52.316041,5.541739 52.316041,5.541739 52.316041,5.541739 52.316041,5.541739 52.31604,5.541738 52.31604,5.541738 52.31604,5.541738 52.31604,5.541738 52.31604,5.541738 52.31604,5.541738 52.31604,5.541737 52.31604,5.541737 52.31604,5.541737 52.31604,5.541737 52.31604,5.541737 52.316039,5.541736 52.316039,5.541736 52.316039,5.541736 52.316039,5.541736 52.316039,5.541736 52.316039,5.541735 52.316039,5.541735 52.316039,5.541735 52.316039,5.541735 52.316039,5.541735 52.316039,5.541734 52.316038,5.541734 52.316038,5.541734 52.316038,5.541734 52.316038,5.541734 52.316038,5.541734 52.316038,5.541733 52.316038,5.541733 52.316038,5.541733 52.316038,5.541733 52.316038,5.541733 52.316038,5.541732 52.316037,5.541732 52.316037,5.541656 52.316005,5.541656 52.316005,5.541648 52.316001,5.541639 52.315998,5.541631 52.315994,5.541622 52.31599,5.541613 52.315987,5.541605 52.315983,5.541596 52.31598,5.541587 52.315976,5.541579 52.315973,5.54157 52.31597,5.541561 52.315966,5.541552 52.315963,5.541543 52.315959,5.541535 52.315956,5.541526 52.315953,5.541517 52.31595,5.541508 52.315946,5.541499 52.315943,5.54149 52.31594,5.541481 52.315937,5.541472 52.315934,5.541463 52.315931,5.541453 52.315927,5.541444 52.315924,5.541435 52.315921,5.541426 52.315918,5.541417 52.315915,5.541408 52.315913,5.541398 52.31591,5.541389 52.315907,5.54138 52.315904,5.54137 52.315901,5.541361 52.315898,5.541352 52.315896,5.541342 52.315893,5.541333 52.31589,5.541324 52.315887,5.541314 52.315885,5.541305 52.315882,5.541295 52.31588,5.541286 52.315877,5.541276 52.315874,5.541266 52.315872,5.541257 52.31587,5.541247 52.315867,5.541238 52.315865,5.541228 52.315862,5.541218 52.31586,5.541209 52.315858,5.541199 52.315855,5.541189 52.315853,5.54118 52.315851,5.54117 52.315849,5.54116 52.315846,5.54115 52.315844,5.54114 52.315842,5.541131 52.31584,5.541121 52.315838,5.541111 52.315836,5.541101 52.315834,5.541091 52.315832,5.541081 52.31583,5.541071 52.315828,5.541061 52.315826,5.541051 52.315825,5.541042 52.315823,5.541032 52.315821,5.541022 52.315819,5.541012 52.315817,5.541002 52.315816,5.540992 52.315814,5.540981 52.315812,5.540971 52.315811,5.540961 52.315809,5.540951 52.315808,5.540941 52.315806,5.540931 52.315805,5.540921 52.315803,5.540911 52.315802,5.540901 52.315801,5.54089 52.315799,5.54088 52.315798,5.54087 52.315797,5.54086 52.315795,5.54085 52.315794,5.54084 52.315793,5.540829 52.315792,5.540819 52.315791,5.540809 52.31579,5.540799 52.315788,5.540788 52.315787,5.540778 52.315786,5.540768 52.315785,5.540758 52.315784,5.540747 52.315784,5.540737 52.315783,5.540727 52.315782,5.540716 52.315781,5.540706 52.31578,5.540706 52.31578,5.540697 52.315779,5.540687 52.315779,5.540677 52.315778,5.540668 52.315777,5.540658 52.315777,5.540649 52.315776,5.540639 52.315775,5.540629 52.315775,5.54062 52.315774,5.54061 52.315774,5.540601 52.315773,5.540591 52.315773,5.540581 52.315772,5.540572 52.315772,5.540562 52.315771,5.540553 52.315771,5.540543 52.315771,5.540533 52.31577,5.540524 52.31577,5.540514 52.31577,5.540505 52.31577,5.540495 52.315769,5.540485 52.315769,5.540476 52.315769,5.540466 52.315769,5.540456 52.315769,5.540447 52.315769,5.540437 52.315769,5.540427 52.315769,5.540418 52.315769,5.540408 52.315769,5.540399 52.315769,5.540389 52.315769,5.540379 52.315769,5.54037 52.315769,5.54036 52.315769,5.54035 52.31577,5.540341 52.31577,5.540331 52.31577,5.540321 52.31577,5.540312 52.315771,5.540302 52.315771,5.540293 52.315771,5.540283 52.315772,5.540273 52.315772,5.540264 52.315773,5.540254 52.315773,5.540245 52.315774,5.540235 52.315774,5.540225 52.315775,5.540216 52.315775,5.540206 52.315776,5.540197 52.315776,5.540187 52.315777,5.540177 52.315778,5.540168 52.315778,5.540158 52.315779,5.540149 52.31578,5.540139 52.315781,5.54013 52.315782,5.54012 52.315782,5.540111 52.315783,5.540101 52.315784,5.540092 52.315785,5.540082 52.315786,5.540073 52.315787,5.540063 52.315788,5.540054 52.315789,5.540044 52.31579,5.540035 52.315791,5.540025 52.315792,5.540016 52.315793,5.540006 52.315795,5.539997 52.315796,5.539987 52.315797,5.539978 52.315798,5.539969 52.3158,5.539959 52.315801,5.53995 52.315802,5.53994 52.315804,5.539931 52.315805,5.539922 52.315806,5.539912 52.315808,5.539903 52.315809,5.539894 52.315811,5.539884 52.315812,5.539875 52.315814,5.539866 52.315815,5.539856 52.315817,5.539847 52.315819,5.539838 52.31582,5.539829 52.315822,5.539819 52.315824,5.53981 52.315825,5.539801 52.315827,5.539792 52.315829,5.539783 52.315831,5.539773 52.315832,5.539764 52.315834,5.539764 52.315834,5.537484 52.316289,5.537431 52.3163,5.537424 52.316301,5.537382 52.31631,5.537375 52.316311,5.536845 52.316414,5.536634 52.316453,5.536419 52.316486,5.536205 52.316513,5.53605 52.316528,5.535533 52.316574,5.535522 52.316576,5.535512 52.31658,5.535176 52.316611,5.535131 52.31661,5.534889 52.316633,5.534785 52.316645,5.534741 52.316651,5.534704 52.316657,5.534622 52.316672,5.534588 52.316682,5.534578 52.316686,5.534521 52.316711,5.534521 52.316711,5.534521 52.316712,5.534521 52.316712,5.534521 52.316712,5.53452 52.316712,5.53452 52.316712,5.53452 52.316712,5.53452 52.316712,5.53452 52.316712,5.53452 52.316712,5.53452 52.316712,5.534519 52.316712,5.534519 52.316712,5.534519 52.316713,5.534519 52.316713,5.534519 52.316713,5.534519 52.316713,5.534519 52.316713,5.534518 52.316713,5.534518 52.316713,5.534518 52.316713,5.534518 52.316713,5.534518 52.316713,5.534518 52.316713,5.534518 52.316714,5.534517 52.316714,5.534517 52.316714,5.534517 52.316714,5.534517 52.316714,5.534517 52.316714,5.534517 52.316714,5.534517 52.316714,5.534516 52.316714,5.534516 52.316714,5.534516 52.316714,5.534516 52.316715,5.534516 52.316715,5.534516 52.316715,5.534516 52.316715,5.534515 52.316715,5.534515 52.316715,5.534515 52.316715,5.534515 52.316715,5.534515 52.316715,5.534515 52.316715,5.534515 52.316716,5.534515 52.316716,5.534514 52.316716,5.534514 52.316716,5.534514 52.316716,5.534514 52.316716,5.534514 52.316716,5.534514 52.316716,5.534514 52.316716,5.534513 52.316716,5.534513 52.316716,5.534513 52.316717,5.534513 52.316717,5.534513 52.316717,5.534513 52.316717,5.534513 52.316717,5.534513 52.316717,5.534512 52.316717,5.534512 52.316717,5.534512 52.316717,5.534512 52.316717,5.534512 52.316718,5.534512 52.316718,5.534512 52.316718,5.534512 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.534509 52.316719,5.534509 52.31672,5.534509 52.31672,5.534509 52.31672,5.534509 52.31672,5.534509 52.31672,5.534509 52.31672,5.534509 52.31672,5.534508 52.31672,5.534508 52.31672,5.534508 52.31672,5.534508 52.316721,5.534508 52.316721,5.534508 52.316721,5.534508 52.316721,5.534507 52.316721,5.534507 52.316722,5.534506 52.316722,5.534505 52.316723,5.534505 52.316723,5.534504 52.316724,5.534503 52.316725,5.534503 52.316725,5.534502 52.316726,5.534502 52.316726,5.534501 52.316727,5.534501 52.316727,5.5345 52.316728,5.5345 52.316729,5.534499 52.316729,5.534498 52.31673,5.534498 52.31673,5.534497 52.316731,5.534497 52.316731,5.534496 52.316732,5.534496 52.316733,5.534495 52.316733,5.534495 52.316734,5.534494 52.316734,5.534494 52.316735,5.534494 52.316736,5.534493 52.316736,5.534493 52.316737,5.534492 52.316737,5.534492 52.316738,5.534491 52.316739,5.534491 52.316739,5.534491 52.31674,5.53449 52.31674,5.53449 52.316741,5.534489 52.316742,5.534489 52.316742,5.534489 52.316743,5.534488 52.316744,5.534488 52.316744,5.534488 52.316745,5.534487 52.316745,5.534487 52.316746,5.534487 52.316747,5.534486 52.316747,5.534486 52.316748,5.534486 52.316749,5.534485 52.316749,5.534485 52.31675,5.534485 52.316751,5.534485 52.316751,5.534484 52.316752,5.534484 52.316752,5.534484 52.316753,5.534484 52.316754,5.534484 52.316754,5.534483 52.316755,5.534483 52.316756,5.534483 52.316756,5.534483 52.316757,5.534483 52.316758,5.534482 52.316758,5.534482 52.316759,5.534482 52.31676,5.534482 52.31676,5.534482 52.316761,5.534482 52.316762,5.534482 52.316762,5.534481 52.316763,5.534481 52.316764,5.534481 52.316764,5.534481 52.316765,5.534481 52.316766,5.534481 52.316766,5.534481 52.316767,5.534481 52.316768,5.534481 52.316768,5.534481 52.316769,5.534481 52.31677,5.534481 52.31677,5.534481 52.316771,5.534481 52.316772,5.534481 52.316772,5.534481 52.316773,5.534481 52.316774,5.534481 52.316774,5.534481 52.316775,5.534481 52.316775,5.534481 52.316776,5.534481 52.316777,5.534481 52.316777,5.534481 52.316778,5.534482 52.316779,5.534482 52.316779,5.534482 52.31678,5.534482 52.316781,5.534482 52.316781,5.534482 52.316782,5.534482 52.316783,5.534482 52.316783,5.534484 52.316791,5.534484 52.31686,5.534476 52.316933,5.534469 52.316981,5.534439 52.31709,5.534374 52.317229,5.534367 52.317231,5.534339 52.317324,5.534296 52.317465,5.534293 52.317484,5.534273 52.317555,5.534287 52.317594,5.534294 52.317609,5.534303 52.317626,5.53431 52.317636,5.534312 52.317638,5.534323 52.317649,5.534351 52.317668,5.534355 52.317671,5.534405 52.317691,5.534447 52.317702,5.534488 52.317709,5.534706 52.317747,5.534689 52.317783,5.534443 52.317742,5.534393 52.317741,5.534335 52.317748,5.534326 52.317751,5.534325 52.317751,5.534317 52.317753,5.534291 52.317761,5.534275 52.317768,5.534257 52.317778,5.534228 52.317799,5.534184 52.317836,5.534177 52.317858,5.53414 52.317961,5.533828 52.318952,5.533787 52.319094,5.53377 52.319185,5.533714 52.319339,5.533666 52.319431,5.533656 52.319452,5.533634 52.319485,5.533642 52.319487,5.533616 52.319526,5.533616 52.319526,5.533617 52.319526,5.533617 52.319527,5.533617 52.319528,5.533618 52.319528,5.533618 52.319529,5.533618 52.319529,5.533619 52.31953,5.533619 52.319531,5.533619 52.319531,5.53362 52.319532,5.53362 52.319532,5.53362 52.319533,5.533621 52.319533,5.533621 52.319534,5.533622 52.319535,5.533622 52.319535,5.533622 52.319536,5.533623 52.319536,5.533623 52.319537,5.533623 52.319537,5.533624 52.319538,5.533624 52.319539,5.533625 52.319539,5.533625 52.31954,5.533625 52.31954,5.533626 52.319541,5.533626 52.319541,5.533627 52.319542,5.533627 52.319543,5.533627 52.319543,5.533628 52.319544,5.533628 52.319544,5.533629 52.319545,5.533629 52.319545,5.53363 52.319546,5.53363 52.319546,5.533631 52.319547,5.533631 52.319548,5.533632 52.319548,5.533632 52.319549,5.533632 52.319549,5.533633 52.31955,5.533633 52.31955,5.533634 52.319551,5.533634 52.319551,5.533635 52.319552,5.533635 52.319552,5.533636 52.319553,5.533636 52.319553,5.533637 52.319554,5.533637 52.319555,5.533638 52.319555,5.533638 52.319556,5.533639 52.319556,5.533639 52.319557,5.53364 52.319557,5.533641 52.319558,5.533641 52.319558,5.533642 52.319559,5.533642 52.319559,5.533643 52.31956,5.533643 52.31956,5.533644 52.319561,5.533644 52.319561,5.533645 52.319562,5.533646 52.319562,5.533646 52.319563,5.533647 52.319563,5.533647 52.319564,5.533648 52.319564,5.533648 52.319565,5.533649 52.319565,5.53365 52.319566,5.53365 52.319566,5.533651 52.319567,5.533651 52.319567,5.533652 52.319568,5.533653 52.319568,5.533653 52.319569,5.533654 52.319569,5.533654 52.31957,5.533655 52.31957,5.533656 52.319571,5.533656 52.319571,5.533657 52.319572,5.533658 52.319572,5.533658 52.319573,5.533659 52.319573,5.53366 52.319574,5.53366 52.319574,5.533661 52.319575,5.533662 52.319575,5.533662 52.319576,5.533663 52.319576,5.533664 52.319576,5.533664 52.319577,5.533665 52.319577,5.533666 52.319578,5.533666 52.319578,5.533666 52.319578,5.53362 52.319642,5.53362 52.319642,5.533619 52.319642,5.533618 52.319642,5.533617 52.319642,5.533616 52.319642,5.533615 52.319642,5.533614 52.319642,5.533613 52.319642,5.533612 52.319642,5.533611 52.319642,5.53361 52.319642,5.533609 52.319642,5.533608 52.319642,5.533607 52.319642,5.533606 52.319642,5.533605 52.319642,5.533604 52.319642,5.533603 52.319642,5.533602 52.319642,5.533601 52.319642,5.5336 52.319642,5.533599 52.319642,5.533598 52.319642,5.533597 52.319642,5.533596 52.319642,5.533595 52.319642,5.533594 52.319642,5.533593 52.319642,5.533592 52.319642,5.533591 52.319642,5.53359 52.319642,5.533589 52.319642,5.533588 52.319642,5.533587 52.319642,5.533586 52.319642,5.533585 52.319642,5.533584 52.319642,5.533583 52.319642,5.533582 52.319642,5.533581 52.319642,5.53358 52.319642,5.533579 52.319642,5.533578 52.319643,5.533577 52.319643,5.533576 52.319643,5.533575 52.319643,5.533574 52.319643,5.533573 52.319643,5.533572 52.319643,5.533571 52.319643,5.53357 52.319643,5.533569 52.319643,5.533568 52.319643,5.533568 52.319644,5.533567 52.319644,5.533566 52.319644,5.533565 52.319644,5.533564 52.319644,5.533563 52.319644,5.533562 52.319644,5.533561 52.319644,5.53356 52.319644,5.533559 52.319645,5.533558 52.319645,5.533557 52.319645,5.533556 52.319645,5.533555 52.319645,5.533554 52.319645,5.533553 52.319645,5.533552 52.319646,5.533551 52.319646,5.53355 52.319646,5.533549 52.319646,5.533548 52.319646,5.533547 52.319646,5.533546 52.319647,5.533545 52.319647,5.533544 52.319647,5.533543 52.319647,5.533542 52.319647,5.533541 52.319647,5.53354 52.319648,5.53354 52.319648,5.533539 52.319648,5.533538 52.319648,5.533537 52.319648,5.533536 52.319649,5.533535 52.319649,5.533534 52.319649,5.533533 52.319649,5.533532 52.319649,5.533531 52.31965,5.53353 52.31965,5.533529 52.31965,5.533528 52.31965,5.533527 52.319651,5.533526 52.319651,5.533526 52.319651,5.533525 52.319651,5.533524 52.319652,5.533524 52.319652,5.533488 52.319697,5.533479 52.319694,5.533446 52.319732,5.533419 52.319762,5.533387 52.31982,5.533366 52.319859,5.533256 52.319951,5.533177 52.319973,5.533135 52.320005,5.532911 52.320157,5.532154 52.320647,5.53197 52.320776,5.53187 52.320859,5.531708 52.321022,5.531623 52.321125,5.531489 52.32134,5.531466 52.321385,5.531168 52.322014,5.531132 52.322091,5.53113 52.322096,5.531117 52.322122,5.531117 52.322122,5.531117 52.322123,5.531117 52.322124,5.531117 52.322125,5.531116 52.322126,5.531116 52.322127,5.531116 52.322128,5.531116 52.322129,5.531115 52.32213,5.531115 52.322131,5.531115 52.322132,5.531115 52.322133,5.531115 52.322134,5.531115 52.322135,5.531115 52.322136,5.531115 52.322137,5.531115 52.322138,5.531115 52.322138,5.531115 52.322139,5.531115 52.32214,5.531115 52.322141,5.531115 52.322142,5.531115 52.322143,5.531115 52.322144,5.531116 52.322145,5.531116 52.322146,5.531116 52.322147,5.531116 52.322148,5.531116 52.322149,5.531117 52.32215,5.531117 52.322151,5.531117 52.322152,5.531118 52.322153,5.531118 52.322154,5.531118 52.322155,5.531119 52.322156,5.531119 52.322156,5.53112 52.322157,5.53112 52.322158,5.531121 52.322159,5.531121 52.32216,5.531122 52.322161,5.531122 52.322162,5.531123 52.322163,5.531123 52.322164,5.531124 52.322165,5.531124 52.322165,5.531125 52.322166,5.531126 52.322167,5.531126 52.322168,5.531127 52.322169,5.531128 52.32217,5.531129 52.322171,5.531129 52.322171,5.53113 52.322172,5.531131 52.322173,5.531132 52.322174,5.531133 52.322175,5.531133 52.322176,5.531134 52.322176,5.531135 52.322177,5.531136 52.322178,5.531137 52.322179,5.531138 52.32218,5.531139 52.32218,5.53114 52.322181,5.531141 52.322182,5.531142 52.322183,5.531143 52.322183,5.531144 52.322184,5.531145 52.322185,5.531146 52.322185,5.531147 52.322186,5.531148 52.322187,5.531149 52.322187,5.53115 52.322188,5.531151 52.322189,5.531152 52.322189,5.531154 52.32219,5.531155 52.322191,5.531156 52.322191,5.531157 52.322192,5.531158 52.322193,5.53116 52.322193,5.531161 52.322194,5.531162 52.322194,5.531163 52.322195,5.531165 52.322195,5.531166 52.322196,5.531167 52.322197,5.531169 52.322197,5.53117 52.322198,5.531171 52.322198,5.531173 52.322199,5.531174 52.322199,5.531175 52.322199,5.531177 52.3222,5.531178 52.3222,5.53118 52.322201,5.531181 52.322201,5.531181 52.322201,5.53114 52.322287,5.531134 52.322286,5.531134 52.322286,5.531133 52.322286,5.531132 52.322286,5.531131 52.322286,5.53113 52.322286,5.531129 52.322286,5.531128 52.322286,5.531127 52.322286,5.531126 52.322286,5.531125 52.322286,5.531124 52.322286,5.531123 52.322286,5.531122 52.322286,5.531121 52.322286,5.53112 52.322286,5.531119 52.322286,5.531119 52.322286,5.531118 52.322286,5.531117 52.322286,5.531116 52.322286,5.531115 52.322286,5.531114 52.322286,5.531113 52.322286,5.531112 52.322287,5.531111 52.322287,5.53111 52.322287,5.531109 52.322287,5.531108 52.322287,5.531107 52.322287,5.531106 52.322287,5.531105 52.322287,5.531104 52.322287,5.531103 52.322287,5.531102 52.322288,5.531102 52.322288,5.531101 52.322288,5.5311 52.322288,5.531099 52.322288,5.531098 52.322288,5.531097 52.322288,5.531096 52.322288,5.531095 52.322289,5.531094 52.322289,5.531093 52.322289,5.531092 52.322289,5.531091 52.322289,5.531091 52.322289,5.53109 52.32229,5.531089 52.32229,5.531088 52.32229,5.531087 52.32229,5.531086 52.32229,5.531085 52.322291,5.531084 52.322291,5.531083 52.322291,5.531083 52.322291,5.531082 52.322292,5.531081 52.322292,5.53108 52.322292,5.531079 52.322292,5.531078 52.322292,5.531077 52.322293,5.531076 52.322293,5.531076 52.322293,5.531075 52.322294,5.531074 52.322294,5.531073 52.322294,5.531072 52.322294,5.531071 52.322295,5.531071 52.322295,5.53107 52.322295,5.531069 52.322295,5.531068 52.322296,5.531067 52.322296,5.531066 52.322296,5.531066 52.322297,5.531065 52.322297,5.531064 52.322297,5.531063 52.322298,5.531062 52.322298,5.531062 52.322298,5.531061 52.322299,5.53106 52.322299,5.531059 52.322299,5.531059 52.3223,5.531058 52.3223,5.531057 52.3223,5.531056 52.322301,5.531055 52.322301,5.531055 52.322301,5.531054 52.322302,5.531053 52.322302,5.531053 52.322303,5.531052 52.322303,5.531051 52.322303,5.53105 52.322304,5.53105 52.322304,5.531049 52.322304,5.531048 52.322305,5.531048 52.322305)),((5.543265 52.31852,5.54227 52.316624,5.542252 52.316589,5.542217 52.316546,5.542192 52.316516,5.542149 52.316467,5.542113 52.316432,5.542066 52.316391,5.542015 52.316351,5.541957 52.316308,5.541897 52.316265,5.541828 52.316218,5.54176 52.316174,5.541694 52.316134,5.541631 52.316101,5.541613 52.316092,5.541638 52.316085,5.541622 52.316077,5.541767 52.316055,5.541767 52.316055,5.541769 52.316055,5.541771 52.316056,5.541773 52.316057,5.541775 52.316058,5.541777 52.316059,5.541779 52.31606,5.541781 52.316061,5.541782 52.316062,5.541784 52.316063,5.541786 52.316064,5.541788 52.316065,5.54179 52.316066,5.541792 52.316067,5.541794 52.316068,5.541796 52.316069,5.541797 52.31607,5.541799 52.316071,5.541801 52.316072,5.541803 52.316073,5.541805 52.316074,5.541807 52.316075,5.541809 52.316076,5.54181 52.316077,5.541812 52.316077,5.541814 52.316078,5.541816 52.316079,5.541818 52.31608,5.54182 52.316081,5.541822 52.316082,5.541823 52.316083,5.541825 52.316084,5.541827 52.316085,5.541829 52.316086,5.541831 52.316087,5.541833 52.316088,5.541834 52.316089,5.541836 52.31609,5.541838 52.316091,5.54184 52.316092,5.541842 52.316093,5.541844 52.316094,5.541845 52.316095,5.541847 52.316096,5.541849 52.316097,5.541851 52.316098,5.541853 52.316099,5.541855 52.3161,5.541856 52.316101,5.541858 52.316102,5.54186 52.316103,5.541862 52.316104,5.541864 52.316105,5.541865 52.316106,5.541867 52.316107,5.541869 52.316108,5.541871 52.316109,5.541873 52.31611,5.541874 52.316111,5.541876 52.316112,5.541878 52.316113,5.54188 52.316114,5.541882 52.316115,5.541883 52.316116,5.541885 52.316117,5.541887 52.316118,5.541889 52.316119,5.541891 52.31612,5.541892 52.316121,5.541894 52.316122,5.541896 52.316123,5.541898 52.316124,5.541899 52.316125,5.541901 52.316126,5.541903 52.316127,5.541905 52.316128,5.541907 52.31613,5.541908 52.316131,5.54191 52.316132,5.541912 52.316133,5.541914 52.316134,5.541915 52.316135,5.541917 52.316136,5.541919 52.316137,5.541921 52.316138,5.541922 52.316139,5.541924 52.31614,5.541926 52.316141,5.541928 52.316142,5.541929 52.316143,5.541931 52.316144,5.541933 52.316145,5.541935 52.316146,5.541936 52.316147,5.541938 52.316148,5.54194 52.316149,5.541942 52.31615,5.541943 52.316151,5.541945 52.316152,5.541947 52.316154,5.541947 52.316154,5.542053 52.316224,5.542136 52.316285,5.542136 52.316285,5.542138 52.316287,5.542139 52.316288,5.542141 52.31629,5.542143 52.316291,5.542144 52.316292,5.542146 52.316294,5.542148 52.316295,5.542149 52.316297,5.542151 52.316298,5.542153 52.3163,5.542154 52.316301,5.542156 52.316303,5.542157 52.316304,5.542159 52.316306,5.542161 52.316307,5.542162 52.316309,5.542164 52.31631,5.542165 52.316312,5.542167 52.316313,5.542169 52.316315,5.54217 52.316316,5.542172 52.316318,5.542173 52.316319,5.542175 52.316321,5.542176 52.316322,5.542178 52.316324,5.54218 52.316325,5.542181 52.316327,5.542183 52.316328,5.542184 52.31633,5.542186 52.316331,5.542187 52.316333,5.542189 52.316334,5.54219 52.316336,5.542192 52.316337,5.542193 52.316339,5.542195 52.31634,5.542196 52.316342,5.542198 52.316343,5.542199 52.316345,5.542201 52.316346,5.542202 52.316348,5.542204 52.316349,5.542205 52.316351,5.542207 52.316352,5.542208 52.316354,5.54221 52.316355,5.542211 52.316357,5.542213 52.316358,5.542214 52.31636,5.542215 52.316362,5.542217 52.316363,5.542218 52.316365,5.54222 52.316366,5.542221 52.316368,5.542222 52.316369,5.542224 52.316371,5.542225 52.316372,5.542227 52.316374,5.542228 52.316376,5.542229 52.316377,5.542231 52.316379,5.542232 52.31638,5.542234 52.316382,5.542235 52.316383,5.542236 52.316385,5.542238 52.316386,5.542239 52.316388,5.54224 52.31639,5.542242 52.316391,5.542243 52.316393,5.542244 52.316394,5.542246 52.316396,5.542247 52.316397,5.542248 52.316399,5.54225 52.316401,5.542251 52.316402,5.542252 52.316404,5.542254 52.316405,5.542255 52.316407,5.542256 52.316409,5.542258 52.31641,5.542259 52.316412,5.54226 52.316413,5.542261 52.316415,5.542263 52.316417,5.542264 52.316418,5.542265 52.31642,5.542266 52.316421,5.542268 52.316423,5.542269 52.316425,5.54227 52.316426,5.542271 52.316428,5.542273 52.316429,5.542274 52.316431,5.542275 52.316433,5.542276 52.316434,5.542277 52.316436,5.542279 52.316437,5.542279 52.316437,5.54231 52.316481,5.542399 52.316604,5.542449 52.316663,5.542482 52.316706,5.542524 52.316766,5.542539 52.316791,5.542581 52.316871,5.542673 52.317046,5.542766 52.317221,5.542858 52.317395,5.542951 52.31757,5.543044 52.317746,5.543136 52.317921,5.543174 52.317992,5.543226 52.318102,5.543289 52.31825,5.543322 52.318325,5.543357 52.318396,5.543373 52.318426,5.543394 52.318465,5.543376 52.318469,5.543322 52.31848,5.543307 52.318485,5.5433 52.318488,5.543287 52.318496,5.543278 52.318504,5.543271 52.318512,5.543265 52.31852)),((5.542344 52.319859,5.542941 52.319971,5.542962 52.32001,5.542473 52.320105,5.542344 52.319859)),((5.542921 52.319702,5.542771 52.319417,5.542777 52.319416,5.542819 52.319407,5.543358 52.319303,5.543508 52.319586,5.542921 52.319702)),((5.543635 52.322597,5.543612 52.322593,5.543612 52.322593,5.543611 52.322593,5.543611 52.322593,5.54361 52.322593,5.54361 52.322592,5.543609 52.322592,5.543609 52.322592,5.543608 52.322592,5.543608 52.322592,5.543608 52.322592,5.543607 52.322592,5.543607 52.322592,5.543606 52.322592,5.543606 52.322591,5.543605 52.322591,5.543605 52.322591,5.543604 52.322591,5.543604 52.322591,5.543604 52.322591,5.543603 52.322591,5.543603 52.322591,5.543602 52.32259,5.543602 52.32259,5.543601 52.32259,5.543601 52.32259,5.543601 52.32259,5.5436 52.32259,5.5436 52.32259,5.543599 52.322589,5.543599 52.322589,5.543598 52.322589,5.543598 52.322589,5.543598 52.322589,5.543597 52.322589,5.543597 52.322588,5.543596 52.322588,5.543596 52.322588,5.543596 52.322588,5.543595 52.322588,5.543595 52.322588,5.543594 52.322587,5.543594 52.322587,5.543594 52.322587,5.543593 52.322587,5.543593 52.322587,5.543592 52.322587,5.543592 52.322586,5.543592 52.322586,5.543591 52.322586,5.543591 52.322586,5.543591 52.322586,5.54359 52.322586,5.54359 52.322585,5.543589 52.322585,5.543589 52.322585,5.543589 52.322585,5.543588 52.322585,5.543588 52.322584,5.543588 52.322584,5.543587 52.322584,5.543587 52.322584,5.543587 52.322584,5.543586 52.322583,5.543586 52.322583,5.543585 52.322583,5.543585 52.322583,5.543585 52.322582,5.543584 52.322582,5.543584 52.322582,5.543584 52.322582,5.543583 52.322582,5.543583 52.322581,5.543583 52.322581,5.543582 52.322581,5.543582 52.322581,5.543582 52.322581,5.543582 52.32258,5.543581 52.32258,5.543581 52.32258,5.543581 52.32258,5.54358 52.322579,5.54358 52.322579,5.54358 52.322579,5.543579 52.322579,5.543579 52.322578,5.543579 52.322578,5.543578 52.322578,5.543578 52.322578,5.543578 52.322577,5.543578 52.322577,5.543577 52.322577,5.543577 52.322577,5.543577 52.322577,5.543577 52.322576,5.543576 52.322576,5.543576 52.322576,5.543576 52.322576,5.543575 52.322575,5.543575 52.322575,5.543575 52.322575,5.543575 52.322575,5.543568 52.322568,5.543572 52.322553,5.543563 52.322552,5.543578 52.322484,5.543603 52.322397,5.543617 52.322357,5.543997 52.321559,5.544027 52.321501,5.544104 52.321387,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544243 52.321364,5.544257 52.321367,5.544298 52.321373,5.544324 52.321377,5.544315 52.321395,5.544298 52.321401,5.544049 52.321925,5.544042 52.321941,5.544035 52.321955,5.544028 52.32197,5.543988 52.322054,5.543938 52.322159,5.543759 52.322534,5.543769 52.322545,5.543753 52.322575,5.543745 52.322573,5.54374 52.322584,5.54374 52.322584,5.54374 52.322584,5.543739 52.322585,5.543739 52.322585,5.543738 52.322585,5.543738 52.322586,5.543737 52.322586,5.543737 52.322587,5.543736 52.322587,5.543736 52.322587,5.543735 52.322588,5.543735 52.322588,5.543734 52.322589,5.543733 52.322589,5.543733 52.322589,5.543732 52.32259,5.543732 52.32259,5.543731 52.32259,5.543731 52.322591,5.54373 52.322591,5.543729 52.322592,5.543729 52.322592,5.543728 52.322592,5.543728 52.322593,5.543727 52.322593,5.543726 52.322593,5.543726 52.322594,5.543725 52.322594,5.543724 52.322594,5.543724 52.322595,5.543723 52.322595,5.543722 52.322595,5.543722 52.322596,5.543721 52.322596,5.54372 52.322596,5.54372 52.322596,5.543719 52.322597,5.543718 52.322597,5.543717 52.322597,5.543717 52.322597,5.543716 52.322598,5.543715 52.322598,5.543715 52.322598,5.543714 52.322598,5.543713 52.322599,5.543712 52.322599,5.543712 52.322599,5.543711 52.322599,5.54371 52.3226,5.543709 52.3226,5.543708 52.3226,5.543708 52.3226,5.543707 52.3226,5.543706 52.322601,5.543705 52.322601,5.543705 52.322601,5.543704 52.322601,5.543703 52.322601,5.543702 52.322602,5.543701 52.322602,5.543701 52.322602,5.5437 52.322602,5.543699 52.322602,5.543698 52.322602,5.543697 52.322602,5.543697 52.322603,5.543696 52.322603,5.543695 52.322603,5.543694 52.322603,5.543693 52.322603,5.543692 52.322603,5.543692 52.322603,5.543691 52.322603,5.54369 52.322603,5.543689 52.322603,5.543688 52.322603,5.543687 52.322603,5.543687 52.322604,5.543686 52.322604,5.543685 52.322604,5.543684 52.322604,5.543683 52.322604,5.543682 52.322604,5.543682 52.322604,5.543681 52.322604,5.54368 52.322604,5.543679 52.322604,5.543678 52.322604,5.543677 52.322604,5.543677 52.322604,5.543676 52.322604,5.543675 52.322604,5.543674 52.322604,5.543673 52.322604,5.543672 52.322603,5.543672 52.322603,5.543671 52.322603,5.54367 52.322603,5.543669 52.322603,5.543668 52.322603,5.543668 52.322603,5.543635 52.322597)),((5.543307 52.317354,5.543257 52.31726,5.543314 52.317248,5.543498 52.317211,5.543684 52.317174,5.543808 52.31715,5.543912 52.317129,5.544045 52.317102,5.54408 52.317095,5.5441 52.317132,5.54411 52.317151,5.54413 52.317189,5.544074 52.3172,5.543734 52.317268,5.54337 52.317341,5.543307 52.317354)),((5.542997 52.319927,5.543031 52.31992,5.54364 52.319799,5.543651 52.319796,5.543663 52.319819,5.543813 52.320102,5.543821 52.3201,5.54386 52.320174,5.543868 52.320188,5.54322 52.320317,5.543204 52.32032,5.543183 52.32028,5.543122 52.320165,5.543 52.319935,5.542997 52.319927)),((5.542507 52.321321,5.542525 52.32132,5.542576 52.321319,5.542645 52.321314,5.542706 52.321306,5.542738 52.3213,5.542773 52.321286,5.54281 52.321264,5.542829 52.32125,5.542848 52.321234,5.542904 52.321202,5.542931 52.321194,5.542974 52.321186,5.542977 52.321185,5.542981 52.321185,5.542985 52.321186,5.543051 52.321203,5.543058 52.321204,5.543066 52.321205,5.543073 52.321205,5.543114 52.321204,5.543134 52.321202,5.543162 52.321192,5.543167 52.32119,5.543172 52.321187,5.543175 52.321184,5.543178 52.32118,5.543179 52.321177,5.543181 52.321174,5.543184 52.321171,5.543201 52.321154,5.543207 52.321149,5.543213 52.321144,5.543234 52.321136,5.543293 52.321123,5.543314 52.32112,5.54335 52.321118,5.543356 52.321118,5.543362 52.321119,5.543368 52.321121,5.543373 52.321123,5.543377 52.321126,5.54338 52.321129,5.543438 52.321173,5.543444 52.321177,5.54345 52.321181,5.543456 52.321184,5.543463 52.321187,5.543471 52.321189,5.543558 52.321212,5.543611 52.321226,5.543667 52.321259,5.543721 52.321268,5.543781 52.32127,5.543813 52.321272,5.543821 52.321273,5.543873 52.321174,5.543917 52.321182,5.543926 52.321184,5.543916 52.321206,5.543928 52.321208,5.543929 52.321207,5.543938 52.321209,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321215,5.543969 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543992 52.321215,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543998 52.321214,5.543998 52.321214,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321212,5.544002 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544006 52.321212,5.544006 52.321212,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544009 52.321211,5.544009 52.321211,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544014 52.321209,5.544014 52.321209,5.544014 52.321209,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544016 52.321208,5.544016 52.321208,5.544016 52.321208,5.544016 52.321208,5.544016 52.321207,5.544016 52.321207,5.544016 52.321207,5.544016 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544018 52.321207,5.544018 52.321207,5.544018 52.321207,5.544018 52.321207,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.54402 52.321206,5.54402 52.321205,5.54402 52.321205,5.544021 52.321202,5.544031 52.321203,5.543999 52.321296,5.543993 52.321312,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321335,5.543983 52.321335,5.543983 52.321335,5.543983 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321333,5.543979 52.321333,5.543979 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543928 52.321328,5.543874 52.321322,5.543864 52.321342,5.543617 52.321864,5.543307 52.322518,5.543316 52.322519,5.543315 52.322521,5.543315 52.322521,5.543316 52.322521,5.543316 52.322521,5.543316 52.322522,5.543316 52.322522,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543318 52.322523,5.543318 52.322523,5.543318 52.322523,5.543318 52.322523,5.543319 52.322523,5.543319 52.322523,5.543319 52.322523,5.543319 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.543321 52.322524,5.543321 52.322525,5.543321 52.322525,5.543321 52.322525,5.543322 52.322525,5.543322 52.322525,5.543322 52.322525,5.543322 52.322525,5.543323 52.322525,5.543323 52.322526,5.543323 52.322526,5.543323 52.322526,5.543324 52.322526,5.543324 52.322526,5.543324 52.322526,5.543325 52.322526,5.543325 52.322526,5.543325 52.322527,5.543325 52.322527,5.543326 52.322527,5.543326 52.322527,5.543326 52.322527,5.543326 52.322527,5.543327 52.322527,5.543327 52.322527,5.543327 52.322527,5.543327 52.322528,5.543328 52.322528,5.543328 52.322528,5.543328 52.322528,5.543329 52.322528,5.543329 52.322528,5.543329 52.322528,5.543329 52.322528,5.54333 52.322528,5.54333 52.322528,5.54333 52.322529,5.543331 52.322529,5.543331 52.322529,5.543331 52.322529,5.543331 52.322529,5.543332 52.322529,5.543332 52.322529,5.543332 52.322529,5.543333 52.322529,5.543333 52.322529,5.543333 52.32253,5.543333 52.32253,5.543334 52.32253,5.543334 52.32253,5.543334 52.32253,5.543335 52.32253,5.543335 52.32253,5.543335 52.32253,5.543335 52.32253,5.543336 52.32253,5.543336 52.32253,5.543336 52.32253,5.543337 52.322531,5.543337 52.322531,5.543337 52.322531,5.543338 52.322531,5.543338 52.322531,5.543338 52.322531,5.543339 52.322531,5.543339 52.322531,5.543339 52.322531,5.543339 52.322531,5.54334 52.322531,5.54334 52.322531,5.54334 52.322531,5.543341 52.322531,5.543341 52.322531,5.543341 52.322532,5.543342 52.322532,5.543342 52.322532,5.543342 52.322532,5.543342 52.322532,5.543244 52.322742,5.543198 52.32275,5.543198 52.32275,5.543198 52.32275,5.543198 52.32275,5.543198 52.322749,5.543197 52.322749,5.543197 52.322748,5.543197 52.322748,5.543197 52.322747,5.543197 52.322747,5.543196 52.322747,5.543196 52.322746,5.543196 52.322746,5.543196 52.322745,5.543196 52.322745,5.543195 52.322745,5.543195 52.322744,5.543195 52.322744,5.543194 52.322743,5.543194 52.322743,5.543194 52.322742,5.543194 52.322742,5.543193 52.322742,5.543193 52.322741,5.543193 52.322741,5.543192 52.32274,5.543192 52.32274,5.543192 52.32274,5.543191 52.322739,5.543191 52.322739,5.543191 52.322739,5.54319 52.322738,5.54319 52.322738,5.54319 52.322737,5.543189 52.322737,5.543189 52.322737,5.543189 52.322736,5.543188 52.322736,5.543188 52.322736,5.543187 52.322735,5.543187 52.322735,5.543187 52.322734,5.543186 52.322734,5.543186 52.322734,5.543185 52.322733,5.543185 52.322733,5.543184 52.322733,5.543184 52.322732,5.543183 52.322732,5.543183 52.322732,5.543183 52.322731,5.543182 52.322731,5.543182 52.322731,5.543181 52.32273,5.543181 52.32273,5.54318 52.32273,5.54318 52.322729,5.543179 52.322729,5.543179 52.322729,5.543178 52.322729,5.543178 52.322728,5.543177 52.322728,5.543177 52.322728,5.543176 52.322727,5.543175 52.322727,5.543175 52.322727,5.543174 52.322726,5.543174 52.322726,5.543173 52.322726,5.543173 52.322726,5.543172 52.322725,5.543172 52.322725,5.543171 52.322725,5.54317 52.322725,5.54317 52.322724,5.543169 52.322724,5.543169 52.322724,5.543168 52.322724,5.543167 52.322723,5.543167 52.322723,5.543166 52.322723,5.543166 52.322723,5.543165 52.322722,5.543164 52.322722,5.543164 52.322722,5.543163 52.322722,5.543163 52.322722,5.543162 52.322721,5.543161 52.322721,5.543161 52.322721,5.54316 52.322721,5.543159 52.322721,5.543159 52.32272,5.543158 52.32272,5.543157 52.32272,5.543157 52.32272,5.543156 52.32272,5.543155 52.32272,5.543155 52.322719,5.543154 52.322719,5.543153 52.322719,5.543153 52.322719,5.543137 52.322715,5.543141 52.322706,5.543153 52.322679,5.543205 52.322571,5.543226 52.322525,5.543231 52.322515,5.543243 52.32249,5.543184 52.322481,5.543184 52.322481,5.543182 52.322481,5.54318 52.322481,5.543178 52.32248,5.543176 52.32248,5.543174 52.32248,5.543172 52.32248,5.54317 52.322479,5.543168 52.322479,5.543166 52.322479,5.543164 52.322479,5.543161 52.322478,5.543159 52.322478,5.543157 52.322478,5.543155 52.322478,5.543153 52.322477,5.543151 52.322477,5.543149 52.322477,5.543147 52.322477,5.543145 52.322477,5.543143 52.322476,5.543141 52.322476,5.543138 52.322476,5.543136 52.322476,5.543134 52.322476,5.543132 52.322475,5.54313 52.322475,5.543128 52.322475,5.543126 52.322475,5.543124 52.322475,5.543122 52.322474,5.54312 52.322474,5.543117 52.322474,5.543115 52.322474,5.543113 52.322474,5.543111 52.322474,5.543109 52.322473,5.543107 52.322473,5.543105 52.322473,5.543103 52.322473,5.543101 52.322473,5.543098 52.322473,5.543096 52.322473,5.543094 52.322472,5.543092 52.322472,5.54309 52.322472,5.543088 52.322472,5.543086 52.322472,5.543084 52.322472,5.543082 52.322472,5.543079 52.322472,5.543077 52.322471,5.543075 52.322471,5.543073 52.322471,5.543071 52.322471,5.543069 52.322471,5.543067 52.322471,5.543065 52.322471,5.543063 52.322471,5.54306 52.322471,5.543058 52.322471,5.543056 52.32247,5.543054 52.32247,5.543052 52.32247,5.54305 52.32247,5.543048 52.32247,5.543046 52.32247,5.543044 52.32247,5.543041 52.32247,5.543039 52.32247,5.543037 52.32247,5.543035 52.32247,5.543033 52.32247,5.543031 52.32247,5.543029 52.32247,5.543027 52.32247,5.543024 52.32247,5.543022 52.32247,5.54302 52.322469,5.543018 52.322469,5.543016 52.322469,5.543014 52.322469,5.543012 52.322469,5.54301 52.322469,5.543008 52.322469,5.543005 52.322469,5.543003 52.322469,5.543001 52.322469,5.542999 52.322469,5.542997 52.322469,5.542995 52.322469,5.542993 52.322469,5.542991 52.322469,5.542988 52.322469,5.542986 52.322469,5.542984 52.322469,5.542982 52.322469,5.54298 52.322469,5.542978 52.322469,5.542976 52.322469,5.542976 52.322469,5.542974 52.322469,5.542972 52.322469,5.54297 52.32247,5.542968 52.32247,5.542967 52.32247,5.542965 52.32247,5.542963 52.32247,5.542961 52.32247,5.542959 52.32247,5.542957 52.32247,5.542955 52.32247,5.542954 52.32247,5.542952 52.32247,5.54295 52.32247,5.542948 52.32247,5.542946 52.32247,5.542944 52.32247,5.542943 52.32247,5.542941 52.32247,5.542939 52.32247,5.542937 52.32247,5.542935 52.32247,5.542933 52.32247,5.542932 52.322471,5.54293 52.322471,5.542928 52.322471,5.542926 52.322471,5.542924 52.322471,5.542922 52.322471,5.542921 52.322471,5.542919 52.322471,5.542917 52.322471,5.542915 52.322471,5.542913 52.322471,5.542911 52.322471,5.54291 52.322472,5.542908 52.322472,5.542906 52.322472,5.542904 52.322472,5.542902 52.322472,5.5429 52.322472,5.542899 52.322472,5.542897 52.322472,5.542895 52.322472,5.542893 52.322472,5.542891 52.322473,5.54289 52.322473,5.542888 52.322473,5.542886 52.322473,5.542884 52.322473,5.542882 52.322473,5.54288 52.322473,5.542879 52.322473,5.542877 52.322473,5.542875 52.322474,5.542873 52.322474,5.542871 52.322474,5.542869 52.322474,5.542868 52.322474,5.542866 52.322474,5.542864 52.322474,5.542862 52.322474,5.54286 52.322475,5.542858 52.322475,5.542857 52.322475,5.542855 52.322475,5.542853 52.322475,5.542851 52.322475,5.542849 52.322475,5.542848 52.322476,5.542846 52.322476,5.542844 52.322476,5.542842 52.322476,5.54284 52.322476,5.542838 52.322476,5.542837 52.322477,5.542835 52.322477,5.542833 52.322477,5.542831 52.322477,5.542829 52.322477,5.542828 52.322477,5.542826 52.322478,5.542824 52.322478,5.542822 52.322478,5.54282 52.322478,5.542818 52.322478,5.542817 52.322478,5.542815 52.322479,5.542813 52.322479,5.542811 52.322479,5.542809 52.322479,5.542808 52.322479,5.542806 52.32248,5.542804 52.32248,5.542802 52.32248,5.5428 52.32248,5.542799 52.32248,5.542797 52.322481,5.542795 52.322481,5.542795 52.322481,5.542794 52.322481,5.542794 52.322481,5.542793 52.322481,5.542793 52.322481,5.542792 52.322481,5.542792 52.322481,5.542791 52.322481,5.542791 52.322481,5.54279 52.322481,5.54279 52.322481,5.542789 52.322482,5.542788 52.322482,5.542788 52.322482,5.542787 52.322482,5.542787 52.322482,5.542786 52.322482,5.542786 52.322482,5.542785 52.322482,5.542785 52.322482,5.542784 52.322482,5.542784 52.322482,5.542783 52.322482,5.542783 52.322482,5.542782 52.322483,5.542781 52.322483,5.542781 52.322483,5.54278 52.322483,5.54278 52.322483,5.542779 52.322483,5.542779 52.322483,5.542778 52.322483,5.542778 52.322483,5.542777 52.322483,5.542777 52.322483,5.542776 52.322483,5.542776 52.322484,5.542775 52.322484,5.542775 52.322484,5.542774 52.322484,5.542773 52.322484,5.542773 52.322484,5.542772 52.322484,5.542772 52.322484,5.542771 52.322484,5.542771 52.322484,5.54277 52.322485,5.54277 52.322485,5.542769 52.322485,5.542769 52.322485,5.542768 52.322485,5.542768 52.322485,5.542767 52.322485,5.542767 52.322485,5.542766 52.322485,5.542766 52.322485,5.542765 52.322486,5.542765 52.322486,5.542764 52.322486,5.542763 52.322486,5.542763 52.322486,5.542762 52.322486,5.542762 52.322486,5.542761 52.322486,5.542761 52.322486,5.54276 52.322487,5.54276 52.322487,5.542759 52.322487,5.542759 52.322487,5.542758 52.322487,5.542758 52.322487,5.542757 52.322487,5.542757 52.322487,5.542756 52.322488,5.542756 52.322488,5.542755 52.322488,5.542755 52.322488,5.542754 52.322488,5.542754 52.322488,5.542753 52.322488,5.542753 52.322488,5.542752 52.322489,5.542752 52.322489,5.542751 52.322489,5.542751 52.322489,5.54275 52.322489,5.54275 52.322489,5.542749 52.322489,5.542749 52.322489,5.542748 52.32249,5.542748 52.32249,5.542747 52.32249,5.542747 52.32249,5.542746 52.32249,5.542746 52.32249,5.542745 52.32249,5.542745 52.322491,5.542744 52.322491,5.542744 52.322491,5.542743 52.322491,5.542743 52.322491,5.542725 52.322496,5.542723 52.322494,5.542715 52.322477,5.542716 52.322476,5.542731 52.322464,5.542738 52.322461,5.542767 52.322454,5.542803 52.322441,5.54282 52.322439,5.542834 52.322441,5.54284 52.322442,5.54287 52.32244,5.542906 52.322424,5.542926 52.322424,5.542937 52.322426,5.542942 52.322427,5.542978 52.322422,5.542995 52.322414,5.543007 52.322409,5.54305 52.322396,5.543059 52.322396,5.543092 52.322397,5.543126 52.322401,5.543133 52.322404,5.543163 52.322413,5.543204 52.322415,5.543238 52.32242,5.543266 52.322424,5.543274 52.322425,5.543389 52.322185,5.543413 52.322133,5.543422 52.322116,5.54343 52.322098,5.543431 52.322096,5.543431 52.322096,5.543431 52.322096,5.54343 52.322095,5.543429 52.322095,5.543429 52.322095,5.543428 52.322095,5.543427 52.322095,5.543427 52.322094,5.543426 52.322094,5.543425 52.322094,5.543425 52.322094,5.543424 52.322094,5.543423 52.322093,5.543423 52.322093,5.543422 52.322093,5.543422 52.322093,5.543421 52.322093,5.54342 52.322092,5.54342 52.322092,5.543419 52.322092,5.543418 52.322092,5.543418 52.322092,5.543417 52.322091,5.543416 52.322091,5.543416 52.322091,5.543415 52.322091,5.543414 52.322091,5.543414 52.32209,5.543413 52.32209,5.543412 52.32209,5.543412 52.32209,5.543411 52.32209,5.54341 52.322089,5.54341 52.322089,5.543409 52.322089,5.543408 52.322089,5.543408 52.322089,5.543407 52.322088,5.543406 52.322088,5.543406 52.322088,5.543405 52.322088,5.543404 52.322088,5.543404 52.322088,5.543403 52.322087,5.543402 52.322087,5.543402 52.322087,5.543401 52.322087,5.5434 52.322087,5.5434 52.322087,5.543399 52.322086,5.543398 52.322086,5.543398 52.322086,5.543397 52.322086,5.543396 52.322086,5.543396 52.322086,5.543395 52.322085,5.543394 52.322085,5.543394 52.322085,5.543393 52.322085,5.543392 52.322085,5.543392 52.322085,5.543391 52.322084,5.54339 52.322084,5.543389 52.322084,5.543389 52.322084,5.543388 52.322084,5.543387 52.322084,5.543387 52.322083,5.543386 52.322083,5.543385 52.322083,5.543385 52.322083,5.543384 52.322083,5.543383 52.322083,5.543383 52.322083,5.543382 52.322082,5.543381 52.322082,5.543381 52.322082,5.54338 52.322082,5.543379 52.322082,5.543378 52.322082,5.543378 52.322082,5.543377 52.322081,5.543376 52.322081,5.543376 52.322081,5.543375 52.322081,5.543374 52.322081,5.543374 52.322081,5.543373 52.322081,5.543372 52.322081,5.543372 52.32208,5.543371 52.32208,5.54337 52.32208,5.543369 52.32208,5.543369 52.32208,5.543368 52.32208,5.543367 52.32208,5.543367 52.32208,5.543366 52.322079,5.543365 52.322079,5.543365 52.322079,5.543365 52.322079,5.543363 52.322079,5.543361 52.322079,5.543359 52.322078,5.543358 52.322078,5.543356 52.322078,5.543354 52.322078,5.543353 52.322077,5.543351 52.322077,5.543349 52.322077,5.543348 52.322076,5.543346 52.322076,5.543344 52.322076,5.543343 52.322076,5.543341 52.322075,5.543339 52.322075,5.543338 52.322075,5.543336 52.322075,5.543334 52.322074,5.543333 52.322074,5.543331 52.322074,5.543329 52.322074,5.543328 52.322073,5.543326 52.322073,5.543324 52.322073,5.543322 52.322073,5.543321 52.322072,5.543319 52.322072,5.543317 52.322072,5.543316 52.322072,5.543314 52.322071,5.543312 52.322071,5.543311 52.322071,5.543309 52.322071,5.543307 52.32207,5.543306 52.32207,5.543304 52.32207,5.543302 52.32207,5.5433 52.322069,5.543299 52.322069,5.543297 52.322069,5.543295 52.322069,5.543294 52.322069,5.543292 52.322068,5.54329 52.322068,5.543289 52.322068,5.543287 52.322068,5.543285 52.322067,5.543283 52.322067,5.543282 52.322067,5.54328 52.322067,5.543278 52.322067,5.543277 52.322066,5.543275 52.322066,5.543273 52.322066,5.543271 52.322066,5.54327 52.322066,5.543268 52.322065,5.543266 52.322065,5.543265 52.322065,5.543263 52.322065,5.543261 52.322065,5.54326 52.322064,5.543258 52.322064,5.543256 52.322064,5.543254 52.322064,5.543253 52.322064,5.543251 52.322063,5.543249 52.322063,5.543248 52.322063,5.543246 52.322063,5.543244 52.322063,5.543242 52.322062,5.543241 52.322062,5.543239 52.322062,5.543237 52.322062,5.543236 52.322062,5.543234 52.322062,5.543232 52.322061,5.54323 52.322061,5.543229 52.322061,5.543227 52.322061,5.543225 52.322061,5.543224 52.322061,5.543222 52.32206,5.54322 52.32206,5.543218 52.32206,5.543217 52.32206,5.543215 52.32206,5.543213 52.32206,5.543212 52.322059,5.54321 52.322059,5.543208 52.322059,5.543206 52.322059,5.543205 52.322059,5.543203 52.322059,5.543201 52.322059,5.5432 52.322058,5.543198 52.322058,5.543196 52.322058,5.543196 52.322058,5.543194 52.322058,5.543193 52.322058,5.543191 52.322058,5.543189 52.322058,5.543188 52.322057,5.543186 52.322057,5.543184 52.322057,5.543182 52.322057,5.543181 52.322057,5.543179 52.322057,5.543177 52.322057,5.543176 52.322057,5.543174 52.322057,5.543172 52.322056,5.543171 52.322056,5.543169 52.322056,5.543167 52.322056,5.543165 52.322056,5.543164 52.322056,5.543162 52.322056,5.54316 52.322056,5.543159 52.322056,5.543157 52.322056,5.543155 52.322056,5.543153 52.322056,5.543152 52.322056,5.54315 52.322056,5.543148 52.322056,5.543147 52.322055,5.543145 52.322055,5.543143 52.322055,5.543142 52.322055,5.54314 52.322055,5.543138 52.322055,5.543136 52.322055,5.543135 52.322055,5.543133 52.322055,5.543131 52.322055,5.54313 52.322055,5.543128 52.322055,5.543126 52.322055,5.543124 52.322055,5.543123 52.322055,5.543121 52.322055,5.543119 52.322055,5.543118 52.322055,5.543116 52.322055,5.543114 52.322055,5.543112 52.322055,5.543111 52.322055,5.543109 52.322055,5.543107 52.322056,5.543106 52.322056,5.543104 52.322056,5.543102 52.322056,5.5431 52.322056,5.543099 52.322056,5.543097 52.322056,5.543095 52.322056,5.543094 52.322056,5.543092 52.322056,5.54309 52.322056,5.543089 52.322056,5.543087 52.322056,5.543085 52.322056,5.543083 52.322056,5.543082 52.322057,5.54308 52.322057,5.543078 52.322057,5.543077 52.322057,5.543075 52.322057,5.543073 52.322057,5.543071 52.322057,5.54307 52.322057,5.543068 52.322057,5.543066 52.322058,5.543065 52.322058,5.543063 52.322058,5.543061 52.322058,5.54306 52.322058,5.543058 52.322058,5.543056 52.322058,5.543055 52.322059,5.543053 52.322059,5.543051 52.322059,5.543049 52.322059,5.543048 52.322059,5.543046 52.322059,5.543044 52.32206,5.543043 52.32206,5.543041 52.32206,5.543039 52.32206,5.543038 52.32206,5.543036 52.32206,5.543034 52.322061,5.543033 52.322061,5.543031 52.322061,5.543029 52.322061,5.543028 52.322061,5.543028 52.322061,5.542946 52.322072,5.542831 52.322091,5.542747 52.322109,5.542721 52.322116,5.542716 52.322114,5.542705 52.322111,5.542677 52.322108,5.54265 52.322105,5.542647 52.322087,5.542676 52.322081,5.542691 52.322074,5.542705 52.322068,5.542736 52.322061,5.542771 52.322057,5.54281 52.322052,5.542873 52.32204,5.542907 52.322037,5.542943 52.322024,5.542961 52.32202,5.542975 52.322018,5.543016 52.322013,5.543029 52.32201,5.543079 52.321997,5.54309 52.321996,5.543093 52.321996,5.543126 52.321996,5.54316 52.322001,5.543168 52.322003,5.543197 52.322012,5.543227 52.322017,5.543239 52.322018,5.543264 52.322019,5.543313 52.322026,5.543333 52.322029,5.543383 52.322041,5.543416 52.322043,5.543455 52.322047,5.543564 52.321815,5.543609 52.321721,5.543609 52.321719,5.543608 52.321719,5.543599 52.321716,5.543587 52.321713,5.54357 52.321708,5.543557 52.321705,5.543541 52.321701,5.54353 52.321698,5.543508 52.321693,5.543491 52.32169,5.543477 52.321688,5.543456 52.321685,5.543429 52.32168,5.54341 52.321677,5.543399 52.321675,5.543375 52.321672,5.543348 52.321668,5.543335 52.321666,5.543322 52.321664,5.5433 52.321661,5.543285 52.321659,5.54327 52.321658,5.543258 52.321656,5.54324 52.321655,5.543218 52.321653,5.543199 52.321652,5.543184 52.321651,5.543172 52.32165,5.543153 52.321649,5.543138 52.321649,5.543123 52.321649,5.543113 52.321649,5.543098 52.321649,5.543081 52.32165,5.543065 52.321651,5.543052 52.321652,5.543041 52.321653,5.543031 52.321654,5.543018 52.321655,5.543007 52.321656,5.542998 52.321657,5.54299 52.321658,5.542979 52.321659,5.542968 52.321661,5.542955 52.321662,5.542949 52.321663,5.542939 52.321665,5.54293 52.321666,5.542919 52.321667,5.542913 52.321668,5.542903 52.32167,5.542891 52.321672,5.54288 52.321674,5.542868 52.321676,5.54286 52.321677,5.542853 52.321679,5.542844 52.321681,5.542825 52.321686,5.542825 52.321686,5.542825 52.321686,5.542824 52.321687,5.542823 52.321687,5.542822 52.321687,5.542821 52.321687,5.542821 52.321688,5.54282 52.321688,5.542819 52.321688,5.542818 52.321688,5.542817 52.321689,5.542817 52.321689,5.542816 52.321689,5.542815 52.32169,5.542814 52.32169,5.542813 52.32169,5.542813 52.32169,5.542812 52.321691,5.542811 52.321691,5.54281 52.321691,5.542809 52.321691,5.542809 52.321692,5.542808 52.321692,5.542807 52.321692,5.542806 52.321692,5.542805 52.321693,5.542805 52.321693,5.542804 52.321693,5.542803 52.321693,5.542802 52.321694,5.542801 52.321694,5.5428 52.321694,5.5428 52.321694,5.542799 52.321695,5.542798 52.321695,5.542797 52.321695,5.542796 52.321695,5.542796 52.321696,5.542795 52.321696,5.542794 52.321696,5.542793 52.321696,5.542792 52.321697,5.542792 52.321697,5.542791 52.321697,5.54279 52.321697,5.542789 52.321698,5.542788 52.321698,5.542787 52.321698,5.542787 52.321698,5.542786 52.321699,5.542785 52.321699,5.542784 52.321699,5.542783 52.321699,5.542783 52.3217,5.542782 52.3217,5.542781 52.3217,5.54278 52.3217,5.542779 52.321701,5.542778 52.321701,5.542778 52.321701,5.542777 52.321701,5.542776 52.321702,5.542775 52.321702,5.542774 52.321702,5.542774 52.321702,5.542773 52.321703,5.542772 52.321703,5.542771 52.321703,5.54277 52.321703,5.542769 52.321704,5.542769 52.321704,5.542768 52.321704,5.542767 52.321704,5.542766 52.321704,5.542765 52.321705,5.542765 52.321705,5.542764 52.321705,5.542763 52.321705,5.542762 52.321706,5.542761 52.321706,5.54276 52.321706,5.54276 52.321706,5.542759 52.321707,5.542758 52.321707,5.542757 52.321707,5.542756 52.321707,5.542755 52.321707,5.542755 52.321708,5.542754 52.321708,5.542753 52.321708,5.542752 52.321708,5.542751 52.321709,5.54275 52.321709,5.54275 52.321709,5.542749 52.321709,5.542748 52.32171,5.542747 52.32171,5.542746 52.32171,5.542745 52.32171,5.542745 52.32171,5.542745 52.32171,5.542744 52.321711,5.542743 52.321711,5.542742 52.321711,5.542741 52.321711,5.54274 52.321712,5.542739 52.321712,5.542738 52.321712,5.542737 52.321712,5.542736 52.321713,5.542735 52.321713,5.542734 52.321713,5.542733 52.321713,5.542732 52.321714,5.542731 52.321714,5.54273 52.321714,5.542729 52.321714,5.542728 52.321715,5.542727 52.321715,5.542726 52.321715,5.542725 52.321715,5.542725 52.321716,5.542724 52.321716,5.542723 52.321716,5.542722 52.321716,5.542721 52.321716,5.54272 52.321717,5.542719 52.321717,5.542718 52.321717,5.542717 52.321717,5.542716 52.321718,5.542715 52.321718,5.542714 52.321718,5.542713 52.321718,5.542712 52.321718,5.542711 52.321719,5.54271 52.321719,5.542709 52.321719,5.542708 52.321719,5.542707 52.321719,5.542706 52.32172,5.542705 52.32172,5.542704 52.32172,5.542703 52.32172,5.542702 52.32172,5.542701 52.321721,5.5427 52.321721,5.542699 52.321721,5.542698 52.321721,5.542697 52.321721,5.542696 52.321722,5.542695 52.321722,5.542694 52.321722,5.542693 52.321722,5.542692 52.321722,5.542691 52.321722,5.54269 52.321723,5.542689 52.321723,5.542688 52.321723,5.542687 52.321723,5.542686 52.321723,5.542685 52.321724,5.542684 52.321724,5.542683 52.321724,5.542682 52.321724,5.542681 52.321724,5.54268 52.321724,5.542679 52.321725,5.542678 52.321725,5.542677 52.321725,5.542676 52.321725,5.542675 52.321725,5.542674 52.321725,5.542673 52.321725,5.542672 52.321726,5.542671 52.321726,5.54267 52.321726,5.542669 52.321726,5.542668 52.321726,5.542667 52.321726,5.542666 52.321727,5.542665 52.321727,5.542664 52.321727,5.542663 52.321727,5.542662 52.321727,5.542661 52.321727,5.54266 52.321727,5.542659 52.321728,5.542658 52.321728,5.542657 52.321728,5.542656 52.321728,5.542655 52.321728,5.542654 52.321728,5.542653 52.321728,5.542652 52.321728,5.542651 52.321729,5.54265 52.321729,5.542649 52.321729,5.542648 52.321729,5.542647 52.321729,5.542647 52.321729,5.542636 52.32173,5.542598 52.321717,5.542594 52.321692,5.542609 52.32169,5.542641 52.321686,5.542657 52.321679,5.542684 52.321671,5.542703 52.321668,5.542705 52.321668,5.542743 52.321665,5.542754 52.321662,5.542779 52.321654,5.542797 52.32165,5.542807 52.321648,5.542843 52.321644,5.542901 52.321629,5.542909 52.321628,5.542923 52.321626,5.542952 52.321624,5.542983 52.32161,5.543011 52.321606,5.543049 52.321599,5.543067 52.321594,5.543131 52.321574,5.543137 52.321575,5.543169 52.321582,5.543201 52.321592,5.543207 52.321592,5.54324 52.321595,5.543279 52.321604,5.543283 52.321605,5.543309 52.32161,5.543347 52.321624,5.543352 52.321626,5.543382 52.321623,5.54342 52.321625,5.543425 52.321625,5.543444 52.321627,5.543455 52.321633,5.54349 52.321644,5.543494 52.321644,5.543532 52.321645,5.543559 52.321655,5.543573 52.321659,5.543595 52.321663,5.543624 52.321668,5.543632 52.32167,5.543743 52.321437,5.54376 52.321403,5.543793 52.321334,5.5438 52.321317,5.543784 52.321315,5.543779 52.321314,5.543769 52.321312,5.543745 52.321308,5.543729 52.321306,5.543718 52.321304,5.543711 52.321303,5.543696 52.3213,5.54368 52.321296,5.543669 52.321294,5.543653 52.32129,5.543638 52.321286,5.543629 52.321284,5.543615 52.321281,5.543605 52.321278,5.543597 52.321276,5.543583 52.321272,5.543567 52.321267,5.543557 52.321264,5.543543 52.321259,5.543536 52.321257,5.543515 52.321249,5.543502 52.321244,5.543491 52.321239,5.543481 52.321235,5.543474 52.321232,5.543454 52.321225,5.543437 52.32122,5.543425 52.321216,5.543405 52.321211,5.543395 52.321209,5.54338 52.321206,5.543368 52.321204,5.543354 52.321201,5.543335 52.321198,5.543321 52.321196,5.543311 52.321194,5.543301 52.321194,5.543296 52.321194,5.543288 52.321195,5.543283 52.321196,5.543277 52.321198,5.543273 52.321199,5.543262 52.321203,5.543254 52.321206,5.543246 52.321208,5.543232 52.321213,5.543221 52.321217,5.543209 52.321221,5.543197 52.321225,5.543186 52.321229,5.543173 52.321232,5.54316 52.321236,5.543152 52.321238,5.543137 52.321241,5.543121 52.321244,5.543115 52.321245,5.543106 52.321247,5.543095 52.321248,5.543089 52.321249,5.543072 52.321251,5.543064 52.321251,5.543055 52.321252,5.543045 52.321252,5.543038 52.321252,5.543029 52.321252,5.543019 52.321253,5.543013 52.321253,5.543004 52.321253,5.542996 52.321253,5.542988 52.321253,5.542976 52.321253,5.542967 52.321254,5.542958 52.321255,5.542946 52.321257,5.542936 52.321259,5.54293 52.321261,5.542923 52.321264,5.542911 52.321269,5.542905 52.321271,5.542893 52.321276,5.542882 52.321281,5.542872 52.321285,5.542861 52.321291,5.542841 52.321301,5.542812 52.321316,5.542812 52.321316,5.542812 52.321316,5.542812 52.321316,5.542811 52.321316,5.542811 52.321316,5.542811 52.321316,5.54281 52.321317,5.54281 52.321317,5.54281 52.321317,5.542809 52.321317,5.542809 52.321317,5.542809 52.321317,5.542809 52.321317,5.542808 52.321318,5.542808 52.321318,5.542808 52.321318,5.542807 52.321318,5.542807 52.321318,5.542807 52.321318,5.542807 52.321319,5.542806 52.321319,5.542806 52.321319,5.542806 52.321319,5.542805 52.321319,5.542805 52.321319,5.542805 52.321319,5.542804 52.32132,5.542804 52.32132,5.542804 52.32132,5.542803 52.32132,5.542803 52.32132,5.542803 52.32132,5.542802 52.32132,5.542802 52.321321,5.542802 52.321321,5.542802 52.321321,5.542801 52.321321,5.542801 52.321321,5.542801 52.321321,5.5428 52.321321,5.5428 52.321321,5.5428 52.321322,5.542799 52.321322,5.542799 52.321322,5.542799 52.321322,5.542798 52.321322,5.542798 52.321322,5.542798 52.321322,5.542797 52.321322,5.542797 52.321323,5.542797 52.321323,5.542796 52.321323,5.542796 52.321323,5.542796 52.321323,5.542795 52.321323,5.542795 52.321323,5.542795 52.321323,5.542794 52.321324,5.542794 52.321324,5.542794 52.321324,5.542793 52.321324,5.542793 52.321324,5.542793 52.321324,5.542792 52.321324,5.542792 52.321324,5.542792 52.321325,5.542791 52.321325,5.542791 52.321325,5.542791 52.321325,5.54279 52.321325,5.54279 52.321325,5.54279 52.321325,5.542789 52.321325,5.542789 52.321325,5.542789 52.321326,5.542788 52.321326,5.542788 52.321326,5.542788 52.321326,5.542787 52.321326,5.542787 52.321326,5.542786 52.321326,5.542786 52.321326,5.542786 52.321326,5.542785 52.321326,5.542785 52.321327,5.542785 52.321327,5.542784 52.321327,5.542784 52.321327,5.542784 52.321327,5.542783 52.321327,5.542783 52.321327,5.542783 52.321327,5.542782 52.321327,5.542782 52.321327,5.542782 52.321327,5.542781 52.321328,5.542781 52.321328,5.54278 52.321328,5.54278 52.321328,5.54278 52.321328,5.54278 52.321328,5.542753 52.321335,5.542704 52.321344,5.542656 52.321352,5.542656 52.321352,5.542655 52.321353,5.542654 52.321353,5.542654 52.321353,5.542653 52.321353,5.542652 52.321353,5.542651 52.321353,5.54265 52.321353,5.54265 52.321353,5.542649 52.321354,5.542648 52.321354,5.542647 52.321354,5.542646 52.321354,5.542646 52.321354,5.542645 52.321354,5.542644 52.321354,5.542643 52.321354,5.542642 52.321354,5.542641 52.321355,5.542641 52.321355,5.54264 52.321355,5.542639 52.321355,5.542638 52.321355,5.542637 52.321355,5.542637 52.321355,5.542636 52.321355,5.542635 52.321355,5.542634 52.321355,5.542633 52.321355,5.542632 52.321355,5.542632 52.321355,5.542631 52.321355,5.54263 52.321356,5.542629 52.321356,5.542628 52.321356,5.542627 52.321356,5.542627 52.321356,5.542626 52.321356,5.542625 52.321356,5.542624 52.321356,5.542623 52.321356,5.542623 52.321356,5.542622 52.321356,5.542621 52.321356,5.54262 52.321356,5.542619 52.321356,5.542618 52.321356,5.542618 52.321356,5.542617 52.321356,5.542616 52.321356,5.542615 52.321356,5.542614 52.321356,5.542613 52.321356,5.542613 52.321356,5.542612 52.321356,5.542611 52.321356,5.54261 52.321356,5.542609 52.321356,5.542608 52.321356,5.542608 52.321356,5.542607 52.321356,5.542606 52.321356,5.542605 52.321356,5.542604 52.321356,5.542603 52.321356,5.542603 52.321356,5.542602 52.321356,5.542601 52.321356,5.5426 52.321356,5.542599 52.321356,5.542598 52.321356,5.542598 52.321356,5.542597 52.321356,5.542596 52.321356,5.542595 52.321356,5.542594 52.321355,5.542594 52.321355,5.542593 52.321355,5.542592 52.321355,5.542591 52.321355,5.54259 52.321355,5.542589 52.321355,5.542589 52.321355,5.542588 52.321355,5.542587 52.321355,5.542586 52.321355,5.542585 52.321355,5.542584 52.321355,5.542584 52.321355,5.542583 52.321354,5.542582 52.321354,5.542581 52.321354,5.54258 52.321354,5.54258 52.321354,5.542579 52.321354,5.542578 52.321354,5.542577 52.321354,5.542576 52.321354,5.542576 52.321354,5.542575 52.321353,5.542575 52.321353,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542533 52.321347,5.542533 52.321347,5.542533 52.321347,5.542533 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.542529 52.321346,5.542529 52.321346,5.542529 52.321346,5.542529 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542526 52.321346,5.542526 52.321346,5.542526 52.321346,5.542526 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542523 52.321345,5.542523 52.321345,5.542523 52.321345,5.542523 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542521 52.321345,5.542521 52.321345,5.542521 52.321345,5.542521 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.542519 52.321345,5.542519 52.321345,5.542519 52.321345,5.542519 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542516 52.321345,5.542516 52.321345,5.542516 52.321345,5.542516 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542514 52.321345,5.542514 52.321345,5.542514 52.321345,5.542514 52.321345,5.54251 52.321345,5.542509 52.32134,5.542511 52.32134,5.542509 52.321322,5.542508 52.321322,5.542507 52.321321)),((5.54337 52.317341,5.543734 52.317268,5.544074 52.3172,5.544123 52.317295,5.544141 52.317328,5.544172 52.317322,5.544226 52.317423,5.544257 52.317479,5.544288 52.317538,5.544322 52.317603,5.544357 52.317671,5.544388 52.317728,5.544425 52.317798,5.544455 52.317854,5.544492 52.317923,5.544526 52.317987,5.544563 52.318058,5.544567 52.318066,5.543834 52.318213,5.543829 52.318203,5.543752 52.318058,5.543782 52.318052,5.543754 52.318,5.543687 52.317873,5.543653 52.31788,5.54363 52.317838,5.54358 52.317743,5.543534 52.317654,5.543463 52.317521,5.543466 52.31752,5.543436 52.317464,5.54337 52.317341)),((5.542997 52.319927,5.542936 52.319939,5.542901 52.31993,5.542331 52.319823,5.542812 52.319728,5.542836 52.319723,5.542658 52.319388,5.543609 52.319198,5.543902 52.319737,5.543906 52.319746,5.54393 52.31979,5.543943 52.319826,5.543984 52.319999,5.544012 52.320143,5.544014 52.320159,5.544035 52.320299,5.544038 52.320315,5.544044 52.320356,5.543311 52.320503,5.543311 52.320502,5.543301 52.320502,5.543255 52.320415,5.543893 52.320287,5.543918 52.320283,5.543868 52.320188,5.54386 52.320174,5.543821 52.3201,5.543813 52.320102,5.543663 52.319819,5.543651 52.319796,5.54364 52.319799,5.543031 52.31992,5.542997 52.319927)),((5.543315 52.322521,5.543316 52.322519,5.543307 52.322518,5.543617 52.321864,5.543864 52.321342,5.543874 52.321322,5.543928 52.321328,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543979 52.321333,5.543979 52.321333,5.543979 52.321333,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543983 52.321335,5.543983 52.321335,5.543983 52.321335,5.543983 52.321335,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543983 52.321342,5.543981 52.321348,5.543938 52.321478,5.543932 52.321497,5.543914 52.321541,5.543859 52.321655,5.543776 52.321831,5.543692 52.322007,5.543608 52.322183,5.543557 52.322289,5.543525 52.322346,5.543524 52.322349,5.543517 52.322359,5.543405 52.322521,5.543396 52.322519,5.54339 52.322527,5.54339 52.322527,5.54339 52.322527,5.54339 52.322527,5.543389 52.322527,5.543389 52.322528,5.543388 52.322528,5.543388 52.322528,5.543387 52.322528,5.543387 52.322528,5.543387 52.322528,5.543386 52.322529,5.543386 52.322529,5.543385 52.322529,5.543385 52.322529,5.543384 52.322529,5.543384 52.322529,5.543383 52.322529,5.543383 52.32253,5.543383 52.32253,5.543382 52.32253,5.543382 52.32253,5.543381 52.32253,5.543381 52.32253,5.54338 52.32253,5.54338 52.322531,5.543379 52.322531,5.543379 52.322531,5.543378 52.322531,5.543378 52.322531,5.543377 52.322531,5.543377 52.322531,5.543376 52.322531,5.543376 52.322531,5.543375 52.322531,5.543375 52.322532,5.543374 52.322532,5.543374 52.322532,5.543373 52.322532,5.543373 52.322532,5.543372 52.322532,5.543372 52.322532,5.543371 52.322532,5.543371 52.322532,5.54337 52.322532,5.54337 52.322532,5.543369 52.322532,5.543369 52.322532,5.543368 52.322533,5.543368 52.322533,5.543367 52.322533,5.543367 52.322533,5.543366 52.322533,5.543366 52.322533,5.543365 52.322533,5.543365 52.322533,5.543364 52.322533,5.543364 52.322533,5.543363 52.322533,5.543363 52.322533,5.543362 52.322533,5.543362 52.322533,5.543361 52.322533,5.543361 52.322533,5.54336 52.322533,5.54336 52.322533,5.543359 52.322533,5.543359 52.322533,5.543358 52.322533,5.543358 52.322533,5.543357 52.322533,5.543357 52.322533,5.543356 52.322533,5.543356 52.322533,5.543355 52.322533,5.543355 52.322533,5.543354 52.322533,5.543354 52.322533,5.543353 52.322533,5.543353 52.322533,5.543352 52.322533,5.543352 52.322533,5.543351 52.322533,5.543351 52.322533,5.54335 52.322533,5.54335 52.322533,5.543349 52.322533,5.543349 52.322533,5.543348 52.322533,5.543348 52.322533,5.543347 52.322532,5.543347 52.322532,5.543346 52.322532,5.543346 52.322532,5.543345 52.322532,5.543345 52.322532,5.543344 52.322532,5.543344 52.322532,5.543343 52.322532,5.543343 52.322532,5.543342 52.322532,5.543342 52.322532,5.543342 52.322532,5.543342 52.322532,5.543341 52.322532,5.543341 52.322531,5.543341 52.322531,5.54334 52.322531,5.54334 52.322531,5.54334 52.322531,5.543339 52.322531,5.543339 52.322531,5.543339 52.322531,5.543339 52.322531,5.543338 52.322531,5.543338 52.322531,5.543338 52.322531,5.543337 52.322531,5.543337 52.322531,5.543337 52.322531,5.543336 52.32253,5.543336 52.32253,5.543336 52.32253,5.543335 52.32253,5.543335 52.32253,5.543335 52.32253,5.543335 52.32253,5.543334 52.32253,5.543334 52.32253,5.543334 52.32253,5.543333 52.32253,5.543333 52.32253,5.543333 52.322529,5.543333 52.322529,5.543332 52.322529,5.543332 52.322529,5.543332 52.322529,5.543331 52.322529,5.543331 52.322529,5.543331 52.322529,5.543331 52.322529,5.54333 52.322529,5.54333 52.322528,5.54333 52.322528,5.543329 52.322528,5.543329 52.322528,5.543329 52.322528,5.543329 52.322528,5.543328 52.322528,5.543328 52.322528,5.543328 52.322528,5.543327 52.322528,5.543327 52.322527,5.543327 52.322527,5.543327 52.322527,5.543326 52.322527,5.543326 52.322527,5.543326 52.322527,5.543326 52.322527,5.543325 52.322527,5.543325 52.322527,5.543325 52.322526,5.543325 52.322526,5.543324 52.322526,5.543324 52.322526,5.543324 52.322526,5.543323 52.322526,5.543323 52.322526,5.543323 52.322526,5.543323 52.322525,5.543322 52.322525,5.543322 52.322525,5.543322 52.322525,5.543322 52.322525,5.543321 52.322525,5.543321 52.322525,5.543321 52.322525,5.543321 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.543319 52.322524,5.543319 52.322523,5.543319 52.322523,5.543319 52.322523,5.543318 52.322523,5.543318 52.322523,5.543318 52.322523,5.543318 52.322523,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543316 52.322522,5.543316 52.322522,5.543316 52.322521,5.543316 52.322521,5.543315 52.322521)),((5.542553 52.316577,5.54256 52.316577,5.542554 52.316565,5.542554 52.316565,5.542553 52.316565,5.542553 52.316564,5.542553 52.316563,5.542553 52.316563,5.542552 52.316562,5.542552 52.316562,5.542552 52.316561,5.542552 52.31656,5.542552 52.31656,5.542552 52.316559,5.542551 52.316558,5.542551 52.316558,5.542551 52.316557,5.542551 52.316556,5.542551 52.316556,5.542551 52.316555,5.542551 52.316554,5.542551 52.316554,5.542551 52.316553,5.542551 52.316553,5.542551 52.316552,5.542551 52.316551,5.542551 52.316551,5.542551 52.31655,5.542551 52.316549,5.542552 52.316549,5.542552 52.316548,5.542552 52.316547,5.542552 52.316547,5.542552 52.316546,5.542552 52.316545,5.542553 52.316545,5.542553 52.316544,5.542553 52.316544,5.542553 52.316543,5.542554 52.316542,5.542554 52.316542,5.542554 52.316541,5.542555 52.31654,5.542555 52.31654,5.542555 52.316539,5.542556 52.316539,5.542556 52.316538,5.542556 52.316537,5.542557 52.316537,5.542557 52.316536,5.542558 52.316536,5.542558 52.316535,5.542559 52.316535,5.542559 52.316534,5.54256 52.316533,5.54256 52.316533,5.542561 52.316532,5.542561 52.316532,5.542562 52.316531,5.542562 52.316531,5.542563 52.31653,5.542564 52.31653,5.542564 52.316529,5.542565 52.316528,5.542565 52.316528,5.542566 52.316527,5.542567 52.316527,5.542567 52.316526,5.542568 52.316526,5.542569 52.316525,5.54257 52.316525,5.54257 52.316525,5.542571 52.316524,5.542572 52.316524,5.542572 52.316523,5.542573 52.316523,5.542574 52.316522,5.542575 52.316522,5.542576 52.316521,5.542576 52.316521,5.542577 52.316521,5.542578 52.31652,5.542579 52.31652,5.54258 52.316519,5.542581 52.316519,5.542582 52.316519,5.542582 52.316518,5.542583 52.316518,5.542584 52.316518,5.542585 52.316517,5.542586 52.316517,5.542587 52.316517,5.542588 52.316516,5.542589 52.316516,5.54259 52.316516,5.542591 52.316515,5.542592 52.316515,5.542593 52.316515,5.542594 52.316515,5.542595 52.316514,5.542596 52.316514,5.542597 52.316514,5.542598 52.316514,5.542598 52.316514,5.542625 52.316508,5.542631 52.316507,5.542634 52.316505,5.542666 52.3165,5.542674 52.3165,5.542691 52.3165,5.542708 52.316503,5.542726 52.316509,5.54273 52.316511,5.542737 52.316515,5.54274 52.316517,5.542749 52.316524,5.542758 52.316534,5.542774 52.316564,5.542774 52.316569,5.542763 52.316584,5.542758 52.316591,5.542756 52.316591,5.543061 52.317174,5.543072 52.317175,5.543099 52.317183,5.543104 52.317187,5.543108 52.317195,5.543216 52.3174,5.543219 52.317411,5.543205 52.317427,5.543198 52.317435,5.543606 52.318211,5.543613 52.31821,5.543624 52.31823,5.543628 52.318232,5.543648 52.318238,5.543653 52.31824,5.543656 52.318243,5.54366 52.318251,5.543662 52.31826,5.543661 52.318265,5.543658 52.318275,5.54365 52.318288,5.543639 52.318298,5.543625 52.318307,5.543609 52.318313,5.543603 52.318314,5.543601 52.318315,5.543594 52.318316,5.543587 52.318317,5.543587 52.318317,5.543586 52.318318,5.543585 52.318318,5.543583 52.318318,5.543582 52.318318,5.54358 52.318319,5.543579 52.318319,5.543578 52.318319,5.543576 52.318319,5.543575 52.318319,5.543574 52.318319,5.543572 52.31832,5.543571 52.31832,5.543569 52.31832,5.543568 52.31832,5.543567 52.31832,5.543565 52.31832,5.543564 52.31832,5.543562 52.31832,5.543561 52.31832,5.543559 52.31832,5.543558 52.31832,5.543557 52.31832,5.543555 52.31832,5.543554 52.31832,5.543552 52.31832,5.543551 52.31832,5.54355 52.31832,5.543548 52.31832,5.543547 52.31832,5.543545 52.318319,5.543544 52.318319,5.543543 52.318319,5.543541 52.318319,5.54354 52.318319,5.543539 52.318319,5.543537 52.318318,5.543536 52.318318,5.543534 52.318318,5.543533 52.318318,5.543532 52.318317,5.54353 52.318317,5.543529 52.318317,5.543528 52.318317,5.543526 52.318316,5.543525 52.318316,5.543524 52.318316,5.543523 52.318315,5.543521 52.318315,5.54352 52.318315,5.543519 52.318314,5.543517 52.318314,5.543516 52.318313,5.543515 52.318313,5.543514 52.318313,5.543513 52.318312,5.543511 52.318312,5.54351 52.318311,5.543509 52.318311,5.543508 52.31831,5.543507 52.31831,5.543505 52.318309,5.543504 52.318309,5.543503 52.318308,5.543502 52.318308,5.543501 52.318307,5.5435 52.318307,5.543499 52.318306,5.543498 52.318305,5.543497 52.318305,5.543496 52.318304,5.543495 52.318304,5.543494 52.318303,5.543493 52.318302,5.543492 52.318302,5.543491 52.318301,5.54349 52.318301,5.543489 52.3183,5.543488 52.318299,5.543487 52.318299,5.543486 52.318298,5.543486 52.318297,5.543485 52.318296,5.543484 52.318296,5.543483 52.318295,5.543482 52.318294,5.543482 52.318294,5.543481 52.318293,5.54348 52.318292,5.54348 52.318291,5.543479 52.318291,5.543478 52.31829,5.543478 52.318289,5.543477 52.318288,5.543476 52.318288,5.543476 52.318287,5.543475 52.318286,5.543475 52.318285,5.543474 52.318284,5.543474 52.318284,5.543474 52.318284,5.543467 52.318285,5.54346 52.318286,5.543419 52.318221,5.543329 52.318078,5.543281 52.317998,5.543231 52.317904,5.543138 52.317729,5.543045 52.317553,5.542952 52.317378,5.542859 52.317203,5.542767 52.317027,5.542674 52.316852,5.542619 52.316747,5.54259 52.316685,5.542565 52.316621,5.542553 52.316577)),((5.543257 52.31726,5.543156 52.317067,5.543055 52.316875,5.543041 52.316849,5.542953 52.316683,5.542852 52.31649,5.542904 52.316479,5.543277 52.316405,5.54362 52.316337,5.543704 52.31632,5.543776 52.316456,5.543843 52.316583,5.54391 52.31671,5.543977 52.316836,5.543984 52.316848,5.544045 52.316963,5.544112 52.317089,5.54408 52.317095,5.544045 52.317102,5.543994 52.317008,5.543977 52.316976,5.543961 52.316979,5.543942 52.316943,5.543908 52.316878,5.543894 52.316853,5.543916 52.316848,5.543922 52.316847,5.543905 52.316816,5.543869 52.316746,5.543855 52.316721,5.543834 52.316681,5.543788 52.316594,5.54372 52.316468,5.543692 52.316473,5.543679 52.316447,5.543639 52.316372,5.543629 52.316354,5.543286 52.316422,5.542913 52.316496,5.542952 52.31657,5.542988 52.316636,5.543007 52.316672,5.543044 52.31674,5.543077 52.316802,5.54311 52.316864,5.543115 52.316863,5.543137 52.316904,5.543185 52.316994,5.543218 52.317055,5.543212 52.317056,5.543262 52.317151,5.543296 52.317215,5.543314 52.317248,5.543257 52.31726)),((5.54413 52.317189,5.544198 52.317317,5.544228 52.317311,5.544296 52.317438,5.544362 52.317564,5.54443 52.317691,5.544497 52.317817,5.544564 52.317943,5.544636 52.31808,5.544581 52.318091,5.544209 52.318165,5.543847 52.318237,5.543778 52.318251,5.543684 52.318072,5.54359 52.317892,5.543496 52.317713,5.543401 52.317533,5.543307 52.317354,5.54337 52.317341,5.543436 52.317464,5.543466 52.31752,5.543463 52.317521,5.543534 52.317654,5.54358 52.317743,5.54363 52.317838,5.543653 52.31788,5.543687 52.317873,5.543754 52.318,5.543782 52.318052,5.543752 52.318058,5.543829 52.318203,5.543834 52.318213,5.544567 52.318066,5.544563 52.318058,5.544526 52.317987,5.544492 52.317923,5.544455 52.317854,5.544425 52.317798,5.544388 52.317728,5.544357 52.317671,5.544322 52.317603,5.544288 52.317538,5.544257 52.317479,5.544226 52.317423,5.544172 52.317322,5.544141 52.317328,5.544123 52.317295,5.544074 52.3172,5.54413 52.317189)),((5.543314 52.317248,5.543296 52.317215,5.543262 52.317151,5.543212 52.317056,5.543218 52.317055,5.543185 52.316994,5.543137 52.316904,5.543115 52.316863,5.54311 52.316864,5.543077 52.316802,5.543044 52.31674,5.543007 52.316672,5.542988 52.316636,5.542952 52.31657,5.542913 52.316496,5.543286 52.316422,5.543629 52.316354,5.543639 52.316372,5.543679 52.316447,5.543692 52.316473,5.54372 52.316468,5.543788 52.316594,5.543834 52.316681,5.543855 52.316721,5.543869 52.316746,5.543905 52.316816,5.543922 52.316847,5.543916 52.316848,5.543894 52.316853,5.543908 52.316878,5.543942 52.316943,5.543961 52.316979,5.543977 52.316976,5.543994 52.317008,5.544045 52.317102,5.543912 52.317129,5.543808 52.31715,5.543684 52.317174,5.543498 52.317211,5.543314 52.317248)),((5.548076 52.318997,5.548104 52.318995,5.548157 52.31899,5.54807 52.31884,5.54809 52.318808,5.548064 52.318759,5.548032 52.318735,5.547955 52.318596,5.547941 52.318522,5.547902 52.318503,5.547869 52.31844,5.547851 52.318406,5.547825 52.318357,5.547829 52.318305,5.547776 52.318277,5.547704 52.318164,5.547602 52.318003,5.547893 52.317943,5.547948 52.317931,5.548217 52.317875,5.548233 52.317902,5.548261 52.317951,5.548267 52.317965,5.5483 52.318046,5.548534 52.318623,5.548574 52.31873,5.548677 52.319101,5.54869 52.319146,5.548763 52.3195,5.548788 52.319661,5.5488 52.319768,5.548806 52.31982,5.548484 52.319885,5.548436 52.319796,5.548501 52.319783,5.548174 52.319167,5.548125 52.319073,5.54806 52.319085,5.548054 52.319075,5.548019 52.319009,5.548076 52.318997)),((5.544741 52.315775,5.544696 52.315724,5.544794 52.315704,5.544959 52.315683,5.545231 52.315667,5.545428 52.315621,5.545572 52.315554,5.54568 52.31548,5.545775 52.315415,5.545938 52.3154,5.54604 52.315397,5.546211 52.31535,5.546364 52.315318,5.546446 52.315296,5.546468 52.315331,5.545497 52.315669,5.545369 52.315714,5.545269 52.315748,5.545256 52.315761,5.545266 52.31578,5.545288 52.315812,5.5454 52.315938,5.545443 52.316022,5.54549 52.316063,5.545507 52.3161,5.545523 52.316134,5.545516 52.316169,5.545547 52.316224,5.545578 52.316254,5.545588 52.316307,5.545618 52.316358,5.54565 52.316429,5.545662 52.316433,5.545698 52.316473,5.545693 52.316513,5.545726 52.316565,5.54574 52.316586,5.54576 52.316635,5.545778 52.31668,5.545798 52.316691,5.545806 52.316698,5.545819 52.316712,5.545824 52.31672,5.545827 52.316728,5.54583 52.316744,5.545829 52.316752,5.545825 52.316766,5.545835 52.316787,5.545859 52.316799,5.545868 52.316808,5.545866 52.31685,5.545884 52.316883,5.54592 52.316924,5.545928 52.316968,5.545981 52.317078,5.54601 52.317138,5.546024 52.317147,5.546037 52.317157,5.546047 52.317168,5.546056 52.317179,5.546063 52.317191,5.546068 52.317203,5.546071 52.317215,5.546071 52.317228,5.546067 52.317249,5.546157 52.317425,5.546195 52.317458,5.546214 52.317533,5.546265 52.31762,5.546279 52.317631,5.546291 52.317642,5.546301 52.317655,5.54631 52.317667,5.546315 52.31768,5.546319 52.317694,5.54632 52.317707,5.546319 52.317721,5.546317 52.317731,5.54638 52.317882,5.5464 52.317907,5.5464 52.317912,5.546399 52.317929,5.546467 52.318047,5.546464 52.318056,5.546473 52.318069,5.546487 52.318064,5.546898 52.317997,5.547268 52.31793,5.548151 52.317768,5.548156 52.317766,5.54816 52.317763,5.54816 52.317759,5.548157 52.317756,5.548135 52.317708,5.548068 52.317581,5.547681 52.316843,5.547309 52.31614,5.546844 52.315257,5.546521 52.314644,5.546597 52.314629,5.546542 52.314519,5.546503 52.314521,5.546146 52.313838,5.546126 52.313793,5.546114 52.31377,5.546196 52.313754,5.546652 52.314618,5.547439 52.316113,5.548202 52.317554,5.548428 52.318021,5.548532 52.318238,5.548574 52.318331,5.548824 52.319089,5.54892 52.319491,5.548974 52.32006,5.548976 52.320078,5.548978 52.320096,5.548983 52.320152,5.548987 52.32045,5.548899 52.320436,5.54884 52.320427,5.548835 52.320286,5.548825 52.320058,5.548819 52.319979,5.548813 52.319885,5.548806 52.31982,5.5488 52.319768,5.548788 52.319661,5.548763 52.3195,5.54869 52.319146,5.548677 52.319101,5.548574 52.31873,5.548534 52.318623,5.5483 52.318046,5.548267 52.317965,5.548261 52.317951,5.548233 52.317902,5.548217 52.317875,5.547948 52.317931,5.547893 52.317943,5.547602 52.318003,5.547704 52.318164,5.547776 52.318277,5.547829 52.318305,5.547825 52.318357,5.547851 52.318406,5.547869 52.31844,5.547902 52.318503,5.547941 52.318522,5.547955 52.318596,5.548032 52.318735,5.548064 52.318759,5.54809 52.318808,5.54807 52.31884,5.548157 52.31899,5.548104 52.318995,5.548076 52.318997,5.548005 52.318865,5.547949 52.318758,5.547892 52.318651,5.547836 52.318544,5.547779 52.318438,5.547722 52.318331,5.547666 52.318224,5.547596 52.318091,5.547562 52.318027,5.547498 52.318017,5.547177 52.318084,5.547122 52.318095,5.546869 52.318147,5.546868 52.318147,5.546863 52.318138,5.546716 52.318167,5.546591 52.318192,5.546466 52.318217,5.54634 52.318242,5.546215 52.318267,5.5461 52.31829,5.546086 52.318293,5.546072 52.318296,5.546044 52.318302,5.545995 52.318312,5.545983 52.318314,5.545932 52.318217,5.545979 52.318207,5.546254 52.318145,5.546334 52.318121,5.546399 52.318106,5.546394 52.318095,5.546381 52.318064,5.546393 52.318062,5.546288 52.317865,5.546202 52.317703,5.546116 52.31754,5.54603 52.317378,5.545926 52.317181,5.545822 52.316985,5.545748 52.316846,5.54574 52.316831,5.545622 52.316609,5.545504 52.316387,5.545417 52.316222,5.54533 52.316057,5.545242 52.315892,5.54516 52.315736,5.544748 52.315774,5.544741 52.315775)),((5.544195 52.321207,5.544207 52.321172,5.544232 52.321097,5.54426 52.320997,5.544295 52.32089,5.544317 52.320836,5.544348 52.320756,5.544358 52.320721,5.544372 52.32064,5.544376 52.320545,5.544376 52.320467,5.544371 52.320387,5.544365 52.320334,5.544363 52.32031,5.544355 52.320274,5.544327 52.320161,5.544294 52.320053,5.544267 52.319974,5.544223 52.319841,5.54418 52.319724,5.544169 52.319695,5.544139 52.319626,5.544097 52.319535,5.544025 52.319385,5.54397 52.31927,5.543955 52.319236,5.543947 52.319219,5.543929 52.319173,5.543922 52.319157,5.543929 52.319157,5.543938 52.319155,5.543936 52.319145,5.543936 52.319145,5.543936 52.319145,5.543936 52.319145,5.543936 52.319144,5.543936 52.319144,5.543936 52.319144,5.543936 52.319143,5.543936 52.319143,5.543936 52.319143,5.543936 52.319143,5.543936 52.319142,5.543936 52.319142,5.543936 52.319142,5.543936 52.319142,5.543936 52.319141,5.543936 52.319141,5.543936 52.319141,5.543936 52.319141,5.543936 52.31914,5.543936 52.31914,5.543936 52.31914,5.543936 52.319139,5.543936 52.319139,5.543936 52.319139,5.543936 52.319139,5.543936 52.319138,5.543936 52.319138,5.543936 52.319138,5.543936 52.319138,5.543936 52.319137,5.543936 52.319137,5.543936 52.319137,5.543936 52.319137,5.543936 52.319136,5.543936 52.319136,5.543936 52.319136,5.543936 52.319135,5.543936 52.319135,5.543936 52.319135,5.543937 52.319135,5.543937 52.319134,5.543937 52.319134,5.543937 52.319134,5.543937 52.319134,5.543937 52.319133,5.543937 52.319133,5.543937 52.319133,5.543937 52.319133,5.543937 52.319132,5.543937 52.319132,5.543937 52.319132,5.543937 52.319132,5.543937 52.319131,5.543938 52.319131,5.543938 52.319131,5.543938 52.319131,5.543938 52.31913,5.543938 52.31913,5.543938 52.31913,5.543938 52.319129,5.543938 52.319129,5.543938 52.319129,5.543938 52.319129,5.543939 52.319128,5.543939 52.319128,5.543939 52.319128,5.543939 52.319128,5.543939 52.319127,5.543939 52.319127,5.543939 52.319127,5.543939 52.319127,5.54394 52.319126,5.54394 52.319126,5.54394 52.319126,5.54394 52.319126,5.54394 52.319125,5.54394 52.319125,5.54394 52.319125,5.543941 52.319125,5.543941 52.319124,5.543941 52.319124,5.543941 52.319124,5.543941 52.319124,5.543941 52.319123,5.543941 52.319123,5.543942 52.319123,5.543942 52.319123,5.543942 52.319122,5.543942 52.319122,5.543942 52.319122,5.543942 52.319122,5.543943 52.319121,5.543943 52.319121,5.543943 52.319121,5.543943 52.319121,5.543943 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.319119,5.543945 52.319119,5.543945 52.319119,5.543945 52.319119,5.543945 52.319118,5.543945 52.319118,5.543946 52.319118,5.543946 52.319118,5.543946 52.319117,5.543946 52.319117,5.543947 52.319117,5.543947 52.319117,5.543947 52.319116,5.543947 52.319116,5.543948 52.319116,5.543948 52.319116,5.543948 52.319115,5.543948 52.319115,5.543948 52.319115,5.543949 52.319115,5.543949 52.319114,5.543949 52.319114,5.54395 52.319114,5.54395 52.319114,5.54395 52.319113,5.54395 52.319113,5.543951 52.319113,5.543951 52.319113,5.543951 52.319112,5.543951 52.319112,5.543952 52.319112,5.543952 52.319112,5.543952 52.319112,5.543953 52.319111,5.543953 52.319111,5.543953 52.319111,5.543953 52.319111,5.543954 52.31911,5.543954 52.31911,5.543954 52.31911,5.543955 52.31911,5.543955 52.31911,5.543955 52.319109,5.543955 52.319109,5.543956 52.319109,5.543956 52.319109,5.543956 52.319108,5.543957 52.319108,5.543957 52.319108,5.543957 52.319108,5.543958 52.319108,5.543958 52.319107,5.543958 52.319107,5.543959 52.319107,5.543959 52.319107,5.543959 52.319107,5.54396 52.319106,5.54396 52.319106,5.54396 52.319106,5.543961 52.319106,5.543961 52.319106,5.543961 52.319105,5.543962 52.319105,5.543962 52.319105,5.543962 52.319105,5.543963 52.319105,5.543963 52.319104,5.543963 52.319104,5.543964 52.319104,5.543964 52.319104,5.543964 52.319104,5.543965 52.319104,5.543965 52.319103,5.543965 52.319103,5.543966 52.319103,5.543966 52.319103,5.543967 52.319103,5.543967 52.319103,5.543967 52.319102,5.543968 52.319102,5.543968 52.319102,5.543968 52.319102,5.543969 52.319102,5.543969 52.319101,5.54397 52.319101,5.54397 52.319101,5.54397 52.319101,5.543971 52.319101,5.543971 52.319101,5.543971 52.319101,5.543972 52.3191,5.543972 52.3191,5.543973 52.3191,5.543973 52.3191,5.543973 52.3191,5.543974 52.3191,5.543974 52.319099,5.543975 52.319099,5.543975 52.319099,5.543975 52.319099,5.543982 52.319098,5.544002 52.319093,5.54402 52.31909,5.544039 52.31909,5.544057 52.319093,5.544065 52.319095,5.54408 52.319101,5.544094 52.319108,5.544104 52.319117,5.544112 52.319128,5.544211 52.319314,5.544215 52.319317,5.544225 52.319317,5.544228 52.319319,5.544371 52.319589,5.544394 52.319632,5.544596 52.320014,5.544597 52.320018,5.544596 52.320021,5.544593 52.320024,5.544588 52.320026,5.544734 52.320302,5.54478 52.320294,5.544775 52.320283,5.545141 52.32021,5.545659 52.320107,5.54587 52.320065,5.545919 52.320056,5.546024 52.320035,5.546047 52.32003,5.546093 52.320021,5.546636 52.319913,5.546762 52.319888,5.546811 52.319879,5.546813 52.319878,5.546939 52.319853,5.54694 52.319852,5.546944 52.319851,5.546944 52.319844,5.546946 52.319841,5.546948 52.319838,5.546954 52.319836,5.547103 52.319807,5.547109 52.319806,5.547115 52.319807,5.54712 52.31981,5.547125 52.319814,5.547131 52.319815,5.547435 52.319754,5.547456 52.31979,5.547558 52.319987,5.547608 52.319977,5.547647 52.320052,5.547808 52.32002,5.548042 52.319973,5.548275 52.319926,5.548484 52.319885,5.548806 52.31982,5.548813 52.319885,5.548819 52.319979,5.548825 52.320058,5.548835 52.320286,5.54884 52.320427,5.548899 52.320436,5.548987 52.32045,5.548983 52.320152,5.548978 52.320096,5.548976 52.320078,5.548974 52.32006,5.54892 52.319491,5.548824 52.319089,5.548574 52.318331,5.548532 52.318238,5.548428 52.318021,5.548202 52.317554,5.547439 52.316113,5.546652 52.314618,5.546196 52.313754,5.546874 52.313622,5.547194 52.314229,5.547515 52.314837,5.547836 52.315444,5.548157 52.316052,5.54825 52.316227,5.548342 52.316402,5.548458 52.316622,5.548574 52.316842,5.548654 52.316993,5.548734 52.317144,5.548814 52.317296,5.548894 52.317447,5.548939 52.317536,5.548984 52.317625,5.549065 52.317792,5.549146 52.317958,5.549209 52.318109,5.549272 52.318259,5.549301 52.318332,5.549329 52.318405,5.549355 52.318485,5.549381 52.318566,5.549407 52.318646,5.549433 52.318727,5.549478 52.318888,5.549522 52.31905,5.549544 52.319153,5.549567 52.319255,5.549589 52.319358,5.549611 52.31946,5.549624 52.319563,5.549637 52.319666,5.54965 52.319769,5.549663 52.319872,5.549668 52.319959,5.549673 52.320047,5.549677 52.320135,5.549682 52.320222,5.549683 52.320311,5.549683 52.320399,5.549684 52.320487,5.549685 52.320576,5.549681 52.32065,5.549677 52.320725,5.549673 52.320799,5.549669 52.320874,5.549659 52.320956,5.549649 52.321038,5.549638 52.32112,5.549628 52.321201,5.549618 52.321262,5.549607 52.321322,5.549601 52.321357,5.549598 52.321376,5.549594 52.321396,5.549577 52.321493,5.54956 52.321591,5.549526 52.321728,5.549493 52.321866,5.54945 52.32202,5.549428 52.322098,5.549407 52.322175,5.549373 52.322264,5.54934 52.322353,5.549307 52.322443,5.549245 52.3226,5.549185 52.322737,5.549156 52.322805,5.549086 52.322954,5.54898 52.323173,5.548874 52.323384,5.548804 52.323525,5.548732 52.323663,5.548643 52.323836,5.548553 52.324008,5.548441 52.324224,5.548365 52.32437,5.548265 52.324504,5.548265 52.324504,5.548265 52.324504,5.548265 52.324504,5.548264 52.324504,5.548264 52.324505,5.548264 52.324505,5.548264 52.324505,5.548264 52.324505,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548262 52.324507,5.548262 52.324507,5.548262 52.324507,5.548262 52.324507,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.54826 52.324509,5.54826 52.324509,5.54826 52.324509,5.54826 52.324509,5.548259 52.32451,5.548259 52.32451,5.548259 52.32451,5.548259 52.32451,5.548258 52.32451,5.548258 52.324511,5.548258 52.324511,5.548258 52.324511,5.548257 52.324511,5.548257 52.324511,5.548257 52.324512,5.548256 52.324512,5.548256 52.324512,5.548256 52.324512,5.548256 52.324512,5.548255 52.324513,5.548255 52.324513,5.548255 52.324513,5.548255 52.324513,5.548254 52.324513,5.548254 52.324514,5.548254 52.324514,5.548253 52.324514,5.548253 52.324514,5.548253 52.324514,5.548253 52.324515,5.548252 52.324515,5.548252 52.324515,5.548252 52.324515,5.548251 52.324515,5.548251 52.324515,5.548251 52.324516,5.54825 52.324516,5.54825 52.324516,5.54825 52.324516,5.548249 52.324516,5.548249 52.324517,5.548249 52.324517,5.548249 52.324517,5.548248 52.324517,5.548248 52.324517,5.548248 52.324517,5.548247 52.324518,5.548247 52.324518,5.548247 52.324518,5.548246 52.324518,5.548246 52.324518,5.548246 52.324518,5.548245 52.324519,5.548245 52.324519,5.548245 52.324519,5.548244 52.324519,5.548244 52.324519,5.548244 52.324519,5.548243 52.32452,5.548243 52.32452,5.548242 52.32452,5.548242 52.32452,5.548242 52.32452,5.548241 52.32452,5.548241 52.32452,5.548241 52.324521,5.54824 52.324521,5.54824 52.324521,5.54824 52.324521,5.548239 52.324521,5.548239 52.324521,5.548239 52.324521,5.548238 52.324522,5.548238 52.324522,5.548237 52.324522,5.548237 52.324522,5.548237 52.324522,5.548236 52.324522,5.548236 52.324522,5.54823 52.324523,5.548217 52.324525,5.548202 52.324527,5.548187 52.324528,5.548176 52.324528,5.548151 52.324524,5.548149 52.324523,5.548106 52.324516,5.548115 52.324499,5.548114 52.324499,5.548072 52.324491,5.548059 52.324489,5.547517 52.324391,5.547403 52.324371,5.547379 52.324367,5.546593 52.324225,5.546576 52.324223,5.546562 52.324219,5.54655 52.324213,5.546545 52.32421,5.546537 52.324202,5.546534 52.324197,5.546532 52.324189,5.546532 52.32418,5.546583 52.32407,5.546589 52.324062,5.546597 52.324054,5.546608 52.324048,5.546621 52.324043,5.546613 52.324033,5.546609 52.324027,5.546627 52.324024,5.546636 52.324023,5.546656 52.324024,5.546665 52.324026,5.547472 52.32417,5.547489 52.324173,5.547492 52.324172,5.547538 52.32408,5.547841 52.323443,5.547853 52.323418,5.547871 52.32338,5.547892 52.323335,5.548013 52.323078,5.548161 52.322771,5.548184 52.322722,5.548189 52.322713,5.548195 52.3227,5.548201 52.322687,5.548202 52.322685,5.548478 52.322107,5.548506 52.322112,5.548526 52.322069,5.548547 52.322024,5.548565 52.32199,5.548551 52.321978,5.548636 52.321796,5.548573 52.321785,5.54861 52.321708,5.548545 52.321695,5.548398 52.321665,5.548203 52.321635,5.548532 52.320941,5.548468 52.32093,5.548507 52.320848,5.548297 52.320811,5.548059 52.320768,5.547826 52.320726,5.547663 52.320697,5.547618 52.320793,5.547555 52.320782,5.547503 52.320891,5.547477 52.320945,5.547456 52.320989,5.547346 52.32097,5.54722 52.320947,5.546839 52.320879,5.546793 52.320871,5.546575 52.320832,5.546528 52.320823,5.546504 52.320819,5.546345 52.320791,5.546217 52.320768,5.545911 52.320713,5.545864 52.320705,5.544785 52.320511,5.544742 52.320504,5.544724 52.320511,5.544603 52.320761,5.544591 52.320787,5.544578 52.320813,5.544456 52.321072,5.544402 52.321184,5.544412 52.321194,5.544385 52.321249,5.544376 52.321248,5.544373 52.321255,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544347 52.321264,5.544347 52.321264,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321266,5.544344 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321267,5.54434 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321268,5.544335 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544328 52.321268,5.544328 52.321268,5.544328 52.321268,5.544328 52.321268,5.544328 52.321269,5.544328 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544302 52.321269,5.544302 52.321269,5.544302 52.321269,5.544302 52.321268,5.544302 52.321268,5.544302 52.321268,5.544302 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544295 52.321268,5.544295 52.321268,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.54425 52.321259,5.54425 52.321259,5.54425 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.54424 52.321258,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544233 52.321256,5.544233 52.321256,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.54423 52.321255,5.54423 52.321255,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544225 52.321253,5.544225 52.321253,5.544225 52.321253,5.544225 52.321252,5.544225 52.321252,5.544225 52.321252,5.544225 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321251,5.544223 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321248,5.544217 52.321248,5.544217 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544215 52.321248,5.544215 52.321248,5.544215 52.321248,5.544215 52.321247,5.544215 52.321247,5.544215 52.321247,5.544215 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544212 52.321246,5.544212 52.321246,5.544212 52.321246,5.544212 52.321246,5.544212 52.321245,5.544212 52.321245,5.544212 52.321245,5.544212 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.544209 52.321244,5.544209 52.321244,5.544209 52.321244,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321242,5.544208 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544205 52.321241,5.544205 52.321241,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544204 52.32124,5.544204 52.32124,5.544204 52.32124,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544203 52.321239,5.544203 52.321239,5.544203 52.321239,5.544203 52.321239,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544202 52.321238,5.544202 52.321238,5.544202 52.321238,5.544202 52.321238,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544201 52.321237,5.544201 52.321237,5.544201 52.321237,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.5442 52.321236,5.5442 52.321236,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.544199 52.321235,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544196 52.32123,5.544196 52.32123,5.544205 52.321209,5.544195 52.321207)),((5.548779 52.321745,5.54877 52.32178,5.548761 52.321816,5.548706 52.322028,5.548615 52.322018,5.548683 52.321761,5.548687 52.321738,5.548704 52.321661,5.548712 52.321625,5.54872 52.321589,5.548769 52.321371,5.548775 52.321336,5.548822 52.320976,5.548826 52.32094,5.548833 52.320887,5.548855 52.320611,5.548868 52.320536,5.548898 52.320537,5.548917 52.320538,5.54894 52.32061,5.548916 52.321032,5.54889 52.321275,5.548827 52.321561,5.548779 52.321745)),((5.473141 52.263978,5.47298 52.263943,5.472372 52.26381,5.471961 52.26372,5.471447 52.263599,5.471447 52.263599,5.471447 52.263599,5.471447 52.263599,5.471447 52.263598,5.471447 52.263598,5.471447 52.263598,5.471448 52.263597,5.471448 52.263597,5.471448 52.263597,5.471448 52.263597,5.471448 52.263596,5.471448 52.263596,5.471448 52.263596,5.471448 52.263596,5.471449 52.263595,5.471449 52.263595,5.471449 52.263595,5.471449 52.263594,5.471449 52.263594,5.471449 52.263594,5.471449 52.263594,5.471449 52.263593,5.471449 52.263593,5.47145 52.263593,5.47145 52.263592,5.47145 52.263592,5.47145 52.263592,5.47145 52.263592,5.47145 52.263591,5.47145 52.263591,5.47145 52.263591,5.47145 52.263591,5.47145 52.26359,5.47145 52.26359,5.471451 52.26359,5.471451 52.263589,5.471451 52.263589,5.471451 52.263589,5.471451 52.263589,5.471451 52.263588,5.471451 52.263588,5.471451 52.263588,5.471451 52.263587,5.471451 52.263587,5.471451 52.263587,5.471451 52.263587,5.471452 52.263586,5.471452 52.263586,5.471452 52.263586,5.471452 52.263586,5.471452 52.263585,5.471452 52.263585,5.471452 52.263585,5.471452 52.263584,5.471452 52.263584,5.471452 52.263584,5.471452 52.263584,5.471452 52.263583,5.471452 52.263583,5.471452 52.263583,5.471452 52.263582,5.471452 52.263582,5.471452 52.263582,5.471452 52.263582,5.471453 52.263581,5.471453 52.263581,5.471453 52.263581,5.471453 52.26358,5.471453 52.26358,5.471453 52.26358,5.471453 52.26358,5.471453 52.263579,5.471453 52.263579,5.471453 52.263579,5.471453 52.263578,5.471453 52.263578,5.471453 52.263578,5.471453 52.263578,5.471453 52.263577,5.471453 52.263577,5.471453 52.263577,5.471453 52.263576,5.471453 52.263576,5.471453 52.263576,5.471453 52.263576,5.471453 52.263575,5.471453 52.263575,5.471453 52.263575,5.471453 52.263574,5.471453 52.263574,5.471453 52.263574,5.471453 52.263574,5.471453 52.263573,5.471453 52.263573,5.471453 52.263573,5.471453 52.263572,5.471453 52.263572,5.471453 52.263572,5.471453 52.263572,5.471453 52.263571,5.471453 52.263571,5.471453 52.263571,5.471453 52.263571,5.471453 52.263571,5.471453 52.26357,5.471453 52.26357,5.471453 52.26357,5.471453 52.263569,5.471453 52.263569,5.471453 52.263569,5.471453 52.263569,5.471453 52.263568,5.471453 52.263568,5.471453 52.263568,5.471453 52.263568,5.471453 52.263567,5.471453 52.263567,5.471453 52.263567,5.471453 52.263567,5.471453 52.263566,5.471453 52.263566,5.471453 52.263566,5.471453 52.263565,5.471453 52.263565,5.471453 52.263565,5.471453 52.263565,5.471453 52.263564,5.471453 52.263564,5.471453 52.263564,5.471453 52.263564,5.471453 52.263563,5.471452 52.263563,5.471452 52.263563,5.471452 52.263563,5.471452 52.263562,5.471452 52.263562,5.471452 52.263562,5.471452 52.263561,5.471452 52.263561,5.471452 52.263561,5.471452 52.263561,5.471452 52.26356,5.471452 52.26356,5.471452 52.26356,5.471452 52.26356,5.471452 52.263559,5.471452 52.263559,5.471452 52.263559,5.471452 52.263559,5.471452 52.263558,5.471452 52.263558,5.471452 52.263558,5.471452 52.263557,5.471452 52.263557,5.471452 52.263557,5.471452 52.263557,5.471452 52.263556,5.471451 52.263556,5.471451 52.263556,5.471451 52.263556,5.471451 52.263555,5.471451 52.263555,5.471451 52.263555,5.471451 52.263555,5.471451 52.263554,5.471451 52.263554,5.471451 52.263554,5.471451 52.263553,5.471451 52.263553,5.471451 52.263553,5.471451 52.263553,5.471451 52.263552,5.471451 52.263552,5.471451 52.263552,5.471451 52.263552,5.47145 52.263551,5.47145 52.263551,5.47145 52.263551,5.47145 52.263551,5.47145 52.26355,5.47145 52.26355,5.47145 52.26355,5.47145 52.26355,5.47145 52.263549,5.47145 52.263549,5.47145 52.263549,5.47145 52.263548,5.47145 52.263548,5.47145 52.263548,5.47145 52.263548,5.471449 52.263547,5.471449 52.263547,5.471449 52.263547,5.471449 52.263547,5.471449 52.263546,5.471449 52.263546,5.471449 52.263546,5.471449 52.263546,5.471449 52.263545,5.471449 52.263545,5.471449 52.263545,5.471447 52.26354,5.472299 52.26374,5.47232 52.263695,5.47252 52.263276,5.473443 52.263442,5.476121 52.263924,5.476566 52.262992,5.476772 52.26256,5.476849 52.262399,5.480184 52.262989,5.489744 52.26468,5.50443 52.267275,5.519033 52.269853,5.519056 52.269857,5.522166 52.270406,5.529674 52.271928,5.529969 52.271988,5.533281 52.27274,5.534812 52.27408,5.536206 52.276353,5.537005 52.277866,5.538034 52.279813,5.538611 52.280904,5.543361 52.289886,5.545166 52.293299,5.545168 52.293302,5.548112 52.298867,5.548464 52.299533,5.552671 52.307481,5.552865 52.307848,5.553655 52.309341,5.55506 52.311994,5.555483 52.312793,5.555484 52.312794,5.555506 52.312837,5.55762 52.316829,5.560651 52.32255,5.560806 52.322843,5.560806 52.322844,5.562378 52.32581,5.565864 52.332389,5.565864 52.33239,5.567137 52.334791,5.569517 52.339281,5.571897 52.343771,5.574278 52.348261,5.575604 52.35076,5.575657 52.350809,5.577785 52.352749,5.578014 52.352958,5.585682 52.359947,5.587707 52.361454,5.588333 52.361719,5.591157 52.362916,5.592357 52.363066,5.592724 52.363112,5.592726 52.363112,5.592739 52.363114,5.594543 52.363339,5.594633 52.36335,5.595456 52.363448,5.596584 52.363544,5.596987 52.363568,5.597404 52.363579,5.597937 52.363591,5.59829 52.363589,5.598597 52.363583,5.604955 52.363392,5.605469 52.36336,5.605903 52.363312,5.606301 52.363247,5.606837 52.363125,5.607398 52.362948,5.607419 52.36294,5.607504 52.362906,5.607813 52.362782,5.608097 52.362647,5.608358 52.362505,5.608596 52.362357,5.608852 52.362173,5.609052 52.362012,5.60921 52.361861,5.609394 52.361682,5.610082 52.361011,5.610859 52.360255,5.611638 52.3595,5.612328 52.360292,5.613532 52.361674,5.614039 52.362256,5.61406 52.362262,5.614067 52.362264,5.614344 52.362341,5.61435 52.362343,5.613236 52.362822,5.611599 52.363484,5.611586 52.363472,5.611568 52.363457,5.611568 52.363457,5.611562 52.36346,5.611557 52.363463,5.611551 52.363465,5.611545 52.363468,5.61154 52.363471,5.611534 52.363474,5.611529 52.363477,5.611523 52.36348,5.611518 52.363483,5.611513 52.363486,5.611508 52.363489,5.611503 52.363492,5.611498 52.363495,5.611493 52.363499,5.611489 52.363502,5.611484 52.363506,5.61148 52.363509,5.611475 52.363513,5.611471 52.363516,5.611467 52.36352,5.611463 52.363524,5.611459 52.363527,5.611455 52.363531,5.611451 52.363535,5.611448 52.363539,5.611444 52.363543,5.611441 52.363546,5.611438 52.36355,5.611434 52.363554,5.611431 52.363558,5.611429 52.363562,5.611426 52.363567,5.611423 52.363571,5.611421 52.363575,5.611418 52.363579,5.611416 52.363583,5.611414 52.363587,5.611412 52.363592,5.61141 52.363596,5.611408 52.3636,5.611406 52.363605,5.611405 52.363609,5.611403 52.363613,5.611402 52.363618,5.611401 52.363622,5.6114 52.363626,5.611399 52.363631,5.611398 52.363635,5.611398 52.36364,5.611397 52.363644,5.611397 52.363648,5.611397 52.363653,5.611396 52.363657,5.611396 52.363662,5.611397 52.363666,5.611397 52.363671,5.611397 52.363675,5.611398 52.363679,5.611399 52.363684,5.611399 52.363688,5.6114 52.363693,5.611401 52.363697,5.611403 52.363701,5.611404 52.363706,5.611405 52.36371,5.611407 52.363714,5.611409 52.363719,5.611411 52.363723,5.611412 52.363727,5.611415 52.363732,5.611417 52.363736,5.611419 52.36374,5.611422 52.363744,5.611424 52.363748,5.611427 52.363752,5.61143 52.363756,5.611433 52.36376,5.611436 52.363764,5.611439 52.363768,5.611442 52.363772,5.611446 52.363776,5.611449 52.36378,5.611453 52.363784,5.611457 52.363788,5.61146 52.363792,5.611464 52.363795,5.611468 52.363799,5.611473 52.363802,5.611477 52.363806,5.611481 52.36381,5.611486 52.363813,5.611491 52.363816,5.611495 52.36382,5.6115 52.363823,5.611505 52.363826,5.61151 52.36383,5.611515 52.363833,5.61152 52.363836,5.611526 52.363839,5.611526 52.363839,5.611487 52.363859,5.61145 52.363877,5.61143 52.363888,5.61121 52.364005,5.611179 52.364022,5.611126 52.364051,5.61098 52.364132,5.610882 52.364188,5.610828 52.364219,5.610772 52.364251,5.610724 52.36428,5.610706 52.364271,5.610657 52.364248,5.610567 52.364207,5.610567 52.364207,5.610563 52.364206,5.610559 52.364205,5.610555 52.364204,5.610551 52.364203,5.610547 52.364202,5.610543 52.364201,5.610539 52.3642,5.610535 52.364199,5.610531 52.364198,5.610527 52.364197,5.610522 52.364196,5.610518 52.364195,5.610514 52.364194,5.61051 52.364193,5.610505 52.364193,5.610501 52.364192,5.610497 52.364191,5.610492 52.364191,5.610488 52.36419,5.610484 52.364189,5.610479 52.364189,5.610475 52.364188,5.610471 52.364188,5.610466 52.364187,5.610462 52.364187,5.610457 52.364186,5.610453 52.364186,5.610449 52.364186,5.610444 52.364185,5.61044 52.364185,5.610435 52.364185,5.610431 52.364185,5.610426 52.364185,5.610422 52.364184,5.610418 52.364184,5.610413 52.364184,5.610409 52.364184,5.610404 52.364184,5.6104 52.364184,5.610395 52.364184,5.610391 52.364185,5.610386 52.364185,5.610382 52.364185,5.610377 52.364185,5.610373 52.364185,5.610369 52.364186,5.610364 52.364186,5.61036 52.364186,5.610355 52.364187,5.610351 52.364187,5.610347 52.364188,5.610342 52.364188,5.610338 52.364189,5.610333 52.364189,5.610329 52.36419,5.610325 52.36419,5.61032 52.364191,5.610316 52.364192,5.610312 52.364193,5.610308 52.364193,5.610303 52.364194,5.610299 52.364195,5.610295 52.364196,5.610291 52.364197,5.610286 52.364198,5.610282 52.364199,5.610278 52.364199,5.610274 52.364201,5.61027 52.364202,5.610266 52.364203,5.610262 52.364204,5.610258 52.364205,5.610254 52.364206,5.61025 52.364207,5.610246 52.364208,5.610242 52.36421,5.610238 52.364211,5.610234 52.364212,5.61023 52.364214,5.610226 52.364215,5.610222 52.364217,5.610219 52.364218,5.610215 52.364219,5.610211 52.364221,5.610208 52.364222,5.610204 52.364224,5.6102 52.364226,5.610197 52.364227,5.610193 52.364229,5.61019 52.364231,5.610186 52.364232,5.610183 52.364234,5.610179 52.364236,5.610176 52.364237,5.610173 52.364239,5.610169 52.364241,5.610166 52.364243,5.610163 52.364245,5.61016 52.364247,5.61016 52.364247,5.609984 52.364389,5.609274 52.364887,5.609058 52.365031,5.608736 52.365205,5.608523 52.365327,5.608278 52.365423,5.60757 52.365718,5.606185 52.366292,5.606117 52.366298,5.605955 52.366296,5.605635 52.36629,5.604938 52.366276,5.604298 52.366171,5.603829 52.366088,5.603444 52.366018,5.602775 52.365883,5.60226 52.36579,5.601847 52.365706,5.601318 52.365594,5.601233 52.365583,5.601176 52.365576,5.6011 52.365566,5.600659 52.365484,5.599201 52.365213,5.597742 52.364943,5.596284 52.364672,5.59506 52.364439,5.592743 52.363997,5.590189 52.363511,5.590189 52.363511,5.590175 52.363508,5.590161 52.363505,5.590147 52.363502,5.590133 52.363499,5.590119 52.363496,5.590105 52.363493,5.590091 52.36349,5.590077 52.363487,5.590063 52.363485,5.590049 52.363482,5.590036 52.363479,5.590022 52.363476,5.590008 52.363473,5.589994 52.36347,5.58998 52.363467,5.589966 52.363464,5.589952 52.363462,5.589938 52.363459,5.589924 52.363456,5.58991 52.363453,5.589896 52.36345,5.589882 52.363448,5.589868 52.363445,5.589854 52.363442,5.58984 52.363439,5.589826 52.363436,5.589812 52.363434,5.589798 52.363431,5.589784 52.363428,5.58977 52.363425,5.589755 52.363423,5.589741 52.36342,5.589727 52.363417,5.589713 52.363415,5.589699 52.363412,5.589685 52.363409,5.589671 52.363406,5.589657 52.363404,5.589643 52.363401,5.589629 52.363398,5.589615 52.363396,5.589601 52.363393,5.589587 52.363391,5.589573 52.363388,5.589558 52.363385,5.589544 52.363383,5.58953 52.36338,5.589516 52.363377,5.589502 52.363375,5.589488 52.363372,5.589474 52.36337,5.58946 52.363367,5.589446 52.363365,5.589431 52.363362,5.589417 52.36336,5.589403 52.363357,5.589389 52.363355,5.589375 52.363352,5.589361 52.363349,5.589346 52.363347,5.589332 52.363345,5.589318 52.363342,5.589304 52.36334,5.58929 52.363337,5.589276 52.363335,5.589261 52.363332,5.589247 52.36333,5.589233 52.363327,5.589219 52.363325,5.589205 52.363322,5.589191 52.36332,5.589176 52.363318,5.589162 52.363315,5.589148 52.363313,5.589134 52.363311,5.589119 52.363308,5.589105 52.363306,5.589091 52.363303,5.589077 52.363301,5.589063 52.363299,5.589048 52.363296,5.589034 52.363294,5.58902 52.363292,5.589006 52.36329,5.588991 52.363287,5.588977 52.363285,5.588963 52.363283,5.588949 52.36328,5.588934 52.363278,5.58892 52.363276,5.588906 52.363274,5.588892 52.363271,5.588877 52.363269,5.588863 52.363267,5.588849 52.363265,5.588834 52.363263,5.58882 52.36326,5.588806 52.363258,5.588792 52.363256,5.588792 52.363256,5.588762 52.363252,5.588733 52.363247,5.588704 52.363243,5.588674 52.363238,5.588645 52.363234,5.588616 52.363229,5.588586 52.363225,5.588557 52.363221,5.588527 52.363217,5.588498 52.363212,5.588469 52.363208,5.588439 52.363204,5.58841 52.3632,5.58838 52.363196,5.588351 52.363192,5.588321 52.363188,5.588292 52.363184,5.588262 52.36318,5.588233 52.363176,5.588203 52.363172,5.588174 52.363168,5.588144 52.363165,5.588115 52.363161,5.588085 52.363157,5.588056 52.363153,5.588026 52.36315,5.587996 52.363146,5.587967 52.363142,5.587937 52.363139,5.587907 52.363135,5.587878 52.363132,5.587848 52.363128,5.587818 52.363125,5.587789 52.363121,5.587759 52.363118,5.587729 52.363115,5.5877 52.363111,5.58767 52.363108,5.58764 52.363105,5.587611 52.363102,5.587581 52.363099,5.587551 52.363095,5.587521 52.363092,5.587491 52.363089,5.587462 52.363086,5.587432 52.363083,5.587402 52.36308,5.587372 52.363077,5.587342 52.363074,5.587313 52.363071,5.587283 52.363069,5.587253 52.363066,5.587223 52.363063,5.587193 52.36306,5.587163 52.363058,5.587133 52.363055,5.587104 52.363052,5.587074 52.36305,5.587044 52.363047,5.587014 52.363045,5.586984 52.363042,5.586954 52.36304,5.586924 52.363037,5.586894 52.363035,5.586864 52.363032,5.586834 52.36303,5.586804 52.363028,5.586774 52.363025,5.586744 52.363023,5.586714 52.363021,5.586684 52.363019,5.586654 52.363017,5.586624 52.363015,5.586594 52.363013,5.586564 52.363011,5.586534 52.363009,5.586504 52.363007,5.586474 52.363005,5.586444 52.363003,5.586414 52.363001,5.586384 52.362999,5.586354 52.362997,5.586324 52.362996,5.586294 52.362994,5.586264 52.362992,5.586234 52.36299,5.586204 52.362989,5.586174 52.362987,5.586144 52.362986,5.586113 52.362984,5.586083 52.362983,5.586053 52.362981,5.586023 52.36298,5.585993 52.362978,5.585963 52.362977,5.585933 52.362976,5.585903 52.362974,5.585873 52.362973,5.585842 52.362972,5.585842 52.362972,5.585838 52.362972,5.585838 52.362972,5.585823 52.362971,5.585809 52.36297,5.585794 52.362969,5.585779 52.362968,5.585764 52.362968,5.585749 52.362967,5.585735 52.362966,5.58572 52.362965,5.585705 52.362965,5.58569 52.362964,5.585675 52.362963,5.58566 52.362962,5.585646 52.362962,5.585631 52.362961,5.585616 52.36296,5.585601 52.36296,5.585586 52.362959,5.585571 52.362958,5.585557 52.362958,5.585542 52.362957,5.585527 52.362957,5.585512 52.362956,5.585497 52.362955,5.585482 52.362955,5.585468 52.362954,5.585453 52.362954,5.585438 52.362953,5.585423 52.362953,5.585408 52.362952,5.585393 52.362952,5.585379 52.362951,5.585364 52.362951,5.585349 52.36295,5.585334 52.36295,5.585319 52.36295,5.585304 52.362949,5.585289 52.362949,5.585275 52.362948,5.58526 52.362948,5.585245 52.362948,5.58523 52.362947,5.585215 52.362947,5.5852 52.362947,5.585185 52.362946,5.585171 52.362946,5.585156 52.362946,5.585141 52.362945,5.585126 52.362945,5.585111 52.362945,5.585096 52.362945,5.585081 52.362944,5.585067 52.362944,5.585052 52.362944,5.585037 52.362944,5.585022 52.362943,5.585007 52.362943,5.584992 52.362943,5.584977 52.362943,5.584962 52.362943,5.584948 52.362943,5.584933 52.362943,5.584918 52.362943,5.584903 52.362942,5.584888 52.362942,5.584873 52.362942,5.584858 52.362942,5.584844 52.362942,5.584829 52.362942,5.584814 52.362942,5.584799 52.362942,5.584784 52.362942,5.584769 52.362942,5.584754 52.362942,5.584739 52.362942,5.584725 52.362942,5.58471 52.362942,5.584695 52.362942,5.58468 52.362943,5.584665 52.362943,5.58465 52.362943,5.584635 52.362943,5.584621 52.362943,5.584606 52.362943,5.584591 52.362943,5.584576 52.362944,5.584561 52.362944,5.584546 52.362944,5.584531 52.362944,5.584516 52.362944,5.584502 52.362945,5.584487 52.362945,5.584472 52.362945,5.584457 52.362945,5.584442 52.362946,5.584427 52.362946,5.584412 52.362946,5.584398 52.362947,5.584383 52.362947,5.584368 52.362947,5.584368 52.362947,5.584353 52.362948,5.584338 52.362948,5.584323 52.362948,5.584308 52.362949,5.584294 52.362949,5.584279 52.36295,5.584264 52.36295,5.584249 52.36295,5.584234 52.362951,5.584219 52.362951,5.584204 52.362952,5.58419 52.362952,5.584175 52.362953,5.58416 52.362953,5.584145 52.362954,5.58413 52.362954,5.584115 52.362955,5.584101 52.362956,5.584086 52.362956,5.584071 52.362957,5.584056 52.362957,5.584041 52.362958,5.584026 52.362959,5.584012 52.362959,5.583997 52.36296,5.583982 52.362961,5.583967 52.362961,5.583952 52.362962,5.583937 52.362963,5.583923 52.362963,5.583908 52.362964,5.583893 52.362965,5.583878 52.362966,5.583863 52.362966,5.583849 52.362967,5.583834 52.362968,5.583819 52.362969,5.583804 52.362969,5.583789 52.36297,5.583774 52.362971,5.58376 52.362972,5.583745 52.362973,5.58373 52.362974,5.583715 52.362975,5.5837 52.362975,5.583686 52.362976,5.583671 52.362977,5.583656 52.362978,5.583641 52.362979,5.583627 52.36298,5.583612 52.362981,5.583597 52.362982,5.583582 52.362983,5.583567 52.362984,5.583553 52.362985,5.583538 52.362986,5.583523 52.362987,5.583508 52.362988,5.583494 52.362989,5.583479 52.36299,5.583464 52.362991,5.583449 52.362992,5.583434 52.362994,5.58342 52.362995,5.583405 52.362996,5.58339 52.362997,5.583375 52.362998,5.583361 52.362999,5.583346 52.363,5.583331 52.363002,5.583317 52.363003,5.583302 52.363004,5.583287 52.363005,5.583272 52.363006,5.583258 52.363008,5.583243 52.363009,5.583228 52.36301,5.583213 52.363012,5.583199 52.363013,5.583184 52.363014,5.583169 52.363016,5.583155 52.363017,5.58314 52.363018,5.583125 52.36302,5.58311 52.363021,5.583096 52.363022,5.583081 52.363024,5.583066 52.363025,5.583052 52.363027,5.583037 52.363028,5.583022 52.363029,5.583008 52.363031,5.582993 52.363032,5.582978 52.363034,5.582964 52.363035,5.582949 52.363037,5.582934 52.363038,5.58292 52.36304,5.582905 52.363041,5.582905 52.363041,5.5829 52.363042,5.5829 52.363042,5.582882 52.363044,5.582864 52.363045,5.582846 52.363047,5.582828 52.363049,5.58281 52.36305,5.582792 52.363052,5.582774 52.363054,5.582756 52.363056,5.582738 52.363057,5.58272 52.363059,5.582702 52.363061,5.582684 52.363063,5.582666 52.363065,5.582648 52.363067,5.58263 52.363068,5.582612 52.36307,5.582594 52.363072,5.582576 52.363074,5.582558 52.363076,5.58254 52.363078,5.582522 52.36308,5.582504 52.363082,5.582486 52.363084,5.582468 52.363086,5.58245 52.363088,5.582432 52.36309,5.582414 52.363092,5.582396 52.363094,5.582378 52.363096,5.58236 52.363098,5.582342 52.3631,5.582324 52.363102,5.582307 52.363104,5.582289 52.363107,5.582271 52.363109,5.582253 52.363111,5.582235 52.363113,5.582217 52.363115,5.582199 52.363118,5.582181 52.36312,5.582163 52.363122,5.582145 52.363124,5.582128 52.363126,5.58211 52.363129,5.582092 52.363131,5.582074 52.363133,5.582056 52.363136,5.582038 52.363138,5.58202 52.36314,5.582003 52.363143,5.581985 52.363145,5.581967 52.363147,5.581949 52.36315,5.581931 52.363152,5.581913 52.363155,5.581896 52.363157,5.581878 52.36316,5.58186 52.363162,5.581842 52.363165,5.581824 52.363167,5.581807 52.36317,5.581789 52.363172,5.581771 52.363175,5.581753 52.363177,5.581735 52.36318,5.581718 52.363182,5.5817 52.363185,5.581682 52.363188,5.581664 52.36319,5.581647 52.363193,5.581629 52.363195,5.581611 52.363198,5.581593 52.363201,5.581576 52.363203,5.581558 52.363206,5.58154 52.363209,5.581523 52.363212,5.581505 52.363214,5.581487 52.363217,5.581469 52.36322,5.581452 52.363223,5.581434 52.363226,5.581416 52.363228,5.581399 52.363231,5.581381 52.363234,5.581363 52.363237,5.581346 52.36324,5.581328 52.363243,5.581311 52.363246,5.581293 52.363248,5.581275 52.363251,5.581258 52.363254,5.58124 52.363257,5.581222 52.36326,5.581205 52.363263,5.581187 52.363266,5.58117 52.363269,5.581152 52.363272,5.581135 52.363275,5.581135 52.363275,5.581117 52.363278,5.581099 52.363281,5.581082 52.363284,5.581064 52.363288,5.581047 52.363291,5.581029 52.363294,5.581012 52.363297,5.580994 52.3633,5.580977 52.363303,5.580959 52.363306,5.580942 52.36331,5.580924 52.363313,5.580907 52.363316,5.580889 52.363319,5.580872 52.363322,5.580854 52.363326,5.580837 52.363329,5.580819 52.363332,5.580802 52.363336,5.580784 52.363339,5.580767 52.363342,5.58075 52.363345,5.580732 52.363349,5.580715 52.363352,5.580697 52.363356,5.58068 52.363359,5.580663 52.363362,5.580645 52.363366,5.580628 52.363369,5.58061 52.363373,5.580593 52.363376,5.580576 52.36338,5.580558 52.363383,5.580541 52.363387,5.580524 52.36339,5.580506 52.363394,5.580489 52.363397,5.580472 52.363401,5.580454 52.363404,5.580437 52.363408,5.58042 52.363411,5.580403 52.363415,5.580385 52.363419,5.580368 52.363422,5.580351 52.363426,5.580333 52.36343,5.580316 52.363433,5.580299 52.363437,5.580282 52.363441,5.580265 52.363444,5.580247 52.363448,5.58023 52.363452,5.580213 52.363456,5.580196 52.363459,5.580179 52.363463,5.580161 52.363467,5.580144 52.363471,5.580127 52.363475,5.58011 52.363478,5.580093 52.363482,5.580076 52.363486,5.580058 52.36349,5.580041 52.363494,5.580024 52.363498,5.580007 52.363502,5.57999 52.363506,5.579973 52.36351,5.579956 52.363513,5.579939 52.363517,5.579922 52.363521,5.579905 52.363525,5.579888 52.363529,5.579871 52.363533,5.579854 52.363537,5.579837 52.363541,5.57982 52.363546,5.579803 52.36355,5.579786 52.363554,5.579769 52.363558,5.579752 52.363562,5.579735 52.363566,5.579718 52.36357,5.579701 52.363574,5.579684 52.363579,5.579667 52.363583,5.57965 52.363587,5.579633 52.363591,5.579616 52.363595,5.579599 52.3636,5.579582 52.363604,5.579565 52.363608,5.579549 52.363612,5.579532 52.363617,5.579515 52.363621,5.579498 52.363625,5.579481 52.36363,5.579464 52.363634,5.579447 52.363638,5.579431 52.363643,5.579431 52.363643,5.578043 52.363967,5.576651 52.364293,5.575259 52.364618,5.573868 52.364944,5.572476 52.365269,5.571084 52.365595,5.569692 52.36592,5.568301 52.366245,5.568182 52.366273,5.567264 52.366485,5.567264 52.366485,5.567254 52.366487,5.567244 52.36649,5.567234 52.366492,5.567224 52.366494,5.567214 52.366497,5.567205 52.366499,5.567195 52.366502,5.567185 52.366504,5.567175 52.366507,5.567165 52.366509,5.567155 52.366512,5.567145 52.366514,5.567135 52.366517,5.567125 52.366519,5.567115 52.366522,5.567105 52.366524,5.567095 52.366527,5.567086 52.366529,5.567076 52.366532,5.567066 52.366534,5.567056 52.366537,5.567046 52.366539,5.567036 52.366542,5.567026 52.366544,5.567016 52.366547,5.567006 52.366549,5.566996 52.366552,5.566987 52.366554,5.566977 52.366557,5.566967 52.366559,5.566957 52.366562,5.566947 52.366564,5.566937 52.366567,5.566927 52.366569,5.566917 52.366572,5.566908 52.366575,5.566898 52.366577,5.566888 52.36658,5.566878 52.366582,5.566868 52.366585,5.566858 52.366587,5.566848 52.36659,5.566839 52.366593,5.566829 52.366595,5.566819 52.366598,5.566809 52.3666,5.566799 52.366603,5.566789 52.366605,5.56678 52.366608,5.56677 52.366611,5.56676 52.366613,5.56675 52.366616,5.56674 52.366619,5.56673 52.366621,5.566721 52.366624,5.566711 52.366626,5.566701 52.366629,5.566691 52.366632,5.566681 52.366634,5.566672 52.366637,5.566662 52.36664,5.566652 52.366642,5.566642 52.366645,5.566632 52.366647,5.566623 52.36665,5.566613 52.366653,5.566603 52.366655,5.566593 52.366658,5.566583 52.366661,5.566574 52.366663,5.566564 52.366666,5.566554 52.366669,5.566544 52.366671,5.566534 52.366674,5.566525 52.366677,5.566515 52.366679,5.566505 52.366682,5.566495 52.366685,5.566486 52.366687,5.566476 52.36669,5.566466 52.366693,5.566456 52.366696,5.566447 52.366698,5.566437 52.366701,5.566427 52.366704,5.566417 52.366706,5.566408 52.366709,5.566398 52.366712,5.566388 52.366715,5.566378 52.366717,5.566369 52.36672,5.566359 52.366723,5.566349 52.366726,5.566339 52.366728,5.56633 52.366731,5.56632 52.366734,5.56631 52.366737,5.566301 52.366739,5.566291 52.366742,5.566291 52.366742,5.566276 52.366746,5.56626 52.366751,5.566245 52.366755,5.56623 52.36676,5.566215 52.366764,5.5662 52.366769,5.566185 52.366773,5.56617 52.366778,5.566154 52.366782,5.566139 52.366787,5.566124 52.366791,5.566109 52.366796,5.566094 52.3668,5.566079 52.366805,5.566064 52.366809,5.566049 52.366814,5.566034 52.366819,5.566019 52.366823,5.566004 52.366828,5.565989 52.366832,5.565974 52.366837,5.565959 52.366842,5.565944 52.366846,5.565929 52.366851,5.565914 52.366856,5.565899 52.36686,5.565884 52.366865,5.565869 52.36687,5.565854 52.366875,5.565839 52.366879,5.565824 52.366884,5.565809 52.366889,5.565795 52.366894,5.56578 52.366898,5.565765 52.366903,5.56575 52.366908,5.565735 52.366913,5.56572 52.366918,5.565705 52.366922,5.565691 52.366927,5.565676 52.366932,5.565661 52.366937,5.565646 52.366942,5.565631 52.366947,5.565617 52.366952,5.565602 52.366957,5.565587 52.366962,5.565572 52.366967,5.565558 52.366971,5.565543 52.366976,5.565528 52.366981,5.565514 52.366986,5.565499 52.366991,5.565484 52.366996,5.56547 52.367001,5.565455 52.367006,5.56544 52.367011,5.565426 52.367017,5.565411 52.367022,5.565396 52.367027,5.565382 52.367032,5.565367 52.367037,5.565353 52.367042,5.565338 52.367047,5.565323 52.367052,5.565309 52.367057,5.565294 52.367062,5.56528 52.367068,5.565265 52.367073,5.565251 52.367078,5.565236 52.367083,5.565222 52.367088,5.565207 52.367094,5.565193 52.367099,5.565178 52.367104,5.565164 52.367109,5.565149 52.367115,5.565135 52.36712,5.56512 52.367125,5.565106 52.36713,5.565092 52.367136,5.565077 52.367141,5.565063 52.367146,5.565048 52.367152,5.565034 52.367157,5.56502 52.367162,5.565005 52.367168,5.564991 52.367173,5.564977 52.367179,5.564962 52.367184,5.564948 52.367189,5.564934 52.367195,5.56492 52.3672,5.564905 52.367206,5.564891 52.367211,5.564877 52.367217,5.564863 52.367222,5.564848 52.367227,5.564834 52.367233,5.564834 52.367233,5.564083 52.367536,5.563979 52.367561,5.563959 52.367562,5.563928 52.367563,5.563897 52.367562,5.563867 52.367559,5.563837 52.367554,5.563809 52.367547,5.563782 52.367539,5.563756 52.367528,5.563732 52.367517,5.563393 52.367292,5.563168 52.367143,5.561839 52.366255,5.560431 52.365316,5.559394 52.364621,5.558356 52.363926,5.557319 52.363232,5.556281 52.362537,5.555135 52.361771,5.548675 52.357454,5.548425 52.357287,5.54743 52.356621,5.546436 52.355956,5.545441 52.35529,5.544447 52.354625,5.544412 52.354597,5.55307 52.349725,5.549058 52.347051,5.554294 52.336979,5.547677 52.335739,5.552691 52.334281,5.552725 52.334271,5.552759 52.334257,5.552791 52.334242,5.55282 52.334224,5.552846 52.334205,5.552868 52.334184,5.552885 52.334165,5.552897 52.334137,5.552903 52.334112,5.552904 52.334087,5.552901 52.334058,5.552293 52.331544,5.55285 52.322571,5.553341 52.322358,5.553468 52.322289,5.553568 52.322205,5.553636 52.322109,5.553668 52.322007,5.553996 52.319543,5.55399 52.319433,5.553945 52.319326,5.553862 52.319228,5.553746 52.319144,5.553603 52.319077,5.553439 52.319032,5.551257 52.318601,5.549982 52.316239,5.549277 52.314803,5.548841 52.313867,5.548811 52.313751,5.548684 52.313261,5.548632 52.31306,5.548679 52.312918,5.548584 52.312586,5.548593 52.312524,5.548616 52.312493,5.548659 52.312459,5.548707 52.312446,5.548806 52.312411,5.548926 52.312348,5.548926 52.312348,5.548928 52.312346,5.548931 52.312345,5.548934 52.312344,5.548936 52.312342,5.548939 52.312341,5.548942 52.31234,5.548944 52.312338,5.548947 52.312337,5.54895 52.312336,5.548952 52.312334,5.548955 52.312333,5.548958 52.312332,5.54896 52.31233,5.548963 52.312329,5.548965 52.312327,5.548968 52.312326,5.54897 52.312325,5.548973 52.312323,5.548975 52.312322,5.548978 52.31232,5.548981 52.312319,5.548983 52.312318,5.548986 52.312316,5.548988 52.312315,5.548991 52.312313,5.548993 52.312312,5.548995 52.31231,5.548998 52.312309,5.549 52.312307,5.549003 52.312306,5.549005 52.312304,5.549008 52.312303,5.54901 52.312301,5.549013 52.3123,5.549015 52.312298,5.549017 52.312297,5.54902 52.312295,5.549022 52.312294,5.549024 52.312292,5.549027 52.312291,5.549029 52.312289,5.549031 52.312288,5.549034 52.312286,5.549036 52.312285,5.549038 52.312283,5.549041 52.312281,5.549043 52.31228,5.549045 52.312278,5.549047 52.312277,5.54905 52.312275,5.549052 52.312274,5.549054 52.312272,5.549056 52.31227,5.549059 52.312269,5.549061 52.312267,5.549063 52.312266,5.549065 52.312264,5.549067 52.312262,5.54907 52.312261,5.549072 52.312259,5.549074 52.312257,5.549076 52.312256,5.549078 52.312254,5.54908 52.312252,5.549082 52.312251,5.549084 52.312249,5.549087 52.312247,5.549089 52.312246,5.549091 52.312244,5.549093 52.312242,5.549095 52.312241,5.549097 52.312239,5.549099 52.312237,5.549101 52.312236,5.549103 52.312234,5.549105 52.312232,5.549107 52.31223,5.549109 52.312229,5.549111 52.312227,5.549113 52.312225,5.549115 52.312223,5.549117 52.312222,5.549118 52.31222,5.54912 52.312218,5.549122 52.312216,5.549124 52.312215,5.549126 52.312213,5.549128 52.312211,5.54913 52.312209,5.549132 52.312208,5.549133 52.312206,5.549135 52.312204,5.549137 52.312202,5.549139 52.3122,5.549141 52.312199,5.549142 52.312197,5.549144 52.312195,5.549146 52.312193,5.549148 52.312191,5.549148 52.312191,5.549148 52.312191,5.549149 52.31219,5.549149 52.31219,5.54915 52.312189,5.54915 52.312189,5.549151 52.312188,5.549151 52.312188,5.549152 52.312187,5.549152 52.312187,5.549152 52.312186,5.549153 52.312185,5.549153 52.312185,5.549154 52.312184,5.549154 52.312184,5.549155 52.312183,5.549155 52.312183,5.549156 52.312182,5.549156 52.312182,5.549156 52.312181,5.549157 52.312181,5.549157 52.31218,5.549158 52.312179,5.549158 52.312179,5.549159 52.312178,5.549159 52.312178,5.549159 52.312177,5.54916 52.312177,5.54916 52.312176,5.54916 52.312175,5.549161 52.312175,5.549161 52.312174,5.549162 52.312174,5.549162 52.312173,5.549162 52.312173,5.549163 52.312172,5.549163 52.312171,5.549163 52.312171,5.549164 52.31217,5.549164 52.31217,5.549164 52.312169,5.549165 52.312168,5.549165 52.312168,5.549165 52.312167,5.549166 52.312167,5.549166 52.312166,5.549166 52.312166,5.549167 52.312165,5.549167 52.312164,5.549167 52.312164,5.549168 52.312163,5.549168 52.312163,5.549168 52.312162,5.549168 52.312161,5.549169 52.312161,5.549169 52.31216,5.549169 52.31216,5.549169 52.312159,5.54917 52.312158,5.54917 52.312158,5.54917 52.312157,5.54917 52.312157,5.549171 52.312156,5.549171 52.312155,5.549171 52.312155,5.549171 52.312154,5.549171 52.312154,5.549172 52.312153,5.549172 52.312152,5.549172 52.312152,5.549172 52.312151,5.549172 52.312151,5.549173 52.31215,5.549173 52.312149,5.549173 52.312149,5.549173 52.312148,5.549173 52.312148,5.549174 52.312147,5.549174 52.312146,5.549174 52.312146,5.549174 52.312145,5.549174 52.312145,5.549174 52.312144,5.549174 52.312143,5.549175 52.312143,5.549175 52.312142,5.549175 52.312141,5.549175 52.312141,5.549175 52.31214,5.549175 52.31214,5.549175 52.312139,5.549175 52.312138,5.549175 52.312138,5.549175 52.312137,5.549176 52.312137,5.549176 52.312136,5.549176 52.312135,5.549176 52.312135,5.549176 52.312134,5.549176 52.312134,5.549176 52.312134,5.54919 52.312135,5.549347 52.311526,5.549317 52.311527,5.549122 52.311136,5.549052 52.311056,5.548932 52.311004,5.548733 52.310973,5.548506 52.310937,5.547894 52.31084,5.547623 52.310778,5.547437 52.310676,5.547339 52.310637,5.547012 52.310491,5.547012 52.310491,5.547011 52.31049,5.547009 52.31049,5.547008 52.310489,5.547007 52.310488,5.547005 52.310488,5.547004 52.310487,5.547003 52.310486,5.547001 52.310485,5.547 52.310485,5.546999 52.310484,5.546997 52.310483,5.546996 52.310482,5.546995 52.310482,5.546993 52.310481,5.546992 52.31048,5.546991 52.310479,5.546989 52.310479,5.546988 52.310478,5.546987 52.310477,5.546986 52.310476,5.546984 52.310476,5.546983 52.310475,5.546982 52.310474,5.54698 52.310473,5.546979 52.310473,5.546978 52.310472,5.546977 52.310471,5.546975 52.31047,5.546974 52.310469,5.546973 52.310469,5.546971 52.310468,5.54697 52.310467,5.546969 52.310466,5.546968 52.310465,5.546966 52.310465,5.546965 52.310464,5.546964 52.310463,5.546963 52.310462,5.546961 52.310462,5.54696 52.310461,5.546959 52.31046,5.546958 52.310459,5.546956 52.310458,5.546955 52.310457,5.546954 52.310457,5.546953 52.310456,5.546952 52.310455,5.54695 52.310454,5.546949 52.310453,5.546948 52.310453,5.546947 52.310452,5.546946 52.310451,5.546944 52.31045,5.546943 52.310449,5.546942 52.310448,5.546941 52.310448,5.54694 52.310447,5.546938 52.310446,5.546937 52.310445,5.546936 52.310444,5.546935 52.310443,5.546934 52.310443,5.546933 52.310442,5.546932 52.310441,5.54693 52.31044,5.546929 52.310439,5.546928 52.310438,5.546927 52.310438,5.546926 52.310437,5.546925 52.310436,5.546924 52.310435,5.546922 52.310434,5.546921 52.310433,5.54692 52.310432,5.546919 52.310431,5.546918 52.310431,5.546917 52.31043,5.546916 52.310429,5.546915 52.310428,5.546914 52.310427,5.546912 52.310426,5.546911 52.310425,5.54691 52.310425,5.546909 52.310424,5.546908 52.310423,5.546907 52.310422,5.546906 52.310421,5.546905 52.31042,5.546904 52.310419,5.546903 52.310418,5.546902 52.310417,5.546901 52.310417,5.5469 52.310416,5.546899 52.310415,5.546898 52.310414,5.546897 52.310413,5.546895 52.310412,5.546894 52.310411,5.546893 52.31041,5.546893 52.31041,5.546892 52.310409,5.546891 52.310408,5.54689 52.310407,5.546889 52.310406,5.546888 52.310405,5.546886 52.310404,5.546885 52.310403,5.546884 52.310402,5.546883 52.310401,5.546882 52.3104,5.546881 52.310399,5.54688 52.310397,5.546878 52.310396,5.546877 52.310395,5.546876 52.310394,5.546875 52.310393,5.546874 52.310392,5.546873 52.310391,5.546872 52.31039,5.546871 52.310389,5.54687 52.310388,5.546868 52.310387,5.546867 52.310386,5.546866 52.310384,5.546865 52.310383,5.546864 52.310382,5.546863 52.310381,5.546862 52.31038,5.546861 52.310379,5.54686 52.310378,5.546859 52.310377,5.546858 52.310376,5.546857 52.310375,5.546856 52.310373,5.546855 52.310372,5.546854 52.310371,5.546853 52.31037,5.546852 52.310369,5.546851 52.310368,5.54685 52.310367,5.546849 52.310366,5.546848 52.310365,5.546847 52.310363,5.546846 52.310362,5.546845 52.310361,5.546844 52.31036,5.546843 52.310359,5.546842 52.310358,5.546841 52.310357,5.54684 52.310355,5.546839 52.310354,5.546838 52.310353,5.546837 52.310352,5.546836 52.310351,5.546835 52.31035,5.546834 52.310349,5.546833 52.310347,5.546832 52.310346,5.546832 52.310345,5.546831 52.310344,5.54683 52.310343,5.546829 52.310342,5.546828 52.310341,5.546827 52.310339,5.546826 52.310338,5.546825 52.310337,5.546824 52.310336,5.546823 52.310335,5.546823 52.310334,5.546822 52.310332,5.546821 52.310331,5.54682 52.31033,5.546819 52.310329,5.546818 52.310328,5.546818 52.310327,5.546817 52.310325,5.546816 52.310324,5.546815 52.310323,5.546814 52.310322,5.546813 52.310321,5.546813 52.31032,5.546812 52.310318,5.546811 52.310317,5.54681 52.310316,5.546809 52.310315,5.546809 52.310314,5.546808 52.310313,5.546807 52.310311,5.546806 52.31031,5.546806 52.310309,5.546805 52.310308,5.546804 52.310307,5.546803 52.310305,5.546803 52.310304,5.546802 52.310303,5.546801 52.310302,5.5468 52.310301,5.5468 52.310299,5.546799 52.310298,5.546799 52.310298,5.546798 52.310297,5.546797 52.310295,5.546796 52.310293,5.546795 52.310292,5.546794 52.31029,5.546793 52.310289,5.546793 52.310287,5.546792 52.310285,5.546791 52.310284,5.54679 52.310282,5.546789 52.310281,5.546788 52.310279,5.546787 52.310277,5.546786 52.310276,5.546785 52.310274,5.546785 52.310273,5.546784 52.310271,5.546783 52.310269,5.546782 52.310268,5.546781 52.310266,5.54678 52.310265,5.546779 52.310263,5.546778 52.310261,5.546778 52.31026,5.546777 52.310258,5.546776 52.310256,5.546775 52.310255,5.546774 52.310253,5.546773 52.310252,5.546772 52.31025,5.546772 52.310248,5.546771 52.310247,5.54677 52.310245,5.546769 52.310244,5.546768 52.310242,5.546767 52.31024,5.546766 52.310239,5.546765 52.310237,5.546765 52.310236,5.546764 52.310234,5.546763 52.310232,5.546762 52.310231,5.546761 52.310229,5.54676 52.310227,5.54676 52.310226,5.546759 52.310224,5.546758 52.310223,5.546757 52.310221,5.546756 52.310219,5.546755 52.310218,5.546754 52.310216,5.546754 52.310215,5.546753 52.310213,5.546752 52.310211,5.546751 52.31021,5.54675 52.310208,5.546749 52.310206,5.546749 52.310205,5.546748 52.310203,5.546747 52.310202,5.546746 52.3102,5.546745 52.310198,5.546744 52.310197,5.546744 52.310195,5.546743 52.310194,5.546742 52.310192,5.546741 52.31019,5.54674 52.310189,5.54674 52.310187,5.546739 52.310185,5.546738 52.310184,5.546737 52.310182,5.546736 52.310181,5.546735 52.310179,5.546735 52.310177,5.546734 52.310176,5.546733 52.310174,5.546732 52.310172,5.546731 52.310171,5.546731 52.310169,5.54673 52.310168,5.546729 52.310166,5.546728 52.310164,5.546727 52.310163,5.546727 52.310161,5.546726 52.310159,5.546725 52.310158,5.546724 52.310156,5.546723 52.310155,5.546723 52.310153,5.546722 52.310151,5.546721 52.31015,5.54672 52.310148,5.546719 52.310146,5.546719 52.310145,5.546718 52.310143,5.546717 52.310142,5.546716 52.31014,5.546715 52.310138,5.546715 52.310138,5.546695 52.310143,5.546653 52.310137,5.546561 52.310122,5.54648 52.310062,5.546389 52.30994,5.546368 52.309847,5.546346 52.309749,5.546256 52.309608,5.546274 52.309533,5.546204 52.309488,5.546032 52.309369,5.54591 52.309325,5.545823 52.309233,5.545685 52.309013,5.545677 52.309,5.545645 52.308885,5.545565 52.308745,5.545549 52.308622,5.545624 52.308491,5.545639 52.308444,5.545612 52.308399,5.545546 52.308364,5.545487 52.308318,5.545492 52.308283,5.545556 52.308238,5.545587 52.30816,5.545662 52.308062,5.545693 52.30798,5.545682 52.307945,5.545646 52.307921,5.545687 52.307898,5.545755 52.307872,5.545815 52.307861,5.545882 52.307835,5.545944 52.307774,5.546006 52.307686,5.545971 52.307637,5.545901 52.307589,5.545857 52.307548,5.545752 52.307542,5.545678 52.307545,5.545601 52.30758,5.545558 52.307576,5.545473 52.30754,5.545424 52.307449,5.545429 52.30741,5.545462 52.307362,5.545495 52.307355,5.545468 52.307317,5.545476 52.307284,5.545421 52.307174,5.545345 52.307166,5.545291 52.307118,5.545311 52.307097,5.545331 52.307073,5.545185 52.306935,5.544847 52.306552,5.544856 52.306392,5.544786 52.306277,5.544613 52.306167,5.544577 52.306165,5.544503 52.3061,5.544555 52.305984,5.544616 52.30595,5.54464 52.305744,5.544689 52.30547,5.544516 52.305278,5.544353 52.305224,5.544374 52.305121,5.544082 52.304713,5.543978 52.304545,5.543903 52.304252,5.543651 52.303367,5.543647 52.303354,5.54345 52.302758,5.543303 52.302702,5.54323 52.302669,5.543092 52.302587,5.542913 52.3025,5.54274 52.302447,5.542684 52.302352,5.542644 52.302232,5.542596 52.301991,5.542616 52.301829,5.542622 52.301718,5.542626 52.301684,5.542636 52.301651,5.542649 52.301625,5.542711 52.301584,5.542489 52.301369,5.542459 52.301237,5.542236 52.300944,5.542189 52.300463,5.542302 52.300074,5.542256 52.300073,5.542168 52.30007,5.542149 52.300049,5.542105 52.300002,5.542064 52.299943,5.541947 52.299898,5.541923 52.299893,5.5419 52.299887,5.541878 52.299879,5.541857 52.29987,5.541838 52.29986,5.54182 52.299847,5.541814 52.299838,5.541809 52.299828,5.541807 52.299818,5.541806 52.299808,5.541807 52.299796,5.541647 52.299713,5.541628 52.299537,5.541541 52.29934,5.541483 52.299227,5.541251 52.298973,5.541193 52.298876,5.540891 52.298374,5.540831 52.298316,5.540577 52.298139,5.540319 52.297981,5.540211 52.29792,5.540121 52.297736,5.53993 52.297051,5.53989 52.296699,5.539693 52.296504,5.539429 52.296041,5.539314 52.295733,5.538766 52.294639,5.538513 52.29446,5.538338 52.294386,5.537647 52.294097,5.537552 52.293888,5.537508 52.293788,5.537561 52.293707,5.537588 52.293604,5.537245 52.293419,5.537142 52.293233,5.536993 52.293126,5.536668 52.292535,5.53668 52.292234,5.536859 52.291899,5.536811 52.291803,5.536736 52.291786,5.536694 52.291734,5.536691 52.29173,5.536688 52.291725,5.536687 52.291721,5.536686 52.291716,5.536686 52.291711,5.536687 52.291706,5.536688 52.291702,5.536691 52.291697,5.536695 52.291691,5.536704 52.291684,5.536714 52.291677,5.536727 52.29167,5.536702 52.291633,5.5367 52.291625,5.536696 52.291616,5.536691 52.291609,5.536685 52.291601,5.536678 52.291594,5.536669 52.291588,5.536659 52.291582,5.536649 52.291577,5.536642 52.291574,5.536629 52.291569,5.536615 52.291566,5.536601 52.291563,5.536582 52.291561,5.53625 52.291588,5.536138 52.291565,5.535582 52.290519,5.535563 52.290488,5.536144 52.289895,5.536187 52.289852,5.538012 52.289271,5.538045 52.28926,5.538076 52.289247,5.538105 52.289233,5.538131 52.289216,5.538147 52.289204,5.538153 52.289198,5.538159 52.289192,5.538163 52.289185,5.538165 52.289178,5.538167 52.289171,5.538168 52.289163,5.538167 52.289156,5.538165 52.289149,5.538162 52.289142,5.538157 52.289135,5.538152 52.289129,5.538145 52.289123,5.538137 52.289117,5.538129 52.289112,5.53812 52.289108,5.53811 52.289104,5.538099 52.289101,5.538088 52.289098,5.538077 52.289097,5.53807 52.289096,5.538033 52.289092,5.537996 52.28909,5.537959 52.28909,5.537933 52.289092,5.53777 52.289065,5.536493 52.289169,5.536083 52.289123,5.535899 52.288912,5.535454 52.288472,5.535339 52.288383,5.535092 52.2882,5.534677 52.287747,5.534513 52.28767,5.53451 52.287645,5.534537 52.287479,5.534521 52.287425,5.534455 52.287371,5.534329 52.287271,5.534252 52.287058,5.534238 52.28682,5.534026 52.286165,5.53376 52.28602,5.533639 52.285955,5.5335 52.285706,5.533424 52.285405,5.533402 52.285318,5.533396 52.285245,5.533386 52.285198,5.533498 52.285058,5.533406 52.284883,5.533324 52.284675,5.532979 52.284287,5.533042 52.284204,5.533014 52.28408,5.533098 52.284065,5.532482 52.282823,5.532217 52.282875,5.532196 52.282847,5.532147 52.28256,5.531878 52.282275,5.531753 52.281997,5.531771 52.281826,5.531556 52.281409,5.531319 52.281042,5.531203 52.280914,5.530971 52.280655,5.530856 52.280229,5.530474 52.279583,5.530311 52.279335,5.530343 52.279171,5.530307 52.278922,5.530066 52.278637,5.529975 52.278326,5.529823 52.27819,5.529523 52.277802,5.529424 52.277587,5.529333 52.277455,5.529211 52.277397,5.529202 52.277321,5.529335 52.277182,5.529306 52.276885,5.529065 52.276634,5.529151 52.276422,5.529212 52.276271,5.529421 52.276149,5.529156 52.276001,5.529159 52.275758,5.529066 52.275529,5.528942 52.275372,5.528719 52.275319,5.528691 52.27526,5.528763 52.275162,5.528778 52.275103,5.52875 52.27499,5.528623 52.274888,5.52862 52.274886,5.526299 52.273455,5.526299 52.273455,5.526296 52.273454,5.526293 52.273453,5.526289 52.273451,5.526286 52.27345,5.526283 52.273448,5.52628 52.273447,5.526277 52.273446,5.526274 52.273444,5.526271 52.273443,5.526267 52.273442,5.526264 52.27344,5.526261 52.273439,5.526258 52.273438,5.526255 52.273436,5.526251 52.273435,5.526248 52.273434,5.526245 52.273433,5.526241 52.273432,5.526238 52.27343,5.526235 52.273429,5.526231 52.273428,5.526228 52.273427,5.526225 52.273426,5.526221 52.273425,5.526218 52.273424,5.526214 52.273422,5.526211 52.273421,5.526207 52.27342,5.526204 52.273419,5.5262 52.273418,5.526197 52.273417,5.526193 52.273416,5.52619 52.273415,5.526186 52.273414,5.526183 52.273414,5.526179 52.273413,5.526176 52.273412,5.526172 52.273411,5.526169 52.27341,5.526165 52.273409,5.526161 52.273408,5.526158 52.273407,5.526154 52.273407,5.526151 52.273406,5.526147 52.273405,5.526143 52.273404,5.52614 52.273404,5.526136 52.273403,5.526132 52.273402,5.526129 52.273401,5.526125 52.273401,5.526121 52.2734,5.526117 52.2734,5.526114 52.273399,5.52611 52.273398,5.526106 52.273398,5.526102 52.273397,5.526099 52.273397,5.526095 52.273396,5.526091 52.273396,5.526087 52.273395,5.526084 52.273395,5.52608 52.273394,5.526076 52.273394,5.526072 52.273393,5.526069 52.273393,5.526065 52.273392,5.526061 52.273392,5.526057 52.273392,5.526053 52.273391,5.526049 52.273391,5.526046 52.273391,5.526042 52.273391,5.526038 52.27339,5.526034 52.27339,5.52603 52.27339,5.526027 52.27339,5.526023 52.273389,5.526019 52.273389,5.526015 52.273389,5.526011 52.273389,5.526007 52.273389,5.526003 52.273389,5.526 52.273389,5.525996 52.273388,5.525992 52.273388,5.525988 52.273388,5.525984 52.273388,5.52598 52.273388,5.525976 52.273388,5.525973 52.273388,5.525969 52.273388,5.525965 52.273388,5.525961 52.273389,5.525957 52.273389,5.525953 52.273389,5.52595 52.273389,5.525946 52.273389,5.525942 52.273389,5.525942 52.273389,5.525939 52.273389,5.525936 52.27339,5.525933 52.27339,5.525931 52.27339,5.525928 52.27339,5.525925 52.273391,5.525922 52.273391,5.52592 52.273391,5.525917 52.273392,5.525914 52.273392,5.525911 52.273392,5.525908 52.273393,5.525906 52.273393,5.525903 52.273393,5.5259 52.273394,5.525897 52.273394,5.525895 52.273394,5.525892 52.273395,5.525889 52.273395,5.525886 52.273395,5.525884 52.273396,5.525881 52.273396,5.525878 52.273397,5.525876 52.273397,5.525873 52.273398,5.52587 52.273398,5.525867 52.273399,5.525865 52.273399,5.525862 52.273399,5.525859 52.2734,5.525857 52.2734,5.525854 52.273401,5.525851 52.273401,5.525848 52.273402,5.525846 52.273403,5.525843 52.273403,5.52584 52.273404,5.525838 52.273404,5.525835 52.273405,5.525832 52.273405,5.52583 52.273406,5.525827 52.273407,5.525825 52.273407,5.525822 52.273408,5.525819 52.273408,5.525817 52.273409,5.525814 52.27341,5.525811 52.27341,5.525809 52.273411,5.525806 52.273412,5.525804 52.273412,5.525801 52.273413,5.525799 52.273414,5.525796 52.273414,5.525793 52.273415,5.525791 52.273416,5.525788 52.273417,5.525786 52.273417,5.525783 52.273418,5.525781 52.273419,5.525778 52.27342,5.525776 52.27342,5.525773 52.273421,5.525771 52.273422,5.525768 52.273423,5.525766 52.273424,5.525763 52.273424,5.525761 52.273425,5.525758 52.273426,5.525756 52.273427,5.525753 52.273428,5.525751 52.273429,5.525748 52.273429,5.525746 52.27343,5.525744 52.273431,5.525741 52.273432,5.525739 52.273433,5.525736 52.273434,5.525734 52.273435,5.525732 52.273436,5.525729 52.273437,5.525727 52.273438,5.525724 52.273439,5.525722 52.27344,5.52572 52.273441,5.525717 52.273441,5.525715 52.273442,5.525713 52.273443,5.525711 52.273444,5.525708 52.273445,5.525706 52.273446,5.525704 52.273447,5.525701 52.273449,5.525699 52.27345,5.525697 52.273451,5.525695 52.273452,5.525692 52.273453,5.52569 52.273454,5.525688 52.273455,5.525688 52.273455,5.525576 52.27348,5.525317 52.2735,5.524784 52.273615,5.524712 52.27362,5.524614 52.273627,5.524438 52.273638,5.524215 52.273689,5.5241 52.273689,5.52396 52.273689,5.523888 52.273664,5.523746 52.273614,5.523477 52.27353,5.523326 52.273464,5.523003 52.273478,5.522967 52.273539,5.522798 52.273562,5.522546 52.273557,5.522534 52.273557,5.52227 52.273537,5.522041 52.273475,5.52197 52.273453,5.521503 52.27331,5.521505 52.273231,5.521459 52.27305,5.520735 52.272985,5.520264 52.272918,5.519627 52.272861,5.519488 52.272901,5.519193 52.272893,5.519192 52.272776,5.519065 52.272702,5.518948 52.272634,5.518691 52.272646,5.518471 52.272703,5.51832 52.272726,5.518199 52.272694,5.518198 52.272592,5.517907 52.272441,5.517543 52.272439,5.516999 52.272235,5.516822 52.272334,5.516655 52.272346,5.5165 52.272322,5.516435 52.272288,5.516391 52.272179,5.51609 52.272122,5.515827 52.272154,5.515792 52.272155,5.515727 52.272086,5.515577 52.272017,5.515323 52.272009,5.515201 52.272026,5.51511 52.272005,5.514833 52.271991,5.5148 52.271936,5.514786 52.271913,5.514592 52.271862,5.514243 52.271882,5.513955 52.271822,5.513983 52.271724,5.513647 52.271458,5.513223 52.271442,5.512981 52.271515,5.512721 52.271461,5.51267 52.27143,5.512693 52.271344,5.512632 52.271339,5.512339 52.271378,5.512186 52.271408,5.512115 52.271422,5.511907 52.271417,5.511852 52.271405,5.511825 52.271364,5.511781 52.271295,5.51175 52.271247,5.511583 52.27123,5.511384 52.271208,5.511336 52.271142,5.511073 52.271063,5.510691 52.271054,5.510211 52.270929,5.510041 52.270942,5.509801 52.270846,5.509841 52.270796,5.50977 52.270745,5.509624 52.270677,5.509373 52.270674,5.509146 52.270673,5.508939 52.270718,5.508755 52.270737,5.508641 52.270675,5.508383 52.270698,5.508292 52.270703,5.508193 52.270679,5.508085 52.27071,5.507944 52.270815,5.507873 52.27086,5.507849 52.270862,5.507668 52.270846,5.507582 52.270816,5.507516 52.270757,5.507491 52.270676,5.507453 52.27054,5.507412 52.270496,5.507167 52.27059,5.507097 52.27063,5.506899 52.270537,5.506942 52.27046,5.506922 52.270441,5.506952 52.270343,5.506932 52.270343,5.506902 52.270343,5.506828 52.270344,5.506729 52.2703,5.506532 52.270283,5.506254 52.270304,5.506151 52.270341,5.506004 52.270299,5.50585 52.270295,5.505749 52.270337,5.505706 52.270339,5.505575 52.270346,5.505385 52.270333,5.505203 52.270296,5.505137 52.27026,5.505112 52.270153,5.505084 52.270113,5.504826 52.270068,5.50474 52.270071,5.504677 52.270116,5.504687 52.270161,5.504627 52.270175,5.50442 52.270194,5.504228 52.270199,5.504096 52.270171,5.503992 52.270145,5.503979 52.270122,5.503965 52.270097,5.503941 52.269988,5.503807 52.269967,5.503722 52.269993,5.503641 52.270051,5.503537 52.270051,5.503335 52.270008,5.50332 52.269953,5.503241 52.269822,5.50316 52.26978,5.503132 52.269805,5.503001 52.269836,5.502885 52.269865,5.50263 52.269887,5.502392 52.269905,5.502248 52.269903,5.50198 52.269866,5.501793 52.269823,5.501599 52.269763,5.501457 52.269692,5.501338 52.269622,5.501318 52.269589,5.501363 52.269571,5.501348 52.269524,5.501315 52.269492,5.501259 52.269476,5.501219 52.269486,5.501163 52.269523,5.501125 52.269534,5.501062 52.26954,5.500832 52.269526,5.500716 52.2695,5.500494 52.269479,5.500395 52.269459,5.500408 52.269439,5.500377 52.269397,5.500339 52.269356,5.500258 52.26935,5.500198 52.269366,5.500165 52.269412,5.500023 52.269434,5.499698 52.269436,5.499437 52.269413,5.499348 52.269402,5.498939 52.269353,5.49877 52.269307,5.498611 52.269261,5.498616 52.269244,5.498547 52.269221,5.49847 52.26921,5.498314 52.269156,5.498291 52.269148,5.49823 52.269126,5.498074 52.269127,5.497902 52.269134,5.497776 52.269118,5.497741 52.269055,5.497547 52.269001,5.497485 52.268915,5.497288 52.26885,5.497051 52.26884,5.496901 52.268835,5.496731 52.268868,5.496652 52.268881,5.496487 52.268867,5.496218 52.268835,5.496012 52.268772,5.495892 52.268704,5.495611 52.268551,5.495398 52.268456,5.495311 52.268435,5.495194 52.268407,5.494965 52.26842,5.494834 52.26843,5.494762 52.268408,5.49466 52.268344,5.494594 52.268293,5.494517 52.268227,5.494404 52.268215,5.494281 52.268223,5.494144 52.268267,5.493994 52.268294,5.493745 52.268322,5.493537 52.268321,5.493302 52.268306,5.493206 52.268275,5.493143 52.268255,5.493115 52.268239,5.493032 52.268191,5.49293 52.268086,5.492803 52.268019,5.492523 52.267986,5.492274 52.268023,5.492172 52.268032,5.491884 52.268024,5.49176 52.268013,5.491574 52.267957,5.491431 52.267862,5.491404 52.267839,5.491377 52.267815,5.491268 52.267694,5.491094 52.267597,5.490999 52.267575,5.490922 52.267579,5.490743 52.267556,5.490618 52.267524,5.490403 52.267484,5.490242 52.267415,5.490256 52.267391,5.490247 52.267337,5.490161 52.267302,5.490025 52.267346,5.490032 52.267379,5.489987 52.267383,5.489842 52.267364,5.489611 52.26727,5.48957 52.267235,5.489579 52.267186,5.489552 52.267161,5.489465 52.267127,5.489377 52.267127,5.489373 52.267163,5.489341 52.267187,5.489276 52.267198,5.48916 52.267185,5.489006 52.267149,5.488818 52.267051,5.488709 52.266947,5.488668 52.266878,5.488731 52.26683,5.488825 52.266757,5.488825 52.266757,5.488826 52.266757,5.488826 52.266756,5.488827 52.266755,5.488827 52.266755,5.488828 52.266754,5.488828 52.266753,5.488828 52.266753,5.488829 52.266752,5.488829 52.266751,5.48883 52.266751,5.48883 52.26675,5.48883 52.266749,5.488831 52.266748,5.488831 52.266748,5.488831 52.266747,5.488832 52.266746,5.488832 52.266746,5.488832 52.266745,5.488832 52.266744,5.488833 52.266743,5.488833 52.266743,5.488833 52.266742,5.488833 52.266741,5.488834 52.266741,5.488834 52.26674,5.488834 52.266739,5.488834 52.266738,5.488834 52.266738,5.488834 52.266737,5.488834 52.266736,5.488834 52.266735,5.488834 52.266735,5.488834 52.266734,5.488834 52.266733,5.488834 52.266732,5.488834 52.266732,5.488834 52.266731,5.488834 52.26673,5.488834 52.266729,5.488834 52.266729,5.488834 52.266728,5.488834 52.266727,5.488834 52.266727,5.488834 52.266726,5.488834 52.266725,5.488833 52.266724,5.488833 52.266724,5.488833 52.266723,5.488833 52.266722,5.488832 52.266721,5.488832 52.266721,5.488832 52.26672,5.488832 52.266719,5.488831 52.266719,5.488831 52.266718,5.488831 52.266717,5.48883 52.266716,5.48883 52.266716,5.48883 52.266715,5.488829 52.266714,5.488829 52.266714,5.488828 52.266713,5.488828 52.266712,5.488827 52.266712,5.488827 52.266711,5.488826 52.26671,5.488826 52.26671,5.488825 52.266709,5.488825 52.266708,5.488824 52.266708,5.488824 52.266707,5.488823 52.266706,5.488823 52.266706,5.488822 52.266705,5.488821 52.266704,5.488821 52.266704,5.48882 52.266703,5.488819 52.266703,5.488819 52.266702,5.488818 52.266701,5.488817 52.266701,5.488817 52.2667,5.488816 52.2667,5.488815 52.266699,5.488814 52.266698,5.488814 52.266698,5.488813 52.266697,5.488812 52.266697,5.488811 52.266696,5.488811 52.266696,5.48881 52.266695,5.488809 52.266695,5.488808 52.266694,5.488807 52.266694,5.488806 52.266693,5.488805 52.266692,5.488805 52.266692,5.488804 52.266692,5.488803 52.266691,5.488803 52.266691,5.487961 52.266317,5.487952 52.266319,5.48794 52.266321,5.487241 52.266393,5.487151 52.266371,5.487122 52.266364,5.485878 52.266148,5.485878 52.266148,5.485876 52.266148,5.485875 52.266147,5.485873 52.266147,5.485872 52.266147,5.48587 52.266147,5.485868 52.266147,5.485867 52.266146,5.485865 52.266146,5.485864 52.266146,5.485862 52.266146,5.48586 52.266146,5.485859 52.266145,5.485857 52.266145,5.485855 52.266145,5.485854 52.266145,5.485852 52.266145,5.485851 52.266145,5.485849 52.266145,5.485847 52.266144,5.485846 52.266144,5.485844 52.266144,5.485842 52.266144,5.485841 52.266144,5.485839 52.266144,5.485838 52.266144,5.485836 52.266143,5.485834 52.266143,5.485833 52.266143,5.485831 52.266143,5.485829 52.266143,5.485828 52.266143,5.485826 52.266143,5.485824 52.266143,5.485823 52.266143,5.485821 52.266143,5.48582 52.266142,5.485818 52.266142,5.485816 52.266142,5.485815 52.266142,5.485813 52.266142,5.485811 52.266142,5.48581 52.266142,5.485808 52.266142,5.485806 52.266142,5.485805 52.266142,5.485803 52.266142,5.485802 52.266142,5.4858 52.266142,5.485798 52.266142,5.485797 52.266142,5.485795 52.266142,5.485793 52.266142,5.485792 52.266142,5.48579 52.266142,5.485788 52.266142,5.485787 52.266142,5.485785 52.266142,5.485783 52.266142,5.485782 52.266142,5.48578 52.266142,5.485779 52.266142,5.485777 52.266142,5.485775 52.266142,5.485774 52.266142,5.485772 52.266142,5.48577 52.266142,5.485769 52.266142,5.485767 52.266142,5.485765 52.266142,5.485764 52.266142,5.485762 52.266142,5.485761 52.266142,5.485759 52.266142,5.485757 52.266142,5.485756 52.266143,5.485754 52.266143,5.485752 52.266143,5.485751 52.266143,5.485749 52.266143,5.485747 52.266143,5.485746 52.266143,5.485744 52.266143,5.485743 52.266143,5.485741 52.266143,5.485739 52.266144,5.485738 52.266144,5.485736 52.266144,5.485734 52.266144,5.485733 52.266144,5.485731 52.266144,5.48573 52.266144,5.485728 52.266144,5.485726 52.266145,5.485725 52.266145,5.485723 52.266145,5.485721 52.266145,5.48572 52.266145,5.485718 52.266145,5.485717 52.266146,5.485717 52.266146,5.485494 52.266185,5.485402 52.266202,5.485402 52.266202,5.485401 52.266202,5.485399 52.266202,5.485398 52.266202,5.485397 52.266203,5.485396 52.266203,5.485394 52.266203,5.485393 52.266203,5.485392 52.266203,5.485391 52.266203,5.485389 52.266203,5.485388 52.266204,5.485387 52.266204,5.485386 52.266204,5.485384 52.266204,5.485383 52.266204,5.485382 52.266204,5.485381 52.266204,5.485379 52.266204,5.485378 52.266205,5.485377 52.266205,5.485376 52.266205,5.485374 52.266205,5.485373 52.266205,5.485372 52.266205,5.485371 52.266205,5.485369 52.266205,5.485368 52.266205,5.485367 52.266205,5.485365 52.266205,5.485364 52.266205,5.485363 52.266206,5.485362 52.266206,5.48536 52.266206,5.485359 52.266206,5.485358 52.266206,5.485357 52.266206,5.485355 52.266206,5.485354 52.266206,5.485353 52.266206,5.485351 52.266206,5.48535 52.266206,5.485349 52.266206,5.485348 52.266206,5.485346 52.266206,5.485345 52.266206,5.485344 52.266206,5.485343 52.266206,5.485341 52.266206,5.48534 52.266206,5.485339 52.266206,5.485337 52.266206,5.485336 52.266205,5.485335 52.266205,5.485334 52.266205,5.485332 52.266205,5.485331 52.266205,5.48533 52.266205,5.485329 52.266205,5.485327 52.266205,5.485326 52.266205,5.485325 52.266205,5.485323 52.266205,5.485322 52.266205,5.485321 52.266204,5.48532 52.266204,5.485318 52.266204,5.485317 52.266204,5.485316 52.266204,5.485315 52.266204,5.485313 52.266204,5.485312 52.266204,5.485311 52.266203,5.48531 52.266203,5.485308 52.266203,5.485307 52.266203,5.485306 52.266203,5.485305 52.266203,5.485303 52.266203,5.485302 52.266202,5.485301 52.266202,5.4853 52.266202,5.485298 52.266202,5.485297 52.266202,5.485296 52.266201,5.485295 52.266201,5.485294 52.266201,5.485292 52.266201,5.485291 52.266201,5.48529 52.2662,5.485289 52.2662,5.485287 52.2662,5.485286 52.2662,5.485285 52.266199,5.485284 52.266199,5.485283 52.266199,5.485281 52.266199,5.48528 52.266198,5.485279 52.266198,5.485278 52.266198,5.485278 52.266198,5.483987 52.265964,5.482564 52.265707,5.481152 52.265452,5.479542 52.265162,5.477933 52.264872,5.476256 52.264568,5.476234 52.264514,5.476067 52.264476,5.475959 52.264428,5.475975 52.264393,5.475971 52.264389,5.475094 52.26423,5.474539 52.26413,5.474515 52.264174,5.474342 52.264195,5.474243 52.264184,5.473823 52.264113,5.473533 52.264061,5.473266 52.264005,5.473141 52.263978)),((5.542087 52.323732,5.542025 52.32361,5.540846 52.321307,5.540838 52.321291,5.540826 52.321269,5.540788 52.321194,5.540871 52.321178,5.540977 52.321157,5.54099 52.321155,5.540994 52.321154,5.54106 52.321141,5.541069 52.321139,5.541084 52.321139,5.541209 52.321114,5.542038 52.320948,5.54227 52.320919,5.542289 52.320917,5.542295 52.320916,5.542318 52.320912,5.542713 52.320843,5.542883 52.32081,5.543464 52.320697,5.543794 52.320672,5.544084 52.320713,5.544085 52.320714,5.544134 52.320721,5.544198 52.32073,5.544196 52.320752,5.54419 52.320799,5.544185 52.320832,5.544159 52.320941,5.544158 52.320944,5.544123 52.321036,5.544108 52.321065,5.544068 52.321136,5.544043 52.321177,5.544032 52.321199,5.544031 52.321203,5.544021 52.321202,5.54402 52.321205,5.54402 52.321205,5.54402 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321207,5.544018 52.321207,5.544018 52.321207,5.544018 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544016 52.321207,5.544016 52.321207,5.544016 52.321207,5.544016 52.321207,5.544016 52.321208,5.544016 52.321208,5.544016 52.321208,5.544016 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321209,5.544014 52.321209,5.544014 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.321211,5.544009 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321212,5.544006 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544002 52.321212,5.544002 52.321212,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321214,5.543998 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.543969 52.321215,5.543969 52.321215,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543938 52.321209,5.543929 52.321207,5.543928 52.321208,5.543916 52.321206,5.543926 52.321184,5.543917 52.321182,5.543873 52.321174,5.543821 52.321273,5.543813 52.321272,5.543781 52.32127,5.543806 52.321218,5.543845 52.321136,5.54382 52.321115,5.543807 52.320944,5.543694 52.320927,5.543572 52.32091,5.543393 52.320898,5.543309 52.320899,5.543206 52.320913,5.543085 52.320933,5.542978 52.320954,5.542863 52.320979,5.542678 52.321025,5.542593 52.321058,5.542564 52.32107,5.542528 52.321091,5.542502 52.321118,5.542496 52.321148,5.542499 52.321223,5.542466 52.321263,5.542495 52.321286,5.5425 52.321321,5.542507 52.321321,5.542508 52.321322,5.542509 52.321322,5.542511 52.32134,5.542509 52.32134,5.54251 52.321345,5.542514 52.321345,5.542514 52.321345,5.542514 52.321345,5.542514 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542516 52.321345,5.542516 52.321345,5.542516 52.321345,5.542516 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542519 52.321345,5.542519 52.321345,5.542519 52.321345,5.542519 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.542521 52.321345,5.542521 52.321345,5.542521 52.321345,5.542521 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542523 52.321345,5.542523 52.321345,5.542523 52.321345,5.542523 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542526 52.321345,5.542526 52.321346,5.542526 52.321346,5.542526 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542529 52.321346,5.542529 52.321346,5.542529 52.321346,5.542529 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542533 52.321346,5.542533 52.321347,5.542533 52.321347,5.542533 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542575 52.321353,5.542575 52.321353,5.542576 52.321354,5.542576 52.321354,5.542577 52.321354,5.542578 52.321354,5.542579 52.321354,5.54258 52.321354,5.54258 52.321354,5.542581 52.321354,5.542582 52.321354,5.542583 52.321354,5.542584 52.321355,5.542584 52.321355,5.542585 52.321355,5.542586 52.321355,5.542587 52.321355,5.542588 52.321355,5.542589 52.321355,5.542589 52.321355,5.54259 52.321355,5.542591 52.321355,5.542592 52.321355,5.542593 52.321355,5.542594 52.321355,5.542594 52.321355,5.542595 52.321356,5.542596 52.321356,5.542597 52.321356,5.542598 52.321356,5.542598 52.321356,5.542599 52.321356,5.5426 52.321356,5.542601 52.321356,5.542602 52.321356,5.542603 52.321356,5.542603 52.321356,5.542604 52.321356,5.542605 52.321356,5.542606 52.321356,5.542607 52.321356,5.542608 52.321356,5.542608 52.321356,5.542609 52.321356,5.54261 52.321356,5.542611 52.321356,5.542612 52.321356,5.542613 52.321356,5.542613 52.321356,5.542614 52.321356,5.542615 52.321356,5.542616 52.321356,5.542617 52.321356,5.542618 52.321356,5.542618 52.321356,5.542619 52.321356,5.54262 52.321356,5.542621 52.321356,5.542622 52.321356,5.542623 52.321356,5.542623 52.321356,5.542624 52.321356,5.542625 52.321356,5.542626 52.321356,5.542627 52.321356,5.542627 52.321356,5.542628 52.321356,5.542629 52.321356,5.54263 52.321356,5.542631 52.321355,5.542632 52.321355,5.542632 52.321355,5.542633 52.321355,5.542634 52.321355,5.542635 52.321355,5.542636 52.321355,5.542637 52.321355,5.542637 52.321355,5.542638 52.321355,5.542639 52.321355,5.54264 52.321355,5.542641 52.321355,5.542641 52.321355,5.542642 52.321354,5.542643 52.321354,5.542644 52.321354,5.542645 52.321354,5.542646 52.321354,5.542646 52.321354,5.542647 52.321354,5.542648 52.321354,5.542649 52.321354,5.54265 52.321353,5.54265 52.321353,5.542651 52.321353,5.542652 52.321353,5.542653 52.321353,5.542654 52.321353,5.542654 52.321353,5.542655 52.321353,5.542656 52.321352,5.542656 52.321352,5.542704 52.321344,5.542753 52.321335,5.54278 52.321328,5.54278 52.321328,5.54278 52.321328,5.54278 52.321328,5.542781 52.321328,5.542781 52.321328,5.542782 52.321327,5.542782 52.321327,5.542782 52.321327,5.542783 52.321327,5.542783 52.321327,5.542783 52.321327,5.542784 52.321327,5.542784 52.321327,5.542784 52.321327,5.542785 52.321327,5.542785 52.321327,5.542785 52.321326,5.542786 52.321326,5.542786 52.321326,5.542786 52.321326,5.542787 52.321326,5.542787 52.321326,5.542788 52.321326,5.542788 52.321326,5.542788 52.321326,5.542789 52.321326,5.542789 52.321325,5.542789 52.321325,5.54279 52.321325,5.54279 52.321325,5.54279 52.321325,5.542791 52.321325,5.542791 52.321325,5.542791 52.321325,5.542792 52.321325,5.542792 52.321324,5.542792 52.321324,5.542793 52.321324,5.542793 52.321324,5.542793 52.321324,5.542794 52.321324,5.542794 52.321324,5.542794 52.321324,5.542795 52.321323,5.542795 52.321323,5.542795 52.321323,5.542796 52.321323,5.542796 52.321323,5.542796 52.321323,5.542797 52.321323,5.542797 52.321323,5.542797 52.321322,5.542798 52.321322,5.542798 52.321322,5.542798 52.321322,5.542799 52.321322,5.542799 52.321322,5.542799 52.321322,5.5428 52.321322,5.5428 52.321321,5.5428 52.321321,5.542801 52.321321,5.542801 52.321321,5.542801 52.321321,5.542802 52.321321,5.542802 52.321321,5.542802 52.321321,5.542802 52.32132,5.542803 52.32132,5.542803 52.32132,5.542803 52.32132,5.542804 52.32132,5.542804 52.32132,5.542804 52.32132,5.542805 52.321319,5.542805 52.321319,5.542805 52.321319,5.542806 52.321319,5.542806 52.321319,5.542806 52.321319,5.542807 52.321319,5.542807 52.321318,5.542807 52.321318,5.542807 52.321318,5.542808 52.321318,5.542808 52.321318,5.542808 52.321318,5.542809 52.321317,5.542809 52.321317,5.542809 52.321317,5.542809 52.321317,5.54281 52.321317,5.54281 52.321317,5.54281 52.321317,5.542811 52.321316,5.542811 52.321316,5.542811 52.321316,5.542812 52.321316,5.542812 52.321316,5.542812 52.321316,5.542812 52.321316,5.542841 52.321301,5.542861 52.321291,5.542872 52.321285,5.542882 52.321281,5.542893 52.321276,5.542905 52.321271,5.542911 52.321269,5.542923 52.321264,5.54293 52.321261,5.542936 52.321259,5.542946 52.321257,5.542958 52.321255,5.542967 52.321254,5.542976 52.321253,5.542988 52.321253,5.542996 52.321253,5.543004 52.321253,5.543013 52.321253,5.543019 52.321253,5.543029 52.321252,5.543038 52.321252,5.543045 52.321252,5.543055 52.321252,5.543064 52.321251,5.543072 52.321251,5.543089 52.321249,5.543095 52.321248,5.543106 52.321247,5.543115 52.321245,5.543121 52.321244,5.543137 52.321241,5.543152 52.321238,5.54316 52.321236,5.543173 52.321232,5.543186 52.321229,5.543197 52.321225,5.543209 52.321221,5.543221 52.321217,5.543232 52.321213,5.543246 52.321208,5.543254 52.321206,5.543262 52.321203,5.543273 52.321199,5.543277 52.321198,5.543283 52.321196,5.543288 52.321195,5.543296 52.321194,5.543301 52.321194,5.543311 52.321194,5.543321 52.321196,5.543335 52.321198,5.543354 52.321201,5.543368 52.321204,5.54338 52.321206,5.543395 52.321209,5.543405 52.321211,5.543425 52.321216,5.543437 52.32122,5.543454 52.321225,5.543474 52.321232,5.543481 52.321235,5.543491 52.321239,5.543502 52.321244,5.543515 52.321249,5.543536 52.321257,5.543543 52.321259,5.543557 52.321264,5.543567 52.321267,5.543583 52.321272,5.543597 52.321276,5.543605 52.321278,5.543615 52.321281,5.543629 52.321284,5.543638 52.321286,5.543653 52.32129,5.543669 52.321294,5.54368 52.321296,5.543696 52.3213,5.543711 52.321303,5.543718 52.321304,5.543729 52.321306,5.543745 52.321308,5.543769 52.321312,5.543779 52.321314,5.543784 52.321315,5.5438 52.321317,5.543793 52.321334,5.54376 52.321403,5.543743 52.321437,5.543632 52.32167,5.543624 52.321668,5.543595 52.321663,5.543621 52.321609,5.543706 52.321427,5.543636 52.321414,5.543606 52.321409,5.543575 52.321403,5.543534 52.321396,5.543493 52.321388,5.543462 52.321383,5.543431 52.321377,5.54339 52.32137,5.543349 52.321363,5.543318 52.321357,5.543287 52.321352,5.543246 52.321344,5.543239 52.321343,5.543204 52.321337,5.543172 52.321331,5.543166 52.321343,5.543166 52.321344,5.542951 52.32135,5.542845 52.321353,5.542739 52.321355,5.542633 52.321358,5.542507 52.321362,5.542552 52.321627,5.542565 52.321709,5.542594 52.321692,5.542598 52.321717,5.542636 52.32173,5.542647 52.321729,5.542647 52.321729,5.542648 52.321729,5.542649 52.321729,5.54265 52.321729,5.542651 52.321729,5.542652 52.321728,5.542653 52.321728,5.542654 52.321728,5.542655 52.321728,5.542656 52.321728,5.542657 52.321728,5.542658 52.321728,5.542659 52.321728,5.54266 52.321727,5.542661 52.321727,5.542662 52.321727,5.542663 52.321727,5.542664 52.321727,5.542665 52.321727,5.542666 52.321727,5.542667 52.321726,5.542668 52.321726,5.542669 52.321726,5.54267 52.321726,5.542671 52.321726,5.542672 52.321726,5.542673 52.321725,5.542674 52.321725,5.542675 52.321725,5.542676 52.321725,5.542677 52.321725,5.542678 52.321725,5.542679 52.321725,5.54268 52.321724,5.542681 52.321724,5.542682 52.321724,5.542683 52.321724,5.542684 52.321724,5.542685 52.321724,5.542686 52.321723,5.542687 52.321723,5.542688 52.321723,5.542689 52.321723,5.54269 52.321723,5.542691 52.321722,5.542692 52.321722,5.542693 52.321722,5.542694 52.321722,5.542695 52.321722,5.542696 52.321722,5.542697 52.321721,5.542698 52.321721,5.542699 52.321721,5.5427 52.321721,5.542701 52.321721,5.542702 52.32172,5.542703 52.32172,5.542704 52.32172,5.542705 52.32172,5.542706 52.32172,5.542707 52.321719,5.542708 52.321719,5.542709 52.321719,5.54271 52.321719,5.542711 52.321719,5.542712 52.321718,5.542713 52.321718,5.542714 52.321718,5.542715 52.321718,5.542716 52.321718,5.542717 52.321717,5.542718 52.321717,5.542719 52.321717,5.54272 52.321717,5.542721 52.321716,5.542722 52.321716,5.542723 52.321716,5.542724 52.321716,5.542725 52.321716,5.542725 52.321715,5.542726 52.321715,5.542727 52.321715,5.542728 52.321715,5.542729 52.321714,5.54273 52.321714,5.542731 52.321714,5.542732 52.321714,5.542733 52.321713,5.542734 52.321713,5.542735 52.321713,5.542736 52.321713,5.542737 52.321712,5.542738 52.321712,5.542739 52.321712,5.54274 52.321712,5.542741 52.321711,5.542742 52.321711,5.542743 52.321711,5.542744 52.321711,5.542745 52.32171,5.542745 52.32171,5.542745 52.32171,5.542746 52.32171,5.542747 52.32171,5.542748 52.32171,5.542749 52.321709,5.54275 52.321709,5.54275 52.321709,5.542751 52.321709,5.542752 52.321708,5.542753 52.321708,5.542754 52.321708,5.542755 52.321708,5.542755 52.321707,5.542756 52.321707,5.542757 52.321707,5.542758 52.321707,5.542759 52.321707,5.54276 52.321706,5.54276 52.321706,5.542761 52.321706,5.542762 52.321706,5.542763 52.321705,5.542764 52.321705,5.542765 52.321705,5.542765 52.321705,5.542766 52.321704,5.542767 52.321704,5.542768 52.321704,5.542769 52.321704,5.542769 52.321704,5.54277 52.321703,5.542771 52.321703,5.542772 52.321703,5.542773 52.321703,5.542774 52.321702,5.542774 52.321702,5.542775 52.321702,5.542776 52.321702,5.542777 52.321701,5.542778 52.321701,5.542778 52.321701,5.542779 52.321701,5.54278 52.3217,5.542781 52.3217,5.542782 52.3217,5.542783 52.3217,5.542783 52.321699,5.542784 52.321699,5.542785 52.321699,5.542786 52.321699,5.542787 52.321698,5.542787 52.321698,5.542788 52.321698,5.542789 52.321698,5.54279 52.321697,5.542791 52.321697,5.542792 52.321697,5.542792 52.321697,5.542793 52.321696,5.542794 52.321696,5.542795 52.321696,5.542796 52.321696,5.542796 52.321695,5.542797 52.321695,5.542798 52.321695,5.542799 52.321695,5.5428 52.321694,5.5428 52.321694,5.542801 52.321694,5.542802 52.321694,5.542803 52.321693,5.542804 52.321693,5.542805 52.321693,5.542805 52.321693,5.542806 52.321692,5.542807 52.321692,5.542808 52.321692,5.542809 52.321692,5.542809 52.321691,5.54281 52.321691,5.542811 52.321691,5.542812 52.321691,5.542813 52.32169,5.542813 52.32169,5.542814 52.32169,5.542815 52.32169,5.542816 52.321689,5.542817 52.321689,5.542817 52.321689,5.542818 52.321688,5.542819 52.321688,5.54282 52.321688,5.542821 52.321688,5.542821 52.321687,5.542822 52.321687,5.542823 52.321687,5.542824 52.321687,5.542825 52.321686,5.542825 52.321686,5.542825 52.321686,5.542844 52.321681,5.542853 52.321679,5.54286 52.321677,5.542868 52.321676,5.54288 52.321674,5.542891 52.321672,5.542903 52.32167,5.542913 52.321668,5.542919 52.321667,5.54293 52.321666,5.542939 52.321665,5.542949 52.321663,5.542955 52.321662,5.542968 52.321661,5.542979 52.321659,5.54299 52.321658,5.542998 52.321657,5.543007 52.321656,5.543018 52.321655,5.543031 52.321654,5.543041 52.321653,5.543052 52.321652,5.543065 52.321651,5.543081 52.32165,5.543098 52.321649,5.543113 52.321649,5.543123 52.321649,5.543138 52.321649,5.543153 52.321649,5.543172 52.32165,5.543184 52.321651,5.543199 52.321652,5.543218 52.321653,5.54324 52.321655,5.543258 52.321656,5.54327 52.321658,5.543285 52.321659,5.5433 52.321661,5.543322 52.321664,5.543335 52.321666,5.543348 52.321668,5.543375 52.321672,5.543399 52.321675,5.54341 52.321677,5.543429 52.32168,5.543456 52.321685,5.543477 52.321688,5.543491 52.32169,5.543508 52.321693,5.54353 52.321698,5.543541 52.321701,5.543557 52.321705,5.54357 52.321708,5.543587 52.321713,5.543599 52.321716,5.543608 52.321719,5.543609 52.321719,5.543609 52.321721,5.543564 52.321815,5.543455 52.322047,5.543416 52.322043,5.543442 52.32199,5.543528 52.321808,5.543456 52.321795,5.543425 52.32179,5.543394 52.321784,5.543353 52.321777,5.543312 52.32177,5.543281 52.321765,5.54325 52.321759,5.54321 52.321752,5.543167 52.321744,5.543135 52.321739,5.543129 52.321751,5.542914 52.321757,5.542808 52.32176,5.542702 52.321762,5.542575 52.321766,5.542617 52.322015,5.54263 52.322093,5.542647 52.322087,5.54265 52.322105,5.542677 52.322108,5.542705 52.322111,5.542716 52.322114,5.542721 52.322116,5.542747 52.322109,5.542831 52.322091,5.542946 52.322072,5.543028 52.322061,5.543028 52.322061,5.543029 52.322061,5.543031 52.322061,5.543033 52.322061,5.543034 52.322061,5.543036 52.32206,5.543038 52.32206,5.543039 52.32206,5.543041 52.32206,5.543043 52.32206,5.543044 52.32206,5.543046 52.322059,5.543048 52.322059,5.543049 52.322059,5.543051 52.322059,5.543053 52.322059,5.543055 52.322059,5.543056 52.322058,5.543058 52.322058,5.54306 52.322058,5.543061 52.322058,5.543063 52.322058,5.543065 52.322058,5.543066 52.322058,5.543068 52.322057,5.54307 52.322057,5.543071 52.322057,5.543073 52.322057,5.543075 52.322057,5.543077 52.322057,5.543078 52.322057,5.54308 52.322057,5.543082 52.322057,5.543083 52.322056,5.543085 52.322056,5.543087 52.322056,5.543089 52.322056,5.54309 52.322056,5.543092 52.322056,5.543094 52.322056,5.543095 52.322056,5.543097 52.322056,5.543099 52.322056,5.5431 52.322056,5.543102 52.322056,5.543104 52.322056,5.543106 52.322056,5.543107 52.322056,5.543109 52.322055,5.543111 52.322055,5.543112 52.322055,5.543114 52.322055,5.543116 52.322055,5.543118 52.322055,5.543119 52.322055,5.543121 52.322055,5.543123 52.322055,5.543124 52.322055,5.543126 52.322055,5.543128 52.322055,5.54313 52.322055,5.543131 52.322055,5.543133 52.322055,5.543135 52.322055,5.543136 52.322055,5.543138 52.322055,5.54314 52.322055,5.543142 52.322055,5.543143 52.322055,5.543145 52.322055,5.543147 52.322055,5.543148 52.322056,5.54315 52.322056,5.543152 52.322056,5.543153 52.322056,5.543155 52.322056,5.543157 52.322056,5.543159 52.322056,5.54316 52.322056,5.543162 52.322056,5.543164 52.322056,5.543165 52.322056,5.543167 52.322056,5.543169 52.322056,5.543171 52.322056,5.543172 52.322056,5.543174 52.322057,5.543176 52.322057,5.543177 52.322057,5.543179 52.322057,5.543181 52.322057,5.543182 52.322057,5.543184 52.322057,5.543186 52.322057,5.543188 52.322057,5.543189 52.322058,5.543191 52.322058,5.543193 52.322058,5.543194 52.322058,5.543196 52.322058,5.543196 52.322058,5.543198 52.322058,5.5432 52.322058,5.543201 52.322059,5.543203 52.322059,5.543205 52.322059,5.543206 52.322059,5.543208 52.322059,5.54321 52.322059,5.543212 52.322059,5.543213 52.32206,5.543215 52.32206,5.543217 52.32206,5.543218 52.32206,5.54322 52.32206,5.543222 52.32206,5.543224 52.322061,5.543225 52.322061,5.543227 52.322061,5.543229 52.322061,5.54323 52.322061,5.543232 52.322061,5.543234 52.322062,5.543236 52.322062,5.543237 52.322062,5.543239 52.322062,5.543241 52.322062,5.543242 52.322062,5.543244 52.322063,5.543246 52.322063,5.543248 52.322063,5.543249 52.322063,5.543251 52.322063,5.543253 52.322064,5.543254 52.322064,5.543256 52.322064,5.543258 52.322064,5.54326 52.322064,5.543261 52.322065,5.543263 52.322065,5.543265 52.322065,5.543266 52.322065,5.543268 52.322065,5.54327 52.322066,5.543271 52.322066,5.543273 52.322066,5.543275 52.322066,5.543277 52.322066,5.543278 52.322067,5.54328 52.322067,5.543282 52.322067,5.543283 52.322067,5.543285 52.322067,5.543287 52.322068,5.543289 52.322068,5.54329 52.322068,5.543292 52.322068,5.543294 52.322069,5.543295 52.322069,5.543297 52.322069,5.543299 52.322069,5.5433 52.322069,5.543302 52.32207,5.543304 52.32207,5.543306 52.32207,5.543307 52.32207,5.543309 52.322071,5.543311 52.322071,5.543312 52.322071,5.543314 52.322071,5.543316 52.322072,5.543317 52.322072,5.543319 52.322072,5.543321 52.322072,5.543322 52.322073,5.543324 52.322073,5.543326 52.322073,5.543328 52.322073,5.543329 52.322074,5.543331 52.322074,5.543333 52.322074,5.543334 52.322074,5.543336 52.322075,5.543338 52.322075,5.543339 52.322075,5.543341 52.322075,5.543343 52.322076,5.543344 52.322076,5.543346 52.322076,5.543348 52.322076,5.543349 52.322077,5.543351 52.322077,5.543353 52.322077,5.543354 52.322078,5.543356 52.322078,5.543358 52.322078,5.543359 52.322078,5.543361 52.322079,5.543363 52.322079,5.543365 52.322079,5.543365 52.322079,5.543365 52.322079,5.543366 52.322079,5.543367 52.32208,5.543367 52.32208,5.543368 52.32208,5.543369 52.32208,5.543369 52.32208,5.54337 52.32208,5.543371 52.32208,5.543372 52.32208,5.543372 52.322081,5.543373 52.322081,5.543374 52.322081,5.543374 52.322081,5.543375 52.322081,5.543376 52.322081,5.543376 52.322081,5.543377 52.322081,5.543378 52.322082,5.543378 52.322082,5.543379 52.322082,5.54338 52.322082,5.543381 52.322082,5.543381 52.322082,5.543382 52.322082,5.543383 52.322083,5.543383 52.322083,5.543384 52.322083,5.543385 52.322083,5.543385 52.322083,5.543386 52.322083,5.543387 52.322083,5.543387 52.322084,5.543388 52.322084,5.543389 52.322084,5.543389 52.322084,5.54339 52.322084,5.543391 52.322084,5.543392 52.322085,5.543392 52.322085,5.543393 52.322085,5.543394 52.322085,5.543394 52.322085,5.543395 52.322085,5.543396 52.322086,5.543396 52.322086,5.543397 52.322086,5.543398 52.322086,5.543398 52.322086,5.543399 52.322086,5.5434 52.322087,5.5434 52.322087,5.543401 52.322087,5.543402 52.322087,5.543402 52.322087,5.543403 52.322087,5.543404 52.322088,5.543404 52.322088,5.543405 52.322088,5.543406 52.322088,5.543406 52.322088,5.543407 52.322088,5.543408 52.322089,5.543408 52.322089,5.543409 52.322089,5.54341 52.322089,5.54341 52.322089,5.543411 52.32209,5.543412 52.32209,5.543412 52.32209,5.543413 52.32209,5.543414 52.32209,5.543414 52.322091,5.543415 52.322091,5.543416 52.322091,5.543416 52.322091,5.543417 52.322091,5.543418 52.322092,5.543418 52.322092,5.543419 52.322092,5.54342 52.322092,5.54342 52.322092,5.543421 52.322093,5.543422 52.322093,5.543422 52.322093,5.543423 52.322093,5.543423 52.322093,5.543424 52.322094,5.543425 52.322094,5.543425 52.322094,5.543426 52.322094,5.543427 52.322094,5.543427 52.322095,5.543428 52.322095,5.543429 52.322095,5.543429 52.322095,5.54343 52.322095,5.543431 52.322096,5.543431 52.322096,5.543431 52.322096,5.54343 52.322098,5.543422 52.322116,5.543413 52.322133,5.543389 52.322185,5.543274 52.322425,5.543266 52.322424,5.543238 52.32242,5.543257 52.322371,5.543331 52.322186,5.543244 52.322171,5.543172 52.322158,5.5431 52.322145,5.543092 52.322162,5.542879 52.322169,5.542773 52.322172,5.542643 52.322177,5.542689 52.322401,5.542701 52.322459,5.542716 52.322476,5.542715 52.322477,5.542723 52.322494,5.542725 52.322496,5.542743 52.322491,5.542743 52.322491,5.542744 52.322491,5.542744 52.322491,5.542745 52.322491,5.542745 52.32249,5.542746 52.32249,5.542746 52.32249,5.542747 52.32249,5.542747 52.32249,5.542748 52.32249,5.542748 52.32249,5.542749 52.322489,5.542749 52.322489,5.54275 52.322489,5.54275 52.322489,5.542751 52.322489,5.542751 52.322489,5.542752 52.322489,5.542752 52.322489,5.542753 52.322488,5.542753 52.322488,5.542754 52.322488,5.542754 52.322488,5.542755 52.322488,5.542755 52.322488,5.542756 52.322488,5.542756 52.322488,5.542757 52.322487,5.542757 52.322487,5.542758 52.322487,5.542758 52.322487,5.542759 52.322487,5.542759 52.322487,5.54276 52.322487,5.54276 52.322487,5.542761 52.322486,5.542761 52.322486,5.542762 52.322486,5.542762 52.322486,5.542763 52.322486,5.542763 52.322486,5.542764 52.322486,5.542765 52.322486,5.542765 52.322486,5.542766 52.322485,5.542766 52.322485,5.542767 52.322485,5.542767 52.322485,5.542768 52.322485,5.542768 52.322485,5.542769 52.322485,5.542769 52.322485,5.54277 52.322485,5.54277 52.322485,5.542771 52.322484,5.542771 52.322484,5.542772 52.322484,5.542772 52.322484,5.542773 52.322484,5.542773 52.322484,5.542774 52.322484,5.542775 52.322484,5.542775 52.322484,5.542776 52.322484,5.542776 52.322483,5.542777 52.322483,5.542777 52.322483,5.542778 52.322483,5.542778 52.322483,5.542779 52.322483,5.542779 52.322483,5.54278 52.322483,5.54278 52.322483,5.542781 52.322483,5.542781 52.322483,5.542782 52.322483,5.542783 52.322482,5.542783 52.322482,5.542784 52.322482,5.542784 52.322482,5.542785 52.322482,5.542785 52.322482,5.542786 52.322482,5.542786 52.322482,5.542787 52.322482,5.542787 52.322482,5.542788 52.322482,5.542788 52.322482,5.542789 52.322482,5.54279 52.322481,5.54279 52.322481,5.542791 52.322481,5.542791 52.322481,5.542792 52.322481,5.542792 52.322481,5.542793 52.322481,5.542793 52.322481,5.542794 52.322481,5.542794 52.322481,5.542795 52.322481,5.542795 52.322481,5.542797 52.322481,5.542799 52.32248,5.5428 52.32248,5.542802 52.32248,5.542804 52.32248,5.542806 52.32248,5.542808 52.322479,5.542809 52.322479,5.542811 52.322479,5.542813 52.322479,5.542815 52.322479,5.542817 52.322478,5.542818 52.322478,5.54282 52.322478,5.542822 52.322478,5.542824 52.322478,5.542826 52.322478,5.542828 52.322477,5.542829 52.322477,5.542831 52.322477,5.542833 52.322477,5.542835 52.322477,5.542837 52.322477,5.542838 52.322476,5.54284 52.322476,5.542842 52.322476,5.542844 52.322476,5.542846 52.322476,5.542848 52.322476,5.542849 52.322475,5.542851 52.322475,5.542853 52.322475,5.542855 52.322475,5.542857 52.322475,5.542858 52.322475,5.54286 52.322475,5.542862 52.322474,5.542864 52.322474,5.542866 52.322474,5.542868 52.322474,5.542869 52.322474,5.542871 52.322474,5.542873 52.322474,5.542875 52.322474,5.542877 52.322473,5.542879 52.322473,5.54288 52.322473,5.542882 52.322473,5.542884 52.322473,5.542886 52.322473,5.542888 52.322473,5.54289 52.322473,5.542891 52.322473,5.542893 52.322472,5.542895 52.322472,5.542897 52.322472,5.542899 52.322472,5.5429 52.322472,5.542902 52.322472,5.542904 52.322472,5.542906 52.322472,5.542908 52.322472,5.54291 52.322472,5.542911 52.322471,5.542913 52.322471,5.542915 52.322471,5.542917 52.322471,5.542919 52.322471,5.542921 52.322471,5.542922 52.322471,5.542924 52.322471,5.542926 52.322471,5.542928 52.322471,5.54293 52.322471,5.542932 52.322471,5.542933 52.32247,5.542935 52.32247,5.542937 52.32247,5.542939 52.32247,5.542941 52.32247,5.542943 52.32247,5.542944 52.32247,5.542946 52.32247,5.542948 52.32247,5.54295 52.32247,5.542952 52.32247,5.542954 52.32247,5.542955 52.32247,5.542957 52.32247,5.542959 52.32247,5.542961 52.32247,5.542963 52.32247,5.542965 52.32247,5.542967 52.32247,5.542968 52.32247,5.54297 52.32247,5.542972 52.322469,5.542974 52.322469,5.542976 52.322469,5.542976 52.322469,5.542978 52.322469,5.54298 52.322469,5.542982 52.322469,5.542984 52.322469,5.542986 52.322469,5.542988 52.322469,5.542991 52.322469,5.542993 52.322469,5.542995 52.322469,5.542997 52.322469,5.542999 52.322469,5.543001 52.322469,5.543003 52.322469,5.543005 52.322469,5.543008 52.322469,5.54301 52.322469,5.543012 52.322469,5.543014 52.322469,5.543016 52.322469,5.543018 52.322469,5.54302 52.322469,5.543022 52.32247,5.543024 52.32247,5.543027 52.32247,5.543029 52.32247,5.543031 52.32247,5.543033 52.32247,5.543035 52.32247,5.543037 52.32247,5.543039 52.32247,5.543041 52.32247,5.543044 52.32247,5.543046 52.32247,5.543048 52.32247,5.54305 52.32247,5.543052 52.32247,5.543054 52.32247,5.543056 52.32247,5.543058 52.322471,5.54306 52.322471,5.543063 52.322471,5.543065 52.322471,5.543067 52.322471,5.543069 52.322471,5.543071 52.322471,5.543073 52.322471,5.543075 52.322471,5.543077 52.322471,5.543079 52.322472,5.543082 52.322472,5.543084 52.322472,5.543086 52.322472,5.543088 52.322472,5.54309 52.322472,5.543092 52.322472,5.543094 52.322472,5.543096 52.322473,5.543098 52.322473,5.543101 52.322473,5.543103 52.322473,5.543105 52.322473,5.543107 52.322473,5.543109 52.322473,5.543111 52.322474,5.543113 52.322474,5.543115 52.322474,5.543117 52.322474,5.54312 52.322474,5.543122 52.322474,5.543124 52.322475,5.543126 52.322475,5.543128 52.322475,5.54313 52.322475,5.543132 52.322475,5.543134 52.322476,5.543136 52.322476,5.543138 52.322476,5.543141 52.322476,5.543143 52.322476,5.543145 52.322477,5.543147 52.322477,5.543149 52.322477,5.543151 52.322477,5.543153 52.322477,5.543155 52.322478,5.543157 52.322478,5.543159 52.322478,5.543161 52.322478,5.543164 52.322479,5.543166 52.322479,5.543168 52.322479,5.54317 52.322479,5.543172 52.32248,5.543174 52.32248,5.543176 52.32248,5.543178 52.32248,5.54318 52.322481,5.543182 52.322481,5.543184 52.322481,5.543184 52.322481,5.543243 52.32249,5.543231 52.322515,5.543226 52.322525,5.543205 52.322571,5.543153 52.322679,5.543141 52.322706,5.543137 52.322715,5.543153 52.322719,5.543153 52.322719,5.543154 52.322719,5.543155 52.322719,5.543155 52.32272,5.543156 52.32272,5.543157 52.32272,5.543157 52.32272,5.543158 52.32272,5.543159 52.32272,5.543159 52.322721,5.54316 52.322721,5.543161 52.322721,5.543161 52.322721,5.543162 52.322721,5.543163 52.322722,5.543163 52.322722,5.543164 52.322722,5.543164 52.322722,5.543165 52.322722,5.543166 52.322723,5.543166 52.322723,5.543167 52.322723,5.543167 52.322723,5.543168 52.322724,5.543169 52.322724,5.543169 52.322724,5.54317 52.322724,5.54317 52.322725,5.543171 52.322725,5.543172 52.322725,5.543172 52.322725,5.543173 52.322726,5.543173 52.322726,5.543174 52.322726,5.543174 52.322726,5.543175 52.322727,5.543175 52.322727,5.543176 52.322727,5.543177 52.322728,5.543177 52.322728,5.543178 52.322728,5.543178 52.322729,5.543179 52.322729,5.543179 52.322729,5.54318 52.322729,5.54318 52.32273,5.543181 52.32273,5.543181 52.32273,5.543182 52.322731,5.543182 52.322731,5.543183 52.322731,5.543183 52.322732,5.543183 52.322732,5.543184 52.322732,5.543184 52.322733,5.543185 52.322733,5.543185 52.322733,5.543186 52.322734,5.543186 52.322734,5.543187 52.322734,5.543187 52.322735,5.543187 52.322735,5.543188 52.322736,5.543188 52.322736,5.543189 52.322736,5.543189 52.322737,5.543189 52.322737,5.54319 52.322737,5.54319 52.322738,5.54319 52.322738,5.543191 52.322739,5.543191 52.322739,5.543191 52.322739,5.543192 52.32274,5.543192 52.32274,5.543192 52.32274,5.543193 52.322741,5.543193 52.322741,5.543193 52.322742,5.543194 52.322742,5.543194 52.322742,5.543194 52.322743,5.543194 52.322743,5.543195 52.322744,5.543195 52.322744,5.543195 52.322745,5.543196 52.322745,5.543196 52.322745,5.543196 52.322746,5.543196 52.322746,5.543196 52.322747,5.543197 52.322747,5.543197 52.322747,5.543197 52.322748,5.543197 52.322748,5.543197 52.322749,5.543198 52.322749,5.543198 52.32275,5.543198 52.32275,5.543198 52.32275,5.543198 52.32275,5.543199 52.322751,5.543199 52.322752,5.5432 52.322753,5.5432 52.322754,5.5432 52.322755,5.543201 52.322756,5.543201 52.322757,5.543202 52.322758,5.543202 52.322759,5.543202 52.32276,5.543203 52.322761,5.543203 52.322762,5.543204 52.322763,5.543204 52.322764,5.543204 52.322765,5.543205 52.322766,5.543205 52.322767,5.543205 52.322768,5.543206 52.322769,5.543206 52.32277,5.543206 52.322771,5.543207 52.322772,5.543207 52.322773,5.543207 52.322774,5.543207 52.322775,5.543208 52.322776,5.543208 52.322777,5.543208 52.322778,5.543208 52.322779,5.543208 52.32278,5.543209 52.322781,5.543209 52.322782,5.543209 52.322783,5.543209 52.322784,5.543209 52.322785,5.543209 52.322786,5.54321 52.322787,5.54321 52.322788,5.54321 52.322788,5.54321 52.322789,5.54321 52.32279,5.54321 52.322791,5.54321 52.322792,5.54321 52.322793,5.54321 52.322794,5.54321 52.322795,5.54321 52.322796,5.54321 52.322797,5.543211 52.322798,5.543211 52.322799,5.543211 52.3228,5.543211 52.322801,5.54321 52.322802,5.54321 52.322803,5.54321 52.322804,5.54321 52.322805,5.54321 52.322806,5.54321 52.322807,5.54321 52.322808,5.54321 52.322809,5.54321 52.32281,5.54321 52.322811,5.54321 52.322812,5.54321 52.322813,5.54321 52.322814,5.543209 52.322815,5.543209 52.322816,5.543209 52.322817,5.543209 52.322818,5.543209 52.322819,5.543209 52.32282,5.543208 52.322821,5.543208 52.322822,5.543208 52.322823,5.543208 52.322824,5.543207 52.322825,5.543207 52.322826,5.543207 52.322827,5.543207 52.322828,5.543206 52.322829,5.543206 52.32283,5.543206 52.322831,5.543205 52.322832,5.543205 52.322833,5.543205 52.322834,5.543204 52.322835,5.543204 52.322836,5.543204 52.322837,5.543203 52.322838,5.543203 52.322839,5.543203 52.32284,5.543202 52.322841,5.543202 52.322842,5.543201 52.322843,5.543201 52.322844,5.543201 52.322845,5.5432 52.322846,5.5432 52.322847,5.543199 52.322848,5.543199 52.322848,5.543196 52.322858,5.54302 52.323225,5.542967 52.32332,5.542945 52.323349,5.542932 52.323362,5.542928 52.323366,5.542908 52.323384,5.542905 52.323387,5.542882 52.323408,5.542827 52.323459,5.542755 52.323512,5.542674 52.323561,5.542614 52.323591,5.542521 52.32363,5.5425 52.323638,5.542354 52.323678,5.54234 52.323683,5.542332 52.323684,5.542331 52.323684,5.542251 52.3237,5.542184 52.323713,5.542087 52.323732)),((5.539271 52.329233,5.539165 52.329214,5.539156 52.32921,5.539145 52.329204,5.539132 52.329194,5.539121 52.329184,5.539111 52.329172,5.539105 52.329163,5.539101 52.329155,5.539096 52.329143,5.539092 52.329128,5.539091 52.329113,5.539092 52.329101,5.539093 52.329092,5.5391 52.329073,5.539105 52.329062,5.539182 52.328879,5.53925 52.328718,5.539257 52.328701,5.539235 52.328677,5.539378 52.328333,5.539417 52.328319,5.539441 52.328263,5.539467 52.328199,5.53947 52.328192,5.53947 52.328184,5.539468 52.328173,5.539462 52.328162,5.539452 52.328152,5.539447 52.328148,5.539431 52.32814,5.539422 52.328137,5.539403 52.328132,5.539363 52.328125,5.539354 52.328124,5.539319 52.32812,5.539338 52.328074,5.539352 52.328077,5.539362 52.328079,5.539374 52.328081,5.539384 52.328083,5.539415 52.328089,5.539428 52.32809,5.539454 52.32809,5.539476 52.328089,5.539488 52.328087,5.5395 52.328083,5.53951 52.328078,5.539518 52.328071,5.539524 52.328064,5.539527 52.32806,5.539561 52.32799,5.539564 52.327986,5.539685 52.327731,5.539742 52.327611,5.539974 52.327125,5.539977 52.327113,5.539976 52.327102,5.539975 52.327096,5.539968 52.327086,5.539958 52.327076,5.539945 52.327068,5.539929 52.327062,5.539913 52.327058,5.539803 52.327038,5.539793 52.327037,5.539773 52.327035,5.539755 52.327034,5.539738 52.327035,5.539766 52.326974,5.539782 52.326981,5.539799 52.326987,5.539815 52.326991,5.539824 52.326992,5.539947 52.327014,5.539965 52.327014,5.539983 52.327013,5.54 52.327009,5.540008 52.327006,5.540021 52.327001,5.540032 52.326993,5.540042 52.326983,5.540047 52.326974,5.540068 52.326927,5.540169 52.326716,5.540169 52.326712,5.540168 52.326709,5.540152 52.32669,5.540152 52.326686,5.54026 52.326461,5.540263 52.326458,5.540267 52.326455,5.540294 52.326446,5.540297 52.326445,5.540299 52.326442,5.5403 52.326441,5.540445 52.326137,5.540457 52.326111,5.540502 52.326017,5.540503 52.326013,5.540501 52.32601,5.540487 52.325994,5.540485 52.325991,5.540486 52.325987,5.540618 52.32571,5.540621 52.325707,5.540625 52.325704,5.540651 52.325696,5.540655 52.325693,5.540658 52.32569,5.54073 52.32554,5.54073 52.325536,5.540729 52.325533,5.540714 52.325518,5.540712 52.325515,5.540713 52.325511,5.540848 52.325229,5.540851 52.325225,5.540855 52.325223,5.540881 52.325215,5.540885 52.325212,5.540888 52.325209,5.540893 52.325198,5.540951 52.325076,5.540954 52.325064,5.540953 52.325053,5.540949 52.325042,5.540941 52.325032,5.54094 52.325031,5.540929 52.325023,5.540915 52.325015,5.540898 52.32501,5.540781 52.32499,5.540772 52.324988,5.540763 52.324987,5.54075 52.324985,5.54074 52.324984,5.540723 52.324985,5.540708 52.324986,5.540695 52.324988,5.540736 52.324923,5.540751 52.324932,5.540767 52.324939,5.540781 52.324943,5.540784 52.324943,5.540792 52.324945,5.540801 52.324947,5.541134 52.325007,5.54114 52.325007,5.541145 52.325006,5.541173 52.324996,5.541179 52.324995,5.541185 52.324995,5.541396 52.325033,5.541401 52.325035,5.541417 52.325051,5.541421 52.325053,5.541426 52.325055,5.541446 52.325058,5.541452 52.325058,5.541479 52.325051,5.541485 52.32505,5.54149 52.32505,5.541941 52.325132,5.541946 52.325134,5.54195 52.325137,5.541967 52.325155,5.541973 52.325158,5.541977 52.325159,5.542005 52.325164,5.542019 52.325167,5.542031 52.325171,5.542043 52.325177,5.542053 52.325183,5.542069 52.325196,5.542081 52.325209,5.542091 52.325224,5.54238 52.325763,5.542386 52.325773,5.54246 52.325914,5.542471 52.325935,5.542477 52.325946,5.542484 52.325959,5.542799 52.326553,5.542805 52.326564,5.542823 52.326597,5.542832 52.326613,5.542838 52.32663,5.542838 52.326649,5.542796 52.326739,5.542485 52.327392,5.54248 52.327403,5.542473 52.32742,5.542473 52.32743,5.542475 52.327436,5.542481 52.327446,5.542485 52.327451,5.54249 52.327456,5.542502 52.327464,5.542509 52.327468,5.542524 52.327473,5.542551 52.327478,5.542563 52.327481,5.543004 52.32756,5.543065 52.327571,5.543083 52.327574,5.543216 52.327598,5.543238 52.327602,5.543406 52.327633,5.54347 52.327644,5.543517 52.327653,5.543645 52.327676,5.543694 52.327685,5.543728 52.327691,5.54374 52.327693,5.543758 52.327695,5.543776 52.327694,5.543794 52.32769,5.543822 52.327633,5.543834 52.327607,5.54395 52.327365,5.543962 52.327339,5.543968 52.327326,5.544296 52.326637,5.544298 52.326633,5.5443 52.326626,5.544297 52.326616,5.544293 52.32661,5.544286 52.326604,5.544278 52.326599,5.544268 52.326596,5.543833 52.326519,5.543839 52.3265,5.543853 52.326468,5.543824 52.326409,5.543816 52.326392,5.543795 52.32635,5.543778 52.326317,5.543746 52.326257,5.543764 52.32626,5.543809 52.326165,5.54398 52.325809,5.543983 52.325804,5.54397 52.325802,5.544016 52.325704,5.544096 52.325536,5.544174 52.325372,5.544207 52.325304,5.544234 52.325246,5.544262 52.325187,5.544327 52.32505,5.544343 52.325016,5.544499 52.32469,5.544527 52.32463,5.544612 52.324452,5.544615 52.324446,5.544616 52.324435,5.544614 52.324424,5.544611 52.324418,5.544608 52.324414,5.543702 52.324252,5.543702 52.324252,5.543701 52.324252,5.543701 52.324252,5.5437 52.324252,5.5437 52.324252,5.543699 52.324252,5.543699 52.324252,5.543699 52.324252,5.543698 52.324252,5.543698 52.324252,5.543697 52.324252,5.543697 52.324252,5.543696 52.324252,5.543696 52.324252,5.543696 52.324251,5.543695 52.324251,5.543695 52.324251,5.543694 52.324251,5.543694 52.324251,5.543693 52.324251,5.543693 52.324251,5.543692 52.324251,5.543692 52.324251,5.543692 52.324251,5.543691 52.324251,5.543691 52.324251,5.54369 52.324251,5.54369 52.324251,5.543689 52.324251,5.543689 52.324252,5.543688 52.324252,5.543688 52.324252,5.543688 52.324252,5.543687 52.324252,5.543687 52.324252,5.543686 52.324252,5.543686 52.324252,5.543685 52.324252,5.543685 52.324252,5.543685 52.324252,5.543684 52.324252,5.543684 52.324252,5.543683 52.324252,5.543683 52.324252,5.543682 52.324252,5.543682 52.324252,5.543682 52.324252,5.543681 52.324253,5.543681 52.324253,5.54368 52.324253,5.54368 52.324253,5.543679 52.324253,5.543679 52.324253,5.543679 52.324253,5.543678 52.324253,5.543678 52.324253,5.543677 52.324253,5.543677 52.324254,5.543677 52.324254,5.543676 52.324254,5.543676 52.324254,5.543675 52.324254,5.543675 52.324254,5.543675 52.324254,5.543674 52.324255,5.543674 52.324255,5.543674 52.324255,5.543673 52.324255,5.543673 52.324255,5.543672 52.324255,5.543672 52.324255,5.543672 52.324256,5.543671 52.324256,5.543671 52.324256,5.543671 52.324256,5.54367 52.324256,5.54367 52.324256,5.54367 52.324257,5.543669 52.324257,5.543669 52.324257,5.543669 52.324257,5.543668 52.324257,5.543668 52.324258,5.543668 52.324258,5.543667 52.324258,5.543667 52.324258,5.543667 52.324258,5.543667 52.324259,5.543666 52.324259,5.543666 52.324259,5.543666 52.324259,5.543665 52.324259,5.543665 52.32426,5.543665 52.32426,5.543665 52.32426,5.543664 52.32426,5.543664 52.32426,5.543664 52.324261,5.543664 52.324261,5.543663 52.324261,5.543663 52.324261,5.54365 52.324286,5.543694 52.324294,5.54361 52.324471,5.543529 52.324457,5.543405 52.324434,5.543624 52.323975,5.543333 52.323893,5.543048 52.323813,5.543013 52.323805,5.542994 52.323801,5.542978 52.323798,5.542962 52.323796,5.542942 52.323793,5.542868 52.323786,5.542793 52.323779,5.542738 52.323788,5.542691 52.323794,5.542368 52.323868,5.542365 52.323868,5.542342 52.323854,5.54233 52.323843,5.54232 52.323832,5.542312 52.32382,5.542307 52.323811,5.542319 52.323809,5.542407 52.323796,5.542519 52.323777,5.542602 52.323758,5.542685 52.323739,5.542732 52.323728,5.542757 52.323724,5.54278 52.323721,5.542803 52.32372,5.542968 52.323625,5.543071 52.323515,5.543071 52.323515,5.543071 52.323516,5.543071 52.323517,5.54307 52.323518,5.54307 52.323519,5.54307 52.32352,5.543069 52.323521,5.543069 52.323522,5.543069 52.323524,5.543069 52.323525,5.543068 52.323526,5.543068 52.323527,5.543068 52.323528,5.543068 52.323529,5.543068 52.32353,5.543068 52.323531,5.543068 52.323532,5.543068 52.323533,5.543068 52.323534,5.543068 52.323535,5.543068 52.323536,5.543068 52.323538,5.543068 52.323539,5.543068 52.32354,5.543068 52.323541,5.543068 52.323542,5.543069 52.323543,5.543069 52.323544,5.543069 52.323545,5.543069 52.323546,5.54307 52.323547,5.54307 52.323548,5.54307 52.323549,5.543071 52.32355,5.543071 52.323552,5.543071 52.323553,5.543072 52.323554,5.543072 52.323555,5.543073 52.323556,5.543073 52.323557,5.543074 52.323558,5.543074 52.323559,5.543075 52.32356,5.543075 52.323561,5.543076 52.323562,5.543077 52.323563,5.543077 52.323564,5.543078 52.323565,5.543079 52.323566,5.543079 52.323567,5.54308 52.323568,5.543081 52.323569,5.543082 52.32357,5.543083 52.323571,5.543083 52.323572,5.543084 52.323573,5.543085 52.323574,5.543086 52.323575,5.543087 52.323576,5.543088 52.323576,5.543089 52.323577,5.54309 52.323578,5.543091 52.323579,5.543092 52.32358,5.543093 52.323581,5.543094 52.323582,5.543095 52.323583,5.543096 52.323584,5.543097 52.323584,5.543098 52.323585,5.543099 52.323586,5.5431 52.323587,5.543102 52.323588,5.543103 52.323589,5.543104 52.323589,5.543105 52.32359,5.543106 52.323591,5.543108 52.323592,5.543109 52.323592,5.54311 52.323593,5.543112 52.323594,5.543113 52.323595,5.543114 52.323595,5.543116 52.323596,5.543117 52.323597,5.543118 52.323597,5.54312 52.323598,5.543121 52.323599,5.543123 52.323599,5.543124 52.3236,5.543126 52.323601,5.543127 52.323601,5.543128 52.323602,5.54313 52.323602,5.543131 52.323603,5.543133 52.323603,5.543135 52.323604,5.543136 52.323605,5.543138 52.323605,5.543139 52.323606,5.543139 52.323606,5.543169 52.323615,5.543179 52.323618,5.543237 52.323635,5.543353 52.323663,5.543468 52.323683,5.543661 52.323719,5.543715 52.323729,5.543742 52.32373,5.543761 52.323728,5.543779 52.323725,5.543788 52.323722,5.543803 52.323715,5.54381 52.323711,5.543821 52.323702,5.543828 52.323692,5.54388 52.323582,5.543883 52.323571,5.543883 52.323565,5.543876 52.323548,5.543867 52.323538,5.543861 52.323533,5.543847 52.323525,5.543831 52.323519,5.543816 52.323516,5.543408 52.323443,5.543346 52.323432,5.54336 52.323402,5.54336 52.323401,5.543391 52.323338,5.54341 52.323298,5.543401 52.323287,5.543566 52.322939,5.543624 52.322817,5.543649 52.322765,5.543667 52.322759,5.54369 52.32271,5.543691 52.322707,5.543696 52.322696,5.543688 52.322694,5.543694 52.322679,5.543694 52.322679,5.543694 52.322679,5.543694 52.322678,5.543694 52.322678,5.543694 52.322677,5.543693 52.322677,5.543693 52.322676,5.543693 52.322676,5.543693 52.322675,5.543693 52.322675,5.543693 52.322674,5.543692 52.322674,5.543692 52.322673,5.543692 52.322673,5.543692 52.322673,5.543692 52.322672,5.543691 52.322672,5.543691 52.322671,5.543691 52.322671,5.543691 52.32267,5.54369 52.32267,5.54369 52.322669,5.54369 52.322669,5.543689 52.322668,5.543689 52.322668,5.543689 52.322667,5.543688 52.322667,5.543688 52.322667,5.543688 52.322666,5.543687 52.322666,5.543687 52.322665,5.543687 52.322665,5.543686 52.322664,5.543686 52.322664,5.543685 52.322663,5.543685 52.322663,5.543685 52.322663,5.543684 52.322662,5.543684 52.322662,5.543683 52.322661,5.543683 52.322661,5.543682 52.322661,5.543682 52.32266,5.543682 52.32266,5.543681 52.322659,5.543681 52.322659,5.54368 52.322659,5.54368 52.322658,5.543679 52.322658,5.543679 52.322657,5.543678 52.322657,5.543678 52.322657,5.543677 52.322656,5.543677 52.322656,5.543676 52.322656,5.543675 52.322655,5.543675 52.322655,5.543674 52.322654,5.543674 52.322654,5.543673 52.322654,5.543673 52.322653,5.543672 52.322653,5.543671 52.322653,5.543671 52.322652,5.54367 52.322652,5.54367 52.322652,5.543669 52.322651,5.543668 52.322651,5.543668 52.322651,5.543667 52.322651,5.543666 52.32265,5.543666 52.32265,5.543665 52.32265,5.543665 52.322649,5.543664 52.322649,5.543663 52.322649,5.543663 52.322649,5.543662 52.322648,5.543661 52.322648,5.54366 52.322648,5.54366 52.322647,5.543659 52.322647,5.543658 52.322647,5.543658 52.322647,5.543657 52.322647,5.543656 52.322646,5.543656 52.322646,5.543655 52.322646,5.543654 52.322646,5.543653 52.322645,5.543653 52.322645,5.543652 52.322645,5.543651 52.322645,5.54365 52.322645,5.54365 52.322644,5.543649 52.322644,5.543648 52.322644,5.543647 52.322644,5.543647 52.322644,5.543646 52.322644,5.543646 52.322644,5.543615 52.322638,5.543635 52.322597,5.543668 52.322603,5.543668 52.322603,5.543669 52.322603,5.54367 52.322603,5.543671 52.322603,5.543672 52.322603,5.543672 52.322603,5.543673 52.322604,5.543674 52.322604,5.543675 52.322604,5.543676 52.322604,5.543677 52.322604,5.543677 52.322604,5.543678 52.322604,5.543679 52.322604,5.54368 52.322604,5.543681 52.322604,5.543682 52.322604,5.543682 52.322604,5.543683 52.322604,5.543684 52.322604,5.543685 52.322604,5.543686 52.322604,5.543687 52.322604,5.543687 52.322603,5.543688 52.322603,5.543689 52.322603,5.54369 52.322603,5.543691 52.322603,5.543692 52.322603,5.543692 52.322603,5.543693 52.322603,5.543694 52.322603,5.543695 52.322603,5.543696 52.322603,5.543697 52.322603,5.543697 52.322602,5.543698 52.322602,5.543699 52.322602,5.5437 52.322602,5.543701 52.322602,5.543701 52.322602,5.543702 52.322602,5.543703 52.322601,5.543704 52.322601,5.543705 52.322601,5.543705 52.322601,5.543706 52.322601,5.543707 52.3226,5.543708 52.3226,5.543708 52.3226,5.543709 52.3226,5.54371 52.3226,5.543711 52.322599,5.543712 52.322599,5.543712 52.322599,5.543713 52.322599,5.543714 52.322598,5.543715 52.322598,5.543715 52.322598,5.543716 52.322598,5.543717 52.322597,5.543717 52.322597,5.543718 52.322597,5.543719 52.322597,5.54372 52.322596,5.54372 52.322596,5.543721 52.322596,5.543722 52.322596,5.543722 52.322595,5.543723 52.322595,5.543724 52.322595,5.543724 52.322594,5.543725 52.322594,5.543726 52.322594,5.543726 52.322593,5.543727 52.322593,5.543728 52.322593,5.543728 52.322592,5.543729 52.322592,5.543729 52.322592,5.54373 52.322591,5.543731 52.322591,5.543731 52.32259,5.543732 52.32259,5.543732 52.32259,5.543733 52.322589,5.543733 52.322589,5.543734 52.322589,5.543735 52.322588,5.543735 52.322588,5.543736 52.322587,5.543736 52.322587,5.543737 52.322587,5.543737 52.322586,5.543738 52.322586,5.543738 52.322585,5.543739 52.322585,5.543739 52.322585,5.54374 52.322584,5.54374 52.322584,5.54374 52.322584,5.543745 52.322573,5.543753 52.322575,5.543769 52.322545,5.543759 52.322534,5.543938 52.322159,5.543988 52.322054,5.544028 52.32197,5.544035 52.321955,5.544042 52.321941,5.544049 52.321925,5.544298 52.321401,5.544315 52.321395,5.544324 52.321377,5.544298 52.321373,5.544257 52.321367,5.544243 52.321364,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544141 52.321332,5.544145 52.321325,5.544172 52.321269,5.544195 52.321207,5.544205 52.321209,5.544196 52.32123,5.544196 52.32123,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544199 52.321233,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321236,5.5442 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321237,5.544201 52.321237,5.544201 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321238,5.544202 52.321238,5.544202 52.321238,5.544202 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321239,5.544203 52.321239,5.544203 52.321239,5.544203 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.32124,5.544204 52.32124,5.544204 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.321241,5.544205 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544208 52.321242,5.544208 52.321242,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321244,5.544209 52.321244,5.544209 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544212 52.321245,5.544212 52.321245,5.544212 52.321245,5.544212 52.321245,5.544212 52.321246,5.544212 52.321246,5.544212 52.321246,5.544212 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544215 52.321247,5.544215 52.321247,5.544215 52.321247,5.544215 52.321247,5.544215 52.321248,5.544215 52.321248,5.544215 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544217 52.321248,5.544217 52.321248,5.544217 52.321248,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544219 52.321249,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.544221 52.32125,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544223 52.321251,5.544223 52.321251,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544225 52.321252,5.544225 52.321252,5.544225 52.321252,5.544225 52.321252,5.544225 52.321253,5.544225 52.321253,5.544225 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321255,5.54423 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321256,5.544233 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544245 52.321258,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.54425 52.321259,5.54425 52.321259,5.54425 52.321259,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321268,5.544295 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544302 52.321268,5.544302 52.321268,5.544302 52.321268,5.544302 52.321268,5.544302 52.321269,5.544302 52.321269,5.544302 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544328 52.321269,5.544328 52.321269,5.544328 52.321268,5.544328 52.321268,5.544328 52.321268,5.544328 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544335 52.321268,5.544335 52.321268,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.54434 52.321267,5.54434 52.321267,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544344 52.321266,5.544344 52.321266,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321264,5.544347 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.544373 52.321255,5.544376 52.321248,5.544385 52.321249,5.544412 52.321194,5.544402 52.321184,5.544456 52.321072,5.544578 52.320813,5.544591 52.320787,5.544603 52.320761,5.544724 52.320511,5.544742 52.320504,5.544785 52.320511,5.545864 52.320705,5.545911 52.320713,5.546217 52.320768,5.546345 52.320791,5.546504 52.320819,5.546528 52.320823,5.546575 52.320832,5.546793 52.320871,5.546839 52.320879,5.54722 52.320947,5.547346 52.32097,5.547456 52.320989,5.547477 52.320945,5.547503 52.320891,5.547555 52.320782,5.547618 52.320793,5.547602 52.320827,5.547549 52.320938,5.547541 52.320956,5.547702 52.320985,5.547914 52.321023,5.547922 52.321005,5.547975 52.320893,5.547992 52.320858,5.548016 52.320862,5.548041 52.320867,5.548024 52.320902,5.547962 52.321031,5.547901 52.32116,5.547838 52.321291,5.547816 52.321337,5.547777 52.321419,5.547715 52.321548,5.547654 52.321678,5.547592 52.321807,5.547804 52.321845,5.548015 52.321883,5.548023 52.321865,5.548077 52.321754,5.548138 52.321624,5.548199 52.321495,5.548261 52.321365,5.548275 52.321336,5.548323 52.321236,5.548384 52.321106,5.548445 52.320977,5.548468 52.32093,5.548532 52.320941,5.548203 52.321635,5.548187 52.321632,5.548126 52.321762,5.548073 52.321874,5.548064 52.321891,5.548275 52.321929,5.548403 52.321952,5.548487 52.321967,5.548496 52.321949,5.548546 52.321844,5.548549 52.321837,5.548573 52.321785,5.548636 52.321796,5.548551 52.321978,5.548565 52.32199,5.548547 52.322024,5.548526 52.322069,5.548506 52.322112,5.548478 52.322107,5.548202 52.322685,5.548201 52.322687,5.548195 52.3227,5.548189 52.322713,5.548184 52.322722,5.548161 52.322771,5.548013 52.323078,5.547892 52.323335,5.547871 52.32338,5.547853 52.323418,5.547841 52.323443,5.547538 52.32408,5.547492 52.324172,5.547489 52.324173,5.547472 52.32417,5.546665 52.324026,5.546656 52.324024,5.546636 52.324023,5.546627 52.324024,5.546609 52.324027,5.546613 52.324033,5.546621 52.324043,5.546608 52.324048,5.546597 52.324054,5.546589 52.324062,5.546583 52.32407,5.546532 52.32418,5.546532 52.324189,5.546534 52.324197,5.546537 52.324202,5.546545 52.32421,5.54655 52.324213,5.546562 52.324219,5.546576 52.324223,5.546593 52.324225,5.547379 52.324367,5.547403 52.324371,5.547517 52.324391,5.548059 52.324489,5.548072 52.324491,5.548114 52.324499,5.548115 52.324499,5.548106 52.324516,5.548149 52.324523,5.548151 52.324524,5.548176 52.324528,5.548187 52.324528,5.548202 52.324527,5.548217 52.324525,5.54823 52.324523,5.548236 52.324522,5.548236 52.324522,5.548237 52.324522,5.548237 52.324522,5.548237 52.324522,5.548238 52.324522,5.548238 52.324522,5.548239 52.324521,5.548239 52.324521,5.548239 52.324521,5.54824 52.324521,5.54824 52.324521,5.54824 52.324521,5.548241 52.324521,5.548241 52.32452,5.548241 52.32452,5.548242 52.32452,5.548242 52.32452,5.548242 52.32452,5.548243 52.32452,5.548243 52.32452,5.548244 52.324519,5.548244 52.324519,5.548244 52.324519,5.548245 52.324519,5.548245 52.324519,5.548245 52.324519,5.548246 52.324518,5.548246 52.324518,5.548246 52.324518,5.548247 52.324518,5.548247 52.324518,5.548247 52.324518,5.548248 52.324517,5.548248 52.324517,5.548248 52.324517,5.548249 52.324517,5.548249 52.324517,5.548249 52.324517,5.548249 52.324516,5.54825 52.324516,5.54825 52.324516,5.54825 52.324516,5.548251 52.324516,5.548251 52.324515,5.548251 52.324515,5.548252 52.324515,5.548252 52.324515,5.548252 52.324515,5.548253 52.324515,5.548253 52.324514,5.548253 52.324514,5.548253 52.324514,5.548254 52.324514,5.548254 52.324514,5.548254 52.324513,5.548255 52.324513,5.548255 52.324513,5.548255 52.324513,5.548255 52.324513,5.548256 52.324512,5.548256 52.324512,5.548256 52.324512,5.548256 52.324512,5.548257 52.324512,5.548257 52.324511,5.548257 52.324511,5.548258 52.324511,5.548258 52.324511,5.548258 52.324511,5.548258 52.32451,5.548259 52.32451,5.548259 52.32451,5.548259 52.32451,5.548259 52.32451,5.54826 52.324509,5.54826 52.324509,5.54826 52.324509,5.54826 52.324509,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.548262 52.324507,5.548262 52.324507,5.548262 52.324507,5.548262 52.324507,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548264 52.324505,5.548264 52.324505,5.548264 52.324505,5.548264 52.324505,5.548264 52.324504,5.548265 52.324504,5.548265 52.324504,5.548265 52.324504,5.548265 52.324504,5.548365 52.32437,5.54826 52.324572,5.548193 52.324703,5.548161 52.324764,5.548196 52.324633,5.548196 52.324631,5.548196 52.324629,5.548196 52.324627,5.548196 52.324625,5.548196 52.324624,5.548196 52.324622,5.548196 52.32462,5.548195 52.324618,5.548195 52.324616,5.548194 52.324614,5.548193 52.324613,5.548192 52.324611,5.548191 52.324609,5.54819 52.324607,5.548189 52.324606,5.548187 52.324604,5.548175 52.324593,5.548164 52.324587,5.548148 52.324581,5.548081 52.324568,5.547483 52.324462,5.546941 52.324365,5.546915 52.324361,5.546897 52.324358,5.546871 52.324353,5.54657 52.324299,5.546563 52.324317,5.546547 52.324313,5.546539 52.324312,5.546522 52.324312,5.546506 52.324314,5.54649 52.324318,5.546476 52.324324,5.546465 52.324331,5.546456 52.32434,5.546453 52.324345,5.546443 52.324366,5.54633 52.324605,5.546344 52.32462,5.546351 52.324621,5.546533 52.324654,5.546677 52.32468,5.546821 52.324706,5.546964 52.324731,5.547108 52.324757,5.547255 52.324783,5.547279 52.324788,5.547319 52.324795,5.547383 52.324807,5.547303 52.324977,5.547247 52.325093,5.547131 52.325339,5.54712 52.325361,5.5471 52.325404,5.547088 52.325428,5.546965 52.325687,5.546957 52.325704,5.546921 52.325779,5.546719 52.326203,5.546709 52.326225,5.546689 52.326267,5.546672 52.326301,5.546413 52.326845,5.546571 52.326873,5.546547 52.326917,5.546537 52.326935,5.546526 52.326955,5.546402 52.326931,5.546394 52.32693,5.546386 52.326931,5.546379 52.326932,5.546372 52.326935,5.546367 52.326939,5.546365 52.326942,5.546275 52.327117,5.546269 52.32712,5.546264 52.327124,5.546261 52.327129,5.546259 52.327134,5.546259 52.327139,5.54626 52.327144,5.546183 52.327293,5.546363 52.327328,5.546354 52.327345,5.546174 52.32731,5.546097 52.327459,5.546091 52.327462,5.546086 52.327466,5.546083 52.327471,5.546081 52.327476,5.546081 52.327481,5.546083 52.327486,5.545979 52.327686,5.546194 52.327728,5.546167 52.32778,5.545972 52.327742,5.545952 52.327738,5.545926 52.327787,5.545848 52.327938,5.545842 52.327941,5.545837 52.327945,5.545834 52.32795,5.545832 52.327955,5.545832 52.32796,5.545834 52.327965,5.545756 52.328114,5.545936 52.328149,5.545927 52.328166,5.545747 52.328131,5.54567 52.32828,5.545664 52.328283,5.545659 52.328287,5.545656 52.328292,5.545654 52.328297,5.545654 52.328302,5.545656 52.328307,5.545579 52.328456,5.545759 52.328491,5.54575 52.328508,5.54557 52.328473,5.545564 52.328484,5.545492 52.328622,5.545486 52.328625,5.545482 52.328629,5.545478 52.328634,5.545477 52.328639,5.545477 52.328644,5.545478 52.328649,5.545401 52.328798,5.545581 52.328833,5.545572 52.32885,5.545392 52.328815,5.545315 52.328964,5.545309 52.328967,5.545304 52.328971,5.545301 52.328976,5.545299 52.328981,5.545299 52.328986,5.5453 52.328991,5.545223 52.32914,5.545403 52.329175,5.545419 52.329178,5.545384 52.329247,5.54528 52.329227,5.545285 52.329217,5.545285 52.329215,5.545285 52.329212,5.545283 52.32921,5.545281 52.329208,5.545278 52.329206,5.545274 52.329205,5.54527 52.329204,5.545266 52.329204,5.545262 52.329205,5.545259 52.329206,5.545256 52.329208,5.545254 52.329211,5.545248 52.329222,5.545213 52.329215,5.545153 52.329203,5.545151 52.329206,5.545212 52.329217,5.545019 52.329586,5.544998 52.329582,5.544974 52.329628,5.544995 52.329632,5.544785 52.330036,5.544724 52.330024,5.544674 52.330121,5.544637 52.330114,5.544629 52.33013,5.544628 52.330131,5.544626 52.330135,5.544604 52.330181,5.544604 52.330181,5.544604 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544602 52.330181,5.544602 52.330181,5.544602 52.330181,5.544602 52.330181,5.544602 52.330181,5.544602 52.330181,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.5446 52.330182,5.5446 52.330182,5.5446 52.330182,5.5446 52.330182,5.5446 52.330182,5.5446 52.330182,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544598 52.330185,5.544561 52.330179,5.544435 52.330156,5.544418 52.330153,5.544396 52.330149,5.544388 52.330152,5.544359 52.330162,5.544357 52.330166,5.543933 52.330091,5.543935 52.330086,5.543919 52.330068,5.543915 52.330064,5.543909 52.330063,5.543909 52.330063,5.543908 52.330062,5.543906 52.330062,5.543905 52.330062,5.543904 52.330062,5.543903 52.330062,5.543902 52.330062,5.5439 52.330062,5.543899 52.330062,5.543898 52.330062,5.543897 52.330062,5.543896 52.330062,5.543895 52.330063,5.543893 52.330063,5.543892 52.330063,5.543891 52.330063,5.54389 52.330063,5.543889 52.330063,5.543888 52.330063,5.543887 52.330064,5.543885 52.330064,5.543884 52.330064,5.543883 52.330064,5.543882 52.330065,5.543881 52.330065,5.54388 52.330065,5.543879 52.330066,5.543878 52.330066,5.543877 52.330066,5.543876 52.330067,5.543875 52.330067,5.543874 52.330067,5.543873 52.330068,5.543872 52.330068,5.543871 52.330069,5.54387 52.330069,5.543869 52.330069,5.543868 52.33007,5.543867 52.33007,5.543866 52.330071,5.543865 52.330071,5.543865 52.330072,5.543864 52.330072,5.543863 52.330073,5.543862 52.330074,5.543861 52.330074,5.543861 52.330075,5.54386 52.330075,5.543859 52.330076,5.543859 52.330076,5.543858 52.330077,5.543857 52.330078,5.543857 52.330078,5.543856 52.330079,5.543856 52.33008,5.543855 52.33008,5.543855 52.330081,5.543854 52.330082,5.543854 52.330082,5.543853 52.330083,5.543853 52.330084,5.543853 52.330084,5.543852 52.330085,5.543852 52.330086,5.543852 52.330086,5.543851 52.330087,5.543851 52.330088,5.543851 52.330089,5.543851 52.330089,5.543851 52.33009,5.54385 52.330091,5.54385 52.330091,5.54385 52.330092,5.54385 52.330093,5.54385 52.330094,5.54385 52.330094,5.54385 52.330095,5.54385 52.330096,5.54385 52.330097,5.543851 52.330097,5.543851 52.330098,5.543851 52.330099,5.543851 52.330099,5.543851 52.3301,5.543852 52.330101,5.543852 52.330102,5.543852 52.330102,5.543852 52.330103,5.543853 52.330104,5.543853 52.330104,5.543854 52.330105,5.543854 52.330106,5.543855 52.330106,5.543855 52.330107,5.543856 52.330108,5.543856 52.330108,5.543857 52.330109,5.543857 52.33011,5.543858 52.33011,5.543858 52.330111,5.543858 52.330111,5.543869 52.330119,5.543891 52.330127,5.543679 52.330089,5.543679 52.330089,5.54368 52.330089,5.543681 52.330089,5.543682 52.330089,5.543682 52.330089,5.543683 52.330089,5.543684 52.330089,5.543685 52.330089,5.543686 52.330089,5.543687 52.330088,5.543687 52.330088,5.543688 52.330088,5.543689 52.330088,5.54369 52.330088,5.543691 52.330088,5.543691 52.330088,5.543692 52.330088,5.543693 52.330088,5.543694 52.330088,5.543695 52.330088,5.543695 52.330088,5.543696 52.330087,5.543697 52.330087,5.543698 52.330087,5.543699 52.330087,5.543699 52.330087,5.5437 52.330087,5.543701 52.330087,5.543702 52.330086,5.543702 52.330086,5.543703 52.330086,5.543704 52.330086,5.543705 52.330086,5.543705 52.330085,5.543706 52.330085,5.543707 52.330085,5.543708 52.330085,5.543708 52.330084,5.543709 52.330084,5.54371 52.330084,5.54371 52.330084,5.543711 52.330083,5.543712 52.330083,5.543712 52.330083,5.543713 52.330083,5.543714 52.330082,5.543714 52.330082,5.543715 52.330082,5.543716 52.330081,5.543716 52.330081,5.543717 52.330081,5.543718 52.33008,5.543718 52.33008,5.543719 52.33008,5.543719 52.330079,5.54372 52.330079,5.543721 52.330079,5.543721 52.330078,5.543722 52.330078,5.543722 52.330078,5.543723 52.330077,5.543723 52.330077,5.543724 52.330077,5.543724 52.330076,5.543725 52.330076,5.543726 52.330075,5.543726 52.330075,5.543726 52.330075,5.543727 52.330074,5.543727 52.330074,5.543728 52.330073,5.543728 52.330073,5.543729 52.330072,5.543729 52.330072,5.54373 52.330072,5.54373 52.330071,5.54373 52.330071,5.543731 52.33007,5.543731 52.33007,5.543731 52.330069,5.543732 52.330069,5.543732 52.330068,5.543732 52.330068,5.543733 52.330068,5.543733 52.330067,5.543733 52.330067,5.543734 52.330066,5.543734 52.330066,5.543734 52.330065,5.543734 52.330065,5.543735 52.330064,5.543735 52.330064,5.543735 52.330063,5.543735 52.330063,5.543735 52.330062,5.543736 52.330062,5.543736 52.330061,5.543736 52.330061,5.543736 52.33006,5.543736 52.33006,5.543736 52.33006,5.543736 52.330059,5.543737 52.330059,5.543737 52.330059,5.543737 52.330058,5.543737 52.330058,5.543737 52.330057,5.543737 52.330057,5.543738 52.330056,5.543738 52.330056,5.543738 52.330056,5.543738 52.330055,5.543738 52.330055,5.543738 52.330054,5.543738 52.330054,5.543738 52.330053,5.543738 52.330053,5.543738 52.330053,5.543738 52.330052,5.543738 52.330052,5.543738 52.330051,5.543738 52.330051,5.543738 52.33005,5.543738 52.33005,5.543738 52.33005,5.543738 52.330049,5.543738 52.330049,5.543738 52.330048,5.543738 52.330048,5.543738 52.330047,5.543738 52.330047,5.543737 52.330047,5.543737 52.330046,5.543737 52.330046,5.543737 52.330045,5.543737 52.330045,5.543737 52.330044,5.543736 52.330044,5.543736 52.330044,5.543736 52.330043,5.543736 52.330043,5.543736 52.330042,5.543735 52.330042,5.543735 52.330042,5.543735 52.330041,5.543734 52.330041,5.543734 52.33004,5.543734 52.33004,5.543733 52.33004,5.543733 52.330039,5.543733 52.330039,5.543732 52.330038,5.543732 52.330038,5.543732 52.330038,5.543731 52.330037,5.543731 52.330037,5.543731 52.330037,5.54373 52.330036,5.54373 52.330036,5.543729 52.330036,5.543729 52.330035,5.543728 52.330035,5.543728 52.330035,5.543727 52.330034,5.543727 52.330034,5.543727 52.330034,5.543726 52.330033,5.543726 52.330033,5.543725 52.330033,5.543724 52.330032,5.543724 52.330032,5.543723 52.330032,5.543723 52.330032,5.543722 52.330031,5.543722 52.330031,5.543721 52.330031,5.543721 52.33003,5.54372 52.33003,5.543719 52.33003,5.543719 52.33003,5.543718 52.330029,5.543718 52.330029,5.543717 52.330029,5.543716 52.330029,5.543716 52.330029,5.543715 52.330028,5.543715 52.330028,5.543714 52.330028,5.543713 52.330028,5.543713 52.330028,5.543712 52.330027,5.543711 52.330027,5.543711 52.330027,5.54371 52.330027,5.543709 52.330027,5.543709 52.330027,5.543708 52.330027,5.543707 52.330026,5.543707 52.330026,5.543706 52.330026,5.543706 52.330026,5.543701 52.330025,5.543693 52.330028,5.543664 52.330037,5.542567 52.329842,5.542553 52.329824,5.542548 52.329819,5.542482 52.329807,5.542471 52.329805,5.542471 52.329805,5.542471 52.329805,5.542471 52.329805,5.542471 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.542469 52.329805,5.542469 52.329805,5.542469 52.329805,5.542469 52.329806,5.542469 52.329806,5.542469 52.329806,5.542469 52.329806,5.542469 52.329806,5.542469 52.329806,5.542469 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542465 52.329806,5.542465 52.329806,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329808,5.542464 52.329808,5.542464 52.329808,5.542464 52.329808,5.542464 52.329808,5.542464 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329809,5.542463 52.329809,5.542463 52.329809,5.542438 52.329862,5.542333 52.329844,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329788,5.542359 52.329788,5.542359 52.329788,5.542359 52.329788,5.542359 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542357 52.329787,5.542357 52.329787,5.542357 52.329787,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329785,5.542356 52.329785,5.542356 52.329785,5.542356 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542343 52.329783,5.542277 52.329771,5.54227 52.329774,5.542241 52.329783,5.541064 52.329573,5.541048 52.329555,5.541044 52.32955,5.541038 52.329549,5.541038 52.329549,5.541036 52.329549,5.541035 52.329549,5.541033 52.329549,5.541032 52.329549,5.54103 52.329549,5.541029 52.329549,5.541027 52.329549,5.541026 52.32955,5.541024 52.32955,5.541023 52.32955,5.541021 52.32955,5.54102 52.32955,5.541018 52.329551,5.541017 52.329551,5.541016 52.329551,5.541014 52.329551,5.541013 52.329552,5.541012 52.329552,5.54101 52.329552,5.541009 52.329553,5.541008 52.329553,5.541006 52.329554,5.541005 52.329554,5.541004 52.329555,5.541003 52.329555,5.541001 52.329556,5.541 52.329556,5.540999 52.329557,5.540998 52.329558,5.540997 52.329558,5.540996 52.329559,5.540995 52.329559,5.540994 52.32956,5.540993 52.329561,5.540992 52.329561,5.540991 52.329562,5.54099 52.329563,5.540989 52.329564,5.540988 52.329564,5.540988 52.329565,5.540987 52.329566,5.540986 52.329567,5.540985 52.329568,5.540985 52.329568,5.540984 52.329569,5.540984 52.32957,5.540983 52.329571,5.540983 52.329572,5.540982 52.329573,5.540982 52.329573,5.540982 52.329574,5.540981 52.329575,5.540981 52.329576,5.540981 52.329577,5.54098 52.329578,5.54098 52.329579,5.54098 52.32958,5.54098 52.329581,5.54098 52.329582,5.54098 52.329582,5.54098 52.329583,5.54098 52.329584,5.54098 52.329585,5.540981 52.329586,5.540981 52.329587,5.540981 52.329588,5.540981 52.329589,5.540982 52.32959,5.540982 52.329591,5.540982 52.329591,5.540983 52.329592,5.540983 52.329593,5.540984 52.329594,5.540985 52.329595,5.540985 52.329596,5.540986 52.329596,5.540986 52.329597,5.540987 52.329598,5.540988 52.329599,5.540989 52.3296,5.54099 52.3296,5.54099 52.329601,5.540991 52.329602,5.540992 52.329603,5.540993 52.329603,5.540994 52.329604,5.540995 52.329605,5.540996 52.329605,5.540997 52.329606,5.540998 52.329606,5.541 52.329607,5.541001 52.329608,5.541002 52.329608,5.541003 52.329609,5.541004 52.329609,5.541006 52.32961,5.541007 52.32961,5.541008 52.329611,5.541009 52.329611,5.541009 52.329611,5.540836 52.32958,5.540836 52.32958,5.540838 52.32958,5.540839 52.32958,5.540841 52.32958,5.540842 52.32958,5.540844 52.32958,5.540845 52.32958,5.540847 52.32958,5.540848 52.32958,5.54085 52.32958,5.540851 52.329579,5.540852 52.329579,5.540854 52.329579,5.540855 52.329579,5.540857 52.329578,5.540858 52.329578,5.540859 52.329578,5.540861 52.329577,5.540862 52.329577,5.540863 52.329576,5.540865 52.329576,5.540866 52.329576,5.540867 52.329575,5.540868 52.329575,5.540869 52.329574,5.540871 52.329574,5.540872 52.329573,5.540873 52.329572,5.540874 52.329572,5.540875 52.329571,5.540876 52.329571,5.540877 52.32957,5.540878 52.329569,5.540879 52.329569,5.54088 52.329568,5.540881 52.329567,5.540882 52.329566,5.540883 52.329566,5.540883 52.329565,5.540884 52.329564,5.540885 52.329563,5.540886 52.329563,5.540886 52.329562,5.540887 52.329561,5.540887 52.32956,5.540888 52.329559,5.540889 52.329558,5.540889 52.329558,5.540889 52.329557,5.54089 52.329556,5.54089 52.329555,5.540891 52.329554,5.540891 52.329553,5.540891 52.329552,5.540891 52.329551,5.540891 52.329551,5.540892 52.32955,5.540892 52.329549,5.540892 52.329548,5.540892 52.329547,5.540892 52.329546,5.540892 52.329545,5.540891 52.329544,5.540891 52.329543,5.540891 52.329543,5.540891 52.329542,5.540891 52.329541,5.54089 52.32954,5.54089 52.329539,5.54089 52.329538,5.540889 52.329537,5.540889 52.329536,5.540888 52.329536,5.540888 52.329535,5.540887 52.329534,5.540886 52.329533,5.540886 52.329532,5.540885 52.329531,5.540884 52.329531,5.540884 52.32953,5.540883 52.329529,5.540882 52.329528,5.540881 52.329528,5.54088 52.329527,5.540879 52.329526,5.540878 52.329526,5.540877 52.329525,5.540876 52.329524,5.540875 52.329524,5.540874 52.329523,5.540873 52.329522,5.540872 52.329522,5.540871 52.329521,5.54087 52.329521,5.540869 52.32952,5.540867 52.32952,5.540866 52.329519,5.540865 52.329519,5.540864 52.329518,5.540862 52.329518,5.540862 52.329518,5.54086 52.329517,5.540841 52.329514,5.540829 52.329512,5.540805 52.329508,5.540797 52.32951,5.540768 52.32952,5.540166 52.329412,5.540161 52.329416,5.540166 52.329422,5.540542 52.329489,5.540534 52.329506,5.540539 52.329507,5.540563 52.329532,5.539276 52.329306,5.539367 52.32932,5.539821 52.329378,5.539829 52.329361,5.539895 52.329373,5.539898 52.329369,5.539899 52.329364,5.539332 52.329263,5.539313 52.329241,5.539305 52.329239,5.539271 52.329233)),((5.549192 52.331562,5.549126 52.331481,5.549081 52.331424,5.549081 52.331424,5.54908 52.331423,5.549079 52.331422,5.549078 52.331421,5.549077 52.33142,5.549076 52.331419,5.549075 52.331418,5.549074 52.331417,5.549073 52.331416,5.549072 52.331415,5.549071 52.331414,5.54907 52.331413,5.549069 52.331412,5.549068 52.331411,5.549067 52.33141,5.549066 52.331409,5.549065 52.331408,5.549064 52.331407,5.549063 52.331406,5.549061 52.331405,5.54906 52.331404,5.549059 52.331403,5.549058 52.331402,5.549057 52.331401,5.549056 52.3314,5.549054 52.331399,5.549053 52.331398,5.549052 52.331397,5.549051 52.331396,5.54905 52.331395,5.549048 52.331394,5.549047 52.331393,5.549046 52.331392,5.549045 52.331392,5.549043 52.331391,5.549042 52.33139,5.549041 52.331389,5.549039 52.331388,5.549038 52.331387,5.549037 52.331386,5.549035 52.331385,5.549034 52.331384,5.549033 52.331383,5.549031 52.331383,5.54903 52.331382,5.549029 52.331381,5.549027 52.33138,5.549026 52.331379,5.549024 52.331378,5.549023 52.331377,5.549022 52.331377,5.54902 52.331376,5.549019 52.331375,5.549017 52.331374,5.549016 52.331373,5.549014 52.331373,5.549013 52.331372,5.549011 52.331371,5.54901 52.33137,5.549008 52.331369,5.549007 52.331369,5.549005 52.331368,5.549004 52.331367,5.549002 52.331366,5.549001 52.331366,5.548999 52.331365,5.548998 52.331364,5.548996 52.331363,5.548994 52.331363,5.548993 52.331362,5.548991 52.331361,5.54899 52.33136,5.548988 52.33136,5.548986 52.331359,5.548985 52.331358,5.548983 52.331358,5.548982 52.331357,5.54898 52.331356,5.548978 52.331356,5.548977 52.331355,5.548975 52.331354,5.548973 52.331354,5.548972 52.331353,5.54897 52.331352,5.548968 52.331352,5.548967 52.331351,5.548965 52.331351,5.548963 52.33135,5.548961 52.331349,5.54896 52.331349,5.548958 52.331348,5.548956 52.331348,5.548955 52.331347,5.548953 52.331346,5.548951 52.331346,5.548949 52.331345,5.548948 52.331345,5.548946 52.331344,5.548944 52.331344,5.548942 52.331343,5.548942 52.331343,5.548594 52.331268,5.548606 52.331243,5.546893 52.330908,5.546878 52.330936,5.546748 52.330913,5.546762 52.330883,5.546269 52.330787,5.546251 52.330823,5.54617 52.330807,5.546127 52.330891,5.546118 52.33091,5.546034 52.330893,5.546087 52.330791,5.546772 52.329495,5.547607 52.329659,5.547631 52.329661,5.547753 52.329685,5.548002 52.329732,5.548469 52.329821,5.548696 52.329869,5.548934 52.329912,5.549028 52.329929,5.549056 52.329933,5.549083 52.329939,5.54912 52.329951,5.549144 52.32996,5.549162 52.329969,5.549216 52.330003,5.549245 52.330026,5.549268 52.330048,5.549316 52.330121,5.549358 52.330183,5.54947 52.330351,5.549608 52.330557,5.549751 52.33077,5.549802 52.330846,5.549806 52.330852,5.549811 52.330865,5.549814 52.330877,5.549814 52.33089,5.549813 52.330903,5.54981 52.330918,5.549804 52.330935,5.549803 52.330939,5.549773 52.331009,5.549744 52.331078,5.549737 52.33109,5.549733 52.331102,5.549731 52.331115,5.54973 52.331128,5.549732 52.331141,5.549734 52.331147,5.549737 52.331153,5.549741 52.331161,5.549747 52.331192,5.549763 52.331216,5.549842 52.331335,5.549921 52.331454,5.549921 52.331454,5.549922 52.331455,5.549923 52.331455,5.549924 52.331456,5.549925 52.331457,5.549925 52.331458,5.549926 52.331459,5.549927 52.33146,5.549928 52.331461,5.549929 52.331462,5.54993 52.331463,5.549931 52.331463,5.549932 52.331464,5.549933 52.331465,5.549934 52.331466,5.549935 52.331467,5.549936 52.331468,5.549937 52.331469,5.549938 52.331469,5.549939 52.33147,5.54994 52.331471,5.549941 52.331472,5.549942 52.331472,5.549944 52.331473,5.549945 52.331474,5.549946 52.331475,5.549947 52.331476,5.549948 52.331476,5.54995 52.331477,5.549951 52.331478,5.549952 52.331478,5.549953 52.331479,5.549955 52.33148,5.549956 52.331481,5.549957 52.331481,5.549958 52.331482,5.54996 52.331483,5.549961 52.331483,5.549962 52.331484,5.549964 52.331484,5.549965 52.331485,5.549966 52.331486,5.549968 52.331486,5.549969 52.331487,5.549971 52.331487,5.549972 52.331488,5.549974 52.331489,5.549975 52.331489,5.549976 52.33149,5.549978 52.33149,5.549979 52.331491,5.549981 52.331491,5.549982 52.331492,5.549984 52.331492,5.549985 52.331493,5.549987 52.331493,5.549988 52.331494,5.54999 52.331494,5.549992 52.331494,5.549993 52.331495,5.549995 52.331495,5.549996 52.331496,5.549998 52.331496,5.549999 52.331496,5.550001 52.331497,5.550003 52.331497,5.550004 52.331497,5.550006 52.331498,5.550007 52.331498,5.550009 52.331498,5.550011 52.331499,5.550012 52.331499,5.550014 52.331499,5.550016 52.3315,5.550017 52.3315,5.550019 52.3315,5.550021 52.3315,5.550022 52.3315,5.550024 52.331501,5.550026 52.331501,5.550027 52.331501,5.550029 52.331501,5.550031 52.331501,5.550032 52.331501,5.550034 52.331502,5.550036 52.331502,5.550037 52.331502,5.550039 52.331502,5.550041 52.331502,5.550042 52.331502,5.550044 52.331502,5.550046 52.331502,5.550048 52.331502,5.550049 52.331502,5.550051 52.331502,5.550053 52.331502,5.550054 52.331502,5.550056 52.331502,5.550058 52.331502,5.550059 52.331502,5.550059 52.331502,5.550454 52.331516,5.550848 52.33153,5.550848 52.33153,5.55085 52.33153,5.550851 52.33153,5.550853 52.33153,5.550854 52.331529,5.550856 52.331529,5.550857 52.331529,5.550859 52.331529,5.55086 52.331529,5.550862 52.331529,5.550863 52.331529,5.550865 52.331529,5.550866 52.331529,5.550868 52.331529,5.550869 52.331529,5.550871 52.331528,5.550872 52.331528,5.550874 52.331528,5.550875 52.331528,5.550877 52.331528,5.550878 52.331528,5.55088 52.331528,5.550881 52.331527,5.550883 52.331527,5.550884 52.331527,5.550886 52.331527,5.550887 52.331527,5.550889 52.331527,5.55089 52.331526,5.550892 52.331526,5.550893 52.331526,5.550895 52.331526,5.550896 52.331526,5.550898 52.331525,5.550899 52.331525,5.550901 52.331525,5.550902 52.331525,5.550904 52.331524,5.550905 52.331524,5.550907 52.331524,5.550908 52.331524,5.55091 52.331523,5.550911 52.331523,5.550912 52.331523,5.550914 52.331522,5.550915 52.331522,5.550917 52.331522,5.550918 52.331521,5.55092 52.331521,5.550921 52.331521,5.550923 52.331521,5.550924 52.33152,5.550925 52.33152,5.550927 52.33152,5.550928 52.331519,5.55093 52.331519,5.550931 52.331518,5.550932 52.331518,5.550934 52.331518,5.550935 52.331517,5.550937 52.331517,5.550938 52.331517,5.550939 52.331516,5.550941 52.331516,5.550942 52.331515,5.550944 52.331515,5.550945 52.331515,5.550946 52.331514,5.550948 52.331514,5.550949 52.331513,5.55095 52.331513,5.550952 52.331512,5.550953 52.331512,5.550954 52.331512,5.550956 52.331511,5.550957 52.331511,5.550958 52.33151,5.55096 52.33151,5.550961 52.331509,5.550962 52.331509,5.550964 52.331508,5.550965 52.331508,5.550966 52.331507,5.550968 52.331507,5.550969 52.331506,5.55097 52.331506,5.550971 52.331505,5.550973 52.331505,5.550974 52.331504,5.550975 52.331504,5.550976 52.331503,5.550978 52.331503,5.550979 52.331502,5.55098 52.331501,5.550981 52.331501,5.550983 52.3315,5.550984 52.3315,5.550985 52.331499,5.550986 52.331499,5.550987 52.331498,5.550987 52.331498,5.550989 52.331497,5.550992 52.331497,5.550994 52.331496,5.550996 52.331496,5.550998 52.331495,5.551 52.331494,5.551002 52.331494,5.551004 52.331493,5.551006 52.331492,5.551008 52.331492,5.55101 52.331491,5.551012 52.33149,5.551014 52.33149,5.551017 52.331489,5.551019 52.331488,5.551021 52.331488,5.551023 52.331487,5.551025 52.331486,5.551027 52.331485,5.551029 52.331485,5.551031 52.331484,5.551032 52.331483,5.551034 52.331482,5.551036 52.331482,5.551038 52.331481,5.55104 52.33148,5.551042 52.331479,5.551044 52.331478,5.551046 52.331478,5.551048 52.331477,5.55105 52.331476,5.551052 52.331475,5.551053 52.331474,5.551055 52.331473,5.551057 52.331472,5.551059 52.331472,5.551061 52.331471,5.551063 52.33147,5.551064 52.331469,5.551066 52.331468,5.551068 52.331467,5.55107 52.331466,5.551071 52.331465,5.551073 52.331464,5.551075 52.331463,5.551077 52.331462,5.551078 52.331461,5.55108 52.33146,5.551082 52.331459,5.551083 52.331458,5.551085 52.331457,5.551087 52.331456,5.551088 52.331455,5.55109 52.331454,5.551092 52.331453,5.551093 52.331452,5.551095 52.331451,5.551096 52.33145,5.551098 52.331449,5.551099 52.331448,5.551101 52.331447,5.551102 52.331446,5.551104 52.331445,5.551105 52.331444,5.551107 52.331443,5.551108 52.331441,5.55111 52.33144,5.551111 52.331439,5.551113 52.331438,5.551114 52.331437,5.551116 52.331436,5.551117 52.331435,5.551118 52.331434,5.55112 52.331432,5.551121 52.331431,5.551122 52.33143,5.551124 52.331429,5.551125 52.331428,5.551126 52.331426,5.551128 52.331425,5.551129 52.331424,5.55113 52.331423,5.551131 52.331422,5.551133 52.33142,5.551134 52.331419,5.551135 52.331418,5.551136 52.331417,5.551137 52.331416,5.551138 52.331414,5.55114 52.331413,5.551141 52.331412,5.551142 52.331411,5.551143 52.331409,5.551144 52.331408,5.551145 52.331407,5.551146 52.331405,5.551147 52.331404,5.551148 52.331403,5.551149 52.331402,5.551149 52.331402,5.551151 52.331399,5.551151 52.331399,5.551152 52.331397,5.551153 52.331395,5.551154 52.331393,5.551155 52.331392,5.551156 52.33139,5.551157 52.331388,5.551158 52.331386,5.551159 52.331384,5.55116 52.331382,5.551161 52.331381,5.551162 52.331379,5.551163 52.331377,5.551163 52.331375,5.551164 52.331373,5.551165 52.331371,5.551166 52.331369,5.551167 52.331367,5.551167 52.331366,5.551168 52.331364,5.551169 52.331362,5.551169 52.33136,5.55117 52.331358,5.551171 52.331356,5.551171 52.331354,5.551172 52.331352,5.551172 52.33135,5.551173 52.331349,5.551173 52.331347,5.551174 52.331345,5.551174 52.331343,5.551175 52.331341,5.551175 52.331339,5.551175 52.331337,5.551176 52.331335,5.551176 52.331333,5.551176 52.331331,5.551176 52.331329,5.551177 52.331327,5.551177 52.331325,5.551177 52.331324,5.551177 52.331322,5.551177 52.33132,5.551177 52.331318,5.551177 52.331316,5.551177 52.331314,5.551177 52.331312,5.551177 52.33131,5.551177 52.331308,5.551177 52.331306,5.551177 52.331304,5.551177 52.331302,5.551177 52.3313,5.551177 52.331298,5.551177 52.331297,5.551176 52.331295,5.551176 52.331293,5.551176 52.331291,5.551176 52.331289,5.551175 52.331287,5.551175 52.331285,5.551175 52.331283,5.551174 52.331281,5.551174 52.331279,5.551173 52.331277,5.551173 52.331275,5.551172 52.331274,5.551172 52.331272,5.551171 52.33127,5.551171 52.331268,5.55117 52.331266,5.551169 52.331264,5.551169 52.331262,5.551168 52.33126,5.551167 52.331258,5.551167 52.331256,5.551166 52.331255,5.551165 52.331253,5.551164 52.331251,5.551164 52.331249,5.551163 52.331247,5.551162 52.331245,5.551161 52.331243,5.55116 52.331242,5.551159 52.33124,5.551158 52.331238,5.551157 52.331236,5.551156 52.331234,5.551155 52.331232,5.551154 52.331231,5.551153 52.331229,5.551152 52.331227,5.551151 52.331225,5.551149 52.331223,5.551148 52.331222,5.551147 52.33122,5.551146 52.331218,5.551145 52.331216,5.551143 52.331215,5.551142 52.331213,5.551142 52.331213,5.551121 52.331189,5.551069 52.33115,5.551018 52.331112,5.550977 52.331049,5.550854 52.330864,5.550773 52.33074,5.550681 52.3306,5.550596 52.330471,5.550489 52.330316,5.550328 52.330064,5.550187 52.32985,5.549834 52.329315,5.549735 52.329164,5.549676 52.32909,5.549617 52.329015,5.549616 52.329002,5.549619 52.328993,5.549627 52.328982,5.549639 52.328974,5.549651 52.328968,5.549679 52.328958,5.549701 52.328954,5.549716 52.32895,5.550024 52.328869,5.550351 52.328782,5.550356 52.328781,5.550375 52.328772,5.550391 52.328761,5.550403 52.328748,5.550407 52.328741,5.550414 52.32872,5.550414 52.328715,5.550412 52.328704,5.550407 52.328694,5.550392 52.32868,5.550379 52.328673,5.550346 52.328662,5.550319 52.328657,5.550292 52.328656,5.550279 52.328657,5.55026 52.328659,5.550127 52.328691,5.550048 52.328659,5.54972 52.32871,5.549524 52.328705,5.549513 52.328713,5.5495 52.328719,5.549486 52.328723,5.549477 52.328724,5.549408 52.32871,5.549316 52.328681,5.549223 52.328652,5.549136 52.328617,5.549049 52.328582,5.548989 52.328551,5.548943 52.328525,5.548858 52.328469,5.548784 52.328407,5.548728 52.32835,5.548674 52.328288,5.548619 52.328227,5.54852 52.328077,5.548486 52.328019,5.54843 52.327911,5.548405 52.327798,5.548404 52.327686,5.548418 52.327591,5.548428 52.327544,5.548447 52.327497,5.548466 52.327451,5.548493 52.3274,5.548549 52.327334,5.548577 52.327288,5.548589 52.327264,5.548604 52.327216,5.548609 52.327192,5.548651 52.327097,5.548693 52.327002,5.548847 52.326806,5.549001 52.326609,5.549146 52.326461,5.549291 52.326313,5.549347 52.326299,5.549345 52.326184,5.549344 52.326069,5.549223 52.325961,5.549182 52.325895,5.549142 52.325829,5.549139 52.325781,5.549145 52.325732,5.549159 52.325685,5.549219 52.325555,5.549278 52.325426,5.549401 52.32526,5.549524 52.325094,5.549622 52.324988,5.549719 52.324881,5.550103 52.324535,5.550511 52.324165,5.550391 52.324048,5.550272 52.32393,5.550262 52.323889,5.55026 52.323848,5.550264 52.323806,5.550276 52.323766,5.550294 52.323726,5.550385 52.323582,5.550476 52.323439,5.550601 52.323319,5.550746 52.323208,5.550909 52.323107,5.550967 52.323075,5.55111 52.323022,5.55111 52.323061,5.551362 52.323106,5.551465 52.323087,5.55154 52.323059,5.551629 52.322991,5.551718 52.322924,5.551838 52.322805,5.551873 52.322671,5.551628 52.322562,5.551628 52.322562,5.551628 52.322557,5.551629 52.322553,5.551629 52.322548,5.551629 52.322544,5.55163 52.322539,5.551631 52.322535,5.551631 52.32253,5.551632 52.322526,5.551633 52.322522,5.551634 52.322517,5.551635 52.322513,5.551637 52.322508,5.551638 52.322504,5.551639 52.3225,5.551641 52.322495,5.551642 52.322491,5.551644 52.322487,5.551645 52.322482,5.551647 52.322478,5.551649 52.322474,5.551651 52.322469,5.551653 52.322465,5.551655 52.322461,5.551658 52.322456,5.55166 52.322452,5.551662 52.322448,5.551665 52.322444,5.551667 52.32244,5.55167 52.322435,5.551673 52.322431,5.551676 52.322427,5.551678 52.322423,5.551681 52.322419,5.551684 52.322415,5.551688 52.322411,5.551691 52.322407,5.551694 52.322403,5.551697 52.322399,5.551701 52.322395,5.551704 52.322391,5.551708 52.322387,5.551712 52.322383,5.551715 52.32238,5.551719 52.322376,5.551723 52.322372,5.551727 52.322368,5.551731 52.322365,5.551735 52.322361,5.55174 52.322357,5.551744 52.322354,5.551748 52.32235,5.551753 52.322347,5.551757 52.322343,5.551762 52.32234,5.551766 52.322336,5.551771 52.322333,5.551776 52.322329,5.551781 52.322326,5.551786 52.322323,5.55179 52.322319,5.551796 52.322316,5.551801 52.322313,5.551806 52.32231,5.551811 52.322307,5.551816 52.322304,5.551822 52.322301,5.551827 52.322298,5.551832 52.322295,5.551838 52.322292,5.551844 52.322289,5.551849 52.322286,5.551855 52.322283,5.551861 52.322281,5.551866 52.322278,5.551872 52.322275,5.551878 52.322273,5.551884 52.32227,5.55189 52.322268,5.551896 52.322265,5.551902 52.322263,5.551908 52.32226,5.551915 52.322258,5.551921 52.322256,5.551927 52.322253,5.551933 52.322251,5.55194 52.322249,5.551946 52.322247,5.551953 52.322245,5.551959 52.322243,5.551966 52.322241,5.551972 52.322239,5.551979 52.322237,5.551986 52.322235,5.551992 52.322233,5.551999 52.322232,5.552006 52.32223,5.552013 52.322228,5.552019 52.322227,5.552026 52.322225,5.552026 52.322225,5.55232 52.322204,5.552406 52.32219,5.552495 52.322166,5.552538 52.322152,5.55258 52.322137,5.55266 52.322103,5.552767 52.322054,5.552837 52.322021,5.552906 52.321989,5.55292 52.321953,5.552858 52.321949,5.552763 52.32199,5.552691 52.322022,5.552534 52.322092,5.552477 52.322112,5.552418 52.322129,5.552356 52.322142,5.552323 52.322147,5.552263 52.322152,5.552202 52.322154,5.552116 52.322151,5.552048 52.322146,5.551982 52.322136,5.551917 52.322122,5.551856 52.322104,5.551792 52.32208,5.551743 52.322057,5.551698 52.322017,5.55167 52.321991,5.551623 52.321934,5.551586 52.321875,5.551559 52.321814,5.55155 52.321762,5.551541 52.321709,5.551539 52.321643,5.551538 52.321577,5.551544 52.321552,5.551557 52.321522,5.551578 52.321489,5.551604 52.321458,5.55163 52.321433,5.551663 52.321407,5.55171 52.321378,5.551755 52.321355,5.5518 52.321332,5.551868 52.321307,5.551936 52.321282,5.551973 52.321293,5.552162 52.321222,5.552156 52.321196,5.552415 52.321102,5.552708 52.320989,5.552826 52.320921,5.55283 52.320917,5.552835 52.320912,5.552837 52.320906,5.552837 52.3209,5.552836 52.320894,5.552832 52.320888,5.552826 52.320883,5.552819 52.320879,5.552811 52.320876,5.552802 52.320874,5.552789 52.320873,5.55278 52.320873,5.552768 52.320876,5.55276 52.32088,5.552732 52.320897,5.552715 52.320906,5.552702 52.320912,5.552688 52.320918,5.552659 52.320928,5.552629 52.320937,5.552512 52.320911,5.552482 52.320905,5.552485 52.320339,5.552486 52.320127,5.552486 52.320127,5.552486 52.320126,5.552487 52.320125,5.552488 52.320124,5.552488 52.320123,5.552489 52.320122,5.55249 52.320122,5.55249 52.320121,5.552491 52.32012,5.552492 52.320119,5.552492 52.320118,5.552493 52.320117,5.552494 52.320116,5.552494 52.320115,5.552495 52.320114,5.552496 52.320114,5.552496 52.320113,5.552497 52.320112,5.552498 52.320111,5.552499 52.32011,5.552499 52.320109,5.5525 52.320108,5.552501 52.320107,5.552501 52.320106,5.552502 52.320106,5.552503 52.320105,5.552503 52.320104,5.552504 52.320103,5.552505 52.320102,5.552506 52.320101,5.552506 52.3201,5.552507 52.320099,5.552508 52.320098,5.552508 52.320098,5.552509 52.320097,5.55251 52.320096,5.55251 52.320095,5.552511 52.320094,5.552512 52.320093,5.552513 52.320092,5.552513 52.320091,5.552514 52.32009,5.552515 52.32009,5.552515 52.320089,5.552516 52.320088,5.552517 52.320087,5.552518 52.320086,5.552518 52.320085,5.552519 52.320084,5.55252 52.320083,5.55252 52.320083,5.552521 52.320082,5.552522 52.320081,5.552523 52.32008,5.552523 52.320079,5.552524 52.320078,5.552525 52.320077,5.552526 52.320076,5.552526 52.320075,5.552527 52.320075,5.552528 52.320074,5.552528 52.320073,5.552529 52.320072,5.55253 52.320071,5.552531 52.32007,5.552531 52.320069,5.552532 52.320068,5.552533 52.320068,5.552534 52.320067,5.552534 52.320066,5.552535 52.320065,5.552536 52.320064,5.552537 52.320063,5.552537 52.320062,5.552538 52.320061,5.552539 52.320061,5.552539 52.32006,5.55254 52.320059,5.552541 52.320058,5.552542 52.320057,5.552542 52.320056,5.552543 52.320055,5.552544 52.320054,5.552545 52.320054,5.552545 52.320053,5.552546 52.320052,5.552547 52.320051,5.552548 52.32005,5.552548 52.320049,5.552549 52.320048,5.55255 52.320047,5.552551 52.320047,5.552551 52.320046,5.552552 52.320045,5.552553 52.320044,5.552554 52.320043,5.552555 52.320042,5.552555 52.320041,5.552556 52.320041,5.552557 52.32004,5.552557 52.32004,5.552561 52.320035,5.552565 52.32003,5.552569 52.320025,5.552573 52.32002,5.552577 52.320015,5.552581 52.32001,5.552585 52.320005,5.552589 52.32,5.552593 52.319995,5.552597 52.31999,5.552602 52.319986,5.552606 52.319981,5.55261 52.319976,5.552615 52.319971,5.552619 52.319966,5.552623 52.319962,5.552628 52.319957,5.552632 52.319952,5.552637 52.319947,5.552641 52.319942,5.552646 52.319938,5.552651 52.319933,5.552655 52.319928,5.55266 52.319924,5.552665 52.319919,5.552669 52.319914,5.552674 52.31991,5.552679 52.319905,5.552684 52.3199,5.552689 52.319896,5.552694 52.319891,5.552698 52.319886,5.552703 52.319882,5.552708 52.319877,5.552713 52.319873,5.552719 52.319868,5.552724 52.319864,5.552729 52.319859,5.552734 52.319855,5.552739 52.31985,5.552744 52.319846,5.55275 52.319841,5.552755 52.319837,5.55276 52.319832,5.552766 52.319828,5.552771 52.319823,5.552776 52.319819,5.552782 52.319815,5.552787 52.31981,5.552793 52.319806,5.552798 52.319802,5.552804 52.319797,5.55281 52.319793,5.552815 52.319789,5.552821 52.319784,5.552827 52.31978,5.552832 52.319776,5.552838 52.319772,5.552844 52.319767,5.55285 52.319763,5.552855 52.319759,5.552861 52.319755,5.552867 52.319751,5.552873 52.319746,5.552879 52.319742,5.552885 52.319738,5.552891 52.319734,5.552897 52.31973,5.552903 52.319726,5.552909 52.319722,5.552915 52.319718,5.552922 52.319714,5.552928 52.31971,5.552934 52.319706,5.55294 52.319702,5.552946 52.319698,5.552953 52.319694,5.552959 52.31969,5.552965 52.319686,5.552972 52.319682,5.552978 52.319679,5.552985 52.319675,5.552991 52.319671,5.552998 52.319667,5.553004 52.319663,5.553011 52.319659,5.553017 52.319656,5.553024 52.319652,5.55303 52.319648,5.553037 52.319645,5.553044 52.319641,5.55305 52.319637,5.553057 52.319633,5.553064 52.31963,5.553071 52.319626,5.553077 52.319623,5.553084 52.319619,5.553091 52.319615,5.553098 52.319612,5.553098 52.319612,5.553099 52.319611,5.553101 52.31961,5.553102 52.319609,5.553104 52.319609,5.553105 52.319608,5.553107 52.319607,5.553108 52.319606,5.553109 52.319605,5.553111 52.319605,5.553112 52.319604,5.553114 52.319603,5.553115 52.319602,5.553116 52.319602,5.553118 52.319601,5.553119 52.3196,5.553121 52.319599,5.553122 52.319598,5.553124 52.319598,5.553125 52.319597,5.553127 52.319596,5.553128 52.319595,5.553129 52.319594,5.553131 52.319594,5.553132 52.319593,5.553134 52.319592,5.553135 52.319591,5.553137 52.31959,5.553138 52.31959,5.553139 52.319589,5.553141 52.319588,5.553142 52.319587,5.553144 52.319587,5.553145 52.319586,5.553147 52.319585,5.553148 52.319584,5.55315 52.319583,5.553151 52.319583,5.553153 52.319582,5.553154 52.319581,5.553155 52.31958,5.553157 52.31958,5.553158 52.319579,5.55316 52.319578,5.553161 52.319577,5.553163 52.319576,5.553164 52.319576,5.553166 52.319575,5.553167 52.319574,5.553169 52.319573,5.55317 52.319573,5.553171 52.319572,5.553173 52.319571,5.553174 52.31957,5.553176 52.319569,5.553177 52.319569,5.553179 52.319568,5.55318 52.319567,5.553182 52.319566,5.553183 52.319566,5.553185 52.319565,5.553186 52.319564,5.553188 52.319563,5.553189 52.319563,5.553191 52.319562,5.553192 52.319561,5.553194 52.31956,5.553195 52.31956,5.553197 52.319559,5.553198 52.319558,5.553199 52.319557,5.553201 52.319557,5.553202 52.319556,5.553204 52.319555,5.553205 52.319554,5.553207 52.319554,5.553208 52.319553,5.55321 52.319552,5.553211 52.319551,5.553213 52.319551,5.553214 52.31955,5.553216 52.319549,5.553217 52.319548,5.553219 52.319548,5.55322 52.319547,5.553222 52.319546,5.553223 52.319545,5.553225 52.319545,5.553226 52.319544,5.553228 52.319543,5.553229 52.319542,5.553231 52.319542,5.553232 52.319541,5.553234 52.31954,5.553235 52.319539,5.553237 52.319539,5.553238 52.319538,5.55324 52.319537,5.553241 52.319536,5.553243 52.319536,5.553243 52.319536,5.553243 52.319536,5.553243 52.319536,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553245 52.319535,5.553245 52.319535,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553248 52.319533,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.31953,5.55325 52.31953,5.55325 52.31953,5.55325 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.319529,5.553252 52.319528,5.553252 52.319528,5.553252 52.319527,5.553252 52.319527,5.553253 52.319526,5.553253 52.319526,5.553253 52.319525,5.553253 52.319525,5.553254 52.319524,5.553254 52.319524,5.553254 52.319523,5.553254 52.319522,5.553255 52.319522,5.553255 52.319521,5.553255 52.319521,5.553255 52.31952,5.553255 52.31952,5.553255 52.319519,5.553256 52.319519,5.553256 52.319518,5.553256 52.319517,5.553256 52.319517,5.553256 52.319516,5.553256 52.319516,5.553256 52.319515,5.553256 52.319515,5.553257 52.319514,5.553257 52.319513,5.553257 52.319513,5.553257 52.319512,5.553257 52.319512,5.553257 52.319511,5.553257 52.319511,5.553257 52.31951,5.553257 52.319509,5.553257 52.319509,5.553257 52.319508,5.553257 52.319508,5.553257 52.319507,5.553257 52.319507,5.553257 52.319506,5.553257 52.319505,5.553257 52.319505,5.553257 52.319504,5.553257 52.319504,5.553257 52.319503,5.553256 52.319503,5.553256 52.319502,5.553256 52.319501,5.553256 52.319501,5.553256 52.3195,5.553256 52.3195,5.553256 52.319499,5.553256 52.319499,5.553255 52.319498,5.553255 52.319498,5.553255 52.319497,5.553255 52.319496,5.553255 52.319496,5.553255 52.319495,5.553254 52.319495,5.553254 52.319494,5.553254 52.319494,5.553254 52.319493,5.553253 52.319493,5.553253 52.319492,5.553253 52.319491,5.553253 52.319491,5.553252 52.31949,5.553252 52.31949,5.553252 52.319489,5.553252 52.319489,5.553251 52.319488,5.553251 52.319488,5.553251 52.319487,5.55325 52.319487,5.55325 52.319486,5.55325 52.319486,5.553249 52.319485,5.553249 52.319484,5.553248 52.319484,5.553248 52.319483,5.553248 52.319483,5.553247 52.319482,5.553247 52.319482,5.553247 52.319481,5.553246 52.319481,5.553246 52.31948,5.553245 52.31948,5.553245 52.319479,5.553244 52.319479,5.553244 52.319478,5.553243 52.319478,5.553243 52.319477,5.553243 52.319477,5.553242 52.319476,5.553242 52.319476,5.553242 52.319476,5.553241 52.319475,5.55324 52.319475,5.553239 52.319474,5.553238 52.319474,5.553237 52.319474,5.553237 52.319473,5.553236 52.319473,5.553235 52.319472,5.553234 52.319472,5.553233 52.319471,5.553232 52.319471,5.553231 52.319471,5.55323 52.31947,5.553229 52.31947,5.553229 52.319469,5.553228 52.319469,5.553227 52.319469,5.553226 52.319468,5.553225 52.319468,5.553224 52.319468,5.553223 52.319467,5.553222 52.319467,5.553221 52.319467,5.55322 52.319467,5.553219 52.319466,5.553218 52.319466,5.553217 52.319466,5.553216 52.319465,5.553215 52.319465,5.553214 52.319465,5.553212 52.319465,5.553211 52.319465,5.55321 52.319464,5.553209 52.319464,5.553208 52.319464,5.553207 52.319464,5.553206 52.319464,5.553205 52.319463,5.553204 52.319463,5.553203 52.319463,5.553202 52.319463,5.553201 52.319463,5.553199 52.319463,5.553198 52.319463,5.553197 52.319463,5.553196 52.319463,5.553195 52.319463,5.553194 52.319462,5.553193 52.319462,5.553192 52.319462,5.553191 52.319462,5.55319 52.319462,5.553188 52.319462,5.553187 52.319462,5.553186 52.319462,5.553185 52.319462,5.553184 52.319462,5.553183 52.319463,5.553182 52.319463,5.553181 52.319463,5.553179 52.319463,5.553178 52.319463,5.553177 52.319463,5.553176 52.319463,5.553175 52.319463,5.553174 52.319463,5.553173 52.319463,5.553172 52.319464,5.553171 52.319464,5.55317 52.319464,5.553169 52.319464,5.553168 52.319464,5.553166 52.319465,5.553165 52.319465,5.553164 52.319465,5.553163 52.319465,5.553162 52.319465,5.553161 52.319466,5.55316 52.319466,5.553159 52.319466,5.553158 52.319466,5.553157 52.319467,5.553156 52.319467,5.553155 52.319467,5.553154 52.319468,5.553153 52.319468,5.553152 52.319468,5.553151 52.319469,5.55315 52.319469,5.553149 52.319469,5.553148 52.31947,5.553147 52.31947,5.553147 52.319471,5.553146 52.319471,5.553145 52.319471,5.553144 52.319472,5.553143 52.319472,5.553142 52.319473,5.553141 52.319473,5.553141 52.319473,5.553115 52.319479,5.553003 52.319513,5.553003 52.319513,5.552999 52.319514,5.552994 52.319515,5.55299 52.319517,5.552986 52.319518,5.552981 52.319519,5.552977 52.319521,5.552973 52.319522,5.552968 52.319523,5.552964 52.319525,5.552959 52.319526,5.552955 52.319527,5.552951 52.319529,5.552946 52.31953,5.552942 52.319531,5.552938 52.319532,5.552933 52.319534,5.552929 52.319535,5.552924 52.319536,5.55292 52.319537,5.552915 52.319539,5.552911 52.31954,5.552907 52.319541,5.552902 52.319542,5.552898 52.319544,5.552893 52.319545,5.552889 52.319546,5.552884 52.319547,5.55288 52.319548,5.552875 52.31955,5.552871 52.319551,5.552867 52.319552,5.552862 52.319553,5.552858 52.319554,5.552853 52.319556,5.552849 52.319557,5.552844 52.319558,5.55284 52.319559,5.552835 52.31956,5.552831 52.319561,5.552826 52.319563,5.552822 52.319564,5.552817 52.319565,5.552813 52.319566,5.552808 52.319567,5.552804 52.319568,5.552799 52.319569,5.552795 52.31957,5.55279 52.319571,5.552786 52.319573,5.552781 52.319574,5.552776 52.319575,5.552772 52.319576,5.552767 52.319577,5.552763 52.319578,5.552758 52.319579,5.552754 52.31958,5.552749 52.319581,5.552745 52.319582,5.55274 52.319583,5.552735 52.319584,5.552731 52.319585,5.552726 52.319586,5.552722 52.319587,5.552717 52.319588,5.552712 52.319589,5.552708 52.31959,5.552703 52.319591,5.552699 52.319592,5.552694 52.319593,5.552689 52.319594,5.552685 52.319595,5.55268 52.319596,5.552676 52.319597,5.552671 52.319598,5.552666 52.319599,5.552662 52.3196,5.552657 52.319601,5.552652 52.319602,5.552648 52.319603,5.552643 52.319603,5.552639 52.319604,5.552634 52.319605,5.552629 52.319606,5.552625 52.319607,5.55262 52.319608,5.552615 52.319609,5.552611 52.31961,5.552606 52.319611,5.552601 52.319611,5.552597 52.319612,5.552592 52.319613,5.552587 52.319614,5.552583 52.319615,5.552578 52.319616,5.552573 52.319616,5.552569 52.319617,5.552564 52.319618,5.552559 52.319619,5.552555 52.31962,5.552555 52.31962,5.552417 52.319654,5.552211 52.319577,5.551501 52.319437,5.55097 52.319276,5.550949 52.31927,5.550905 52.319252,5.550864 52.31923,5.550841 52.319213,5.550812 52.319185,5.550804 52.319176,5.549948 52.3176,5.549093 52.316023,5.54884 52.315529,5.548588 52.315035,5.548557 52.314934,5.548526 52.314833,5.54854 52.31478,5.548554 52.314727,5.548476 52.314532,5.548397 52.314336,5.548588 52.314184,5.548715 52.314026,5.548841 52.313867,5.549277 52.314803,5.549982 52.316239,5.551257 52.318601,5.553439 52.319032,5.553603 52.319077,5.553746 52.319144,5.553862 52.319228,5.553945 52.319326,5.55399 52.319433,5.553996 52.319543,5.553668 52.322007,5.553636 52.322109,5.553568 52.322205,5.553468 52.322289,5.553341 52.322358,5.55285 52.322571,5.552293 52.331544,5.552901 52.334058,5.552904 52.334087,5.552903 52.334112,5.552897 52.334137,5.552885 52.334165,5.552868 52.334184,5.552846 52.334205,5.55282 52.334224,5.552791 52.334242,5.552759 52.334257,5.552725 52.334271,5.552691 52.334281,5.547677 52.335739,5.544809 52.335201,5.544964 52.335125,5.545017 52.335098,5.545053 52.335083,5.545072 52.335077,5.545091 52.335071,5.545119 52.335064,5.545151 52.33506,5.545184 52.335057,5.545217 52.335057,5.545245 52.335059,5.545282 52.335064,5.545491 52.335105,5.545985 52.335202,5.546374 52.335278,5.546729 52.335348,5.547456 52.335491,5.547739 52.335547,5.547768 52.335552,5.547785 52.335556,5.547805 52.335558,5.547824 52.335561,5.547842 52.335562,5.547873 52.335564,5.547888 52.335564,5.547917 52.335564,5.547931 52.335562,5.547961 52.335559,5.548018 52.335545,5.548074 52.335531,5.548137 52.335513,5.548551 52.335394,5.548575 52.335428,5.550617 52.334835,5.552674 52.334236,5.552674 52.334236,5.552677 52.334236,5.55268 52.334235,5.552683 52.334234,5.552686 52.334233,5.55269 52.334232,5.552693 52.334231,5.552696 52.33423,5.552699 52.334229,5.552702 52.334227,5.552705 52.334226,5.552708 52.334225,5.552711 52.334224,5.552713 52.334223,5.552716 52.334222,5.552719 52.33422,5.552722 52.334219,5.552725 52.334218,5.552728 52.334216,5.55273 52.334215,5.552733 52.334214,5.552736 52.334212,5.552738 52.334211,5.552741 52.33421,5.552744 52.334208,5.552746 52.334207,5.552749 52.334205,5.552751 52.334204,5.552754 52.334202,5.552756 52.334201,5.552759 52.334199,5.552761 52.334198,5.552763 52.334196,5.552766 52.334194,5.552768 52.334193,5.55277 52.334191,5.552772 52.334189,5.552774 52.334188,5.552777 52.334186,5.552779 52.334184,5.552781 52.334183,5.552783 52.334181,5.552785 52.334179,5.552787 52.334177,5.552789 52.334176,5.55279 52.334174,5.552792 52.334172,5.552794 52.33417,5.552796 52.334168,5.552797 52.334166,5.552799 52.334164,5.552801 52.334163,5.552802 52.334161,5.552804 52.334159,5.552805 52.334157,5.552807 52.334155,5.552808 52.334153,5.55281 52.334151,5.552811 52.334149,5.552812 52.334147,5.552814 52.334145,5.552815 52.334143,5.552816 52.334141,5.552817 52.334139,5.552818 52.334137,5.552819 52.334135,5.55282 52.334133,5.552821 52.334131,5.552822 52.334129,5.552823 52.334127,5.552824 52.334124,5.552825 52.334122,5.552825 52.33412,5.552826 52.334118,5.552827 52.334116,5.552827 52.334114,5.552828 52.334112,5.552828 52.33411,5.552829 52.334108,5.552829 52.334105,5.552829 52.334103,5.55283 52.334101,5.55283 52.334099,5.55283 52.334097,5.55283 52.334095,5.552831 52.334093,5.552831 52.334091,5.552831 52.334088,5.552831 52.334086,5.552831 52.334084,5.552831 52.334082,5.552831 52.33408,5.55283 52.334078,5.55283 52.334076,5.55283 52.334073,5.55283 52.334071,5.552829 52.334069,5.552829 52.334067,5.552828 52.334065,5.552828 52.334063,5.552828 52.334063,5.552554 52.332932,5.552279 52.331791,5.552276 52.331781,5.552271 52.331771,5.552264 52.331761,5.552255 52.331751,5.552245 52.331742,5.552233 52.331734,5.55222 52.331727,5.552203 52.331719,5.552185 52.331717,5.552169 52.331717,5.552152 52.331718,5.55213 52.331721,5.55211 52.331726,5.552085 52.331735,5.552068 52.331744,5.552045 52.331763,5.552135 52.332117,5.552226 52.332475,5.552229 52.332494,5.552228 52.332514,5.552226 52.332526,5.552224 52.332532,5.552219 52.332545,5.552213 52.332553,5.552203 52.332568,5.55219 52.332581,5.552175 52.332592,5.552158 52.332603,5.552134 52.332614,5.552079 52.332635,5.550947 52.332926,5.549816 52.333218,5.549672 52.333241,5.5498 52.333439,5.550251 52.333328,5.550701 52.333217,5.551135 52.333112,5.551568 52.333006,5.551602 52.333031,5.5519 52.333428,5.552186 52.33381,5.552186 52.33381,5.552187 52.333812,5.552189 52.333813,5.55219 52.333815,5.552192 52.333817,5.552193 52.333818,5.552195 52.33382,5.552196 52.333822,5.552197 52.333823,5.552198 52.333825,5.5522 52.333827,5.552201 52.333828,5.552202 52.33383,5.552203 52.333832,5.552204 52.333833,5.552204 52.333835,5.552205 52.333837,5.552206 52.333839,5.552207 52.33384,5.552208 52.333842,5.552208 52.333844,5.552209 52.333846,5.552209 52.333848,5.55221 52.333849,5.55221 52.333851,5.55221 52.333853,5.552211 52.333855,5.552211 52.333857,5.552211 52.333858,5.552211 52.33386,5.552211 52.333862,5.552211 52.333864,5.552211 52.333866,5.552211 52.333868,5.552211 52.333869,5.552211 52.333871,5.552211 52.333873,5.552211 52.333875,5.55221 52.333877,5.55221 52.333879,5.552209 52.33388,5.552209 52.333882,5.552208 52.333884,5.552208 52.333886,5.552207 52.333888,5.552206 52.333889,5.552205 52.333891,5.552205 52.333893,5.552204 52.333895,5.552203 52.333896,5.552202 52.333898,5.552201 52.3339,5.5522 52.333901,5.552199 52.333903,5.552197 52.333905,5.552196 52.333906,5.552195 52.333908,5.552194 52.33391,5.552192 52.333911,5.552191 52.333913,5.552189 52.333915,5.552188 52.333916,5.552186 52.333918,5.552185 52.333919,5.552183 52.333921,5.552181 52.333922,5.552179 52.333924,5.552178 52.333925,5.552176 52.333927,5.552174 52.333928,5.552172 52.333929,5.55217 52.333931,5.552168 52.333932,5.552166 52.333933,5.552164 52.333935,5.552162 52.333936,5.55216 52.333937,5.552157 52.333939,5.552155 52.33394,5.552153 52.333941,5.552151 52.333942,5.552148 52.333943,5.552146 52.333944,5.552143 52.333945,5.552141 52.333946,5.552139 52.333948,5.552136 52.333949,5.552134 52.333949,5.552131 52.33395,5.552128 52.333951,5.552126 52.333952,5.552123 52.333953,5.55212 52.333954,5.552118 52.333955,5.552115 52.333955,5.552112 52.333956,5.55211 52.333957,5.552107 52.333958,5.552104 52.333958,5.552101 52.333959,5.552101 52.333959,5.551999 52.333988,5.551978 52.333993,5.551814 52.334041,5.55165 52.334089,5.551629 52.334092,5.551442 52.334145,5.551262 52.334196,5.551043 52.334259,5.550784 52.334334,5.55072 52.334249,5.550389 52.334345,5.550438 52.334408,5.550454 52.334427,5.549921 52.334579,5.549387 52.33473,5.549387 52.33473,5.549385 52.334731,5.549384 52.334731,5.549382 52.334731,5.54938 52.334732,5.549378 52.334732,5.549376 52.334732,5.549374 52.334732,5.549373 52.334733,5.549371 52.334733,5.549369 52.334733,5.549367 52.334733,5.549365 52.334734,5.549363 52.334734,5.549361 52.334734,5.549359 52.334734,5.549358 52.334734,5.549356 52.334734,5.549354 52.334734,5.549352 52.334735,5.54935 52.334735,5.549348 52.334735,5.549346 52.334735,5.549344 52.334735,5.549342 52.334735,5.549341 52.334735,5.549339 52.334735,5.549337 52.334735,5.549335 52.334735,5.549333 52.334735,5.549331 52.334735,5.549329 52.334735,5.549327 52.334735,5.549325 52.334734,5.549324 52.334734,5.549322 52.334734,5.54932 52.334734,5.549318 52.334734,5.549316 52.334734,5.549314 52.334733,5.549312 52.334733,5.54931 52.334733,5.549309 52.334733,5.549307 52.334733,5.549305 52.334732,5.549303 52.334732,5.549301 52.334732,5.549299 52.334731,5.549298 52.334731,5.549296 52.334731,5.549294 52.334731,5.549292 52.33473,5.54929 52.33473,5.549289 52.334729,5.549287 52.334729,5.549285 52.334729,5.549283 52.334728,5.549282 52.334728,5.54928 52.334727,5.549278 52.334727,5.549276 52.334726,5.549275 52.334726,5.549273 52.334725,5.549271 52.334725,5.549269 52.334724,5.549268 52.334724,5.549266 52.334723,5.549264 52.334723,5.549263 52.334722,5.549261 52.334722,5.54926 52.334721,5.549258 52.33472,5.549256 52.33472,5.549255 52.334719,5.549253 52.334718,5.549252 52.334718,5.54925 52.334717,5.549249 52.334716,5.549247 52.334716,5.549246 52.334715,5.549244 52.334714,5.549243 52.334714,5.549241 52.334713,5.54924 52.334712,5.549238 52.334711,5.549237 52.334711,5.549235 52.33471,5.549234 52.334709,5.549233 52.334708,5.549231 52.334707,5.54923 52.334707,5.549229 52.334706,5.549227 52.334705,5.549226 52.334704,5.549225 52.334703,5.549224 52.334702,5.549222 52.334701,5.549221 52.334701,5.54922 52.3347,5.549219 52.334699,5.549219 52.334699,5.549062 52.334493,5.548982 52.334385,5.548796 52.334144,5.548657 52.333961,5.549358 52.333757,5.549025 52.333348,5.548843 52.333378,5.548497 52.333484,5.548292 52.333548,5.548011 52.333635,5.548 52.333641,5.547992 52.333648,5.547987 52.333656,5.547984 52.333669,5.547986 52.333678,5.547988 52.333683,5.54799 52.333688,5.547995 52.333696,5.548 52.333702,5.548203 52.333971,5.548498 52.334362,5.548504 52.334375,5.548507 52.334388,5.548505 52.334396,5.548501 52.334408,5.548233 52.334922,5.548035 52.334882,5.548062 52.334831,5.548071 52.334812,5.548103 52.334751,5.548135 52.33469,5.547815 52.334256,5.547785 52.334265,5.547725 52.334253,5.547682 52.334195,5.547644 52.334143,5.547605 52.334091,5.547568 52.334163,5.547538 52.334158,5.547531 52.334172,5.547475 52.334283,5.547446 52.334291,5.547393 52.334393,5.547368 52.334388,5.547196 52.334718,5.547015 52.334683,5.547041 52.334632,5.547051 52.334613,5.547114 52.334491,5.547084 52.334449,5.546794 52.334057,5.546765 52.334066,5.546705 52.334054,5.546585 52.333892,5.546547 52.333964,5.546519 52.333959,5.546511 52.333975,5.546454 52.334084,5.546425 52.334092,5.546372 52.334194,5.546347 52.334189,5.546176 52.334519,5.545994 52.334484,5.546021 52.334432,5.546031 52.334413,5.546094 52.334292,5.545774 52.333858,5.545744 52.333866,5.545684 52.333855,5.545564 52.333693,5.545527 52.333765,5.545496 52.333759,5.545489 52.333773,5.545434 52.333885,5.545405 52.333893,5.545352 52.333995,5.545327 52.33399,5.545155 52.33432,5.544893 52.334269,5.545415 52.333259,5.545535 52.333283,5.545572 52.333214,5.545652 52.333229,5.54565 52.333234,5.545618 52.333299,5.546742 52.333519,5.547027 52.333429,5.547092 52.333406,5.547378 52.333315,5.547678 52.33322,5.547839 52.333169,5.547868 52.33316,5.548043 52.333104,5.548062 52.333098,5.548422 52.332983,5.548464 52.332968,5.548502 52.33295,5.548537 52.33293,5.548559 52.332916,5.548577 52.332896,5.548586 52.332881,5.548714 52.332638,5.548759 52.332552,5.54874 52.332551,5.548719 52.332533,5.548702 52.332518,5.548663 52.33248,5.548625 52.332443,5.548552 52.332432,5.548341 52.332483,5.548266 52.332502,5.548007 52.332563,5.547862 52.332597,5.547839 52.332592,5.547763 52.332577,5.547336 52.332494,5.546833 52.332396,5.546319 52.332296,5.546149 52.332262,5.546131 52.332299,5.546051 52.332283,5.546069 52.332247,5.5459 52.332214,5.545647 52.332165,5.545399 52.332116,5.545539 52.331845,5.545616 52.331698,5.5457 52.331715,5.545688 52.331738,5.546168 52.331832,5.546324 52.331863,5.546332 52.331847,5.546388 52.331843,5.547708 52.331785,5.54782 52.332178,5.548079 52.33228,5.548157 52.332278,5.549 52.331953,5.54905 52.331951,5.549069 52.331932,5.549178 52.331727,5.549201 52.331684,5.549201 52.331684,5.549201 52.331683,5.549202 52.331682,5.549202 52.331681,5.549203 52.33168,5.549204 52.331678,5.549204 52.331677,5.549205 52.331676,5.549205 52.331675,5.549206 52.331673,5.549206 52.331672,5.549207 52.331671,5.549207 52.33167,5.549208 52.331669,5.549208 52.331667,5.549209 52.331666,5.549209 52.331665,5.54921 52.331664,5.54921 52.331662,5.54921 52.331661,5.549211 52.33166,5.549211 52.331659,5.549211 52.331657,5.549212 52.331656,5.549212 52.331655,5.549212 52.331654,5.549213 52.331652,5.549213 52.331651,5.549213 52.33165,5.549213 52.331649,5.549214 52.331647,5.549214 52.331646,5.549214 52.331645,5.549214 52.331644,5.549214 52.331642,5.549215 52.331641,5.549215 52.33164,5.549215 52.331639,5.549215 52.331637,5.549215 52.331636,5.549215 52.331635,5.549215 52.331634,5.549215 52.331632,5.549215 52.331631,5.549215 52.33163,5.549215 52.331629,5.549215 52.331627,5.549215 52.331626,5.549215 52.331625,5.549215 52.331624,5.549215 52.331622,5.549215 52.331621,5.549215 52.33162,5.549215 52.331618,5.549214 52.331617,5.549214 52.331616,5.549214 52.331615,5.549214 52.331613,5.549214 52.331612,5.549213 52.331611,5.549213 52.33161,5.549213 52.331608,5.549213 52.331607,5.549212 52.331606,5.549212 52.331605,5.549212 52.331603,5.549211 52.331602,5.549211 52.331601,5.549211 52.3316,5.54921 52.331598,5.54921 52.331597,5.54921 52.331596,5.549209 52.331595,5.549209 52.331594,5.549208 52.331592,5.549208 52.331591,5.549207 52.33159,5.549207 52.331589,5.549206 52.331587,5.549206 52.331586,5.549205 52.331585,5.549205 52.331584,5.549204 52.331583,5.549204 52.331581,5.549203 52.33158,5.549202 52.331579,5.549202 52.331578,5.549201 52.331576,5.5492 52.331575,5.5492 52.331574,5.549199 52.331573,5.549198 52.331572,5.549198 52.331571,5.549197 52.331569,5.549196 52.331568,5.549196 52.331567,5.549195 52.331566,5.549194 52.331565,5.549193 52.331564,5.549192 52.331562)),((5.553003 52.319513,5.553115 52.319479,5.553141 52.319473,5.553141 52.319473,5.553142 52.319473,5.553143 52.319472,5.553144 52.319472,5.553145 52.319471,5.553146 52.319471,5.553147 52.319471,5.553147 52.31947,5.553148 52.31947,5.553149 52.319469,5.55315 52.319469,5.553151 52.319469,5.553152 52.319468,5.553153 52.319468,5.553154 52.319468,5.553155 52.319467,5.553156 52.319467,5.553157 52.319467,5.553158 52.319466,5.553159 52.319466,5.55316 52.319466,5.553161 52.319466,5.553162 52.319465,5.553163 52.319465,5.553164 52.319465,5.553165 52.319465,5.553166 52.319465,5.553168 52.319464,5.553169 52.319464,5.55317 52.319464,5.553171 52.319464,5.553172 52.319464,5.553173 52.319463,5.553174 52.319463,5.553175 52.319463,5.553176 52.319463,5.553177 52.319463,5.553178 52.319463,5.553179 52.319463,5.553181 52.319463,5.553182 52.319463,5.553183 52.319463,5.553184 52.319462,5.553185 52.319462,5.553186 52.319462,5.553187 52.319462,5.553188 52.319462,5.55319 52.319462,5.553191 52.319462,5.553192 52.319462,5.553193 52.319462,5.553194 52.319462,5.553195 52.319463,5.553196 52.319463,5.553197 52.319463,5.553198 52.319463,5.553199 52.319463,5.553201 52.319463,5.553202 52.319463,5.553203 52.319463,5.553204 52.319463,5.553205 52.319463,5.553206 52.319464,5.553207 52.319464,5.553208 52.319464,5.553209 52.319464,5.55321 52.319464,5.553211 52.319465,5.553212 52.319465,5.553214 52.319465,5.553215 52.319465,5.553216 52.319465,5.553217 52.319466,5.553218 52.319466,5.553219 52.319466,5.55322 52.319467,5.553221 52.319467,5.553222 52.319467,5.553223 52.319467,5.553224 52.319468,5.553225 52.319468,5.553226 52.319468,5.553227 52.319469,5.553228 52.319469,5.553229 52.319469,5.553229 52.31947,5.55323 52.31947,5.553231 52.319471,5.553232 52.319471,5.553233 52.319471,5.553234 52.319472,5.553235 52.319472,5.553236 52.319473,5.553237 52.319473,5.553237 52.319474,5.553238 52.319474,5.553239 52.319474,5.55324 52.319475,5.553241 52.319475,5.553242 52.319476,5.553242 52.319476,5.553242 52.319476,5.553243 52.319477,5.553243 52.319477,5.553243 52.319478,5.553244 52.319478,5.553244 52.319479,5.553245 52.319479,5.553245 52.31948,5.553246 52.31948,5.553246 52.319481,5.553247 52.319481,5.553247 52.319482,5.553247 52.319482,5.553248 52.319483,5.553248 52.319483,5.553248 52.319484,5.553249 52.319484,5.553249 52.319485,5.55325 52.319486,5.55325 52.319486,5.55325 52.319487,5.553251 52.319487,5.553251 52.319488,5.553251 52.319488,5.553252 52.319489,5.553252 52.319489,5.553252 52.31949,5.553252 52.31949,5.553253 52.319491,5.553253 52.319491,5.553253 52.319492,5.553253 52.319493,5.553254 52.319493,5.553254 52.319494,5.553254 52.319494,5.553254 52.319495,5.553255 52.319495,5.553255 52.319496,5.553255 52.319496,5.553255 52.319497,5.553255 52.319498,5.553255 52.319498,5.553256 52.319499,5.553256 52.319499,5.553256 52.3195,5.553256 52.3195,5.553256 52.319501,5.553256 52.319501,5.553256 52.319502,5.553256 52.319503,5.553257 52.319503,5.553257 52.319504,5.553257 52.319504,5.553257 52.319505,5.553257 52.319505,5.553257 52.319506,5.553257 52.319507,5.553257 52.319507,5.553257 52.319508,5.553257 52.319508,5.553257 52.319509,5.553257 52.319509,5.553257 52.31951,5.553257 52.319511,5.553257 52.319511,5.553257 52.319512,5.553257 52.319512,5.553257 52.319513,5.553257 52.319513,5.553257 52.319514,5.553256 52.319515,5.553256 52.319515,5.553256 52.319516,5.553256 52.319516,5.553256 52.319517,5.553256 52.319517,5.553256 52.319518,5.553256 52.319519,5.553255 52.319519,5.553255 52.31952,5.553255 52.31952,5.553255 52.319521,5.553255 52.319521,5.553255 52.319522,5.553254 52.319522,5.553254 52.319523,5.553254 52.319524,5.553254 52.319524,5.553253 52.319525,5.553253 52.319525,5.553253 52.319526,5.553253 52.319526,5.553252 52.319527,5.553252 52.319527,5.553252 52.319528,5.553252 52.319528,5.553251 52.319529,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.55325 52.31953,5.55325 52.31953,5.55325 52.31953,5.55325 52.31953,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319535,5.553245 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319536,5.553243 52.319536,5.553243 52.319536,5.553243 52.319536,5.553241 52.319536,5.55324 52.319537,5.553238 52.319538,5.553237 52.319539,5.553235 52.319539,5.553234 52.31954,5.553232 52.319541,5.553231 52.319542,5.553229 52.319542,5.553228 52.319543,5.553226 52.319544,5.553225 52.319545,5.553223 52.319545,5.553222 52.319546,5.55322 52.319547,5.553219 52.319548,5.553217 52.319548,5.553216 52.319549,5.553214 52.31955,5.553213 52.319551,5.553211 52.319551,5.55321 52.319552,5.553208 52.319553,5.553207 52.319554,5.553205 52.319554,5.553204 52.319555,5.553202 52.319556,5.553201 52.319557,5.553199 52.319557,5.553198 52.319558,5.553197 52.319559,5.553195 52.31956,5.553194 52.31956,5.553192 52.319561,5.553191 52.319562,5.553189 52.319563,5.553188 52.319563,5.553186 52.319564,5.553185 52.319565,5.553183 52.319566,5.553182 52.319566,5.55318 52.319567,5.553179 52.319568,5.553177 52.319569,5.553176 52.319569,5.553174 52.31957,5.553173 52.319571,5.553171 52.319572,5.55317 52.319573,5.553169 52.319573,5.553167 52.319574,5.553166 52.319575,5.553164 52.319576,5.553163 52.319576,5.553161 52.319577,5.55316 52.319578,5.553158 52.319579,5.553157 52.31958,5.553155 52.31958,5.553154 52.319581,5.553153 52.319582,5.553151 52.319583,5.55315 52.319583,5.553148 52.319584,5.553147 52.319585,5.553145 52.319586,5.553144 52.319587,5.553142 52.319587,5.553141 52.319588,5.553139 52.319589,5.553138 52.31959,5.553137 52.31959,5.553135 52.319591,5.553134 52.319592,5.553132 52.319593,5.553131 52.319594,5.553129 52.319594,5.553128 52.319595,5.553127 52.319596,5.553125 52.319597,5.553124 52.319598,5.553122 52.319598,5.553121 52.319599,5.553119 52.3196,5.553118 52.319601,5.553116 52.319602,5.553115 52.319602,5.553114 52.319603,5.553112 52.319604,5.553111 52.319605,5.553109 52.319605,5.553108 52.319606,5.553107 52.319607,5.553105 52.319608,5.553104 52.319609,5.553102 52.319609,5.553101 52.31961,5.553099 52.319611,5.553098 52.319612,5.553098 52.319612,5.553091 52.319615,5.553084 52.319619,5.553077 52.319623,5.553071 52.319626,5.553064 52.31963,5.553057 52.319633,5.55305 52.319637,5.553044 52.319641,5.553037 52.319644,5.55303 52.319648,5.553024 52.319652,5.553017 52.319656,5.553011 52.319659,5.553004 52.319663,5.552998 52.319667,5.552991 52.319671,5.552985 52.319675,5.552978 52.319679,5.552972 52.319682,5.552965 52.319686,5.552959 52.31969,5.552953 52.319694,5.552946 52.319698,5.55294 52.319702,5.552934 52.319706,5.552928 52.31971,5.552922 52.319714,5.552915 52.319718,5.552909 52.319722,5.552903 52.319726,5.552897 52.31973,5.552891 52.319734,5.552885 52.319738,5.552879 52.319742,5.552873 52.319746,5.552867 52.319751,5.552861 52.319755,5.552855 52.319759,5.55285 52.319763,5.552844 52.319767,5.552838 52.319772,5.552832 52.319776,5.552827 52.31978,5.552821 52.319784,5.552815 52.319789,5.55281 52.319793,5.552804 52.319797,5.552798 52.319802,5.552793 52.319806,5.552787 52.31981,5.552782 52.319815,5.552776 52.319819,5.552771 52.319823,5.552766 52.319828,5.55276 52.319832,5.552755 52.319837,5.55275 52.319841,5.552744 52.319846,5.552739 52.31985,5.552734 52.319855,5.552729 52.319859,5.552724 52.319864,5.552719 52.319868,5.552713 52.319873,5.552708 52.319877,5.552703 52.319882,5.552698 52.319886,5.552694 52.319891,5.552689 52.319896,5.552684 52.3199,5.552679 52.319905,5.552674 52.31991,5.552669 52.319914,5.552665 52.319919,5.55266 52.319924,5.552655 52.319928,5.552651 52.319933,5.552646 52.319938,5.552641 52.319942,5.552637 52.319947,5.552632 52.319952,5.552628 52.319957,5.552623 52.319962,5.552619 52.319966,5.552615 52.319971,5.55261 52.319976,5.552606 52.319981,5.552602 52.319986,5.552597 52.31999,5.552593 52.319995,5.552589 52.32,5.552585 52.320005,5.552581 52.32001,5.552577 52.320015,5.552573 52.32002,5.552569 52.320025,5.552565 52.32003,5.552561 52.320035,5.552557 52.32004,5.552557 52.32004,5.552556 52.320041,5.552555 52.320041,5.552555 52.320042,5.552554 52.320043,5.552553 52.320044,5.552552 52.320045,5.552551 52.320046,5.552551 52.320047,5.55255 52.320047,5.552549 52.320048,5.552548 52.320049,5.552548 52.32005,5.552547 52.320051,5.552546 52.320052,5.552545 52.320053,5.552545 52.320054,5.552544 52.320054,5.552543 52.320055,5.552542 52.320056,5.552542 52.320057,5.552541 52.320058,5.55254 52.320059,5.552539 52.32006,5.552539 52.320061,5.552538 52.320061,5.552537 52.320062,5.552537 52.320063,5.552536 52.320064,5.552535 52.320065,5.552534 52.320066,5.552534 52.320067,5.552533 52.320068,5.552532 52.320068,5.552531 52.320069,5.552531 52.32007,5.55253 52.320071,5.552529 52.320072,5.552528 52.320073,5.552528 52.320074,5.552527 52.320075,5.552526 52.320075,5.552526 52.320076,5.552525 52.320077,5.552524 52.320078,5.552523 52.320079,5.552523 52.32008,5.552522 52.320081,5.552521 52.320082,5.55252 52.320083,5.55252 52.320083,5.552519 52.320084,5.552518 52.320085,5.552518 52.320086,5.552517 52.320087,5.552516 52.320088,5.552515 52.320089,5.552515 52.32009,5.552514 52.32009,5.552513 52.320091,5.552513 52.320092,5.552512 52.320093,5.552511 52.320094,5.55251 52.320095,5.55251 52.320096,5.552509 52.320097,5.552508 52.320098,5.552508 52.320098,5.552507 52.320099,5.552506 52.3201,5.552506 52.320101,5.552505 52.320102,5.552504 52.320103,5.552503 52.320104,5.552503 52.320105,5.552502 52.320106,5.552501 52.320106,5.552501 52.320107,5.5525 52.320108,5.552499 52.320109,5.552499 52.32011,5.552498 52.320111,5.552497 52.320112,5.552496 52.320113,5.552496 52.320114,5.552495 52.320114,5.552494 52.320115,5.552494 52.320116,5.552493 52.320117,5.552492 52.320118,5.552492 52.320119,5.552491 52.32012,5.55249 52.320121,5.55249 52.320122,5.552489 52.320122,5.552488 52.320123,5.552488 52.320124,5.552487 52.320125,5.552486 52.320126,5.552486 52.320127,5.552486 52.320127,5.552485 52.320339,5.552482 52.320905,5.552512 52.320911,5.552629 52.320937,5.552659 52.320928,5.552688 52.320918,5.552702 52.320912,5.552715 52.320906,5.552732 52.320897,5.55276 52.32088,5.552768 52.320876,5.55278 52.320873,5.552789 52.320873,5.552802 52.320874,5.552811 52.320876,5.552819 52.320879,5.552826 52.320883,5.552832 52.320888,5.552836 52.320894,5.552837 52.3209,5.552837 52.320906,5.552835 52.320912,5.55283 52.320917,5.552826 52.320921,5.552708 52.320989,5.552415 52.321102,5.552156 52.321196,5.552162 52.321222,5.551973 52.321293,5.551936 52.321282,5.551868 52.321307,5.5518 52.321332,5.551755 52.321355,5.55171 52.321378,5.551663 52.321407,5.55163 52.321433,5.551604 52.321458,5.551578 52.321489,5.551557 52.321522,5.551544 52.321552,5.551538 52.321577,5.551539 52.321643,5.551541 52.321709,5.55155 52.321762,5.551559 52.321814,5.551586 52.321875,5.551623 52.321934,5.55167 52.321991,5.551698 52.322017,5.551743 52.322057,5.551792 52.32208,5.551856 52.322104,5.551917 52.322122,5.551982 52.322136,5.552048 52.322146,5.552116 52.322151,5.552202 52.322154,5.552263 52.322152,5.552323 52.322147,5.552356 52.322142,5.552418 52.322129,5.552477 52.322112,5.552534 52.322092,5.552691 52.322022,5.552763 52.32199,5.552858 52.321949,5.55292 52.321953,5.552906 52.321989,5.552837 52.322021,5.552767 52.322054,5.55266 52.322103,5.55258 52.322137,5.552538 52.322152,5.552495 52.322166,5.552406 52.32219,5.55232 52.322204,5.552026 52.322225,5.552026 52.322225,5.552019 52.322227,5.552013 52.322228,5.552006 52.32223,5.551999 52.322232,5.551992 52.322233,5.551986 52.322235,5.551979 52.322237,5.551972 52.322239,5.551966 52.322241,5.551959 52.322243,5.551953 52.322245,5.551946 52.322247,5.55194 52.322249,5.551933 52.322251,5.551927 52.322253,5.551921 52.322256,5.551915 52.322258,5.551908 52.32226,5.551902 52.322263,5.551896 52.322265,5.55189 52.322268,5.551884 52.32227,5.551878 52.322273,5.551872 52.322275,5.551866 52.322278,5.551861 52.322281,5.551855 52.322283,5.551849 52.322286,5.551844 52.322289,5.551838 52.322292,5.551832 52.322295,5.551827 52.322298,5.551822 52.322301,5.551816 52.322304,5.551811 52.322307,5.551806 52.32231,5.551801 52.322313,5.551796 52.322316,5.55179 52.322319,5.551786 52.322323,5.551781 52.322326,5.551776 52.322329,5.551771 52.322333,5.551766 52.322336,5.551762 52.32234,5.551757 52.322343,5.551753 52.322347,5.551748 52.32235,5.551744 52.322354,5.55174 52.322357,5.551735 52.322361,5.551731 52.322365,5.551727 52.322368,5.551723 52.322372,5.551719 52.322376,5.551715 52.32238,5.551712 52.322383,5.551708 52.322387,5.551704 52.322391,5.551701 52.322395,5.551697 52.322399,5.551694 52.322403,5.551691 52.322407,5.551688 52.322411,5.551684 52.322415,5.551681 52.322419,5.551678 52.322423,5.551676 52.322427,5.551673 52.322431,5.55167 52.322435,5.551667 52.32244,5.551665 52.322444,5.551662 52.322448,5.55166 52.322452,5.551658 52.322456,5.551655 52.322461,5.551653 52.322465,5.551651 52.322469,5.551649 52.322474,5.551647 52.322478,5.551645 52.322482,5.551644 52.322487,5.551642 52.322491,5.551641 52.322495,5.551639 52.3225,5.551638 52.322504,5.551637 52.322508,5.551635 52.322513,5.551634 52.322517,5.551633 52.322522,5.551632 52.322526,5.551631 52.32253,5.551631 52.322535,5.55163 52.322539,5.551629 52.322544,5.551629 52.322548,5.551629 52.322553,5.551628 52.322557,5.551628 52.322562,5.551628 52.322562,5.551873 52.322671,5.551838 52.322805,5.551718 52.322924,5.551629 52.322991,5.55154 52.323059,5.551465 52.323087,5.551362 52.323106,5.55111 52.323061,5.55111 52.323022,5.550967 52.323075,5.550909 52.323107,5.550746 52.323208,5.550601 52.323319,5.550476 52.323439,5.550385 52.323582,5.550294 52.323726,5.550276 52.323766,5.550264 52.323806,5.55026 52.323848,5.550262 52.323889,5.550272 52.32393,5.550391 52.324048,5.550511 52.324165,5.550103 52.324535,5.549719 52.324881,5.549622 52.324988,5.549524 52.325094,5.549401 52.32526,5.549278 52.325426,5.549219 52.325555,5.549159 52.325685,5.549145 52.325732,5.549139 52.325781,5.549142 52.325829,5.549182 52.325895,5.549223 52.325961,5.549344 52.326069,5.549345 52.326184,5.549347 52.326299,5.549291 52.326313,5.549146 52.326461,5.549001 52.326609,5.548847 52.326806,5.548693 52.327002,5.548651 52.327097,5.548609 52.327192,5.548604 52.327216,5.548589 52.327264,5.548577 52.327288,5.548549 52.327334,5.548493 52.3274,5.548466 52.327451,5.548447 52.327497,5.548428 52.327544,5.548418 52.327591,5.548404 52.327686,5.548405 52.327798,5.54843 52.327911,5.548486 52.328019,5.54852 52.328077,5.548619 52.328227,5.548674 52.328288,5.548728 52.32835,5.548784 52.328407,5.548858 52.328469,5.548943 52.328525,5.548989 52.328551,5.549049 52.328582,5.549136 52.328617,5.549223 52.328652,5.549316 52.328681,5.549408 52.32871,5.549477 52.328724,5.549486 52.328723,5.5495 52.328719,5.549513 52.328713,5.549524 52.328705,5.54972 52.32871,5.550048 52.328659,5.550127 52.328691,5.55026 52.328659,5.550279 52.328657,5.550292 52.328656,5.550319 52.328657,5.550346 52.328662,5.550379 52.328673,5.550392 52.32868,5.550407 52.328694,5.550412 52.328704,5.550414 52.328715,5.550414 52.32872,5.550407 52.328741,5.550403 52.328748,5.550391 52.328761,5.550375 52.328772,5.550356 52.328781,5.550351 52.328782,5.550024 52.328869,5.549716 52.32895,5.549558 52.328919,5.549539 52.328915,5.549268 52.328862,5.549256 52.328883,5.548759 52.328786,5.548727 52.328844,5.548772 52.328854,5.548728 52.328938,5.548674 52.328927,5.548613 52.328818,5.548535 52.32868,5.548373 52.328396,5.546679 52.328066,5.546627 52.328056,5.546607 52.328049,5.546596 52.328042,5.546591 52.328038,5.546584 52.32803,5.546582 52.328025,5.54658 52.328015,5.546581 52.327855,5.546581 52.32784,5.546599 52.32781,5.546782 52.327606,5.546804 52.327574,5.546962 52.327273,5.547286 52.326652,5.547431 52.326373,5.547535 52.326171,5.547545 52.326153,5.547821 52.325625,5.547958 52.325385,5.54817 52.324979,5.548186 52.324949,5.548225 52.324805,5.548283 52.324594,5.548289 52.324581,5.548311 52.324551,5.548275 52.324545,5.548441 52.324224,5.548553 52.324008,5.548643 52.323836,5.548732 52.323663,5.548804 52.323525,5.548874 52.323384,5.54898 52.323173,5.549086 52.322954,5.549156 52.322805,5.549185 52.322737,5.549245 52.3226,5.549307 52.322443,5.54934 52.322353,5.549373 52.322264,5.549407 52.322175,5.549428 52.322098,5.54945 52.32202,5.549493 52.321866,5.549526 52.321728,5.54956 52.321591,5.549577 52.321493,5.549594 52.321396,5.549598 52.321376,5.549601 52.321357,5.549607 52.321322,5.549618 52.321262,5.549628 52.321201,5.549638 52.32112,5.549649 52.321038,5.549659 52.320956,5.549669 52.320874,5.549673 52.320799,5.549677 52.320725,5.549681 52.32065,5.549685 52.320576,5.549684 52.320487,5.549683 52.320399,5.549683 52.320311,5.549682 52.320222,5.549677 52.320135,5.549673 52.320047,5.549668 52.319959,5.549663 52.319872,5.54965 52.319769,5.549637 52.319666,5.549624 52.319563,5.549611 52.31946,5.549589 52.319358,5.549567 52.319255,5.549544 52.319153,5.549522 52.31905,5.549478 52.318888,5.549433 52.318727,5.549407 52.318646,5.549381 52.318566,5.549355 52.318485,5.549329 52.318405,5.549301 52.318332,5.549272 52.318259,5.549209 52.318109,5.549146 52.317958,5.549065 52.317792,5.548984 52.317625,5.548939 52.317536,5.548894 52.317447,5.548814 52.317296,5.548734 52.317144,5.548654 52.316993,5.548574 52.316842,5.548458 52.316622,5.548342 52.316402,5.54825 52.316227,5.548157 52.316052,5.547836 52.315444,5.547515 52.314837,5.547194 52.314229,5.547192 52.314225,5.548841 52.313867,5.548715 52.314026,5.548588 52.314184,5.548397 52.314336,5.548476 52.314532,5.548554 52.314727,5.54854 52.31478,5.548526 52.314833,5.548557 52.314934,5.548588 52.315035,5.54884 52.315529,5.549093 52.316023,5.549948 52.3176,5.550804 52.319176,5.550812 52.319185,5.550841 52.319213,5.550864 52.31923,5.550905 52.319252,5.550949 52.31927,5.55097 52.319276,5.551501 52.319437,5.552211 52.319577,5.552417 52.319654,5.552555 52.31962,5.552555 52.31962,5.552559 52.319619,5.552564 52.319618,5.552569 52.319617,5.552573 52.319616,5.552578 52.319616,5.552583 52.319615,5.552587 52.319614,5.552592 52.319613,5.552597 52.319612,5.552601 52.319611,5.552606 52.319611,5.552611 52.31961,5.552615 52.319609,5.55262 52.319608,5.552625 52.319607,5.552629 52.319606,5.552634 52.319605,5.552639 52.319604,5.552643 52.319603,5.552648 52.319603,5.552652 52.319602,5.552657 52.319601,5.552662 52.3196,5.552666 52.319599,5.552671 52.319598,5.552676 52.319597,5.55268 52.319596,5.552685 52.319595,5.552689 52.319594,5.552694 52.319593,5.552699 52.319592,5.552703 52.319591,5.552708 52.31959,5.552712 52.319589,5.552717 52.319588,5.552722 52.319587,5.552726 52.319586,5.552731 52.319585,5.552735 52.319584,5.55274 52.319583,5.552745 52.319582,5.552749 52.319581,5.552754 52.31958,5.552758 52.319579,5.552763 52.319578,5.552767 52.319577,5.552772 52.319576,5.552776 52.319575,5.552781 52.319574,5.552786 52.319573,5.55279 52.319571,5.552795 52.31957,5.552799 52.319569,5.552804 52.319568,5.552808 52.319567,5.552813 52.319566,5.552817 52.319565,5.552822 52.319564,5.552826 52.319563,5.552831 52.319561,5.552835 52.31956,5.55284 52.319559,5.552844 52.319558,5.552849 52.319557,5.552853 52.319556,5.552858 52.319554,5.552862 52.319553,5.552867 52.319552,5.552871 52.319551,5.552875 52.31955,5.55288 52.319548,5.552884 52.319547,5.552889 52.319546,5.552893 52.319545,5.552898 52.319544,5.552902 52.319542,5.552907 52.319541,5.552911 52.31954,5.552915 52.319539,5.55292 52.319537,5.552924 52.319536,5.552929 52.319535,5.552933 52.319534,5.552938 52.319532,5.552942 52.319531,5.552946 52.31953,5.552951 52.319529,5.552955 52.319527,5.552959 52.319526,5.552964 52.319525,5.552968 52.319523,5.552973 52.319522,5.552977 52.319521,5.552981 52.319519,5.552986 52.319518,5.55299 52.319517,5.552994 52.319515,5.552999 52.319514,5.553003 52.319513))) diff --git a/rust/geo-test-fixtures/fixtures/norway_concave_hull.wkt b/rust/geo-test-fixtures/fixtures/norway_concave_hull.wkt new file mode 100644 index 00000000..bf01069f --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/norway_concave_hull.wkt @@ -0,0 +1 @@ +LINESTRING(5.227792433014884 59.468030338041025,5.23044532188834 59.45613831272054,5.2384039885087095 59.432354262079556,5.249015544002534 59.432354262079556,5.48777554261359 58.75186614651813,5.503692875854327 58.743938129637804,5.519610209095064 58.72015407899682,5.516957320221608 58.70958338982305,5.538180431209257 58.671264641568136,5.551444875576538 58.656729943954204,5.572667986564188 58.648801927073876,5.625725764033311 58.59330580891158,5.6389902084005925 58.584056455884536,5.649601763894417 58.55498706065667,5.70265954136354 58.53516701845585,5.726535541224646 58.53516701845585,5.782246207567226 58.5008122786411,5.787551985314138 58.49024158946733,5.824692429542525 58.482313572587,5.861832873770911 58.47174288341323,5.8777502070116485 58.46381486653291,5.99447731744372 58.41888943754438,6.005088872937545 58.41096142066406,6.015700428431369 58.40303340378373,6.023659095051738 58.38849870616979,6.0501879837863 58.37528534470258,6.068758205900493 58.37264267240914,6.100592872381967 58.37132133626242,6.100592872381967 58.36075064708865,6.169567983091828 58.33828793259439,6.249154649295513 58.322431898833734,6.26507198253625 58.319789226540294,6.315476871131918 58.30921853736652,6.323435537752286 58.30129052048619,6.336699982119567 58.289398495165706,6.368534648601042 58.277506469845214,6.381799092968322 58.27354246140505,6.41098087057634 58.266935780671446,6.554236869742974 58.11894613223867,6.55688975861643 58.11101811535834,6.596683091718273 58.08459139242392,6.620559091579379 58.07402070325014,6.639129313693571 58.06609268636982,6.660352424681221 58.07666337554359,6.694839980036152 58.06609268636982,6.713410202150344 58.06873535866326,6.763815090746013 58.0647713502231,6.771773757366381 58.077984711690306,6.771773757366381 58.072699367103425,6.785038201733661 58.05420066104933,6.79299686835403 58.0647713502231,6.816872868215135 58.0647713502231,6.891153756671908 58.070056694809985,6.9097239787861024 58.07666337554359,6.920335534279927 58.072699367103425,6.933599978647207 58.06080734178293,6.93890575639412 58.050236652609165,6.960128867381769 58.04759398031572,6.984004867242875 58.027773938114905,7.015839533724349 58.03438061884851,7.037062644711998 58.02116725738129,7.034409755838542 58.00398988747392,7.02910397809163 57.99474053444687,7.055632866826192 57.97888450068622,7.076855977813841 57.98681251756655,7.108690644295315 58.005311223620645,7.113996422042227 58.01588191279441,7.121955088662596 58.02513126582146,7.124607977536052 58.03834462728867,7.140525310776789 58.05420066104933,7.148483977397158 58.050236652609165,7.156442644017527 58.04362997187556,7.169707088384808 58.0396659634354,7.20950042148665 58.030416610408345,7.2227648658539305 58.03173794655507,7.243987976841581 58.04362997187556,7.267863976702686 58.04759398031572,7.275822643323055 58.04362997187556,7.278475532196511 58.027773938114905,7.318268865298354 58.02513126582146,7.33418619853909 58.027773938114905,7.3819381982613015 58.01720324894113,7.403161309248951 58.005311223620645,7.419078642489688 58.02380992967474,7.429690197983513 58.01588191279441,7.456219086718074 58.01984592123458,7.498665308693374 58.005311223620645,7.517235530807566 58.005311223620645,7.549070197289041 58.00927523206081,7.575599086023603 58.007953895914085,7.583557752643971 57.99870454288703,7.594169308137796 58.00927523206081,7.6206981968723575 58.007953895914085,7.631309752366183 58.01720324894113,7.668450196594569 58.01323924050097,7.7825244181531845 58.06609268636982,7.79313597364701 58.06609268636982,7.817011973508115 58.06609268636982,7.838235084495764 58.0647713502231,7.84088797336922 58.07402070325014,7.8568053066099575 58.070056694809985,7.875375528724151 58.072699367103425,7.915168861825993 58.070056694809985,7.9443506394340115 58.07666337554359,7.949656417180924 58.07402070325014,7.976185305915486 58.08723406471736,8.124747082829032 58.108375443064894,8.135358638322856 58.10309009847801,8.15392886043705 58.10705410691818,8.206986637906173 58.11233945150506,8.217598193399997 58.12158880453211,8.241474193261103 58.12555281297227,8.257391526501841 58.1334808298526,11.525750618599853 58.876071744309925,11.539015062967135 58.88003575275009,11.570849729448607 58.88796376963042,11.573502618322063 58.89589178651074,11.589419951562801 58.89060644192386,11.6318661735381 58.909105147977954,11.650436395652292 58.90646247568451,30.9316327279318 69.55907449055096,30.94755006117254 69.57493052431161,30.93959139455217 69.59475056651243,30.950202950045995 69.60003591109931,30.95285583891945 69.6304266424739,30.944897172299083 69.68328008834276,30.928979839058343 69.68460142448947,30.92367406131143 69.66874539072882,31.06427717160461 70.28845204354107,31.061624282731152 70.32016411106238,31.045706949490416 70.33337747252959,31.053665616110784 70.36112553161074,31.037748282870048 70.3901949268386,30.995302060894748 70.41926432206647,30.96081450553982 70.42983501124024,30.955508727792907 70.44304837270745,30.926326950184887 70.44965505344106,30.634509174104707 70.54479125600498,30.61328606311706 70.55271927288531,30.207394065478265 70.67428219838366,30.178212287870245 70.68353155141071,30.101278510540016 70.6954235767312,30.08536117729928 70.7073156020517,30.011080288842507 70.71127961049186,29.94741095587956 70.70335159361153,29.920882067144998 70.68617422370416,29.904964733904258 70.68353155141071,29.812113623333293 70.69410224058448,29.80150206783947 70.72449297195907,29.71660962388887 70.73506366113284,29.27357718202169 70.8262358552566,29.24970118216058 70.83680654443037,29.247048293287126 70.84605589745742,29.201949182438373 70.85398391433775,29.132974071728512 70.84869856975087,29.093180738626668 70.85794792277791,29.09052784975321 70.87380395653857,29.05073451665137 70.87380395653857,28.992370961435334 70.8698399480984,28.976453628194598 70.88569598185906,28.83585051790142 70.87776796497873,28.750958073950823 70.85398391433775,28.459140297870643 70.87644662883201,28.47505763111138 70.88965999029922,28.48832207547866 70.90551602405988,28.50954518646631 70.9134440409402,28.549338519568153 70.96761882295577,28.54403274182124 70.97951084827626,28.52280963083359 70.98743886515659,28.408735409274975 71.00329489891725,28.305272743210182 71.00329489891725,28.284049632222533 70.99140287359675,28.26547941010834 71.04822032790577,28.24690918799415 71.08521774001396,28.191198521651568 71.09578842918773,28.156710966296636 71.09182442074757,28.130182077562075 71.0812537315738,28.06385985572567 71.0878604123074,28.018760744876918 71.07728972313363,27.98162030064853 71.08521774001396,27.963050078534337 71.06143368937298,27.7534718575313 71.10900179065494,27.708372746682542 71.11296579909511,27.644703413719593 71.13278584129593,27.628786080478857 71.1248578244156,27.57838119188319 71.10768045450823,27.551852303148628 71.10503778221478,27.54389363652826 71.09578842918773,27.50144741455296 71.08521774001396,27.37145585975361 71.02443627726478,27.374108748627066 71.01386558809102,27.31574519341103 71.03236429414511,27.275951860309185 71.0442563194656,27.212282527346236 71.02840028570495,27.199018082978956 71.01386558809102,26.70558075251611 70.96629748680905,26.671093197161177 70.97026149524922,26.63660564180625 70.95572679763528,26.567630531096388 70.95176278919512,26.511919864753807 70.93458541928774,25.909714090479255 70.87380395653857,25.904408312732343 70.86455460351152,25.88318520174469 70.89362399873939,25.84339186864285 70.90155201561971,25.742582091451514 70.88965999029922,25.713400313843497 70.89626667103283,25.708094536096585 70.90551602405988,25.647078092007092 70.90551602405988,25.607284758905248 70.9068373602066,25.548921203689215 70.9134440409402,25.511780759460827 70.92269339396725,25.50912787058737 70.93062141084758,25.448111426497878 70.94647744460823,25.437499871004054 70.95969080607544,25.379136315788017 70.96761882295577,25.355260315926913 70.9636548145156,25.34995453818 70.97422550368938,25.312814093951612 70.97422550368938,25.299549649584332 70.96233347836889,25.04487231773254 70.95440546148856,25.01038476237761 70.97158283139593,24.959979873781943 70.96233347836889,24.957326984908487 70.9755468398361,24.77427765264001 70.99008153745004,24.73979009728508 70.99008153745004,24.69734387530978 70.97158283139593,24.69734387530978 70.99008153745004,24.67081498657522 70.96761882295577,24.625715875726463 70.99008153745004,24.59388120924499 70.97951084827626,24.57265809825734 70.96233347836889,24.543476320649322 70.95440546148856,24.535517654028954 70.97026149524922,21.56693500463149 70.31355743032877,21.564282115758033 70.32412811950255,21.487348338427804 70.30959342188861,21.471431005187068 70.29770139656812,21.415720338844487 70.27391734592713,21.367968339122275 70.26466799290009,21.34409233926117 70.26466799290009,21.296340339538958 70.25673997601976,21.24062967319638 70.23691993381894,21.23532389544947 70.2408839422591,21.21144789558836 70.21049321088452,21.20614211784145 70.22370657235173,21.190224784600712 70.21974256391157,21.1849190068538 70.19992252171075,20.349259011715105 69.93961930080667,20.31742434523363 69.96472468759437,20.285589678752157 69.97661671291486,20.256407901144136 69.97529537676814,20.256407901144136 69.96472468759437,20.203350123675015 69.94094063695339,20.16355679057317 69.9356552923665,20.155598123952803 69.94358330924683,20.129069235218243 69.9356552923665,19.731135904199814 69.80748568613454,19.723177237579446 69.77841629090668,19.67011946011032 69.81541370301487,19.593185682780092 69.80484301384111,19.545433683057883 69.80087900540094,19.502987461082583 69.79691499696078,19.447276794740002 69.78238029934684,19.42870657262581 69.786344307787,19.39421901727088 69.77709495475996,19.322591017687564 69.77841629090668,19.293409240079544 69.7731309463198,19.272186129091896 69.77841629090668,19.195252351761667 69.7612389209993,19.174029240774015 69.74538288723865,19.144847463166 69.74141887879848,19.134235907672174 69.7480255595321,19.097095463443786 69.73349086191816,18.23490657957053 69.4811156578944,18.232253690697075 69.46658096028047,18.189807468721774 69.45997427954687,18.152667024493386 69.46525962413375,18.131443913505738 69.45336759881326,15.627116816963106 68.19017024254778,15.62446392808965 68.17431420878712,15.592629261608174 68.18092088952073,15.515695484277945 68.14920882199942,15.475902151176104 68.15317283043959,15.412232818213155 68.14260214126581,15.391009707225507 68.13071011594532,15.34591059637675 68.1042833930109,15.314075929895278 68.07653533392975,15.298158596654538 68.06464330860926,15.27693548566689 68.0606793001691,15.279588374540346 68.04482326640844,14.900225265636113 67.8862629288019,14.879002154648465 67.87701357577485,14.849820377040444 67.85455086128059,14.828597266052796 67.8611575420142,14.802068377318236 67.84133749981338,14.78349815520404 67.82548146605272,14.77023371083676 67.82944547449289,13.555210606793828 66.94547159233639,13.544599051300004 66.93225823086918,13.536640384679636 66.94018624774951,13.281963052827845 66.73273647271428,13.268698608460564 66.71688043895362,13.25543416409328 66.71291643051346,13.223599497611808 66.67724035455198,13.197070608877247 66.6719550099651,13.165235942395771 66.65742031235116,13.024632832102593 66.52792936997248,12.995451054494577 66.53189337841265,12.971575054633469 66.5226440253856,9.676687073800895 63.844295655981696,9.666075518307071 63.83372496680793,9.663422629433615 63.82315427763416,9.67403418492744 63.81786893304727,9.658116851686703 63.809940916166944,9.634240851825599 63.829760958367764,9.623629296331773 63.81522626075383,9.607711963091035 63.799370226993176,9.607711963091035 63.79144221011285,9.589141740976842 63.787478201672684,9.562612852242282 63.77294350405875,9.244266187427538 63.52321097232844,9.231001743060258 63.51660429159483,9.217737298692978 63.515282955448114,9.201819965452241 63.50339093012762,9.167332410097309 63.482249551780086,9.14610929910966 63.48621356022025,9.02938218867759 63.44657347581861,9.00020041106957 63.447894811965334,8.971018633461552 63.439966795085006,8.93122530035971 63.425432097471074,8.907349300498606 63.38711334921616,8.907349300498606 63.39504136609648,8.90469641162515 63.408254727563694,8.8834733006375 63.40957606371042,8.878167522890585 63.417504080590746,8.848985745282569 63.425432097471074,8.817151078801094 63.42939610591124,8.740217301470866 63.41354007215058,8.732258634850496 63.42146808903091,8.711035523862847 63.417504080590746,8.660630635267179 63.40957606371042,8.647366190899898 63.40164804683009,8.644713302026442 63.3897560215096,7.978838194788942 63.088491380057164,7.968226639295118 63.080563363176836,7.915168861825993 63.04224461492192,7.885987084217976 63.023745908867824,7.718855085190237 62.970892462998975,7.68171464096185 62.96692845455881,7.588863530390883 62.92464569786373,7.583557752643971 62.93653772318422,7.564987530529778 62.92464569786373,7.517235530807566 62.906146991809635,7.485400864326093 62.906146991809635,7.469483531085356 62.89821897492931,7.448260420097706 62.906146991809635,7.456219086718074 62.92068168942357,7.442954642350793 62.93653772318422,7.416425753616232 62.94842974850471,7.413772864742776 62.95503642923832,7.384591087134758 62.95900043767848,7.376632420514389 62.96692845455881,7.331533309665634 62.973535135292416,7.323574643045266 62.98939116905307,7.286434198816879 62.9788204798793,7.278475532196511 62.98939116905307,7.283781309943423 62.99996185822684,7.246640865715037 62.98939116905307,7.236029310221212 62.99996185822684,7.20950042148665 62.993355177493235,7.17501286613172 62.993355177493235,7.151136866270614 62.9973191859334,7.151136866270614 62.98542716061291,7.100731977674947 62.961643109971924,7.090120422181122 62.95900043767848,7.060938644573104 62.970892462998975,7.021145311471262 62.95239375694487,6.922988423153383 62.91407500868996,6.9070710899126455 62.90218298336947,6.89645953441882 62.9101110002498,5.225139544141428 62.20848150634083,5.209222210900691 62.205838834047384,5.180040433292673 62.21376685092771,5.177387544419217 62.1939468087269,5.14024710019083 62.2005534894605,5.097800878215532 62.1939468087269,5.095147989342076 62.18337611955313,5.095147989342076 62.16619874964575,5.103106655962444 62.14902137973837,5.113718211456269 62.12655866524412,5.116371100329725 62.10013194230969,4.991685323277284 61.7394071742548,4.983726656656916 61.72883648508103,4.98107376778346 61.72487247664087,4.970462212289635 61.71298045132038,4.970462212289635 61.68258971994579,4.970462212289635 61.6706976946253,4.989032434403828 61.625772265636776,4.9943382121507405 61.59802420655563,4.9969911010241965 61.580846836648256,4.973115101163091 61.41700115445482,4.9943382121507405 61.40510912913433,4.98107376778346 61.2848675397827,4.98107376778346 61.26108348914172,4.9943382121507405 61.25051279996795,5.007602656518022 61.24258478308762,5.007602656518022 61.224086077033526,5.010255545391478 61.22012206859336,4.949239101301986 60.807865190816344,4.965156434542723 60.79597316549585,5.227792433014884 59.51691977546972,5.222486655267972 59.50106374170906,5.227792433014884 59.468030338041025) diff --git a/rust/geo-test-fixtures/fixtures/norway_convex_hull.wkt b/rust/geo-test-fixtures/fixtures/norway_convex_hull.wkt new file mode 100644 index 00000000..ee45f8cd --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/norway_convex_hull.wkt @@ -0,0 +1 @@ +LINESTRING(7.717377961338066 57.74911832172092,6.968425350867709 57.74957737187902,5.464957056755467 58.24822761552509,4.722530819313656 59.24963650749106,4.346980035524813 60.498808789126734,4.340231074407465 61.998825794804695,12.617561279995918 68.4983356095851,15.010693169334283 69.49664550225157,18.503596794856012 70.49788127446817,23.41773118246719 71.25021807292373,23.99734444112429 71.25032666052927,25.81713611470763 71.25061029282803,27.018043769538682 71.25053409142788,28.291580927773403 71.25031072902001,30.61987385954102 70.74988171707938,31.220012092660365 70.50025174432726,31.22041170425437 70.00042112672493,31.220360609653444 69.74967563784787,31.218815724995086 69.50004679809811,11.84258850133738 58.74982401923083,7.717377961338066 57.74911832172092) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/norway_main.wkt b/rust/geo-test-fixtures/fixtures/norway_main.wkt new file mode 100644 index 00000000..a9bd7fa7 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/norway_main.wkt @@ -0,0 +1 @@ +LINESTRING(11.82022128355349 59.29625663896727,11.830832839047314 59.240760520804976,11.804303950312752 59.22754715933777,11.783080839325102 59.206405780990224,11.775122172704734 59.17601504961564,11.77777506157819 59.136374965214,11.76451061721091 59.11523358686647,11.775122172704734 59.10730556998614,11.77777506157819 59.08880686393204,11.748593283970173 59.066344149437775,11.737981728476347 59.050488115677126,11.708799950868329 59.030668073476306,11.706147061994873 59.01349070356893,11.690229728754137 58.98970665292795,11.684923951007224 58.971207946873854,11.690229728754137 58.9553519131132,11.663700840019574 58.934210534765654,11.650436395652292 58.90646247568451,11.6318661735381 58.909105147977954,11.589419951562801 58.89060644192386,11.573502618322063 58.89589178651074,11.570849729448607 58.88796376963042,11.557585285081327 58.898534458804185,11.544320840714047 58.89457045036402,11.539015062967135 58.88003575275009,11.525750618599853 58.876071744309925,11.483304396624554 58.89192777807058,11.456775507889994 58.88796376963042,11.456775507889994 58.91703316485828,11.464734174510362 58.93288919861894,11.45942839676345 58.951387904673034,11.462081285636906 58.971207946873854,11.454122619016537 58.985742644487786,11.470039952257274 58.98177863604762,11.464734174510362 59.00027734210172,11.448816841269624 59.01216936742221,11.43024661915543 59.03595341806319,11.419635063661605 59.043881434943515,11.432899508028886 59.06238014099762,11.419635063661605 59.066344149437775,11.419635063661605 59.05445212411729,11.406370619294325 59.05709479641073,11.406370619294325 59.072950830171386,11.393106174927045 59.07691483861155,11.385147508306677 59.09541354466565,11.37453595281285 59.103341561545975,11.387800397180133 59.11523358686647,11.355965730698657 59.11919759530663,11.321478175343728 59.11787625915991,11.276379064494972 59.10069888925253,11.223321287025849 59.08880686393204,11.199445287164743 59.09144953622548,11.204751064911655 59.10730556998614,11.231279953646217 59.13373229292056,11.22862706477276 59.13769630136073,11.199445287164743 59.1112695784263,11.199445287164743 59.11919759530663,11.183527953924006 59.11787625915991,11.172916398430182 59.1297682844804,11.178222176177094 59.14166030980089,11.212709731532023 59.145624318241055,11.175569287303638 59.15223099897466,11.172916398430182 59.16015901585499,11.188833731670918 59.17865772190908,11.186180842797462 59.19715642796318,11.178222176177094 59.18658573878941,11.1596519540629 59.183943066495964,11.164957731809814 59.16015901585499,11.130470176454882 59.153552335121375,11.119858620961057 59.145624318241055,11.114552843214145 59.168087032735315,11.098635509973409 59.183943066495964,11.090676843353041 59.17865772190908,11.11189995434069 59.14166030980089,11.109247065467233 59.13373229292056,11.072106621238847 59.12184026760007,11.072106621238847 59.14033897365417,11.027007510390092 59.1297682844804,11.037619065883916 59.14033897365417,11.042924843630828 59.1614803520017,11.027007510390092 59.148266990534495,11.005784399402442 59.17601504961564,11.011090177149354 59.18658573878941,10.99251995503516 59.17865772190908,10.989867066161704 59.18790707493613,10.976602621794424 59.18658573878941,10.968643955174056 59.17601504961564,10.950073733059863 59.17205104117548,10.950073733059863 59.153552335121375,10.931503510945669 59.136374965214,10.907627511084563 59.13769630136073,10.918239066578387 59.14958832668121,10.90232173333765 59.148266990534495,10.897015955590739 59.15619500741482,10.907627511084563 59.168087032735315,10.899668844464195 59.18262173034925,10.883751511223458 59.17601504961564,10.886404400096914 59.190549747229575,10.86783417798272 59.17601504961564,10.857222622488896 59.18658573878941,10.859875511362352 59.17205104117548,10.825387956007422 59.15223099897466,10.825387956007422 59.17205104117548,10.80681773389323 59.19715642796318,10.790900400652491 59.18658573878941,10.788247511779035 59.19451375566974,10.804164845019773 59.20508444484351,10.761718623044473 59.232832503924655,10.793553289525947 59.25925922685908,10.772330178538297 59.255295218418915,10.745801289803737 59.232832503924655,10.729883956563 59.23151116777793,10.735189734309913 59.26586590759268,10.74314840093028 59.255295218418915,10.748454178677193 59.28172194135334,10.74314840093028 59.2856859497935,10.790900400652491 59.31475534502137,10.780288845158667 59.31871935346153,10.759065734171017 59.30814866428776,10.751107067550649 59.31607668116809,10.753759956424105 59.342503404102516,10.732536845436456 59.345146076395956,10.716619512195718 59.32400469804841,10.698049290081524 59.31871935346153,10.690090623461156 59.30154198355415,10.658255956979684 59.33457538722219,10.663561734726596 59.37950081621071,10.650297290359314 59.37157279933038,10.647644401485858 59.39403551382464,10.655603068106227 59.432354262079556,10.6874377345877 59.47199434648119,10.682131956840788 59.50899175858939,10.6874377345877 59.52484779235004,10.666214623600052 59.52352645620332,10.650297290359314 59.55391718757791,10.655603068106227 59.5843079189525,10.652950179232771 59.614698650327085,10.61846262387784 59.67415877692954,10.629074179371663 59.69794282757052,10.621115512751295 59.70058549986396,10.613156846130927 59.682086793809866,10.586627957396367 59.7217268782115,10.591933735143279 59.732297567385274,10.581322179649455 59.7402255842656,10.581322179649455 59.76136696261314,10.607851068384015 59.80364971930822,10.642338623738945 59.841968467563134,10.655603068106227 59.87235919893772,10.6874377345877 59.84989648444346,10.692743512334612 59.83404045068281,10.713966623322262 59.74815360114592,10.72192528994263 59.72833355894511,10.732536845436456 59.72833355894511,10.724578178816088 59.75079627343937,10.735189734309913 59.766652307200026,10.729883956563 59.77854433252051,10.735189734309913 59.797043038574614,10.753759956424105 59.82346976150904,10.767024400791385 59.83139777838936,10.780288845158667 59.864431182057395,10.751107067550649 59.89482191343198,10.751107067550649 59.906713938752475,10.740495512056825 59.90142859416559,10.732536845436456 59.91067794719264,10.711313734448806 59.906713938752475,10.690090623461156 59.91728462792624,10.695396401208068 59.90274993031231,10.67417329022042 59.89482191343198,10.663561734726596 59.90274993031231,10.668867512473508 59.91728462792624,10.642338623738945 59.91067794719264,10.626421290498207 59.88028721581805,10.602545290637103 59.87235919893772,10.591933735143279 59.88821523269837,10.610503957257471 59.90274993031231,10.570710624155629 59.886893896551655,10.530917291053786 59.886893896551655,10.509694180066138 59.87632320737789,10.501735513445768 59.853860492883626,10.491123957951944 59.841968467563134,10.469900846964293 59.83536178682952,10.47255373583775 59.83007644224264,10.499082624572312 59.83139777838936,10.47255373583775 59.819505753068874,10.501735513445768 59.80100704701478,10.501735513445768 59.7587242903197,10.51499995781305 59.76268829875986,10.512347068939594 59.734940239678714,10.520305735559962 59.72833355894511,10.522958624433418 59.709834852891014,10.517652846686506 59.69397881913036,10.533570179927242 59.6781227853697,10.538875957674154 59.68340812995659,10.581322179649455 59.66358808775577,10.599892401763647 59.664909423902486,10.615809735004383 59.59619994427299,10.615809735004383 59.569773221338565,10.589280846269823 59.55127451528446,10.536223068800698 59.53145447308365,10.4937768468254 59.51956244776316,10.480512402458118 59.52352645620332,10.464595069217381 59.51691977546972,10.448677735976645 59.52352645620332,10.419495958368627 59.52352645620332,10.4088844028748 59.53938248996398,10.427454624988995 59.56184520445824,10.440719069356277 59.60677063344676,10.41684306949517 59.61073464188692,10.443371958229733 59.62262666720741,10.43010751386245 59.6345186925279,10.427454624988995 59.653017398582,10.43806618048282 59.667552096195934,10.427454624988995 59.67415877692954,10.43010751386245 59.68605080225003,10.41684306949517 59.68340812995659,10.366438180899504 59.71379886133118,10.361132403152592 59.709834852891014,10.316033292303835 59.71644153362462,10.286851514695817 59.73626157582544,10.286851514695817 59.74815360114592,10.244405292720518 59.746832264999206,10.233793737226694 59.7402255842656,10.186041737504482 59.744189592705766,10.26297551483471 59.72040554206478,10.27093418145508 59.70851351674429,10.31338040343038 59.690014810690194,10.345215069911854 59.690014810690194,10.374396847519872 59.6781227853697,10.387661291887152 59.659624079315606,10.392967069634064 59.64376804555495,10.406231514001345 59.62659067564758,10.400925736254433 59.59619994427299,10.390314180760608 59.58034391051233,10.406231514001345 59.56448787675168,10.398272847380976 59.56052386831151,10.390314180760608 59.53541848152381,10.363785292026048 59.527490464643485,10.305421736810011 59.53938248996398,10.26297551483471 59.56448787675168,10.252363959340887 59.56052386831151,10.244405292720518 59.569773221338565,10.231140848353238 59.5658092128984,10.244405292720518 59.55788119601807,10.260322625961255 59.53145447308365,10.278892848075449 59.53145447308365,10.302768847936555 59.4970997332689,10.318686181177291 59.48917171638857,10.342562181038398 59.468030338041025,10.350520847658766 59.4786010272148,10.358479514279134 59.460102321160704,10.38235551414024 59.43763960666644,10.400925736254433 59.45085296813365,10.427454624988995 59.440282278959884,10.443371958229733 59.452174304280376,10.456636402597013 59.44424628740005,10.45928929147047 59.42839025363939,10.475206624711205 59.42839025363939,10.4937768468254 59.43631827051972,10.496429735698856 59.417819564465624,10.475206624711205 59.395356849971364,10.475206624711205 59.380822152357425,10.461942180343925 59.372894135477104,10.469900846964293 59.35043142098284,10.4937768468254 59.333254051075464,10.496429735698856 59.322683361901696,10.522958624433418 59.32004068960825,10.52826440218033 59.30814866428776,10.520305735559962 59.293613966673824,10.501735513445768 59.29229263052711,10.4937768468254 59.26982991603285,10.501735513445768 59.255295218418915,10.488471069078487 59.263223235299236,10.47255373583775 59.25925922685908,10.467247958090837 59.24340319309842,10.432760402735907 59.271151252179564,10.427454624988995 59.25925922685908,10.400925736254433 59.26586590759268,10.398272847380976 59.27643659676645,10.377049736393328 59.277757932913175,10.371743958646416 59.24340319309842,10.379702625266784 59.235475176218095,10.358479514279134 59.21036978943039,10.345215069911854 59.216976470164,10.329297736671116 59.193192419523015,10.32664484779766 59.168087032735315,10.308074625683467 59.145624318241055,10.321339070050747 59.145624318241055,10.32664484779766 59.1297682844804,10.31338040343038 59.125804276040235,10.310727514556923 59.13373229292056,10.278892848075449 59.14033897365417,10.308074625683467 59.09937755310581,10.305421736810011 59.080878847051714,10.316033292303835 59.06898682173122,10.300115959063099 59.05313078797057,10.302768847936555 59.06502281329106,10.292157292442731 59.0742721663181,10.289504403569275 59.09541354466565,10.26297551483471 59.12316160374679,10.257669737087799 59.10994824227958,10.273587070328537 59.09673488081236,10.281545736948905 59.04784544338368,10.27093418145508 59.03991742650335,10.257669737087799 59.06502281329106,10.252363959340887 59.09937755310581,10.241752403847062 59.09541354466565,10.233793737226694 59.12184026760007,10.22318218173287 59.125804276040235,10.225835070606326 59.09144953622548,10.217876403985958 59.0742721663181,10.233793737226694 59.058416132557454,10.228487959479782 59.038596090356634,10.20195907074522 59.02009738430254,10.15420707102301 59.005562686688606,10.130331071161903 59.005562686688606,10.127678182288447 59.0240613927427,10.175430182010658 59.038596090356634,10.16747151539029 59.05445212411729,10.148901293276097 59.0425600987968,10.117066626794621 59.03463208191647,10.109107960174253 59.0240613927427,10.074620404819324 59.01349070356893,10.064008849325498 59.03198940962303,10.042785738337848 59.0425600987968,10.016256849603288 59.04652410723696,10.026868405097112 59.03198940962303,10.018909738476744 59.028025401182866,10.03482707171748 59.016133375862374,10.042785738337848 59.00159867824844,10.03482707171748 58.97781462760746,10.016256849603288 58.979135963754175,10.002992405236007 58.96988661072713,9.981769294248357 58.98309997219434,9.963199072134163 58.97781462760746,9.971157738754531 58.965922602286966,9.957893294387251 58.96063725770008,9.93136440565269 58.965922602286966,9.923405739032322 58.973850619167294,9.883612405930478 58.96724393843369,9.867695072689742 58.97517195531402,9.857083517195917 58.956673249259914,9.81994307296753 58.971207946873854,9.854430628322461 58.98970665292795,9.84116618395518 59.01745471200909,9.84116618395518 59.03991742650335,9.822595961840985 59.03198940962303,9.806678628600249 59.03595341806319,9.79871996197988 59.066344149437775,9.806678628600249 59.09144953622548,9.790761295359513 59.09144953622548,9.788108406486057 59.066344149437775,9.772191073245319 59.05445212411729,9.772191073245319 59.03991742650335,9.737703517890388 59.072950830171386,9.72974485127002 59.06502281329106,9.71648040690274 59.06898682173122,9.711174629155828 59.09144953622548,9.719133295776196 59.10466289769269,9.700563073662002 59.10730556998614,9.697910184788546 59.07691483861155,9.689951518168177 59.06898682173122,9.705868851408916 59.05445212411729,9.69525729591509 59.050488115677126,9.658116851686703 59.058416132557454,9.644852407319423 59.083521519345155,9.650158185066335 59.103341561545975,9.63954662957251 59.1112695784263,9.586488852103386 59.12316160374679,9.589141740976842 59.11523358686647,9.530778185760806 59.131089620627115,9.509555074773157 59.125804276040235,9.562612852242282 59.11787625915991,9.559959963368826 59.10730556998614,9.581183074356474 59.103341561545975,9.626282185205229 59.080878847051714,9.626282185205229 59.06238014099762,9.644852407319423 59.058416132557454,9.650158185066335 59.04652410723696,9.671381296053983 59.050488115677126,9.697910184788546 59.04652410723696,9.735050629016932 59.028025401182866,9.7430092956373 59.01216936742221,9.748315073384212 58.98970665292795,9.732397740143476 58.993670661368114,9.721786184649652 59.008205358982046,9.700563073662002 59.00159867824844,9.713827518029284 58.993670661368114,9.705868851408916 58.985742644487786,9.671381296053983 58.996313333661554,9.652811073939791 58.98970665292795,9.671381296053983 58.98177863604762,9.700563073662002 58.979135963754175,9.689951518168177 58.96724393843369,9.676687073800895 58.973850619167294,9.663422629433615 58.96724393843369,9.647505296192879 58.971207946873854,9.650158185066335 58.96063725770008,9.623629296331773 58.9553519131132,9.631587962952143 58.94742389623287,9.623629296331773 58.93949587935254,9.607711963091035 58.951387904673034,9.589141740976842 58.94478122393943,9.613017740837948 58.93288919861894,9.581183074356474 58.92496118173861,9.552001296748456 58.93288919861894,9.549348407875 58.928925190178774,9.517513741393525 58.928925190178774,9.480373297165139 58.9368532070591,9.467108852797859 58.93288919861894,9.501596408152789 58.926282517885326,9.469761741671315 58.90249846724435,9.453844408430577 58.88664243348369,9.435274186316384 58.90646247568451,9.374257742226892 58.898534458804185,9.366299075606523 58.89192777807058,9.36895196447998 58.88003575275009,9.387522186594172 58.89457045036402,9.408745297581822 58.90249846724435,9.42466263082256 58.898534458804185,9.416703964202192 58.8681437274296,9.406092408708366 58.86417971898943,9.358340408986155 58.86153704669599,9.321199964757769 58.87210773586976,9.30528263151703 58.88003575275009,9.294671076023207 58.853609029815665,9.299976853770119 58.847002349082054,9.276100853909014 58.833788987614845,9.30528263151703 58.839074332201726,9.302629742643575 58.831146315321405,9.329158631378137 58.83775299605501,9.371604853353436 58.847002349082054,9.408745297581822 58.8496450213755,9.443232852936752 58.84568101293534,9.467108852797859 58.82718230688124,9.43792707518984 58.81925429000091,9.390175075467628 58.81529028156075,9.406092408708366 58.808683600827145,9.371604853353436 58.79943424780009,9.379563519973804 58.79282756706649,9.435274186316384 58.811326273120585,9.435274186316384 58.80075558394682,9.38221640884726 58.78489955018616,9.384869297720716 58.78225687789271,9.347728853492331 58.75450881881157,9.286712409402838 58.73997412119764,9.233654631933714 58.74261679349108,9.204472854325697 58.74790213807797,9.18855552108496 58.74261679349108,9.183249743338047 58.74790213807797,9.167332410097309 58.73997412119764,9.135497743615836 58.74261679349108,9.114274632628186 58.75054481037141,9.082439966146712 58.75054481037141,9.0771341883998 58.75979416339845,9.066522632905976 58.75583015495829,9.082439966146712 58.743938129637804,9.058563966285607 58.7254394235837,9.095704410513992 58.724118087436985,9.124886188122012 58.71751140670338,9.199167076578785 58.71619007055666,9.19651418770533 58.724118087436985,9.15937374347694 58.724118087436985,9.106315966007818 58.73204610431731,9.106315966007818 58.743938129637804,9.164679521223853 58.73336744046403,9.225695965313346 58.73865278505092,9.207125743199153 58.721475415143544,9.238960409680626 58.72808209587715,9.241613298554082 58.724118087436985,9.225695965313346 58.70561938138289,9.130191965868924 58.69504869220912,9.11162174375473 58.69769136450256,9.103663077134362 58.68712067532879,9.204472854325697 58.69504869220912,9.225695965313346 58.68712067532879,9.204472854325697 58.66465796083453,9.164679521223853 58.656729943954204,9.162026632350397 58.66730063312797,9.116927521501642 58.65012326322059,9.140803521362749 58.648801927073876,9.0771341883998 58.62501787643289,9.032035077551045 58.611804514965684,9.032035077551045 58.619732531846005,8.994894633322659 58.5880204643247,8.976324411208466 58.589341800471416,8.971018633461552 58.60255516193863,8.947142633600446 58.61048317881896,8.952448411347358 58.62501787643289,8.933878189233166 58.61841119569929,8.939183966980078 58.59991248964519,8.923266633739342 58.57348576671077,8.963059966841184 58.59594848120503,8.968365744588096 58.5880204643247,8.957754189094272 58.569521758270604,8.968365744588096 58.56291507753699,8.949795522473902 58.549701716069784,8.886126189510955 58.52459632928208,8.878167522890585 58.49816960634766,8.86225018964985 58.5008122786411,8.851638634156025 58.48892025332061,8.81980396767455 58.474385555706675,8.75082885696469 58.45588684965258,8.713688412736303 58.44003081589192,8.718994190483215 58.41888943754438,8.700423968369023 58.39114137846324,8.726952857103583 58.392462714609955,8.713688412736303 58.37924935314275,8.687159524001743 58.364714655528815,8.668589301887549 58.36867866396898,8.671242190761005 58.354143966355046,8.65267196864681 58.354143966355046,8.644713302026442 58.342251941034554,8.620837302165338 58.33960926874111,8.631448857659162 58.33168125186078,8.607572857798056 58.32771724342062,8.6049199689246 58.33828793259439,8.623490191038794 58.35678663864849,8.6049199689246 58.36075064708865,8.57043241356967 58.311861209659966,8.530639080467827 58.289398495165706,8.509415969480177 58.299969184339474,8.517374636100547 58.289398495165706,8.490845747365984 58.277506469845214,8.490845747365984 58.27354246140505,8.535944858214739 58.28543448672554,8.530639080467827 58.269578452964886,8.461663969757966 58.25900776379112,8.435135081023404 58.266935780671446,8.443093747643774 58.29336250360587,8.408606192288843 58.26561444452472,8.42452352552958 58.266935780671446,8.432482192149948 58.25107974691079,8.427176414403036 58.24315173003046,8.400647525668475 58.247115738470626,8.387383081301193 58.255043755350954,8.371465748060457 58.23654504929686,8.318407970591332 58.212760998655874,8.305143526224052 58.21672500709604,8.27861463748949 58.212760998655874,8.297184859603684 58.202190309482106,8.25208574875493 58.20615431792227,8.246779971008015 58.20086897333538,8.281267526362946 58.19161962030833,8.275961748616034 58.19822630104194,8.305143526224052 58.19161962030833,8.283920415236402 58.18369160342801,8.270655970869122 58.159907552787026,8.241474193261103 58.157264880493585,8.241474193261103 58.16783556966735,8.222903971146911 58.17576358654768,8.233515526640735 58.182370267281286,8.20168086015926 58.190298284161614,8.209639526779629 58.17179957810752,8.233515526640735 58.16387156122719,8.233515526640735 58.15330087205342,8.257391526501841 58.1334808298526,8.241474193261103 58.12555281297227,8.217598193399997 58.12158880453211,8.206986637906173 58.11233945150506,8.199027971285805 58.14140884673293,8.204333749032717 58.16387156122719,8.185763526918524 58.16387156122719,8.191069304665437 58.15330087205342,8.172499082551242 58.13480216599932,8.180457749171612 58.12951682141244,8.14597019381668 58.126874149119,8.164540415930874 58.12291014067883,8.15392886043705 58.10705410691818,8.135358638322856 58.10309009847801,8.130052860575944 58.12158880453211,8.124747082829032 58.108375443064894,8.087606638600645 58.12158880453211,8.087606638600645 58.1334808298526,8.063730638739539 58.11894613223867,8.058424860992627 58.12291014067883,8.071689305359907 58.14140884673293,8.058424860992627 58.137444838292765,8.047813305498803 58.14537285517309,8.058424860992627 58.16122888893374,8.076995083106821 58.16783556966735,8.087606638600645 58.18633427572145,8.071689305359907 58.19426229260178,8.058424860992627 58.2140823348026,8.034548861131523 58.23654504929686,8.02128441676424 58.232581040856694,8.050466194372259 58.2140823348026,8.053119083245715 58.202190309482106,8.037201750004979 58.19822630104194,8.050466194372259 58.182370267281286,8.037201750004979 58.179727594987845,8.047813305498803 58.16387156122719,8.026590194511153 58.157264880493585,8.034548861131523 58.14537285517309,7.997408416903135 58.14140884673293,8.013325750143872 58.130838157559154,7.997408416903135 58.12951682141244,7.984143972535854 58.14405151902637,7.962920861548205 58.13480216599932,7.978838194788942 58.126874149119,7.954962194927836 58.11233945150506,7.970879528168574 58.114982123798505,7.978838194788942 58.10309009847801,7.976185305915486 58.08723406471736,7.949656417180924 58.07402070325014,7.9443506394340115 58.07666337554359,7.933739083940187 58.10044742618457,7.915168861825993 58.070056694809985,7.875375528724151 58.072699367103425,7.8568053066099575 58.070056694809985,7.84088797336922 58.07402070325014,7.838235084495764 58.0647713502231,7.817011973508115 58.06609268636982,7.822317751255028 58.08062738398375,7.803747529140834 58.08062738398375,7.79313597364701 58.06609268636982,7.7825244181531845 58.06609268636982,7.7851773070266415 58.077984711690306,7.748036862798254 58.070056694809985,7.721507974063693 58.05155798875588,7.687020418708762 58.06873535866326,7.708243529696412 58.050236652609165,7.68171464096185 58.04759398031572,7.68171464096185 58.04362997187556,7.655185752227288 58.050236652609165,7.6604915299742 58.0396659634354,7.68171464096185 58.03570195499523,7.671103085468025 58.03173794655507,7.668450196594569 58.01323924050097,7.631309752366183 58.01720324894113,7.6206981968723575 58.027773938114905,7.6233510857458135 58.0396659634354,7.610086641378533 58.04362997187556,7.6206981968723575 58.007953895914085,7.594169308137796 58.00927523206081,7.583557752643971 57.99870454288703,7.575599086023603 58.007953895914085,7.549070197289041 58.00927523206081,7.517235530807566 58.005311223620645,7.498665308693374 58.005311223620645,7.503971086440286 58.01984592123458,7.456219086718074 58.01984592123458,7.429690197983513 58.01588191279441,7.429690197983513 58.027773938114905,7.442954642350793 58.03570195499523,7.41111997586932 58.04362997187556,7.424384420236601 58.03570195499523,7.403161309248951 58.02513126582146,7.419078642489688 58.02380992967474,7.403161309248951 58.005311223620645,7.3819381982613015 58.01720324894113,7.33418619853909 58.027773938114905,7.331533309665634 58.03570195499523,7.318268865298354 58.04362997187556,7.318268865298354 58.02513126582146,7.278475532196511 58.027773938114905,7.275822643323055 58.04362997187556,7.286434198816879 58.050236652609165,7.278475532196511 58.05816466948949,7.267863976702686 58.04759398031572,7.243987976841581 58.04362997187556,7.2227648658539305 58.03173794655507,7.20950042148665 58.030416610408345,7.198888865992825 58.04759398031572,7.177665755005176 58.05816466948949,7.169707088384808 58.0396659634354,7.156442644017527 58.04362997187556,7.124607977536052 58.03834462728867,7.121955088662596 58.02513126582146,7.111343533168771 58.03834462728867,7.106037755421859 58.027773938114905,7.113996422042227 58.01588191279441,7.108690644295315 58.005311223620645,7.076855977813841 57.98681251756655,7.055632866826192 57.97888450068622,7.02910397809163 57.99474053444687,7.034409755838542 58.00398988747392,7.037062644711998 58.02116725738129,7.0662444223200165 58.04362997187556,7.135219533029877 58.06873535866326,7.1458310885237015 58.06609268636982,7.140525310776789 58.05420066104933,7.148483977397158 58.050236652609165,7.17501286613172 58.10309009847801,7.185624421625544 58.11233945150506,7.182971532752088 58.1334808298526,7.177665755005176 58.13480216599932,7.180318643878632 58.11101811535834,7.167054199511352 58.108375443064894,7.1458310885237015 58.092519409304245,7.1458310885237015 58.072699367103425,7.124607977536052 58.072699367103425,7.103384866548403 58.08062738398375,7.106037755421859 58.06873535866326,7.092773311054579 58.07402070325014,7.074203088940385 58.05816466948949,7.050327089079279 58.055521997196045,7.039715533585454 58.046272644169,7.015839533724349 58.03438061884851,6.984004867242875 58.027773938114905,6.978699089495962 58.046272644169,7.002575089357068 58.05420066104933,7.013186644850893 58.06873535866326,7.002575089357068 58.072699367103425,7.013186644850893 58.08459139242392,7.058285755699648 58.11233945150506,7.060938644573104 58.11894613223867,7.02910397809163 58.108375443064894,7.023798200344718 58.09912609003785,6.986657756116331 58.070056694809985,6.97339331174905 58.070056694809985,6.976046200622506 58.05420066104933,6.960128867381769 58.04759398031572,6.93890575639412 58.050236652609165,6.933599978647207 58.06080734178293,6.952170200761401 58.06873535866326,6.933599978647207 58.07402070325014,6.960128867381769 58.08062738398375,6.930947089773751 58.08062738398375,6.946864423014489 58.09912609003785,6.928294200900295 58.092519409304245,6.920335534279927 58.072699367103425,6.891153756671908 58.070056694809985,6.9097239787861024 58.07666337554359,6.816872868215135 58.09119807315752,6.814219979341679 58.09912609003785,6.854013312443522 58.10441143462473,6.854013312443522 58.11101811535834,6.901765312165733 58.12555281297227,6.949517311887945 58.12158880453211,6.954823089634857 58.11233945150506,6.976046200622506 58.12291014067883,6.9946164227367 58.12158880453211,7.034409755838542 58.12951682141244,7.02910397809163 58.137444838292765,7.047674200205823 58.13876617443948,7.02910397809163 58.14537285517309,6.986657756116331 58.130838157559154,6.960128867381769 58.126874149119,6.930947089773751 58.12951682141244,6.888500867798452 58.137444838292765,6.888500867798452 58.14537285517309,6.854013312443522 58.1519795359067,6.832790201455873 58.17179957810752,6.867277756810803 58.187655611868166,6.859319090190434 58.190298284161614,6.819525757088591 58.17576358654768,6.814219979341679 58.18633427572145,6.79299686835403 58.18369160342801,6.814219979341679 58.165192897373906,6.803608423847855 58.15594354434686,6.843401756949698 58.14537285517309,6.867277756810803 58.1334808298526,6.851360423570066 58.117624796091945,6.8274844237089605 58.108375443064894,6.803608423847855 58.11101811535834,6.777079535113293 58.10044742618457,6.750550646378731 58.11101811535834,6.7452448686318185 58.130838157559154,6.7585093129991 58.14537285517309,6.7452448686318185 58.16915690581407,6.755856424125644 58.187655611868166,6.7452448686318185 58.19161962030833,6.734633313137994 58.18369160342801,6.739939090884906 58.14140884673293,6.721368868770713 58.130838157559154,6.73728620201145 58.12951682141244,6.739939090884906 58.10309009847801,6.7585093129991 58.09648341774441,6.806261312721311 58.09648341774441,6.806261312721311 58.09119807315752,6.771773757366381 58.077984711690306,6.811567090468223 58.08459139242392,6.816872868215135 58.0647713502231,6.79299686835403 58.0647713502231,6.785038201733661 58.05420066104933,6.771773757366381 58.072699367103425,6.763815090746013 58.0647713502231,6.713410202150344 58.06873535866326,6.694839980036152 58.06609268636982,6.660352424681221 58.07666337554359,6.639129313693571 58.06609268636982,6.620559091579379 58.07402070325014,6.615253313832466 58.08855540086408,6.596683091718273 58.08459139242392,6.55688975861643 58.11101811535834,6.554236869742974 58.11894613223867,6.586071536224448 58.12555281297227,6.623211980452835 58.157264880493585,6.623211980452835 58.17840625884112,6.694839980036152 58.17576358654768,6.6709639801750455 58.190298284161614,6.700145757783064 58.202190309482106,6.742591979758362 58.2140823348026,6.7452448686318185 58.22201035168292,6.769120868492925 58.232581040856694,6.811567090468223 58.24315173003046,6.877889312304628 58.266935780671446,6.869930645684259 58.27089978911161,6.814219979341679 58.26165043608456,6.814219979341679 58.255043755350954,6.777079535113293 58.24447306617718,6.731980424264538 58.224653023976366,6.708104424403432 58.2206890155362,6.686881313415783 58.25107974691079,6.684228424542327 58.26297177223128,6.6709639801750455 58.255043755350954,6.660352424681221 58.27089978911161,6.6709639801750455 58.28147047828538,6.663005313554677 58.29336250360587,6.64708798031394 58.29336250360587,6.64708798031394 58.26561444452472,6.6683110913015895 58.24050905773702,6.649740869187396 58.23654504929686,6.525055092134956 58.247115738470626,6.519749314388044 58.25900776379112,6.493220425653481 58.25240108305751,6.477303092412745 58.255043755350954,6.461385759172008 58.269578452964886,6.456079981425095 58.26297177223128,6.41098087057634 58.266935780671446,6.381799092968322 58.27354246140505,6.4322039815639895 58.28543448672554,6.424245314943621 58.289398495165706,6.368534648601042 58.277506469845214,6.336699982119567 58.289398495165706,6.323435537752286 58.30129052048619,6.3526173153603045 58.3263959072739,6.315476871131918 58.30921853736652,6.26507198253625 58.319789226540294,6.259766204789338 58.342251941034554,6.249154649295513 58.322431898833734,6.169567983091828 58.33828793259439,6.100592872381967 58.36075064708865,6.100592872381967 58.37132133626242,6.068758205900493 58.37264267240914,6.063452428153581 58.384534697729634,6.0501879837863 58.37528534470258,6.023659095051738 58.38849870616979,6.015700428431369 58.40303340378373,6.005088872937545 58.41096142066406,6.023659095051738 58.41888943754438,6.013047539557913 58.429460126718155,5.99447731744372 58.41888943754438,5.986518650823352 58.47042154726651,5.93876665110114 58.47042154726651,5.8777502070116485 58.46381486653291,5.861832873770911 58.47174288341323,5.880403095885105 58.47570689185339,5.824692429542525 58.482313572587,5.787551985314138 58.49024158946733,5.782246207567226 58.5008122786411,5.7955106519345065 58.502133614787816,5.7928577630610505 58.51534697625503,5.768981763199945 58.52856033772224,5.726535541224646 58.53516701845585,5.70265954136354 58.53516701845585,5.649601763894417 58.55498706065667,5.6389902084005925 58.584056455884536,5.625725764033311 58.59330580891158,5.572667986564188 58.648801927073876,5.551444875576538 58.656729943954204,5.538180431209257 58.671264641568136,5.548791986703082 58.693727356062396,5.516957320221608 58.70958338982305,5.519610209095064 58.72015407899682,5.503692875854327 58.743938129637804,5.48777554261359 58.75186614651813,5.501039986980871 58.76375817183862,5.532874653462345 58.77829286945256,5.543486208956169 58.79679157550665,5.538180431209257 58.82057562614763,5.5567506533234505 58.83511032376157,5.559403542196907 58.84568101293534,5.543486208956169 58.85228769366894,5.570015097690732 58.87342907201648,5.601849764172206 58.87739308045664,5.596543986425293 58.89060644192386,5.575320875437644 58.898534458804185,5.575320875437644 58.91703316485828,5.607155541919118 58.92496118173861,5.572667986564188 58.93024652632549,5.559403542196907 58.940817215499266,5.580626653184556 58.96063725770008,5.607155541919118 58.9553519131132,5.623072875159855 58.940817215499266,5.625725764033311 58.91306915641812,5.61246131966603 58.90646247568451,5.644295986147505 58.898534458804185,5.641643097274049 58.903819803391066,5.660213319388242 58.91042648412468,5.684089319249347 58.928925190178774,5.66817198600861 58.940817215499266,5.646948875020961 58.93024652632549,5.6336844306536795 58.93288919861894,5.628378652906767 58.95270924081975,5.591238208678381 58.96988661072713,5.609808430792574 58.97517195531402,5.604502653045662 58.985742644487786,5.56470931994382 58.979135963754175,5.56470931994382 59.016133375862374,5.591238208678381 59.02009738430254,5.575320875437644 59.028025401182866,5.580626653184556 59.03595341806319,5.604502653045662 59.0240613927427,5.625725764033311 59.02009738430254,5.654907541641329 59.00952669512876,5.660213319388242 58.99763466980828,5.681436430375891 58.99763466980828,5.731841318971559 58.97517195531402,5.761023096579576 58.96988661072713,5.763675985453032 58.956673249259914,5.747758652212296 58.951387904673034,5.755717318832664 58.928925190178774,5.737147096718471 58.91439049256484,5.753064429959208 58.89589178651074,5.74510576333884 58.87210773586976,5.753064429959208 58.856251702109105,5.774287540946857 58.88399976119025,5.774287540946857 58.926282517885326,5.787551985314138 58.93949587935254,5.819386651795613 58.92496118173861,5.84856842940363 58.93024652632549,5.851221318277086 58.9553519131132,5.8697915403912795 58.965922602286966,5.893667540252386 58.96724393843369,5.898973317999298 58.95931592155336,5.933460873354228 58.94742389623287,5.936113762227684 58.9553519131132,5.975907095329527 58.9368532070591,5.981212873076439 58.928925190178774,5.965295539835703 58.918354501005005,5.967948428709159 58.90249846724435,5.99447731744372 58.89457045036402,6.010394650684457 58.90249846724435,6.042229317165932 58.89192777807058,6.0501879837863 58.89457045036402,6.121815983369617 58.85228769366894,6.135080427736898 58.856251702109105,6.150997760977635 58.84171700449517,6.17487376083874 58.83511032376157,6.185485316332565 58.84171700449517,6.238543093801688 58.84171700449517,6.2783364269035316 58.83775299605501,6.280989315776988 58.84568101293534,6.246501760422057 58.8496450213755,6.172220871965284 58.847002349082054,6.119163094496161 58.87342907201648,6.103245761255423 58.89457045036402,6.087328428014686 58.8998557949509,6.103245761255423 58.90646247568451,6.103245761255423 58.920997173298446,6.121815983369617 58.93024652632549,6.121815983369617 58.940817215499266,6.143039094357266 58.94874523237959,6.148344872104179 58.9553519131132,6.169567983091828 58.956673249259914,6.1934439829529335 58.971207946873854,6.222625760560952 58.97781462760746,6.257113315915882 58.993670661368114,6.283642204650444 59.00027734210172,6.302212426764637 58.99763466980828,6.368534648601042 59.00424135054188,6.5064848700207625 59.028025401182866,6.527707981008412 59.028025401182866,6.641782202567027 59.050488115677126,6.641782202567027 59.05709479641073,6.525055092134956 59.038596090356634,6.50117909227385 59.03991742650335,6.371187537474498 59.02274005659598,6.342005759866479 59.016133375862374,6.2677248714097065 59.01216936742221,6.201402649573302 58.98970665292795,6.14038620548381 58.956673249259914,6.100592872381967 58.940817215499266,6.097939983508511 58.926282517885326,6.079369761394318 58.918354501005005,6.074063983647406 58.903819803391066,6.047535094912844 58.928925190178774,6.0289648727986505 58.93024652632549,5.99447731744372 58.96724393843369,6.015700428431369 58.98970665292795,6.052840872659756 59.00027734210172,6.087328428014686 58.985742644487786,6.066105317027037 59.005562686688606,6.015700428431369 59.0240613927427,5.991824428570264 59.02009738430254,5.9467253177215085 59.02274005659598,5.914890651240035 59.050488115677126,5.909584873493122 59.06502281329106,5.896320429125842 59.06502281329106,5.885708873632017 59.08484285549188,5.9546839843418775 59.11523358686647,5.981212873076439 59.12184026760007,5.997130206317176 59.11523358686647,6.0395764282924755 59.11523358686647,6.068758205900493 59.131089620627115,6.092634205761598 59.1297682844804,6.089981316888142 59.13769630136073,6.111204427875792 59.14033897365417,6.161609316471459 59.136374965214,6.17487376083874 59.13769630136073,6.161609316471459 59.148266990534495,6.100592872381967 59.145624318241055,6.089981316888142 59.15223099897466,6.076716872520862 59.14430298209433,6.047535094912844 59.13769630136073,6.023659095051738 59.14430298209433,6.0501879837863 59.170729705028755,6.0501879837863 59.17601504961564,6.068758205900493 59.17865772190908,6.068758205900493 59.193192419523015,6.097939983508511 59.1984777641099,6.103245761255423 59.22094047860416,6.1165102056227045 59.213012461723835,6.14038620548381 59.23151116777793,6.177526649712196 59.235475176218095,6.17487376083874 59.24736720153859,6.219972871687496 59.26586590759268,6.2677248714097065 59.2671872437394,6.304865315638093 59.280400605206616,6.323435537752286 59.26982991603285,6.323435537752286 59.2856859497935,6.37649331522141 59.30154198355415,6.416286648323252 59.31211267272793,6.517096425514588 59.31607668116809,6.461385759172008 59.322683361901696,6.424245314943621 59.32400469804841,6.3446586487399355 59.31607668116809,6.328741315499199 59.300220647407436,6.212014205067127 59.27379392447301,6.188138205206021 59.26982991603285,6.153650649851091 59.25925922685908,6.14038620548381 59.27379392447301,6.119163094496161 59.2856859497935,6.1138573167492485 59.30154198355415,6.127121761116529 59.30814866428776,6.172220871965284 59.3041846558476,6.182832427459109 59.30814866428776,6.249154649295513 59.31211267272793,6.2677248714097065 59.29757797511399,6.26507198253625 59.322683361901696,6.246501760422057 59.33457538722219,6.235890204928232 59.34911008483612,6.222625760560952 59.35703810171645,6.214667093940583 59.34911008483612,6.235890204928232 59.327968706488576,6.227931538307864 59.322683361901696,6.1907910940794775 59.31607668116809,6.19609687182639 59.333254051075464,6.214667093940583 59.34118206795579,6.1907910940794775 59.34118206795579,6.17487376083874 59.31475534502137,6.135080427736898 59.31475534502137,6.100592872381967 59.322683361901696,6.100592872381967 59.353074093276284,6.121815983369617 59.36893012703694,6.111204427875792 59.36893012703694,6.082022650267774 59.34646741254268,6.087328428014686 59.33457538722219,6.079369761394318 59.327968706488576,6.0395764282924755 59.330611378782024,6.015700428431369 59.34118206795579,6.023659095051738 59.353074093276284,6.0395764282924755 59.36100211015661,6.047535094912844 59.375536807770544,6.063452428153581 59.38478616079759,6.076716872520862 59.38346482465087,6.089981316888142 59.39403551382464,6.14038620548381 59.40328486685169,6.135080427736898 59.41385555602546,6.177526649712196 59.420462236759064,6.201402649573302 59.440282278959884,6.214667093940583 59.440282278959884,6.209361316193671 59.41517689217218,6.251807538168969 59.468030338041025,6.246501760422057 59.47727969106808,6.251807538168969 59.4970997332689,6.2677248714097065 59.505027750149225,6.3526173153603045 59.51956244776316,6.392410648462147 59.52484779235004,6.405675092829428 59.53409714537709,6.4322039815639895 59.53806115381725,6.469344425792376 59.5473105068443,6.517096425514588 59.5473105068443,6.562195536363342 59.55391718757791,6.538319536502237 59.55788119601807,6.479955981286201 59.555238523724626,6.464038648045464 59.56052386831151,6.4322039815639895 59.555238523724626,6.392410648462147 59.54598917069758,6.368534648601042 59.54598917069758,6.357923093107217 59.53806115381725,6.32078264887883 59.527490464643485,6.2677248714097065 59.51956244776316,6.296906649017725 59.55788119601807,6.307518204511549 59.56448787675168,6.331394204372655 59.58166524665905,6.328741315499199 59.62262666720741,6.342005759866479 59.62659067564758,6.365881759727586 59.64376804555495,6.342005759866479 59.64905339014184,6.336699982119567 59.64376804555495,6.304865315638093 59.63848270096806,6.2862950935239 59.614698650327085,6.294253760144269 59.60412796115331,6.2862950935239 59.592235935832825,6.304865315638093 59.5909145996861,6.304865315638093 59.57637990207217,6.280989315776988 59.5658092128984,6.26507198253625 59.55127451528446,6.2677248714097065 59.53541848152381,6.249154649295513 59.51956244776316,6.201402649573302 59.49842106941561,6.198749760699846 59.482565035654964,6.214667093940583 59.47199434648119,6.182832427459109 59.452174304280376,6.158956427598003 59.42574758134595,6.121815983369617 59.417819564465624,6.119163094496161 59.40592753914513,6.08467553914123 59.409891547585296,6.052840872659756 59.40592753914513,6.044882206039388 59.395356849971364,6.015700428431369 59.40328486685169,6.018353317304825 59.37950081621071,5.99447731744372 59.37685814391726,5.973254206456071 59.35703810171645,5.957336873215334 59.34911008483612,5.941419539974596 59.358359437863164,5.93876665110114 59.37950081621071,5.917543540113491 59.39932085841153,5.909584873493122 59.429711589786116,5.922849317860403 59.43631827051972,5.914890651240035 59.44821029584021,5.930807984480772 59.452174304280376,5.93876665110114 59.44688895969349,5.970601317582615 59.4416036151066,5.997130206317176 59.44821029584021,6.013047539557913 59.44424628740005,6.0501879837863 59.45613831272054,6.158956427598003 59.47067301033447,6.1934439829529335 59.47463701877464,6.19609687182639 59.482565035654964,6.158956427598003 59.48652904409513,6.156303538724547 59.48124369950824,6.063452428153581 59.47199434648119,6.0501879837863 59.47727969106808,5.922849317860403 59.47199434648119,5.885708873632017 59.48124369950824,5.901626206872754 59.48652904409513,5.901626206872754 59.49445706097545,5.880403095885105 59.49445706097545,5.867138651517823 59.505027750149225,5.867138651517823 59.54202516225742,5.84856842940363 59.54334649840414,5.837956873909805 59.52088378390987,5.8140808740487 59.51956244776316,5.84856842940363 59.48652904409513,5.859179984897455 59.46670900189431,5.835303985036349 59.45613831272054,5.774287540946857 59.43631827051972,5.763675985453032 59.440282278959884,5.755717318832664 59.460102321160704,5.739799985591927 59.47463701877464,5.731841318971559 59.47463701877464,5.739799985591927 59.460102321160704,5.737147096718471 59.452174304280376,5.750411541085752 59.44424628740005,5.750411541085752 59.429711589786116,5.70265954136354 59.40724887529185,5.684089319249347 59.40592753914513,5.684089319249347 59.395356849971364,5.774287540946857 59.42442624519923,5.843262651656718 59.43631827051972,5.845915540530174 59.42178357290579,5.867138651517823 59.39403551382464,5.896320429125842 59.37950081621071,5.89101465137893 59.34911008483612,5.8724444292647355 59.33457538722219,5.8697915403912795 59.342503404102516,5.835303985036349 59.342503404102516,5.822039540669069 59.327968706488576,5.811427985175244 59.34646741254268,5.7955106519345065 59.34646741254268,5.798163540807963 59.32664737034186,5.787551985314138 59.322683361901696,5.771634652073401 59.33457538722219,5.755717318832664 59.327968706488576,5.74510576333884 59.342503404102516,5.747758652212296 59.327968706488576,5.726535541224646 59.31475534502137,5.692047985869715 59.300220647407436,5.684089319249347 59.30154198355415,5.660213319388242 59.2856859497935,5.660213319388242 59.26586590759268,5.644295986147505 59.26190189915252,5.6310315417802235 59.26982991603285,5.646948875020961 59.2856859497935,5.641643097274049 59.288328622086944,5.644295986147505 59.31871935346153,5.684089319249347 59.322683361901696,5.686742208122803 59.327968706488576,5.660213319388242 59.342503404102516,5.662866208261698 59.353074093276284,5.6389902084005925 59.38346482465087,5.617767097412942 59.45613831272054,5.609808430792574 59.47067301033447,5.61246131966603 59.490493052535285,5.6336844306536795 59.49313572482873,5.617767097412942 59.49842106941561,5.575320875437644 59.49842106941561,5.559403542196907 59.48917171638857,5.5567506533234505 59.47463701877464,5.538180431209257 59.47199434648119,5.530221764588889 59.44821029584021,5.516957320221608 59.44424628740005,5.463899542752484 59.460102321160704,5.463899542752484 59.432354262079556,5.4718582093728525 59.440282278959884,5.511651542474696 59.42839025363939,5.538180431209257 59.43631827051972,5.543486208956169 59.44821029584021,5.5567506533234505 59.45085296813365,5.5567506533234505 59.468030338041025,5.591238208678381 59.47463701877464,5.591238208678381 59.45613831272054,5.609808430792574 59.44821029584021,5.615114208539486 59.40724887529185,5.591238208678381 59.41385555602546,5.591238208678381 59.40328486685169,5.617767097412942 59.39932085841153,5.625725764033311 59.38346482465087,5.607155541919118 59.375536807770544,5.61246131966603 59.353074093276284,5.609808430792574 59.32664737034186,5.593891097551837 59.322683361901696,5.588585319804925 59.300220647407436,5.56470931994382 59.277757932913175,5.548791986703082 59.26982991603285,5.530221764588889 59.27643659676645,5.519610209095064 59.26982991603285,5.46655243162594 59.277757932913175,5.4692053204993964 59.29229263052711,5.461246653879028 59.32004068960825,5.46655243162594 59.31607668116809,5.48777554261359 59.32664737034186,5.482469764866678 59.333254051075464,5.463899542752484 59.322683361901696,5.458593765005572 59.327968706488576,5.4771639871197655 59.36364478245005,5.4798168759932215 59.3913928415312,5.463899542752484 59.3913928415312,5.463899542752484 59.36100211015661,5.445329320638291 59.33721805951563,5.458593765005572 59.293613966673824,5.426759098524098 59.293613966673824,5.413494654156817 59.28964995823367,5.3922715431691675 59.31475534502137,5.3922715431691675 59.342503404102516,5.381659987675343 59.372894135477104,5.3922715431691675 59.380822152357425,5.405535987536449 59.37685814391726,5.384312876548799 59.40328486685169,5.386965765422255 59.42178357290579,5.368395543308062 59.40724887529185,5.373701321054974 59.387428833091036,5.365742654434606 59.37685814391726,5.365742654434606 59.364966118596776,5.373701321054974 59.33853939566235,5.349825321193869 59.327968706488576,5.333907987953132 59.330611378782024,5.299420432598201 59.364966118596776,5.294114654851289 59.3913928415312,5.283503099357464 59.3913928415312,5.249015544002534 59.432354262079556,5.2384039885087095 59.432354262079556,5.246362655129078 59.44424628740005,5.23044532188834 59.45613831272054,5.249015544002534 59.468030338041025,5.227792433014884 59.468030338041025,5.222486655267972 59.50106374170906,5.243709766255622 59.50106374170906,5.27289154386364 59.48652904409513,5.264932877243271 59.4786010272148,5.302073321471657 59.4786010272148,5.312684876965482 59.49445706097545,5.280850210484008 59.49313572482873,5.227792433014884 59.51691977546972,5.256974210622903 59.51691977546972,5.278197321610552 59.50899175858939,5.278197321610552 59.52352645620332,5.2410568773821655 59.52352645620332,5.2410568773821655 59.54598917069758,5.280850210484008 59.56184520445824,5.28615598823092 59.58827192739266,5.323296432459307 59.60016395271315,5.3153377658389385 59.61866265876725,5.325949321332763 59.62659067564758,5.373701321054974 59.63319735638118,5.371048432181518 59.64508938170167,5.408188876409905 59.653017398582,5.410841765283361 59.61866265876725,5.421453320777186 59.62659067564758,5.440023542891379 59.614698650327085,5.429411987397554 59.61205597803364,5.429411987397554 59.58166524665905,5.445329320638291 59.58166524665905,5.442676431764835 59.60677063344676,5.461246653879028 59.608091969593474,5.4771639871197655 59.62262666720741,5.463899542752484 59.63319735638118,5.41880043190373 59.65566007087544,5.445329320638291 59.66358808775577,5.447982209511747 59.6715161046361,5.429411987397554 59.679444121516426,5.450635098385203 59.690014810690194,5.461246653879028 59.704549508304126,5.4718582093728525 59.69133614683691,5.4798168759932215 59.709834852891014,5.498387098107415 59.71379886133118,5.527568875715433 59.732297567385274,5.535527542335801 59.73097623123855,5.519610209095064 59.71644153362462,5.540833320082713 59.709834852891014,5.535527542335801 59.6715161046361,5.52226309796852 59.659624079315606,5.532874653462345 59.64905339014184,5.511651542474696 59.6345186925279,5.527568875715433 59.62526933950085,5.519610209095064 59.61866265876725,5.519610209095064 59.585629255099214,5.538180431209257 59.569773221338565,5.514304431348152 59.55788119601807,5.506345764727783 59.5473105068443,5.493081320360503 59.55788119601807,5.503692875854327 59.54202516225742,5.506345764727783 59.52484779235004,5.498387098107415 59.51956244776316,5.4692053204993964 59.52352645620332,5.461246653879028 59.54334649840414,5.447982209511747 59.53938248996398,5.455940876132116 59.52352645620332,5.445329320638291 59.51295576702955,5.461246653879028 59.48124369950824,5.46655243162594 59.48917171638857,5.463899542752484 59.51163443088283,5.493081320360503 59.50899175858939,5.514304431348152 59.51691977546972,5.52226309796852 59.53541848152381,5.548791986703082 59.52484779235004,5.540833320082713 59.54202516225742,5.567362208817276 59.55788119601807,5.56470931994382 59.58166524665905,5.585932430931469 59.58827192739266,5.5540977644499945 59.60016395271315,5.5567506533234505 59.61073464188692,5.5540977644499945 59.62923334794102,5.559403542196907 59.63055468408774,5.5540977644499945 59.647732053995114,5.56470931994382 59.66358808775577,5.591238208678381 59.68605080225003,5.609808430792574 59.68340812995659,5.6336844306536795 59.667552096195934,5.665519097135154 59.66358808775577,5.678783541502435 59.667552096195934,5.737147096718471 59.653017398582,5.771634652073401 59.64905339014184,5.790204874187594 59.62130533106069,5.774287540946857 59.608091969593474,5.737147096718471 59.59884261656643,5.800816429681419 59.60280662500659,5.822039540669069 59.61073464188692,5.800816429681419 59.61866265876725,5.7928577630610505 59.64112537326151,5.859179984897455 59.64905339014184,5.893667540252386 59.64112537326151,5.920196428986947 59.64376804555495,5.896320429125842 59.64905339014184,5.930807984480772 59.6715161046361,5.917543540113491 59.67548011307626,5.867138651517823 59.659624079315606,5.859179984897455 59.659624079315606,5.819386651795613 59.64905339014184,5.7928577630610505 59.64905339014184,5.784899096440682 59.66358808775577,5.782246207567226 59.68340812995659,5.808775096301788 59.69133614683691,5.8140808740487 59.701906836010686,5.851221318277086 59.70851351674429,5.867138651517823 59.71644153362462,5.856527096023999 59.724369550504946,5.909584873493122 59.7402255842656,5.928155095607316 59.732297567385274,5.93876665110114 59.734940239678714,5.933460873354228 59.744189592705766,5.9467253177215085 59.75079627343937,5.930807984480772 59.757402954172974,5.936113762227684 59.769294979493466,5.95998976208879 59.754760281879534,5.957336873215334 59.744189592705766,5.981212873076439 59.732297567385274,6.007741761811001 59.7402255842656,6.044882206039388 59.744189592705766,6.087328428014686 59.73626157582544,6.1165102056227045 59.746832264999206,6.14038620548381 59.78118700481396,6.177526649712196 59.789115021694286,6.212014205067127 59.80364971930822,6.227931538307864 59.819505753068874,6.249154649295513 59.83007644224264,6.2783364269035316 59.83007644224264,6.315476871131918 59.83800445912297,6.3552702042337605 59.853860492883626,6.365881759727586 59.871037862791,6.336699982119567 59.853860492883626,6.288947982397356 59.841968467563134,6.2703777602831625 59.841968467563134,6.227931538307864 59.83404045068281,6.188138205206021 59.811577736188546,6.158956427598003 59.80364971930822,6.148344872104179 59.791757693987726,6.1138573167492485 59.77854433252051,6.092634205761598 59.78515101325412,6.08467553914123 59.7587242903197,6.063452428153581 59.76136696261314,6.052840872659756 59.754760281879534,6.015700428431369 59.75211760958609,5.975907095329527 59.76268829875986,5.957336873215334 59.789115021694286,5.978559984202983 59.804971055454935,5.989171539696808 59.82611243380248,5.978559984202983 59.84857514829674,5.99447731744372 59.85782450132379,5.965295539835703 59.853860492883626,5.970601317582615 59.83404045068281,5.957336873215334 59.811577736188546,5.936113762227684 59.79572170242789,5.909584873493122 59.791757693987726,5.883055984758561 59.769294979493466,5.827345318415981 59.789115021694286,5.798163540807963 59.819505753068874,5.75837020770612 59.83404045068281,5.710618207983909 59.82346976150904,5.7159239857308215 59.83007644224264,5.678783541502435 59.83800445912297,5.678783541502435 59.84989648444346,5.700006652490084 59.8459324760033,5.689395096996259 59.853860492883626,5.739799985591927 59.864431182057395,5.750411541085752 59.87632320737789,5.755717318832664 59.86575251820411,5.774287540946857 59.88292988811149,5.763675985453032 59.89085790499182,5.771634652073401 59.91067794719264,5.7928577630610505 59.92521264480657,5.819386651795613 59.931819325540175,5.851221318277086 59.929176653246735,5.8697915403912795 59.94371135086067,5.920196428986947 59.95296070388771,5.9520310954684215 59.945032687007384,5.991824428570264 59.95296070388771,5.997130206317176 59.974102082235255,6.010394650684457 59.97806609067542,5.989171539696808 59.98863677984919,5.981212873076439 60.00052880516968,5.997130206317176 60.02431285581066,6.018353317304825 60.038847553424596,6.015700428431369 60.05073957874509,6.0369235394190195 60.06527427635902,6.087328428014686 60.083772982413116,6.1138573167492485 60.09566500773361,6.135080427736898 60.09302233544016,6.185485316332565 60.103593024613936,6.212014205067127 60.103593024613936,6.235890204928232 60.11548504993442,6.2677248714097065 60.11812772222787,6.315476871131918 60.126055739108196,6.310171093385005 60.1326624198418,6.283642204650444 60.1326624198418,6.283642204650444 60.14983978974917,6.296906649017725 60.16437448736311,6.2783364269035316 60.16437448736311,6.26507198253625 60.15248246204262,6.251807538168969 60.133983755988524,6.198749760699846 60.114163713787704,6.169567983091828 60.11152104149426,6.148344872104179 60.1075570330541,6.135080427736898 60.11019970534754,6.156303538724547 60.11548504993442,6.164262205344915 60.126055739108196,6.124468872243073 60.14191177286885,6.121815983369617 60.15512513433606,6.092634205761598 60.17230250424343,6.092634205761598 60.18287319341721,6.082022650267774 60.190801210297536,6.1058986501288794 60.201371899471305,6.121815983369617 60.2198706055254,6.153650649851091 60.21722793323196,6.156303538724547 60.2132639247918,6.19609687182639 60.22515595011228,6.1934439829529335 60.23704797543277,6.206708427320215 60.246297328459825,6.201402649573302 60.25818935378032,6.233237316054776 60.25818935378032,6.233237316054776 60.27404538754097,6.249154649295513 60.27668805983441,6.238543093801688 60.288580085154905,6.225278649434408 60.29254409359507,6.273030649156619 60.307078791209,6.283642204650444 60.30443611891556,6.323435537752286 60.31500680808933,6.3446586487399355 60.33746952258359,6.37649331522141 60.34143353102375,6.3552702042337605 60.34936154790408,6.3552702042337605 60.3691815901049,6.395063537335603 60.36786025395818,6.453427092551639 60.37182426239834,6.493220425653481 60.38371628771883,6.5117906477676755 60.41014301065326,6.5224022032615 60.4127856829467,6.559542647489886 60.43656973358768,6.578112869604079 60.43656973358768,6.623211980452835 60.42599904441391,6.6683110913015895 60.408821674506534,6.6683110913015895 60.40221499377293,6.641782202567027 60.386358960012274,6.641782202567027 60.37314559854506,6.625864869326291 60.35728956478441,6.625864869326291 60.33746952258359,6.607294647212098 60.32954150570326,6.61260042495901 60.308400127355725,6.5887244250979045 60.27404538754097,6.578112869604079 60.27008137910081,6.562195536363342 60.23704797543277,6.572807091857167 60.223834613965565,6.543625314249149 60.17230250424343,6.548931091996062 60.15248246204262,6.540972425375693 60.14455444516229,6.527707981008412 60.07716630167951,6.540972425375693 60.069238284799184,6.551583980869518 60.07980897397295,6.543625314249149 60.09566500773361,6.55688975861643 60.11019970534754,6.559542647489886 60.1326624198418,6.572807091857167 60.14191177286885,6.572807091857167 60.170981168096716,6.599335980591729 60.20533590791147,6.599335980591729 60.223834613965565,6.620559091579379 60.23704797543277,6.615253313832466 60.25158267304671,6.623211980452835 60.25951068992703,6.615253313832466 60.27668805983441,6.633823535946659 60.29254409359507,6.657699535807765 60.32293482496966,6.652393758060852 60.33746952258359,6.684228424542327 60.386358960012274,6.708104424403432 60.37314559854506,6.724021757644169 60.37710960698522,6.705451535529976 60.398250985332766,6.734633313137994 60.406179002213094,6.755856424125644 60.43260572514752,6.774426646239837 60.433927061294234,6.779732423986749 60.443176414321286,6.806261312721311 60.451104431201614,6.814219979341679 60.46035378422866,6.840748868076242 60.4748884818426,6.888500867798452 60.46696046496227,6.941558645267576 60.470924473402434,6.9919635338632435 60.482816498722926,7.031756866965086 60.47753115413604,7.058285755699648 60.462996456522106,7.079508866687297 60.47885249028276,7.135219533029877 60.496029860190134,7.132566644156421 60.50131520477702,7.076855977813841 60.485459171016366,7.060938644573104 60.48678050716308,7.015839533724349 60.50131520477702,6.986657756116331 60.50395787707046,6.957475978508313 60.4999938686303,6.941558645267576 60.48942317945653,6.9123768676595585 60.496029860190134,6.949517311887945 60.51981391083112,6.944211534141032 60.52642059156472,7.034409755838542 60.583238045873735,7.015839533724349 60.5872020543139,6.965434645128681 60.558132659086034,6.928294200900295 60.53170593615161,6.922988423153383 60.558132659086034,6.944211534141032 60.566060675966355,6.944211534141032 60.57398869284668,6.9070710899126455 60.56473933981964,6.9123768676595585 60.55681132293931,6.9070710899126455 60.53434860844505,6.917682645406471 60.51981391083112,6.888500867798452 60.493387187896694,6.875236423431172 60.482816498722926,6.864624867937347 60.48942317945653,6.832790201455873 60.48942317945653,6.79299686835403 60.4748884818426,6.755856424125644 60.46960313725571,6.7478977575052745 60.45506843964178,6.705451535529976 60.440533742027846,6.70279864665652 60.42996305285407,6.6683110913015895 60.43260572514752,6.660352424681221 60.44449775046801,6.633823535946659 60.448461758908174,6.631170647073203 60.462996456522106,6.663005313554677 60.482816498722926,6.692187091162696 60.493387187896694,6.718715979897257 60.51981391083112,6.700145757783064 60.51981391083112,6.673616869048502 60.49735119633686,6.657699535807765 60.496029860190134,6.636476424820115 60.47885249028276,6.609947536085554 60.470924473402434,6.599335980591729 60.45903244808194,6.559542647489886 60.45506843964178,6.527707981008412 60.456389775788494,6.498526203400394 60.44449775046801,6.4322039815639895 60.428641716707354,6.41098087057634 60.43260572514752,6.395063537335603 60.41410701909342,6.357923093107217 60.4127856829467,6.342005759866479 60.39957232147948,6.296906649017725 60.39164430459916,6.273030649156619 60.3942869768926,6.235890204928232 60.42599904441391,6.243848871548601 60.440533742027846,6.214667093940583 60.470924473402434,6.201402649573302 60.465639128815546,6.222625760560952 60.440533742027846,6.227931538307864 60.418071027533585,6.2783364269035316 60.38371628771883,6.249154649295513 60.3691815901049,6.23058442718132 60.37975227927867,6.198749760699846 60.386358960012274,6.201402649573302 60.3691815901049,6.172220871965284 60.36389624551801,6.14038620548381 60.37182426239834,6.177526649712196 60.346718875610634,6.212014205067127 60.34539753946392,6.219972871687496 60.32954150570326,6.177526649712196 60.32029215267621,6.164262205344915 60.31236413579589,6.17487376083874 60.28461607671474,6.19609687182639 60.28065206827458,6.161609316471459 60.25554668148688,6.153650649851091 60.24233332001966,6.137733316610354 60.25158267304671,6.087328428014686 60.24761866460655,6.047535094912844 60.26215336222048,6.0316177616721065 60.27404538754097,6.013047539557913 60.27008137910081,6.015700428431369 60.25554668148688,6.005088872937545 60.25026133689999,6.005088872937545 60.229119958552445,5.965295539835703 60.2132639247918,5.957336873215334 60.18683720185737,5.9520310954684215 60.1762665126836,5.9546839843418775 60.16437448736311,5.93876665110114 60.15248246204262,5.920196428986947 60.14983978974917,5.922849317860403 60.16437448736311,5.901626206872754 60.16041047892295,5.901626206872754 60.14455444516229,5.896320429125842 60.133983755988524,5.909584873493122 60.114163713787704,5.920196428986947 60.07980897397295,5.914890651240035 60.05866759562541,5.920196428986947 60.061310267918856,5.909584873493122 60.03091953654427,5.896320429125842 60.01506350278361,5.867138651517823 60.001850141316396,5.867138651517823 59.993922124436075,5.824692429542525 59.98203009911558,5.811427985175244 60.00052880516968,5.829998207289437 60.016384838930335,5.800816429681419 60.00845682205001,5.776940429820313 59.979387426822136,5.761023096579576 59.97806609067542,5.755717318832664 60.009778158196724,5.739799985591927 60.00052880516968,5.726535541224646 60.001850141316396,5.721229763477734 60.026955528104104,5.7132710968573654 60.04677557030492,5.7159239857308215 60.071880957092624,5.721229763477734 60.07584496553279,5.753064429959208 60.05734625947869,5.750411541085752 60.066595612505736,5.782246207567226 60.066595612505736,5.7928577630610505 60.05073957874509,5.819386651795613 60.07716630167951,5.837956873909805 60.091700999293444,5.829998207289437 60.091700999293444,5.800816429681419 60.07716630167951,5.7928577630610505 60.091700999293444,5.782246207567226 60.07584496553279,5.755717318832664 60.07320229323935,5.734494207845015 60.09566500773361,5.74510576333884 60.106235696907376,5.72388265235119 60.10227168846721,5.737147096718471 60.12209173066803,5.755717318832664 60.1326624198418,5.72388265235119 60.15512513433606,5.721229763477734 60.17230250424343,5.763675985453032 60.18287319341721,5.75837020770612 60.18947987415081,5.739799985591927 60.18287319341721,5.70265954136354 60.178909184977044,5.697353763616628 60.190801210297536,5.684089319249347 60.16041047892295,5.646948875020961 60.148518453602456,5.609808430792574 60.14455444516229,5.572667986564188 60.15248246204262,5.591238208678381 60.178909184977044,5.604502653045662 60.18551586571065,5.591238208678381 60.20533590791147,5.623072875159855 60.20269323561802,5.665519097135154 60.229119958552445,5.726535541224646 60.23176263084589,5.750411541085752 60.23704797543277,5.737147096718471 60.24761866460655,5.721229763477734 60.243654656166385,5.662866208261698 60.243654656166385,5.623072875159855 60.23572663928606,5.665519097135154 60.266117370660645,5.66817198600861 60.27800939598114,5.660213319388242 60.281973404421294,5.628378652906767 60.25554668148688,5.596543986425293 60.23572663928606,5.596543986425293 60.25026133689999,5.585932430931469 60.25158267304671,5.604502653045662 60.2634746983672,5.6310315417802235 60.27008137910081,5.6336844306536795 60.27800939598114,5.662866208261698 60.3004721104754,5.649601763894417 60.30443611891556,5.654907541641329 60.33482685029015,5.684089319249347 60.34539753946392,5.697353763616628 60.3691815901049,5.74510576333884 60.3691815901049,5.768981763199945 60.39032296845244,5.755717318832664 60.398250985332766,5.739799985591927 60.39164430459916,5.721229763477734 60.403536329919646,5.7132710968573654 60.39560831303932,5.7185768746042775 60.37975227927867,5.686742208122803 60.37314559854506,5.676130652628979 60.36389624551801,5.665519097135154 60.34539753946392,5.652254652767873 60.34275486717047,5.660213319388242 60.37182426239834,5.644295986147505 60.37314559854506,5.641643097274049 60.34275486717047,5.623072875159855 60.3255774972631,5.628378652906767 60.32293482496966,5.623072875159855 60.293865429741786,5.61246131966603 60.28593741286146,5.559403542196907 60.25818935378032,5.575320875437644 60.243654656166385,5.5567506533234505 60.223834613965565,5.535527542335801 60.206657244058185,5.543486208956169 60.206657244058185,5.527568875715433 60.1947652187377,5.501039986980871 60.190801210297536,5.46655243162594 60.18287319341721,5.450635098385203 60.16701715965655,5.463899542752484 60.16437448736311,5.445329320638291 60.133983755988524,5.440023542891379 60.13001974754836,5.426759098524098 60.14455444516229,5.426759098524098 60.16041047892295,5.3922715431691675 60.14983978974917,5.381659987675343 60.13794776442869,5.352478210067325 60.1326624198418,5.360436876687693 60.14455444516229,5.405535987536449 60.16041047892295,5.3949244320426235 60.178909184977044,5.371048432181518 60.17494517653688,5.331255099079676 60.19344388259098,5.336560876826588 60.20533590791147,5.352478210067325 60.20929991635163,5.360436876687693 60.201371899471305,5.384312876548799 60.21722793323196,5.355131098940781 60.229119958552445,5.339213765700044 60.22779862240573,5.3153377658389385 60.21722793323196,5.28615598823092 60.221191941672124,5.280850210484008 60.20533590791147,5.264932877243271 60.201371899471305,5.243709766255622 60.20929991635163,5.246362655129078 60.221191941672124,5.262279988369815 60.22779862240573,5.280850210484008 60.22779862240573,5.28615598823092 60.23704797543277,5.333907987953132 60.25818935378032,5.325949321332763 60.27008137910081,5.299420432598201 60.25818935378032,5.280850210484008 60.27008137910081,5.262279988369815 60.266117370660645,5.275544432737096 60.25818935378032,5.262279988369815 60.24233332001966,5.235751099635253 60.246297328459825,5.2384039885087095 60.26215336222048,5.206569322027235 60.27404538754097,5.203916433153779 60.288580085154905,5.209222210900691 60.31500680808933,5.246362655129078 60.32029215267621,5.296767543724745 60.31500680808933,5.299420432598201 60.30443611891556,5.325949321332763 60.31236413579589,5.325949321332763 60.32689883340982,5.339213765700044 60.32954150570326,5.333907987953132 60.34275486717047,5.3179906547123945 60.32954150570326,5.28615598823092 60.32293482496966,5.278197321610552 60.32689883340982,5.25166843287599 60.32293482496966,5.2384039885087095 60.34143353102375,5.235751099635253 60.35993223707785,5.214527988647603 60.33482685029015,5.203916433153779 60.32689883340982,5.180040433292673 60.34143353102375,5.203916433153779 60.353325556344245,5.193304877659954 60.35993223707785,5.174734655545761 60.353325556344245,5.172081766672305 60.37182426239834,5.219833766394516 60.39164430459916,5.2410568773821655 60.398250985332766,5.259627099496359 60.39032296845244,5.264932877243271 60.3942869768926,5.310031988092026 60.38371628771883,5.302073321471657 60.398250985332766,5.3179906547123945 60.40221499377293,5.3179906547123945 60.41014301065326,5.280850210484008 60.43260572514752,5.278197321610552 60.44714042276145,5.3153377658389385 60.43656973358768,5.3179906547123945 60.443176414321286,5.267585766116727 60.45903244808194,5.278197321610552 60.46696046496227,5.25166843287599 60.4748884818426,5.259627099496359 60.50395787707046,5.299420432598201 60.52642059156472,5.336560876826588 60.51981391083112,5.371048432181518 60.507921885510626,5.39757732091608 60.48942317945653,5.455940876132116 60.443176414321286,5.461246653879028 60.45242576734833,5.511651542474696 60.42203503597375,5.5567506533234505 60.42203503597375,5.5779737643111 60.428641716707354,5.623072875159855 60.42996305285407,5.644295986147505 60.45506843964178,5.665519097135154 60.46035378422866,5.692047985869715 60.451104431201614,5.734494207845015 60.45506843964178,5.739799985591927 60.470924473402434,5.734494207845015 60.47885249028276,5.7185768746042775 60.53963395303194,5.737147096718471 60.55284731449915,5.721229763477734 60.558132659086034,5.737147096718471 60.59645140734095,5.737147096718471 60.65723287009012,5.768981763199945 60.65987554238357,5.7955106519345065 60.65326886164996,5.800816429681419 60.64005550018275,5.829998207289437 60.61362877724832,5.880403095885105 60.62155679412865,5.8724444292647355 60.630806147155695,5.896320429125842 60.625520802568815,5.9546839843418775 60.64005550018275,5.9467253177215085 60.645340844769635,5.901626206872754 60.63609149174258,5.867138651517823 60.63741282788931,5.837956873909805 60.62155679412865,5.800816429681419 60.65987554238357,5.768981763199945 60.667803559263895,5.739799985591927 60.66648222311717,5.739799985591927 60.68233825687783,5.774287540946857 60.70480097137209,5.7955106519345065 60.72858502201307,5.7928577630610505 60.735191702746675,5.771634652073401 60.72065700513274,5.753064429959208 60.70083696293192,5.686742208122803 60.70480097137209,5.676130652628979 60.70083696293192,5.665519097135154 60.72065700513274,5.70265954136354 60.74444105577372,5.70265954136354 60.75369040880077,5.721229763477734 60.755011744947495,5.763675985453032 60.780117131735196,5.774287540946857 60.799937173936016,5.800816429681419 60.81182919925651,5.790204874187594 60.81579320769667,5.768981763199945 60.807865190816344,5.737147096718471 60.76954644256143,5.70265954136354 60.765582434121264,5.662866208261698 60.72726368586635,5.654907541641329 60.73122769430651,5.607155541919118 60.70480097137209,5.575320875437644 60.69687295449176,5.551444875576538 60.70083696293192,5.567362208817276 60.670446231557335,5.575320875437644 60.65987554238357,5.575320875437644 60.64137683632947,5.540833320082713 60.625520802568815,5.519610209095064 60.62948481100898,5.498387098107415 60.62948481100898,5.4771639871197655 60.62155679412865,5.463899542752484 60.60702209651472,5.426759098524098 60.59513007119423,5.3922715431691675 60.603058088074555,5.408188876409905 60.58455938202046,5.3922715431691675 60.58455938202046,5.360436876687693 60.59909407963439,5.368395543308062 60.580595373580294,5.386965765422255 60.57002468440652,5.37635420992843 60.56473933981964,5.336560876826588 60.5620966675262,5.312684876965482 60.55416865064587,5.296767543724745 60.54227662532538,5.278197321610552 60.53963395303194,5.275544432737096 60.55284731449915,5.235751099635253 60.5620966675262,5.227792433014884 60.5872020543139,5.201263544280323 60.61759278568849,5.206569322027235 60.62155679412865,5.172081766672305 60.63344881944914,5.116371100329725 60.66119687853028,5.116371100329725 60.67573157614422,5.12698265582355 60.67837424843766,5.174734655545761 60.66648222311717,5.19595776653341 60.6559115339434,5.209222210900691 60.64005550018275,5.246362655129078 60.61891412183521,5.264932877243271 60.61891412183521,5.227792433014884 60.64401950862291,5.227792433014884 60.6559115339434,5.243709766255622 60.65987554238357,5.1057595448359 60.71669299669258,5.129635544697006 60.71405032439913,5.129635544697006 60.72462101357291,5.190651988786498 60.69819429063848,5.166775988925393 60.72462101357291,5.206569322027235 60.71669299669258,5.209222210900691 60.72462101357291,5.148205766811199 60.732549030453235,5.1057595448359 60.72858502201307,5.063313322860601 60.75104773650733,5.044743100746408 60.777474459441756,4.989032434403828 60.799937173936016,4.986379545530372 60.79200915705569,4.965156434542723 60.79597316549585,4.949239101301986 60.807865190816344,4.970462212289635 60.807865190816344,4.989032434403828 60.81843587999011,5.023519989758759 60.81447187154995,5.012908434264934 60.822399888430276,5.042090211872952 60.81579320769667,5.039437322999496 60.810507863109784,5.060660433987145 60.80125851008273,5.0818835449747946 60.780117131735196,5.1057595448359 60.76293976182782,5.087189322721707 60.78936648476225,5.100453767088988 60.78936648476225,5.129635544697006 60.76690377026799,5.121676878076637 60.78143846788192,5.1561644334315675 60.77615312329503,5.172081766672305 60.76293976182782,5.246362655129078 60.73915571118684,5.2410568773821655 60.74708372806717,5.262279988369815 60.74708372806717,5.278197321610552 60.73915571118684,5.278197321610552 60.73122769430651,5.294114654851289 60.735191702746675,5.3179906547123945 60.73122769430651,5.349825321193869 60.70612230751881,5.349825321193869 60.69819429063848,5.331255099079676 60.69687295449176,5.355131098940781 60.667803559263895,5.357783987814237 60.65326886164996,5.3922715431691675 60.63741282788931,5.39757732091608 60.64005550018275,5.373701321054974 60.6559115339434,5.357783987814237 60.67969558458438,5.381659987675343 60.67176756770406,5.445329320638291 60.63344881944914,5.463899542752484 60.64137683632947,5.386965765422255 60.67969558458438,5.389618654295711 60.69819429063848,5.410841765283361 60.69423028219832,5.440023542891379 60.67176756770406,5.463899542752484 60.65723287009012,5.4692053204993964 60.67176756770406,5.445329320638291 60.68233825687783,5.445329320638291 60.690266273758155,5.424106209650642 60.70215829907865,5.447982209511747 60.70612230751881,5.450635098385203 60.71669299669258,5.41880043190373 60.70876497981225,5.37635420992843 60.732549030453235,5.386965765422255 60.74972640036061,5.368395543308062 60.73915571118684,5.347172432320413 60.74444105577372,5.352478210067325 60.765582434121264,5.339213765700044 60.765582434121264,5.323296432459307 60.74972640036061,5.296767543724745 60.75104773650733,5.267585766116727 60.76293976182782,5.264932877243271 60.76954644256143,5.299420432598201 60.799937173936016,5.3179906547123945 60.799937173936016,5.331255099079676 60.81579320769667,5.357783987814237 60.81843587999011,5.37635420992843 60.81447187154995,5.355131098940781 60.83429191375077,5.352478210067325 60.84618393907126,5.368395543308062 60.864682645125356,5.41880043190373 60.864682645125356,5.4692053204993964 60.875253334299124,5.493081320360503 60.872610662005684,5.511651542474696 60.85411195595158,5.538180431209257 60.86864665356552,5.585932430931469 60.86864665356552,5.591238208678381 60.872610662005684,5.570015097690732 60.87657467044585,5.519610209095064 60.872610662005684,5.485122653740134 60.88450268732617,5.530221764588889 60.91357208255404,5.519610209095064 60.91489341870076,5.463899542752484 60.887145359619616,5.405535987536449 60.87657467044585,5.368395543308062 60.87657467044585,5.3418666545735 60.867325317418796,5.336560876826588 60.82768523301716,5.310031988092026 60.830327905310604,5.312684876965482 60.81579320769667,5.280850210484008 60.81182919925651,5.283503099357464 60.823721224577,5.262279988369815 60.832970577604044,5.214527988647603 60.823721224577,5.209222210900691 60.832970577604044,5.214527988647603 60.85675462824503,5.23044532188834 60.864682645125356,5.203916433153779 60.864682645125356,5.201263544280323 60.830327905310604,5.172081766672305 60.81182919925651,5.1535115445581114 60.81579320769667,5.1535115445581114 60.83429191375077,5.169428877798849 60.842219930631096,5.137594211317374 60.83825592219093,5.116371100329725 60.82768523301716,5.100453767088988 60.830327905310604,5.063313322860601 60.842219930631096,5.058007545113689 60.872610662005684,5.031478656379127 60.895073376499944,5.03678443412604 60.929428116314696,5.020867100885303 60.929428116314696,5.004949767644566 60.951890830808956,5.007602656518022 60.96642552842289,5.039437322999496 60.962461519982725,5.044743100746408 60.95849751154256,5.119023989203181 60.95849751154256,5.116371100329725 60.91489341870076,5.113718211456269 60.89903738494011,5.116371100329725 60.87657467044585,5.134941322443918 60.87921734273929,5.12698265582355 60.89375204035322,5.129635544697006 60.92810678016797,5.134941322443918 60.939998805488464,5.132288433570462 60.962461519982725,5.1535115445581114 60.96642552842289,5.209222210900691 60.962461519982725,5.267585766116727 60.97038953686305,5.3179906547123945 60.99020957906387,5.299420432598201 60.99020957906387,5.246362655129078 60.97038953686305,5.190651988786498 60.96642552842289,5.172081766672305 60.98888824291715,5.185346211039586 60.99285225135731,5.185346211039586 61.007386948971245,5.1641231000519365 60.99020957906387,5.1641231000519365 60.97435354530322,5.116371100329725 60.96378285612944,5.087189322721707 60.97435354530322,5.087189322721707 60.982281562183545,5.042090211872952 60.97831755374338,5.026172878632215 61.01135095741141,5.042090211872952 61.0166363019983,5.026172878632215 61.02456431887862,5.047395989619864 61.02852832731878,5.023519989758759 61.03117099961223,5.044743100746408 61.049669705666325,5.042090211872952 61.06024039484009,5.068619100607513 61.06420440328026,5.0818835449747946 61.069489747867145,5.14024710019083 61.072132420160585,5.1561644334315675 61.08138177318763,5.166775988925393 61.069489747867145,5.185346211039586 61.069489747867145,5.203916433153779 61.077417764747466,5.23044532188834 61.06552573942698,5.294114654851289 61.06552573942698,5.296767543724745 61.047027033372885,5.325949321332763 61.03909901649256,5.3179906547123945 61.03117099961223,5.360436876687693 61.03381367190567,5.408188876409905 61.0232429827319,5.421453320777186 61.027206991172065,5.434717765144466 61.0232429827319,5.463899542752484 61.03117099961223,5.458593765005572 61.01531496585157,5.46655243162594 61.00870828511797,5.4718582093728525 60.98888824291715,5.482469764866678 60.98624557062371,5.482469764866678 61.00870828511797,5.493081320360503 61.01927897429174,5.4798168759932215 61.047027033372885,5.503692875854327 61.05363371410649,5.519610209095064 61.06552573942698,5.559403542196907 61.06420440328026,5.609808430792574 61.08006043704091,5.660213319388242 61.05759772254665,5.681436430375891 61.06024039484009,5.617767097412942 61.085345781627794,5.6389902084005925 61.09988047924173,5.66817198600861 61.10648715997534,5.665519097135154 61.09591647080157,5.731841318971559 61.09855914309501,5.771634652073401 61.107808496122054,5.774287540946857 61.11837918529583,5.800816429681419 61.12630720217616,5.822039540669069 61.11837918529583,5.819386651795613 61.08402444548108,5.798163540807963 61.072132420160585,5.7928577630610505 61.05099104181304,5.808775096301788 61.049669705666325,5.811427985175244 61.069489747867145,5.832651096162893 61.077417764747466,5.845915540530174 61.09591647080157,5.8724444292647355 61.091952462361405,5.880403095885105 61.09988047924173,5.851221318277086 61.1104511684155,5.885708873632017 61.11837918529583,5.89101465137893 61.1289498744696,5.989171539696808 61.1289498744696,6.042229317165932 61.10648715997534,6.060799539280125 61.114415176855665,6.08467553914123 61.10648715997534,6.132427538863442 61.11837918529583,6.188138205206021 61.114415176855665,6.214667093940583 61.09988047924173,6.273030649156619 61.09988047924173,6.323435537752286 61.08006043704091,6.299559537891181 61.04570569722616,6.26507198253625 61.03909901649256,6.2862950935239 61.03381367190567,6.310171093385005 61.041741688786,6.315476871131918 61.049669705666325,6.342005759866479 61.072132420160585,6.41098087057634 61.069489747867145,6.41098087057634 61.05363371410649,6.381799092968322 61.027206991172065,6.381799092968322 61.0166363019983,6.3473115376133915 61.01135095741141,6.413633759449796 61.007386948971245,6.397716426209059 61.0232429827319,6.418939537196708 61.03909901649256,6.4322039815639895 61.069489747867145,6.456079981425095 61.08006043704091,6.5064848700207625 61.08402444548108,6.540972425375693 61.1038444876819,6.575459980730623 61.09988047924173,6.5887244250979045 61.09063112621468,6.607294647212098 61.12630720217616,6.628517758199747 61.15273392511058,6.631170647073203 61.17387530345812,6.641782202567027 61.17519663960484,6.6656582024281334 61.16066194199091,6.700145757783064 61.14876991667042,6.766467979619469 61.14876991667042,6.777079535113293 61.142163235936806,6.816872868215135 61.147448580523694,6.851360423570066 61.14480590823025,6.877889312304628 61.11837918529583,6.875236423431172 61.091952462361405,6.944211534141032 61.07609642860075,6.946864423014489 61.08798845392124,6.976046200622506 61.08402444548108,7.005227978230524 61.06552573942698,7.013186644850893 61.03117099961223,7.02910397809163 61.0166363019983,7.034409755838542 60.99681625979748,7.013186644850893 60.97831755374338,6.930947089773751 60.959818847689284,6.928294200900295 60.94792682236879,6.891153756671908 60.94132014163518,6.869930645684259 60.93207078860814,6.859319090190434 60.90696540182043,6.840748868076242 60.87921734273929,6.875236423431172 60.90168005723355,6.888500867798452 60.929428116314696,6.928294200900295 60.939998805488464,6.978699089495962 60.962461519982725,6.9946164227367 60.959818847689284,7.031756866965086 60.97171087300977,7.047674200205823 60.98624557062371,7.092773311054579 60.9545335031024,7.1458310885237015 60.939998805488464,7.156442644017527 60.91357208255404,7.124607977536052 60.875253334299124,7.121955088662596 60.86071863668519,7.140525310776789 60.867325317418796,7.169707088384808 60.90168005723355,7.180318643878632 60.90300139338027,7.196235977119369 60.92150009943437,7.193583088245913 60.937356133195024,7.180318643878632 60.95056949466223,7.161748421764439 60.95585483924912,7.124607977536052 60.95585483924912,7.08481464443421 60.97435354530322,7.058285755699648 61.020600310438454,7.039715533585454 61.03381367190567,7.034409755838542 61.047027033372885,7.047674200205823 61.06024039484009,7.034409755838542 61.08402444548108,7.026451089218174 61.08798845392124,7.039715533585454 61.1038444876819,7.0662444223200165 61.1104511684155,7.079508866687297 61.10648715997534,7.137872421903333 61.1104511684155,7.159095532890983 61.11837918529583,7.217459088107018 61.11837918529583,7.236029310221212 61.13291388290976,7.241335087968125 61.147448580523694,7.259905310082317 61.14480590823025,7.326227531918722 61.12102185758927,7.358062198400196 61.12630720217616,7.3819381982613015 61.12234319373599,7.392549753755127 61.1104511684155,7.421731531363145 61.10252315153517,7.450913308971162 61.1038444876819,7.472136419958812 61.09988047924173,7.453566197844618 61.11177250456222,7.424384420236601 61.1104511684155,7.416425753616232 61.13291388290976,7.371326642767476 61.14480590823025,7.421731531363145 61.15537659740402,7.456219086718074 61.17519663960484,7.472136419958812 61.17783931189828,7.517235530807566 61.19105267336549,7.578251974897059 61.19369534565894,7.604780863631621 61.19105267336549,7.64722708560692 61.20558737097943,7.657838641100744 61.224086077033526,7.673755974341481 61.21747939629992,7.6976319742025865 61.22012206859336,7.710896418569868 61.22805008547369,7.69497908532913 61.23597810235402,7.68171464096185 61.232014093913854,7.649879974480376 61.24258478308762,7.633962641239639 61.23069275776713,7.6233510857458135 61.21351538785976,7.5437644195421285 61.20823004327287,7.50131819756683 61.209551379419594,7.48009508657918 61.201623362539266,7.432343086856969 61.1976593540991,7.392549753755127 61.20558737097943,7.379285309387845 61.26504749758188,7.360715087273652 61.27033284216877,7.35540930952674 61.28090353134254,7.3129630875514415 61.29543822895647,7.3129630875514415 61.299402237396635,7.360715087273652 61.31129426271713,7.397855531502039 61.3350783133581,7.392549753755127 61.35621969170565,7.437648864603881 61.39453843996056,7.477442197705724 61.40510912913433,7.493359530946462 61.43549986050892,7.511929753060654 61.44871322197613,7.538458641795216 61.451355894269575,7.594169308137796 61.477782617204,7.599475085884708 61.48835330637777,7.583557752643971 61.49760265940482,7.549070197289041 61.473818608763835,7.503971086440286 61.45267723041629,7.442954642350793 61.44078520509581,7.437648864603881 61.41039447372122,7.405814198122407 61.406430465281055,7.36867375389402 61.391895767667116,7.360715087273652 61.38000374234663,7.33418619853909 61.3905744315204,7.3076573098045285 61.39453843996056,7.283781309943423 61.40510912913433,7.294392865437247 61.383967750786795,7.342144865159459 61.36811171702614,7.350103531779828 61.34564900253188,7.32092175417181 61.32715029647778,7.26521108782923 61.3033662458368,7.246640865715037 61.299402237396635,7.291739976563791 61.27297551446221,7.326227531918722 61.266368833728606,7.339491976286003 61.25051279996795,7.347450642906372 61.209551379419594,7.35540930952674 61.19369534565894,7.395202642628583 61.181803320338446,7.363367976147108 61.167268622724514,7.326227531918722 61.156697933550745,7.278475532196511 61.16330461428435,7.257252421208861 61.16858995887123,7.26521108782923 61.17783931189828,7.236029310221212 61.181803320338446,7.243987976841581 61.17123263116468,7.188277310499 61.167268622724514,7.172359977258264 61.156697933550745,7.17501286613172 61.142163235936806,7.1458310885237015 61.14480590823025,7.076855977813841 61.13291388290976,7.06359153344656 61.136877891349926,6.999922200483612 61.124985866029434,6.9946164227367 61.10648715997534,6.968087534002137 61.11177250456222,6.944211534141032 61.11177250456222,6.944211534141032 61.12630720217616,6.925641312026839 61.14084189979009,6.960128867381769 61.15273392511058,6.9919635338632435 61.14876991667042,7.047674200205823 61.18708866492533,7.074203088940385 61.1976593540991,7.113996422042227 61.19898069024582,7.169707088384808 61.1976593540991,7.172359977258264 61.204266034832706,7.121955088662596 61.209551379419594,7.11930219978914 61.21351538785976,7.137872421903333 61.246548791527786,7.161748421764439 61.25051279996795,7.17501286613172 61.25844081684828,7.167054199511352 61.269011506022046,7.156442644017527 61.25844081684828,7.140525310776789 61.25844081684828,7.111343533168771 61.2478701276745,7.111343533168771 61.23597810235402,7.095426199928035 61.21351538785976,7.058285755699648 61.20558737097943,7.055632866826192 61.1976593540991,7.021145311471262 61.189731337218774,7.015839533724349 61.181803320338446,6.997269311610156 61.17123263116468,6.9893106449897875 61.159340605844186,6.9097239787861024 61.16066194199091,6.888500867798452 61.17387530345812,6.869930645684259 61.17123263116468,6.840748868076242 61.18576732877861,6.731980424264538 61.179160648045006,6.710757313276888 61.18312465648517,6.697492868909608 61.1976593540991,6.633823535946659 61.209551379419594,6.596683091718273 61.20558737097943,6.580765758477535 61.22805008547369,6.5887244250979045 61.23994211079418,6.625864869326291 61.25051279996795,6.649740869187396 61.266368833728606,6.676269757921958 61.276939522902374,6.676269757921958 61.299402237396635,6.718715979897257 61.3350783133581,6.734633313137994 61.33904232179827,6.742591979758362 61.35225568326548,6.7585093129991 61.40510912913433,6.755856424125644 61.42096516289499,6.734633313137994 61.406430465281055,6.73728620201145 61.39453843996056,6.721368868770713 61.34961301097204,6.692187091162696 61.33772098565155,6.663005313554677 61.31129426271713,6.655046646934309 61.2848675397827,6.572807091857167 61.25183413611467,6.562195536363342 61.266368833728606,6.562195536363342 61.296759565103194,6.551583980869518 61.299402237396635,6.540972425375693 61.27297551446221,6.527707981008412 61.27033284216877,6.498526203400394 61.274296850608934,6.538319536502237 61.26240482528844,6.554236869742974 61.246548791527786,6.543625314249149 61.23069275776713,6.562195536363342 61.212194051713034,6.490567536780025 61.224086077033526,6.493220425653481 61.21351538785976,6.535666647628781 61.20823004327287,6.525055092134956 61.19369534565894,6.543625314249149 61.159340605844186,6.538319536502237 61.15273392511058,6.540972425375693 61.136877891349926,6.477303092412745 61.13027121061632,6.474650203539289 61.114415176855665,6.4295510926905335 61.11177250456222,6.413633759449796 61.11837918529583,6.37649331522141 61.1104511684155,6.299559537891181 61.13423521905648,6.2703777602831625 61.13291388290976,6.222625760560952 61.16066194199091,6.206708427320215 61.16330461428435,6.227931538307864 61.18576732877861,6.214667093940583 61.189731337218774,6.19609687182639 61.17783931189828,6.182832427459109 61.16066194199091,6.14038620548381 61.15273392511058,6.119163094496161 61.156697933550745,6.055493761533212 61.14480590823025,6.007741761811001 61.164625950431066,6.0289648727986505 61.17519663960484,6.047535094912844 61.17519663960484,6.068758205900493 61.18312465648517,6.082022650267774 61.1976593540991,6.079369761394318 61.21351538785976,6.060799539280125 61.2161580601532,6.0501879837863 61.19369534565894,6.002435984064089 61.18312465648517,5.978559984202983 61.16858995887123,5.930807984480772 61.16066194199091,5.901626206872754 61.16330461428435,5.8724444292647355 61.159340605844186,5.851221318277086 61.167268622724514,5.824692429542525 61.164625950431066,5.819386651795613 61.189731337218774,5.829998207289437 61.20558737097943,5.819386651795613 61.20823004327287,5.7928577630610505 61.19105267336549,5.800816429681419 61.159340605844186,5.771634652073401 61.16066194199091,5.755717318832664 61.167268622724514,5.72388265235119 61.167268622724514,5.7185768746042775 61.16066194199091,5.72388265235119 61.14480590823025,5.70265954136354 61.136877891349926,5.673477763755523 61.147448580523694,5.649601763894417 61.14876991667042,5.628378652906767 61.14084189979009,5.615114208539486 61.15273392511058,5.609808430792574 61.14084189979009,5.588585319804925 61.12630720217616,5.52226309796852 61.10252315153517,5.503692875854327 61.1038444876819,5.41880043190373 61.072132420160585,5.3922715431691675 61.069489747867145,5.373701321054974 61.09063112621468,5.347172432320413 61.09988047924173,5.349825321193869 61.12630720217616,5.3418666545735 61.13819922749664,5.325949321332763 61.12234319373599,5.283503099357464 61.1104511684155,5.27289154386364 61.12234319373599,5.267585766116727 61.11177250456222,5.249015544002534 61.1038444876819,5.227792433014884 61.10648715997534,5.227792433014884 61.12630720217616,5.19595776653341 61.13291388290976,5.193304877659954 61.14480590823025,5.243709766255622 61.142163235936806,5.262279988369815 61.13027121061632,5.288808877104376 61.136877891349926,5.211875099774147 61.16330461428435,5.185346211039586 61.156697933550745,5.177387544419217 61.147448580523694,5.166775988925393 61.147448580523694,5.111065322582813 61.164625950431066,5.0765777672278825 61.167268622724514,5.0765777672278825 61.17783931189828,5.097800878215532 61.201623362539266,5.148205766811199 61.20558737097943,5.222486655267972 61.18576732877861,5.256974210622903 61.167268622724514,5.299420432598201 61.17123263116468,5.296767543724745 61.17519663960484,5.262279988369815 61.181803320338446,5.25166843287599 61.19369534565894,5.280850210484008 61.189731337218774,5.299420432598201 61.181803320338446,5.3153377658389385 61.18576732877861,5.262279988369815 61.20558737097943,5.180040433292673 61.224086077033526,5.063313322860601 61.21747939629992,5.010255545391478 61.22012206859336,5.007602656518022 61.224086077033526,5.028825767505671 61.23597810235402,5.087189322721707 61.23597810235402,5.100453767088988 61.232014093913854,5.111065322582813 61.24390611923434,5.100453767088988 61.25844081684828,5.09249510046862 61.24258478308762,5.042090211872952 61.23994211079418,5.007602656518022 61.24258478308762,5.026172878632215 61.257119480701554,5.026172878632215 61.27297551446221,5.007602656518022 61.266368833728606,4.9943382121507405 61.25051279996795,4.98107376778346 61.26108348914172,4.98107376778346 61.2848675397827,5.05004887849332 61.2848675397827,5.055354656240233 61.29147422051631,5.028825767505671 61.29543822895647,5.060660433987145 61.299402237396635,5.116371100329725 61.296759565103194,5.129635544697006 61.288831548222866,5.150858655684655 61.299402237396635,5.132288433570462 61.299402237396635,5.129635544697006 61.30865159042368,5.150858655684655 61.31790094345073,5.1561644334315675 61.30733025427696,5.206569322027235 61.30072357354335,5.225139544141428 61.304687581983515,5.201263544280323 61.31525827115729,5.219833766394516 61.32715029647778,5.19595776653341 61.331114304917946,5.201263544280323 61.34564900253188,5.227792433014884 61.344327666385155,5.235751099635253 61.34961301097204,5.278197321610552 61.34829167482532,5.333907987953132 61.319222279597454,5.355131098940781 61.31790094345073,5.333907987953132 61.33375697721139,5.294114654851289 61.35225568326548,5.355131098940781 61.34961301097204,5.368395543308062 61.36018370014581,5.408188876409905 61.36546904473269,5.4028830986629925 61.3720757254663,5.426759098524098 61.37603973390647,5.442676431764835 61.3720757254663,5.4798168759932215 61.3720757254663,5.532874653462345 61.37075438931958,5.559403542196907 61.36018370014581,5.644295986147505 61.36811171702614,5.660213319388242 61.36018370014581,5.676130652628979 61.36018370014581,5.652254652767873 61.37603973390647,5.570015097690732 61.37075438931958,5.530221764588889 61.38000374234663,5.4771639871197655 61.38000374234663,5.463899542752484 61.37868240619991,5.440023542891379 61.383967750786795,5.39757732091608 61.38264641464007,5.389618654295711 61.3720757254663,5.312684876965482 61.3720757254663,5.28615598823092 61.364147708585975,5.185346211039586 61.35754102785236,5.172081766672305 61.34961301097204,5.169428877798849 61.331114304917946,5.1057595448359 61.32715029647778,5.0765777672278825 61.321864951890895,5.068619100607513 61.33772098565155,5.111065322582813 61.33772098565155,5.111065322582813 61.36811171702614,5.100453767088988 61.36811171702614,5.097800878215532 61.344327666385155,5.047395989619864 61.34564900253188,5.031478656379127 61.36018370014581,5.026172878632215 61.37868240619991,5.031478656379127 61.391895767667116,5.055354656240233 61.40246645684089,5.09249510046862 61.39850244840073,5.100453767088988 61.37603973390647,5.1057595448359 61.38000374234663,5.103106655962444 61.41039447372122,5.166775988925393 61.42757184362859,5.1641231000519365 61.431535852068755,5.121676878076637 61.42492917133515,5.087189322721707 61.42492917133515,5.047395989619864 61.41303714601466,4.9943382121507405 61.40510912913433,4.973115101163091 61.41700115445482,5.004949767644566 61.428893179775315,5.047395989619864 61.43946386894908,5.073924878354426 61.44871322197613,5.121676878076637 61.45267723041629,5.235751099635253 61.45531990270974,5.246362655129078 61.46985460032367,5.235751099635253 61.48174662564416,5.262279988369815 61.48174662564416,5.278197321610552 61.47117593647039,5.349825321193869 61.4592839111499,5.381659987675343 61.46324791959007,5.323296432459307 61.477782617204,5.368395543308062 61.477782617204,5.421453320777186 61.473818608763835,5.429411987397554 61.45796257500318,5.450635098385203 61.4592839111499,5.46655243162594 61.44474921353597,5.538180431209257 61.43946386894908,5.585932430931469 61.44078520509581,5.5567506533234505 61.44474921353597,5.596543986425293 61.45796257500318,5.6336844306536795 61.45531990270974,5.662866208261698 61.46721192803023,5.662866208261698 61.477782617204,5.684089319249347 61.477782617204,5.689395096996259 61.48967464252449,5.7132710968573654 61.493638650964655,5.755717318832664 61.49231731481793,5.763675985453032 61.48571063408433,5.7928577630610505 61.48174662564416,5.7955106519345065 61.46721192803023,5.832651096162893 61.45531990270974,5.856527096023999 61.4592839111499,5.811427985175244 61.473818608763835,5.811427985175244 61.48835330637777,5.761023096579576 61.50156666784498,5.721229763477734 61.50156666784498,5.7159239857308215 61.50553067628514,5.6310315417802235 61.484389297937604,5.625725764033311 61.47117593647039,5.591238208678381 61.46589059188351,5.482469764866678 61.45267723041629,5.445329320638291 61.46985460032367,5.461246653879028 61.473818608763835,5.4771639871197655 61.46589059188351,5.4692053204993964 61.48174662564416,5.495734209233959 61.48571063408433,5.501039986980871 61.493638650964655,5.4692053204993964 61.493638650964655,5.440023542891379 61.48571063408433,5.41880043190373 61.48967464252449,5.355131098940781 61.48571063408433,5.296767543724745 61.49760265940482,5.246362655129078 61.49760265940482,5.219833766394516 61.50553067628514,5.222486655267972 61.51213735701875,5.190651988786498 61.51213735701875,5.169428877798849 61.516101365458915,5.187999099913042 61.52270804619252,5.1588173223050235 61.53460007151301,5.180040433292673 61.531957399219564,5.172081766672305 61.55706278600727,5.214527988647603 61.55442011371383,5.2384039885087095 61.54252808839334,5.296767543724745 61.538564079953176,5.280850210484008 61.55045610527367,5.320643543585851 61.546492096833504,5.3418666545735 61.55706278600727,5.3922715431691675 61.546492096833504,5.39757732091608 61.55045610527367,5.352478210067325 61.56234813059415,5.331255099079676 61.558384122153996,5.262279988369815 61.57291881976793,5.27289154386364 61.57688282820809,5.227792433014884 61.583489508941696,5.203916433153779 61.580846836648256,5.174734655545761 61.59273886196874,5.209222210900691 61.59934554270235,5.2410568773821655 61.59538153426219,5.246362655129078 61.605952223435956,5.299420432598201 61.60727355958268,5.360436876687693 61.59934554270235,5.3949244320426235 61.591417525822024,5.349825321193869 61.583489508941696,5.347172432320413 61.591417525822024,5.333907987953132 61.580846836648256,5.355131098940781 61.57291881976793,5.357783987814237 61.57688282820809,5.450635098385203 61.571597483621204,5.463899542752484 61.58745351738186,5.426759098524098 61.59538153426219,5.389618654295711 61.60727355958268,5.336560876826588 61.613880240316284,5.3153377658389385 61.60991623187612,5.28615598823092 61.611237568022844,5.227792433014884 61.611237568022844,5.1641231000519365 61.603309551142516,5.100453767088988 61.59802420655563,5.09249510046862 61.59273886196874,5.044743100746408 61.58877485352858,5.03678443412604 61.583489508941696,4.9969911010241965 61.580846836648256,4.9943382121507405 61.59802420655563,5.068619100607513 61.603309551142516,5.0765777672278825 61.611237568022844,5.132288433570462 61.611237568022844,5.137594211317374 61.60727355958268,5.19595776653341 61.61520157646301,5.275544432737096 61.61784424875645,5.3179906547123945 61.62973627407694,5.365742654434606 61.625772265636776,5.41880043190373 61.641628299397425,5.336560876826588 61.64030696325071,5.304726210345113 61.636342954810544,5.280850210484008 61.625772265636776,5.222486655267972 61.625772265636776,5.2384039885087095 61.633700282517104,5.148205766811199 61.62973627407694,5.097800878215532 61.63766429095727,4.989032434403828 61.625772265636776,5.007602656518022 61.648234980131036,4.970462212289635 61.6706976946253,4.970462212289635 61.68258971994579,4.986379545530372 61.69448174526628,4.970462212289635 61.71298045132038,4.98107376778346 61.72487247664087,5.007602656518022 61.71694445976054,5.007602656518022 61.723551140494145,4.983726656656916 61.72883648508103,4.991685323277284 61.7394071742548,5.020867100885303 61.74733519113513,5.031478656379127 61.7579058803089,5.05004887849332 61.7579058803089,5.084536433848251 61.75394187186873,5.103106655962444 61.73676450196135,5.1057595448359 61.70505243444005,5.119023989203181 61.706373770586765,5.116371100329725 61.743371182694965,5.148205766811199 61.73147915737447,5.166775988925393 61.71958713205398,5.1561644334315675 61.7024097621466,5.169428877798849 61.701088425999885,5.177387544419217 61.723551140494145,5.193304877659954 61.71958713205398,5.222486655267972 61.72751514893431,5.190651988786498 61.73544316581464,5.148205766811199 61.7394071742548,5.150858655684655 61.75394187186873,5.169428877798849 61.76186988874906,5.19595776653341 61.7579058803089,5.222486655267972 61.76186988874906,5.267585766116727 61.76186988874906,5.299420432598201 61.76979790562939,5.262279988369815 61.77772592250972,5.206569322027235 61.77244057792283,5.190651988786498 61.768476569482665,5.1535115445581114 61.77244057792283,5.132288433570462 61.7579058803089,5.121676878076637 61.76319122489578,5.097800878215532 61.75922721645561,5.097800878215532 61.77640458636299,5.150858655684655 61.80415264544414,5.177387544419217 61.810759326177745,5.219833766394516 61.810759326177745,5.235751099635253 61.816044670764626,5.3179906547123945 61.8266153599384,5.320643543585851 61.830579368378565,5.296767543724745 61.83454337681873,5.323296432459307 61.8451140659925,5.386965765422255 61.84247139369906,5.386965765422255 61.84907807443266,5.299420432598201 61.85700609131299,5.331255099079676 61.875504797367086,5.339213765700044 61.88739682268758,5.386965765422255 61.90721686488839,5.43206487627101 61.917787554062166,5.463899542752484 61.905895528741674,5.511651542474696 61.905895528741674,5.540833320082713 61.90193152030151,5.530221764588889 61.89400350342118,5.543486208956169 61.88739682268758,5.580626653184556 61.897967511861346,5.609808430792574 61.89928884800807,5.646948875020961 61.88739682268758,5.705312430236996 61.88343281424741,5.737147096718471 61.85700609131299,5.776940429820313 61.853042082872825,5.692047985869715 61.84247139369906,5.6336844306536795 61.81208066232446,5.665519097135154 61.810759326177745,5.678783541502435 61.82529402379168,5.70265954136354 61.83454337681873,5.787551985314138 61.84247139369906,5.819386651795613 61.84247139369906,5.859179984897455 61.853042082872825,5.909584873493122 61.85964876360643,5.936113762227684 61.853042082872825,5.978559984202983 61.84907807443266,5.978559984202983 61.830579368378565,5.967948428709159 61.82000867920479,5.970601317582615 61.808116653884305,5.95998976208879 61.788296611683485,5.941419539974596 61.765833897189225,5.909584873493122 61.746013854988405,5.920196428986947 61.73147915737447,5.928155095607316 61.743371182694965,5.9520310954684215 61.75129919957529,5.967948428709159 61.76319122489578,5.99447731744372 61.83718604911217,6.0316177616721065 61.8451140659925,6.127121761116529 61.77640458636299,6.177526649712196 61.76319122489578,6.212014205067127 61.77376191406955,6.214667093940583 61.77772592250972,6.177526649712196 61.78433260324332,6.150997760977635 61.80415264544414,6.082022650267774 61.83454337681873,6.082022650267774 61.8451140659925,6.124468872243073 61.82925803223184,6.161609316471459 61.83454337681873,6.1934439829529335 61.833222040672005,6.251807538168969 61.8451140659925,6.294253760144269 61.8451140659925,6.336699982119567 61.83850738525889,6.379146204094866 61.816044670764626,6.479955981286201 61.80283130929742,6.527707981008412 61.808116653884305,6.562195536363342 61.82925803223184,6.607294647212098 61.8451140659925,6.615253313832466 61.853042082872825,6.578112869604079 61.863612772046594,6.586071536224448 61.86757678048676,6.636476424820115 61.87154078892692,6.686881313415783 61.87154078892692,6.7585093129991 61.863612772046594,6.787691090607117 61.85039941057938,6.806261312721311 61.83454337681873,6.819525757088591 61.86757678048676,6.846054645823154 61.86493410819332,6.84870753469661 61.87154078892692,6.819525757088591 61.875504797367086,6.795649757227486 61.86757678048676,6.766467979619469 61.8768261335138,6.710757313276888 61.87946880580725,6.700145757783064 61.89928884800807,6.673616869048502 61.886075486540854,6.628517758199747 61.89003949498102,6.564848425236798 61.88211147810069,6.540972425375693 61.868898116633474,6.530360869881868 61.85700609131299,6.5224022032615 61.833222040672005,6.413633759449796 61.830579368378565,6.371187537474498 61.84247139369906,6.336699982119567 61.86097009975315,6.315476871131918 61.863612772046594,6.26507198253625 61.85964876360643,6.235890204928232 61.86097009975315,6.177526649712196 61.85039941057938,6.137733316610354 61.846435402139214,6.047535094912844 61.875504797367086,5.957336873215334 61.87154078892692,5.909584873493122 61.88211147810069,5.851221318277086 61.87286212507364,5.829998207289437 61.86097009975315,5.808775096301788 61.85700609131299,5.798163540807963 61.87154078892692,5.771634652073401 61.87154078892692,5.763675985453032 61.87946880580725,5.731841318971559 61.89400350342118,5.811427985175244 61.89928884800807,5.84856842940363 61.895324839567905,5.90427909574621 61.90193152030151,5.973254206456071 61.897967511861346,5.989171539696808 61.90193152030151,5.981212873076439 61.91250220947528,5.896320429125842 61.920430226355606,5.859179984897455 61.91250220947528,5.843262651656718 61.91646621791544,5.806122207428332 61.91646621791544,5.7928577630610505 61.920430226355606,5.721229763477734 61.91250220947528,5.678783541502435 61.90985953718184,5.617767097412942 61.917787554062166,5.604502653045662 61.92175156250233,5.548791986703082 61.92175156250233,5.516957320221608 61.92439423479577,5.501039986980871 61.9323222516761,5.485122653740134 61.92571557094249,5.455940876132116 61.928358243235934,5.458593765005572 61.9389289324097,5.442676431764835 61.940250268556426,5.384312876548799 61.928358243235934,5.3179906547123945 61.90721686488839,5.304726210345113 61.913823545622,5.2410568773821655 61.90721686488839,5.222486655267972 61.913823545622,5.201263544280323 61.89928884800807,5.174734655545761 61.895324839567905,5.150858655684655 61.90985953718184,5.187999099913042 61.91250220947528,5.190651988786498 61.917787554062166,5.166775988925393 61.91646621791544,5.119023989203181 61.917787554062166,5.1561644334315675 61.95610630231708,5.1535115445581114 61.97724768066462,5.172081766672305 61.985175697544946,5.193304877659954 61.98649703369166,5.187999099913042 61.978569016811335,5.193304877659954 61.950820957730194,5.209222210900691 61.94685694929003,5.214527988647603 61.9323222516761,5.227792433014884 61.9323222516761,5.222486655267972 61.948178285436754,5.209222210900691 61.95478496617036,5.203916433153779 61.97724768066462,5.235751099635253 61.97724768066462,5.243709766255622 61.9825330252515,5.280850210484008 61.95610630231708,5.28615598823092 61.948178285436754,5.302073321471657 61.95610630231708,5.275544432737096 61.97724768066462,5.299420432598201 61.985175697544946,5.3179906547123945 61.97460500837118,5.3179906547123945 61.98913970598511,5.333907987953132 61.993103714425274,5.336560876826588 62.01688776506625,5.3418666545735 62.02349444579986,5.389618654295711 62.02349444579986,5.408188876409905 62.012923756626094,5.426759098524098 62.0195304373597,5.41880043190373 62.027458454240026,5.3922715431691675 62.03406513497363,5.336560876826588 62.03538647112035,5.349825321193869 62.04595716029412,5.3418666545735 62.057849185614614,5.310031988092026 62.07634789166871,5.262279988369815 62.08427590854904,5.2410568773821655 62.102774614603135,5.116371100329725 62.10013194230969,5.113718211456269 62.12655866524412,5.1535115445581114 62.12127332065723,5.1588173223050235 62.125237329097395,5.137594211317374 62.145057371298215,5.103106655962444 62.14902137973837,5.095147989342076 62.16619874964575,5.111065322582813 62.16355607735231,5.1057595448359 62.17941211111297,5.095147989342076 62.18337611955313,5.097800878215532 62.1939468087269,5.14024710019083 62.2005534894605,5.1561644334315675 62.18601879184657,5.177387544419217 62.1939468087269,5.180040433292673 62.21376685092771,5.209222210900691 62.205838834047384,5.225139544141428 62.20848150634083,5.227792433014884 62.1939468087269,5.249015544002534 62.17809077496624,5.280850210484008 62.1754481026728,5.283503099357464 62.1569493966187,5.299420432598201 62.1569493966187,5.294114654851289 62.17148409423264,5.325949321332763 62.167520085792475,5.323296432459307 62.152985388178536,5.310031988092026 62.12920133753756,5.325949321332763 62.11466663992363,5.349825321193869 62.11070263148346,5.355131098940781 62.09881060616297,5.3922715431691675 62.09088258928264,5.39757732091608 62.080311900108875,5.429411987397554 62.069741210935106,5.442676431764835 62.07238388322855,5.445329320638291 62.060491857908055,5.4718582093728525 62.057849185614614,5.4692053204993964 62.049921168734286,5.48777554261359 62.03406513497363,5.4718582093728525 62.015566428919534,5.450635098385203 62.00895974818593,5.46655243162594 62.0010317313056,5.493081320360503 62.012923756626094,5.516957320221608 62.04199315185396,5.527568875715433 62.04595716029412,5.519610209095064 62.060491857908055,5.519610209095064 62.07634789166871,5.543486208956169 62.07634789166871,5.572667986564188 62.06577720249494,5.588585319804925 62.07238388322855,5.607155541919118 62.049921168734286,5.617767097412942 62.049921168734286,5.617767097412942 62.07238388322855,5.604502653045662 62.080311900108875,5.572667986564188 62.08427590854904,5.567362208817276 62.09484659772281,5.543486208956169 62.09881060616297,5.482469764866678 62.10013194230969,5.461246653879028 62.09881060616297,5.434717765144466 62.102774614603135,5.429411987397554 62.1133453037769,5.4028830986629925 62.12920133753756,5.434717765144466 62.15562806047198,5.434717765144466 62.17412676652608,5.463899542752484 62.189982800286735,5.485122653740134 62.2005534894605,5.516957320221608 62.18734012799329,5.5567506533234505 62.167520085792475,5.609808430792574 62.16619874964575,5.6389902084005925 62.17412676652608,5.676130652628979 62.13712935441789,5.673477763755523 62.11863064836379,5.721229763477734 62.08691858084248,5.747758652212296 62.09484659772281,5.689395096996259 62.122594656803955,5.697353763616628 62.13580801827116,5.66817198600861 62.17412676652608,5.710618207983909 62.167520085792475,5.737147096718471 62.17941211111297,5.771634652073401 62.17941211111297,5.798163540807963 62.18734012799329,5.798163540807963 62.19791081716706,5.819386651795613 62.19658948102034,5.851221318277086 62.20187482560723,5.883055984758561 62.2005534894605,5.914890651240035 62.18601879184657,5.9520310954684215 62.1569493966187,5.936113762227684 62.13712935441789,5.941419539974596 62.122594656803955,5.933460873354228 62.102774614603135,5.8777502070116485 62.049921168734286,5.843262651656718 62.012923756626094,5.856527096023999 62.004995739745766,5.885708873632017 62.03538647112035,5.901626206872754 62.04199315185396,5.93876665110114 62.07899056396215,5.970601317582615 62.102774614603135,5.975907095329527 62.122594656803955,5.95998976208879 62.13580801827116,5.981212873076439 62.14109336285805,6.010394650684457 62.13977202671133,6.044882206039388 62.10938129533674,6.066105317027037 62.1067386230433,6.087328428014686 62.09088258928264,6.068758205900493 62.069741210935106,6.0501879837863 62.06577720249494,6.0316177616721065 62.04595716029412,6.052840872659756 62.049921168734286,6.066105317027037 62.06181319405478,6.082022650267774 62.05388517717445,6.089981316888142 62.069741210935106,6.1138573167492485 62.07899056396215,6.153650649851091 62.07634789166871,6.177526649712196 62.08427590854904,6.214667093940583 62.07370521937526,6.23058442718132 62.07899056396215,6.246501760422057 62.06841987478838,6.2677248714097065 62.06577720249494,6.2783364269035316 62.07899056396215,6.299559537891181 62.069741210935106,6.288947982397356 62.06445586634822,6.310171093385005 62.057849185614614,6.32078264887883 62.07238388322855,6.310171093385005 62.080311900108875,6.283642204650444 62.08427590854904,6.249154649295513 62.082954572402315,6.249154649295513 62.0882399169892,6.219972871687496 62.08691858084248,6.177526649712196 62.09881060616297,6.150997760977635 62.09088258928264,6.124468872243073 62.10938129533674,6.076716872520862 62.130522673684276,6.074063983647406 62.14109336285805,6.0395764282924755 62.15959206891215,6.007741761811001 62.167520085792475,5.981212873076439 62.189982800286735,5.9520310954684215 62.20187482560723,5.965295539835703 62.20451749790067,5.930807984480772 62.22037353166132,5.970601317582615 62.23094422083509,5.986518650823352 62.22698021239493,5.99447731744372 62.205838834047384,6.018353317304825 62.19658948102034,6.042229317165932 62.20187482560723,6.079369761394318 62.189982800286735,6.119163094496161 62.18734012799329,6.121815983369617 62.2005534894605,6.0395764282924755 62.212445514780995,6.013047539557913 62.21376685092771,6.005088872937545 62.23622956542198,5.95998976208879 62.25076426303591,5.986518650823352 62.26926296909001,6.005088872937545 62.27322697753017,6.233237316054776 62.35647115477361,6.2677248714097065 62.36043516321377,6.318129760005374 62.374969860827704,6.3446586487399355 62.372327188534264,6.3526173153603045 62.352507146333444,6.395063537335603 62.322116414958856,6.418939537196708 62.28908301129083,6.426898203817077 62.26133495220968,6.469344425792376 62.24944292688919,6.487914647906569 62.217730859367876,6.474650203539289 62.212445514780995,6.479955981286201 62.20187482560723,6.498526203400394 62.20451749790067,6.5224022032615 62.18337611955313,6.538319536502237 62.17941211111297,6.55688975861643 62.15959206891215,6.578112869604079 62.145057371298215,6.575459980730623 62.13316534597772,6.543625314249149 62.125237329097395,6.540972425375693 62.1067386230433,6.55688975861643 62.1067386230433,6.559542647489886 62.11730931221707,6.594030202844817 62.122594656803955,6.61260042495901 62.13316534597772,6.5887244250979045 62.167520085792475,6.55688975861643 62.1939468087269,6.596683091718273 62.20187482560723,6.652393758060852 62.189982800286735,6.639129313693571 62.20187482560723,6.594030202844817 62.212445514780995,6.527707981008412 62.20451749790067,6.538319536502237 62.212445514780995,6.498526203400394 62.262656288356396,6.469344425792376 62.27322697753017,6.464038648045464 62.29304701973099,6.445468425931271 62.31154572578509,6.4322039815639895 62.33797244871951,6.397716426209059 62.357792490920325,6.424245314943621 62.3683631800941,6.405675092829428 62.38421921385475,6.418939537196708 62.3934685668818,6.464038648045464 62.40139658376213,6.498526203400394 62.40139658376213,6.551583980869518 62.39082589458836,6.554236869742974 62.364399171653936,6.572807091857167 62.35647115477361,6.575459980730623 62.33797244871951,6.5887244250979045 62.33400844027935,6.5887244250979045 62.35382848248017,6.570154202983711 62.3683631800941,6.578112869604079 62.40139658376213,6.543625314249149 62.406681928349016,6.607294647212098 62.429144642843276,6.676269757921958 62.44103666816376,6.710757313276888 62.45160735733754,6.742591979758362 62.44764334889737,6.742591979758362 62.43310865128343,6.785038201733661 62.429144642843276,6.808914201594767 62.43575132357688,6.859319090190434 62.43178731513672,6.9123768676595585 62.41328860908262,6.88319509005154 62.37893386926787,6.893806645545364 62.3683631800941,6.888500867798452 62.364399171653936,6.901765312165733 62.349864474040004,6.917682645406471 62.34590046559984,6.917682645406471 62.32343775110557,6.954823089634857 62.307581717344924,6.962781756255225 62.28908301129083,7.005227978230524 62.285119002850664,6.997269311610156 62.270584305236724,7.005227978230524 62.24283624615558,6.999922200483612 62.21376685092771,7.015839533724349 62.19791081716706,7.015839533724349 62.18205478340641,6.9893106449897875 62.167520085792475,6.933599978647207 62.13316534597772,6.928294200900295 62.12127332065723,6.867277756810803 62.0882399169892,6.875236423431172 62.080311900108875,6.93890575639412 62.1067386230433,6.986657756116331 62.09484659772281,7.005227978230524 62.08427590854904,7.06359153344656 62.08691858084248,7.098079088801491 62.09484659772281,7.121955088662596 62.1133453037769,7.140525310776789 62.11466663992363,7.177665755005176 62.1067386230433,7.196235977119369 62.09616793386952,7.206847532613194 62.10013194230969,7.188277310499 62.11466663992363,7.148483977397158 62.125237329097395,7.113996422042227 62.122594656803955,7.074203088940385 62.09881060616297,7.034409755838542 62.09484659772281,6.960128867381769 62.11466663992363,6.986657756116331 62.14109336285805,7.034409755838542 62.16619874964575,7.039715533585454 62.18601879184657,7.034409755838542 62.20451749790067,7.039715533585454 62.22037353166132,7.034409755838542 62.27322697753017,7.04236842245891 62.277190985970336,7.076855977813841 62.279833658263776,7.106037755421859 62.27454831367689,7.129913755282965 62.2811549944105,7.172359977258264 62.26133495220968,7.217459088107018 62.26133495220968,7.2227648658539305 62.25340693532935,7.259905310082317 62.28379766670394,7.3076573098045285 62.2811549944105,7.32092175417181 62.287761675144104,7.350103531779828 62.26926296909001,7.363367976147108 62.26926296909001,7.392549753755127 62.25076426303591,7.41111997586932 62.232265556981815,7.429690197983513 62.234908229275256,7.416425753616232 62.2441575823023,7.429690197983513 62.25076426303591,7.363367976147108 62.2811549944105,7.344797754032915 62.29304701973099,7.3076573098045285 62.29568969202443,7.283781309943423 62.29172568358427,7.246640865715037 62.297011028171156,7.217459088107018 62.285119002850664,7.17501286613172 62.285119002850664,7.1458310885237015 62.29568969202443,7.124607977536052 62.297011028171156,7.092773311054579 62.29304701973099,7.087467533307666 62.30097503661131,7.060938644573104 62.307581717344924,7.005227978230524 62.307581717344924,6.9893106449897875 62.31154572578509,6.962781756255225 62.32608042339902,6.930947089773751 62.374969860827704,6.984004867242875 62.374969860827704,6.986657756116331 62.38289787770803,6.957475978508313 62.386861886148196,6.941558645267576 62.42518063440311,6.885847978924996 62.44764334889737,6.869930645684259 62.459535374217865,6.832790201455873 62.45821403807114,6.811567090468223 62.462178046511305,6.771773757366381 62.459535374217865,6.774426646239837 62.46614205495147,6.808914201594767 62.47010606339163,6.811567090468223 62.481998088712125,6.705451535529976 62.4740700718318,6.694839980036152 62.484640761005565,6.652393758060852 62.46349938265803,6.633823535946659 62.459535374217865,6.609947536085554 62.46614205495147,6.596683091718273 62.45160735733754,6.564848425236798 62.44764334889737,6.535666647628781 62.43310865128343,6.485261759033113 62.429144642843276,6.4295510926905335 62.43178731513672,6.395063537335603 62.417252617522784,6.381799092968322 62.42121662596295,6.392410648462147 62.429144642843276,6.342005759866479 62.43575132357688,6.3552702042337605 62.44367934045721,6.342005759866479 62.45160735733754,6.3526173153603045 62.45821403807114,6.318129760005374 62.462178046511305,6.249154649295513 62.4555713657777,6.227931538307864 62.46746339109819,6.371187537474498 62.47671274412524,6.373840426347954 62.484640761005565,6.403022203955972 62.48860476944573,6.450774203678183 62.49256877788589,6.477303092412745 62.504460803206385,6.5064848700207625 62.49785412247277,6.5224022032615 62.504460803206385,6.540972425375693 62.49653278632606,6.572807091857167 62.49653278632606,6.594030202844817 62.50181813091294,6.601988869465185 62.49389011403261,6.628517758199747 62.49653278632606,6.641782202567027 62.481998088712125,6.6709639801750455 62.484640761005565,6.6656582024281334 62.48860476944573,6.718715979897257 62.49256877788589,6.710757313276888 62.49653278632606,6.660352424681221 62.50181813091294,6.615253313832466 62.504460803206385,6.599335980591729 62.51238882008671,6.623211980452835 62.51899550082032,6.609947536085554 62.52295950926048,6.527707981008412 62.51503149238015,6.525055092134956 62.51635282852688,6.474650203539289 62.51238882008671,6.46669153691892 62.51635282852688,6.519749314388044 62.526923517700645,6.540972425375693 62.524280845407205,6.586071536224448 62.53088752614081,6.575459980730623 62.5427795514613,6.538319536502237 62.5427795514613,6.448121314804727 62.53088752614081,6.371187537474498 62.53485153458097,6.342005759866479 62.53088752614081,6.251807538168969 62.52824485384736,6.2862950935239 62.54145821531458,6.2703777602831625 62.549386232194905,6.273030649156619 62.5612782575154,6.251807538168969 62.58109829971622,6.304865315638093 62.59959700577031,6.334047093246111 62.614131703384245,6.379146204094866 62.60356101421047,6.434856870437446 62.614131703384245,6.450774203678183 62.59034765274326,6.450774203678183 62.567884938249,6.461385759172008 62.567884938249,6.469344425792376 62.58374097200966,6.453427092551639 62.614131703384245,6.525055092134956 62.61809571182441,6.564848425236798 62.624702392558014,6.570154202983711 62.594311661183426,6.601988869465185 62.59034765274326,6.609947536085554 62.58374097200966,6.596683091718273 62.5612782575154,6.61260042495901 62.554671576781786,6.633823535946659 62.591668988889985,6.631170647073203 62.60356101421047,6.609947536085554 62.61016769494408,6.631170647073203 62.6299877371449,6.649740869187396 62.6299877371449,6.657699535807765 62.60620368650392,6.6709639801750455 62.602239678063754,6.663005313554677 62.633951745585065,6.771773757366381 62.6550931239326,6.798302646100942 62.65245045163916,6.8221786459620475 62.636594417878506,6.877889312304628 62.6114890310908,6.9150297565330145 62.58770498044982,6.9123768676595585 62.57317028283589,6.930947089773751 62.58770498044982,6.917682645406471 62.59959700577031,6.93890575639412 62.614131703384245,6.925641312026839 62.6299877371449,6.9097239787861024 62.633951745585065,6.9070710899126455 62.647165107052274,6.960128867381769 62.65245045163916,6.9946164227367 62.65112911549244,7.047674200205823 62.6550931239326,7.08481464443421 62.6550931239326,7.08481464443421 62.62866640099818,7.0662444223200165 62.6299877371449,7.026451089218174 62.62205972026457,7.023798200344718 62.614131703384245,7.076855977813841 62.61809571182441,7.090120422181122 62.62205972026457,7.106037755421859 62.57977696356949,7.124607977536052 62.57581295512933,7.132566644156421 62.55731424907523,7.121955088662596 62.5427795514613,7.124607977536052 62.526923517700645,7.140525310776789 62.52031683696704,7.148483977397158 62.53749420687441,7.1458310885237015 62.57977696356949,7.124607977536052 62.591668988889985,7.124607977536052 62.60620368650392,7.1458310885237015 62.614131703384245,7.1431781996502455 62.62602372870474,7.167054199511352 62.6299877371449,7.198888865992825 62.62205972026457,7.233376421347756 62.61016769494408,7.254599532335405 62.62205972026457,7.286434198816879 62.607525022650634,7.326227531918722 62.60620368650392,7.331533309665634 62.61016769494408,7.360715087273652 62.60620368650392,7.379285309387845 62.57317028283589,7.416425753616232 62.5612782575154,7.434995975730425 62.549386232194905,7.448260420097706 62.53088752614081,7.474789308832268 62.53485153458097,7.474789308832268 62.54542222375474,7.525194197427935 62.53353019843425,7.546417308415585 62.49653278632606,7.564987530529778 62.49653278632606,7.559681752782866 62.53353019843425,7.586210641517427 62.5427795514613,7.657838641100744 62.54674355990146,7.663144418847656 62.56392092980884,7.687020418708762 62.569206274395725,7.748036862798254 62.56524226595556,7.7851773070266415 62.571848946689165,7.7825244181531845 62.57713429127605,7.750689751671711 62.57713429127605,7.732119529557517 62.58374097200966,7.6604915299742 62.57713429127605,7.655185752227288 62.571848946689165,7.549070197289041 62.55335024063507,7.5437644195421285 62.55731424907523,7.493359530946462 62.56524226595556,7.474789308832268 62.56524226595556,7.456219086718074 62.57713429127605,7.469483531085356 62.58374097200966,7.429690197983513 62.58770498044982,7.405814198122407 62.60620368650392,7.395202642628583 62.6299877371449,7.474789308832268 62.64055842631867,7.496012419819918 62.633951745585065,7.496012419819918 62.61809571182441,7.511929753060654 62.60356101421047,7.503971086440286 62.58374097200966,7.530499975174848 62.58770498044982,7.538458641795216 62.57317028283589,7.546417308415585 62.591668988889985,7.5437644195421285 62.62073838411785,7.506623975313742 62.633951745585065,7.50131819756683 62.66302114081293,7.527847086301391 62.666985149253094,7.549070197289041 62.67491316613342,7.599475085884708 62.678877174573586,7.6206981968723575 62.69341187218752,7.687020418708762 62.69737588062768,7.710896418569868 62.70794656980145,7.832929306748852 62.731730620442434,7.8674168621037825 62.7356946288826,7.907210195205625 62.731730620442434,7.925780417319818 62.723802603562106,7.9416977505605555 62.723802603562106,7.931086195066731 62.73833730117604,7.95230930605438 62.743622645762926,7.997408416903135 62.73965863732276,8.031895972258067 62.72908794814899,8.037201750004979 62.723802603562106,8.08495374972719 62.709267905948174,8.095565305221013 62.709267905948174,8.10617686071484 62.69737588062768,8.116788416208664 62.701339889067846,8.122094193955576 62.686805191453914,8.143317304943224 62.68284118301375,8.140664416069768 62.70530389750801,8.130052860575944 62.71587458668178,8.111482638461752 62.72115993126866,8.108829749588295 62.72908794814899,8.018631527890784 62.75022932649653,8.018631527890784 62.75551467108341,8.066383527612995 62.77004936869735,8.066383527612995 62.776656049430954,7.968226639295118 62.766085360257186,7.928433306193274 62.77004936869735,7.671103085468025 62.72115993126866,7.55702886390941 62.6986972167744,7.50131819756683 62.686805191453914,7.450913308971162 62.68284118301375,7.440301753477337 62.69737588062768,7.413772864742776 62.69076919989408,7.352756420653284 62.69076919989408,7.347450642906372 62.6986972167744,7.384591087134758 62.70794656980145,7.419078642489688 62.70794656980145,7.413772864742776 62.71983859512194,7.392549753755127 62.71983859512194,7.416425753616232 62.72776661200227,7.36867375389402 62.731730620442434,7.366020865020564 62.73833730117604,7.413772864742776 62.746265318056366,7.450913308971162 62.75551467108341,7.594169308137796 62.77797738557767,7.679061752088394 62.776656049430954,7.721507974063693 62.79251208319161,7.668450196594569 62.78458406631128,7.671103085468025 62.79251208319161,7.633962641239639 62.79251208319161,7.6206981968723575 62.788548074751446,7.503971086440286 62.77797738557767,7.450913308971162 62.77004936869735,7.376632420514389 62.76212135181702,7.251946643461949 62.743622645762926,7.1431781996502455 62.734373292735874,7.06359153344656 62.72908794814899,7.015839533724349 62.723802603562106,6.984004867242875 62.723802603562106,6.968087534002137 62.7356946288826,6.986657756116331 62.73965863732276,6.9946164227367 62.75815734337686,6.968087534002137 62.77797738557767,6.9893106449897875 62.78722673860472,6.978699089495962 62.79251208319161,7.015839533724349 62.81101078924571,7.015839533724349 62.81761746997931,7.0688973111934725 62.8295094952998,7.092773311054579 62.8295094952998,7.108690644295315 62.8229028145662,7.076855977813841 62.821581478419475,7.076855977813841 62.81497479768587,7.106037755421859 62.81233212539242,7.156442644017527 62.818938806126035,7.159095532890983 62.80704678080554,7.198888865992825 62.80308277236538,7.233376421347756 62.8044041085121,7.241335087968125 62.81101078924571,7.20950042148665 62.81101078924571,7.177665755005176 62.8229028145662,7.206847532613194 62.83347350373997,7.185624421625544 62.83347350373997,7.151136866270614 62.841401520620295,7.17501286613172 62.84932953750062,7.140525310776789 62.85197220979406,7.103384866548403 62.8480082013539,7.060938644573104 62.83743751218013,6.9893106449897875 62.83875884832685,7.010533755977437 62.8480082013539,7.005227978230524 62.85725755438095,6.9893106449897875 62.85990022667439,6.9946164227367 62.87179225199488,6.962781756255225 62.87443492428832,6.978699089495962 62.89425496648914,6.952170200761401 62.88764828575553,6.960128867381769 62.89821897492931,6.9070710899126455 62.90218298336947,6.89645953441882 62.9101110002498,6.922988423153383 62.91407500868996,7.021145311471262 62.95239375694487,7.060938644573104 62.970892462998975,7.090120422181122 62.95900043767848,7.100731977674947 62.961643109971924,7.079508866687297 62.973535135292416,7.103384866548403 62.98806983290635,7.121955088662596 62.98146315217274,7.151136866270614 62.98542716061291,7.151136866270614 62.9973191859334,7.17501286613172 62.993355177493235,7.20950042148665 62.993355177493235,7.236029310221212 62.99996185822684,7.2970457543107035 63.00788987510717,7.283781309943423 62.99996185822684,7.246640865715037 62.98939116905307,7.286434198816879 62.9788204798793,7.278475532196511 62.98939116905307,7.3076573098045285 62.99996185822684,7.323574643045266 62.98939116905307,7.315615976424898 62.970892462998975,7.331533309665634 62.973535135292416,7.376632420514389 62.96692845455881,7.384591087134758 62.95900043767848,7.413772864742776 62.95503642923832,7.416425753616232 62.94842974850471,7.442954642350793 62.93653772318422,7.456219086718074 62.92068168942357,7.448260420097706 62.906146991809635,7.429690197983513 62.906146991809635,7.432343086856969 62.89821897492931,7.469483531085356 62.89821897492931,7.485400864326093 62.906146991809635,7.517235530807566 62.906146991809635,7.564987530529778 62.92464569786373,7.588863530390883 62.92464569786373,7.583557752643971 62.93653772318422,7.68171464096185 62.96692845455881,7.718855085190237 62.970892462998975,7.79313597364701 62.95900043767848,7.748036862798254 62.94314440391783,7.710896418569868 62.92464569786373,7.673755974341481 62.89425496648914,7.687020418708762 62.89425496648914,7.721507974063693 62.91275367254324,7.753342640545167 62.92068168942357,7.84088797336922 62.951072420798155,7.8647639732303265 62.944465740064544,7.885987084217976 62.95900043767848,7.939044861687099 62.961643109971924,7.97353241704203 62.970892462998975,8.02128441676424 62.96296444611865,8.034548861131523 62.96560711841209,8.04250752775189 62.951072420798155,8.061077749866083 62.951072420798155,8.071689305359907 62.93653772318422,8.10617686071484 62.928609706303895,8.095565305221013 62.92068168942357,8.11944130508212 62.92068168942357,8.087606638600645 62.88764828575553,8.111482638461752 62.886326949608815,8.10617686071484 62.87972026887521,8.111482638461752 62.85725755438095,8.135358638322856 62.818938806126035,8.172499082551242 62.808368116952266,8.169846193677786 62.80044010007194,8.262697304248753 62.77797738557767,8.310449303970964 62.78458406631128,8.329019526085158 62.766085360257186,8.384730192427737 62.754193334936694,8.400647525668475 62.74758665420309,8.419217747782668 62.717195922828495,8.429829303276492 62.71983859512194,8.429829303276492 62.731730620442434,8.45901108088451 62.72776661200227,8.496151525112897 62.71587458668178,8.501457302859809 62.71983859512194,8.517374636100547 62.67755583842686,8.525333302720915 62.67094915769326,8.549209302582021 62.67491316613342,8.562473746949301 62.69473320833424,8.554515080328933 62.717195922828495,8.52798619159437 62.734373292735874,8.443093747643774 62.75815734337686,8.408606192288843 62.77269204099079,8.339631081578982 62.788548074751446,8.323713748338246 62.8044041085121,8.24412708213456 62.808368116952266,8.222903971146911 62.821581478419475,8.193722193538893 62.82686682300636,8.172499082551242 62.8480082013539,8.156581749310506 62.85725755438095,8.16719330480433 62.86782824355472,8.151275971563594 62.89029095804898,8.16719330480433 62.89821897492931,8.204333749032717 62.906146991809635,8.20168086015926 62.91407500868996,8.156581749310506 62.9101110002498,8.159234638183962 62.91407500868996,8.135358638322856 62.944465740064544,8.053119083245715 62.97485647143914,8.02128441676424 62.9973191859334,7.994755528029679 62.99996185822684,7.997408416903135 63.03167392574815,7.976185305915486 63.03960194262847,7.949656417180924 63.01978190042766,7.981491083662398 63.02770991730799,7.989449750282766 63.0224245727211,7.981491083662398 63.01185388354733,7.949656417180924 62.9973191859334,7.891292861964888 62.98939116905307,7.885987084217976 63.001283194373556,7.899251528585257 63.01185388354733,7.885987084217976 63.023745908867824,7.915168861825993 63.04224461492192,7.954962194927836 63.03960194262847,7.978838194788942 63.048851295655524,7.968226639295118 63.080563363176836,7.978838194788942 63.088491380057164,8.069036416486451 63.110954094551424,8.108829749588295 63.103026077671096,8.111482638461752 63.088491380057164,8.127399971702488 63.088491380057164,8.138011527196312 63.068671337856344,8.124747082829032 63.05281530409569,8.087606638600645 63.05017263180225,8.087606638600645 63.04224461492192,8.130052860575944 63.046208623362084,8.130052860575944 63.03431659804159,8.15392886043705 63.023745908867824,8.172499082551242 63.023745908867824,8.191069304665437 63.01185388354733,8.257391526501841 62.995997849786676,8.241474193261103 62.98146315217274,8.254738637628385 62.970892462998975,8.275961748616034 62.98278448831946,8.302490637350596 62.97749914373258,8.33432530383207 62.96296444611865,8.283920415236402 62.928609706303895,8.289226192983314 62.92068168942357,8.31310219284442 62.91275367254324,8.336978192705526 62.89029095804898,8.29983774847714 62.863864235114555,8.31310219284442 62.863864235114555,8.368812859187 62.886326949608815,8.419217747782668 62.86782824355472,8.45901108088451 62.844044192913735,8.485539969619072 62.84536552906046,8.496151525112897 62.83479483988668,8.517374636100547 62.83743751218013,8.51472174722709 62.85725755438095,8.456358192011054 62.87179225199488,8.42452352552958 62.886326949608815,8.416564858909211 62.90218298336947,8.45901108088451 62.883684277315375,8.490845747365984 62.87972026887521,8.509415969480177 62.86518557126128,8.546556413708565 62.863864235114555,8.578391080190038 62.86782824355472,8.618184413291882 62.83743751218013,8.636754635406074 62.8295094952998,8.650019079773354 62.8295094952998,8.697771079495567 62.81761746997931,8.700423968369023 62.82686682300636,8.65267196864681 62.83875884832685,8.634101746532618 62.83875884832685,8.62614307991225 62.84932953750062,8.628795968785706 62.86518557126128,8.610225746671512 62.87972026887521,8.589002635683864 62.883684277315375,8.541250635961653 62.87839893272849,8.535944858214739 62.886326949608815,8.520027524974003 62.886326949608815,8.49349863623944 62.90086164722275,8.472275525251792 62.90218298336947,8.45901108088451 62.92200302557029,8.429829303276492 62.93257371474406,8.416564858909211 62.95503642923832,8.474928414125248 62.961643109971924,8.50676308060672 62.95767910153176,8.657977746393723 62.970892462998975,8.650019079773354 62.98939116905307,8.607572857798056 62.98939116905307,8.567779524696213 62.98542716061291,8.50676308060672 62.96692845455881,8.461663969757966 62.970892462998975,8.490845747365984 62.99203384134651,8.522680413847459 62.9973191859334,8.594308413430776 63.01978190042766,8.565126635822757 63.01978190042766,8.485539969619072 62.9973191859334,8.419217747782668 62.97485647143914,8.368812859187 62.96692845455881,8.344936859325895 62.98542716061291,8.318407970591332 62.993355177493235,8.34758974819935 63.00788987510717,8.43778796989686 63.00788987510717,8.49349863623944 63.015817891987496,8.469622636378336 63.0224245727211,8.432482192149948 63.015817891987496,8.382077303554281 63.01449655584077,8.34758974819935 63.01978190042766,8.307796415097508 63.00788987510717,8.217598193399997 63.02770991730799,8.214945304526541 63.03431659804159,8.236168415514191 63.05017263180225,8.230862637767279 63.0660286655629,8.191069304665437 63.07924202703011,8.177804860298156 63.088491380057164,8.183110638045068 63.096419396937485,8.159234638183962 63.105668749964536,8.156581749310506 63.12284611987191,8.222903971146911 63.14002348977929,8.241474193261103 63.125488792165356,8.257391526501841 63.110954094551424,8.275961748616034 63.09906206923093,8.307796415097508 63.09245538849733,8.283920415236402 63.084527371617,8.283920415236402 63.07263534629651,8.323713748338246 63.07659935473667,8.326366637211702 63.09509806079077,8.31310219284442 63.103026077671096,8.326366637211702 63.1096327584047,8.273308859742578 63.11756077528503,8.241474193261103 63.14134482592601,8.275961748616034 63.147951506659616,8.33432530383207 63.14398749821945,8.368812859187 63.13209547289896,8.403300414541931 63.133416809045684,8.427176414403036 63.14134482592601,8.432482192149948 63.136059481339124,8.464316858631422 63.133416809045684,8.496151525112897 63.14002348977929,8.504110191733265 63.12945280060552,8.535944858214739 63.136059481339124,8.565126635822757 63.12152478372519,8.589002635683864 63.118882111431745,8.607572857798056 63.09509806079077,8.628795968785706 63.09509806079077,8.62614307991225 63.11491810299158,8.602267080051144 63.1281314644588,8.562473746949301 63.136059481339124,8.567779524696213 63.147951506659616,8.549209302582021 63.158522195833385,8.57043241356967 63.167771548860436,8.644713302026442 63.17173555730059,8.665936413014093 63.17966357418092,8.726952857103583 63.18627025491453,8.742870190344322 63.18230624647437,8.801233745560356 63.18627025491453,8.830415523168377 63.19419827179486,8.936531078106622 63.1968409440883,8.981630188955378 63.20212628867519,8.98693596670229 63.20873296940879,8.838374189788745 63.200804952528465,8.73756441259741 63.19287693564814,8.687159524001743 63.19419827179486,8.676547968507917 63.198162280235024,8.644713302026442 63.18891292720797,8.6049199689246 63.19419827179486,8.6049199689246 63.20609029711535,8.58369685793695 63.200804952528465,8.581043969063494 63.22458900316945,8.57043241356967 63.23515969234322,8.549209302582021 63.24176637307682,8.551862191455477 63.25365839839731,8.52798619159437 63.25497973454404,8.517374636100547 63.27347844059813,8.49349863623944 63.2774424490383,8.496151525112897 63.29197714665223,8.530639080467827 63.28933447435878,8.522680413847459 63.29990516353256,8.57043241356967 63.31179718885305,8.596961302304232 63.310475852706325,8.63940752427953 63.31972520573338,8.657977746393723 63.31576119729321,8.665936413014093 63.32236787802682,8.705729746115935 63.32633188646698,8.713688412736303 63.330295894907145,8.75082885696469 63.33425990334731,8.766746190205428 63.34086658408091,8.8410270786622 63.34483059252108,8.8410270786622 63.352758609401405,8.75082885696469 63.34483059252108,8.708382634989391 63.346151928667794,8.692465301748655 63.36861464316206,8.67389507963446 63.375221323895666,8.665936413014093 63.38711334921616,8.644713302026442 63.3897560215096,8.647366190899898 63.40164804683009,8.660630635267179 63.40957606371042,8.711035523862847 63.417504080590746,8.740217301470866 63.41354007215058,8.732258634850496 63.42146808903091,8.817151078801094 63.42939610591124,8.848985745282569 63.425432097471074,8.864903078523305 63.428074769764514,8.878167522890585 63.417504080590746,8.870208856270217 63.405612055270254,8.891431967257867 63.38711334921616,8.907349300498606 63.38711334921616,8.907349300498606 63.39504136609648,8.8834733006375 63.40957606371042,8.90469641162515 63.408254727563694,8.93122530035971 63.425432097471074,8.960407077967728 63.41354007215058,8.96571285571464 63.402969382976806,9.02142352205722 63.41221873600386,8.978977300081922 63.42146808903091,9.00020041106957 63.428074769764514,8.971018633461552 63.439966795085006,9.00020041106957 63.447894811965334,8.994894633322659 63.462429509579266,9.018770633183763 63.462429509579266,9.02938218867759 63.44657347581861,9.093051521640536 63.439966795085006,9.085092855020168 63.428074769764514,9.095704410513992 63.420146752884186,9.135497743615836 63.420146752884186,9.151415076856573 63.39372002994976,9.148762187983117 63.37654266004239,9.175291076717679 63.37918533233583,9.177943965591135 63.372578651602225,9.130191965868924 63.35672261784157,9.116927521501642 63.34483059252108,9.138150632489292 63.34086658408091,9.095704410513992 63.31840386958665,9.085092855020168 63.29197714665223,9.093051521640536 63.2840491297719,9.130191965868924 63.302547835826,9.127539076995468 63.310475852706325,9.143456410236205 63.31972520573338,9.183249743338047 63.32633188646698,9.204472854325697 63.34086658408091,9.238960409680626 63.330295894907145,9.23630752080717 63.346151928667794,9.268142187288646 63.34879460096124,9.29201818714975 63.36068662628173,9.363646186733067 63.36068662628173,9.469761741671315 63.380506668482546,9.501596408152789 63.39372002994976,9.493637741532421 63.397684038389926,9.453844408430577 63.38711334921616,9.371604853353436 63.375221323895666,9.321199964757769 63.375221323895666,9.25753063179482 63.36729330701534,9.228348854186802 63.372578651602225,9.231001743060258 63.39107735765632,9.215084409819521 63.383149340775994,9.18855552108496 63.39504136609648,9.177943965591135 63.41354007215058,9.18855552108496 63.42939610591124,9.217737298692978 63.4333601143514,9.225695965313346 63.425432097471074,9.233654631933714 63.43600278664484,9.25753063179482 63.4333601143514,9.270795076162102 63.442609467378446,9.284059520529382 63.4333601143514,9.302629742643575 63.439966795085006,9.358340408986155 63.447894811965334,9.371604853353436 63.44657347581861,9.443232852936752 63.46639351801943,9.498943519279333 63.45978683728582,9.501596408152789 63.482249551780086,9.440579964063296 63.473000198753034,9.398133742087998 63.45978683728582,9.376910631100348 63.462429509579266,9.366299075606523 63.455822828845655,9.342423075745419 63.455822828845655,9.347728853492331 63.46903619031287,9.323852853631225 63.47432153489976,9.284059520529382 63.495462913247295,9.273447965035558 63.495462913247295,9.281406631655926 63.47828554333992,9.297323964896663 63.47828554333992,9.284059520529382 63.465072181872706,9.329158631378137 63.465072181872706,9.329158631378137 63.45450149269894,9.297323964896663 63.44657347581861,9.286712409402838 63.455822828845655,9.241613298554082 63.447894811965334,9.225695965313346 63.447894811965334,9.225695965313346 63.455822828845655,9.175291076717679 63.4584655011391,9.180596854464591 63.46639351801943,9.167332410097309 63.482249551780086,9.14610929910966 63.48621356022025,9.201819965452241 63.50339093012762,9.217737298692978 63.515282955448114,9.231001743060258 63.51660429159483,9.254877742921364 63.50339093012762,9.249571965174452 63.490177568660414,9.262836409541732 63.490177568660414,9.27875374278247 63.5086762747145,9.262836409541732 63.50735493856779,9.244266187427538 63.52321097232844,9.29201818714975 63.527174980768606,9.294671076023207 63.515282955448114,9.315894187010855 63.52321097232844,9.323852853631225 63.53378166150221,9.360993297859611 63.55360170370303,9.400786630961454 63.55624437599647,9.384869297720716 63.515282955448114,9.408745297581822 63.49678424939402,9.427315519696016 63.50339093012762,9.408745297581822 63.52585364462188,9.443232852936752 63.537745669942375,9.445885741810208 63.55624437599647,9.485679074912053 63.57210040975713,9.504249297026245 63.5641723928768,9.533431074634262 63.56945773746368,9.562612852242282 63.56152972058336,9.573224407736106 63.53113898920877,9.586488852103386 63.53378166150221,9.575877296609562 63.5641723928768,9.559959963368826 63.57210040975713,9.567918629989194 63.580028426637455,9.544042630128088 63.58399243507762,9.520166630266981 63.580028426637455,9.493637741532421 63.580028426637455,9.517513741393525 63.58663510737106,9.525472408013893 63.599848468838275,9.567918629989194 63.60645514957188,9.599753296470666 63.62098984718581,9.650158185066335 63.62098984718581,9.689951518168177 63.63684588094647,9.724439073523108 63.644773897826795,9.750967962257668 63.644773897826795,9.737703517890388 63.624953855625975,9.71648040690274 63.61438316645221,9.737703517890388 63.61702583874565,9.761579517751494 63.59059911581122,9.753620851131124 63.582671098930895,9.7854555176126 63.57606441819729,9.788108406486057 63.56152972058336,9.809331517473705 63.557565712143195,9.833207517334811 63.5390670060891,9.822595961840985 63.527174980768606,9.804025739726793 63.515282955448114,9.851777739449005 63.50074825783418,9.843819072828635 63.484892224073526,9.904835516918128 63.470357526459594,9.907488405791584 63.45978683728582,9.979116405374901 63.442609467378446,9.957893294387251 63.40164804683009,9.941975961146515 63.372578651602225,9.907488405791584 63.34879460096124,9.880959517057022 63.34483059252108,9.814637295220617 63.31972520573338,9.86238929494283 63.31179718885305,9.891571072550846 63.32633188646698,9.949934627766883 63.34086658408091,9.960546183260707 63.34879460096124,10.000339516362551 63.34483059252108,10.03482707171748 63.34879460096124,10.05605018270513 63.34483059252108,10.074620404819324 63.323689214173534,10.101149293553885 63.32897455876042,10.148901293276097 63.31972520573338,10.16747151539029 63.310475852706325,10.209917737365588 63.32236787802682,10.231140848353238 63.34483059252108,10.146248404402641 63.34483059252108,10.125025293414991 63.352758609401405,10.106455071300797 63.352758609401405,10.085231960313148 63.3712573154555,10.071967515945868 63.3712573154555,10.05605018270513 63.385792013069434,10.064008849325498 63.402969382976806,10.114413737921165 63.425432097471074,10.140942626655727 63.42411076132435,10.18073595975757 63.447894811965334,10.233793737226694 63.45450149269894,10.300115959063099 63.4584655011391,10.34786795878531 63.447894811965334,10.355826625405678 63.43203877820468,10.4088844028748 63.439966795085006,10.443371958229733 63.455822828845655,10.467247958090837 63.45185882040549,10.469900846964293 63.439966795085006,10.499082624572312 63.4333601143514,10.557446179788347 63.42939610591124,10.602545290637103 63.44393080352517,10.615809735004383 63.43864545893828,10.63968573486549 63.44393080352517,10.666214623600052 63.43600278664484,10.767024400791385 63.42939610591124,10.782941734032123 63.41354007215058,10.809470622766685 63.417504080590746,10.804164845019773 63.4333601143514,10.838652400374702 63.4333601143514,10.862528400235808 63.44393080352517,10.899668844464195 63.44657347581861,10.907627511084563 63.45185882040549,10.907627511084563 63.46903619031287,10.897015955590739 63.473000198753034,10.883751511223458 63.465072181872706,10.878445733476546 63.47432153489976,10.838652400374702 63.470357526459594,10.812123511640142 63.470357526459594,10.774983067411753 63.484892224073526,10.756412845297561 63.50074825783418,10.756412845297561 63.51924696388828,10.772330178538297 63.537745669942375,10.835999511501246 63.5390670060891,10.894363066717283 63.5456736868227,10.934156399819125 63.56152972058336,10.907627511084563 63.560208384436635,10.915586177704931 63.56813640131696,10.859875511362352 63.56152972058336,10.870487066856178 63.57210040975713,10.849263955868526 63.57342174590384,10.873139955729634 63.58795644351778,10.899668844464195 63.58399243507762,10.918239066578387 63.58663510737106,10.891710177843827 63.59192045195795,10.934156399819125 63.61041915801204,10.897015955590739 63.61041915801204,10.843958178121614 63.59192045195795,10.80681773389323 63.58399243507762,10.82008217826051 63.580028426637455,10.790900400652491 63.57870709049073,10.767024400791385 63.56813640131696,10.748454178677193 63.565493729023515,10.737842623183369 63.57342174590384,10.72192528994263 63.56152972058336,10.70866084557535 63.56152972058336,10.682131956840788 63.5456736868227,10.647644401485858 63.537745669942375,10.623768401624751 63.54699502296942,10.647644401485858 63.557565712143195,10.666214623600052 63.55624437599647,10.676826179093876 63.580028426637455,10.70070217895498 63.59192045195795,10.70070217895498 63.60645514957188,10.72192528994263 63.62098984718581,10.740495512056825 63.62098984718581,10.780288845158667 63.63684588094647,10.804164845019773 63.6328818725063,10.841305289248158 63.63684588094647,10.857222622488896 63.65534458700056,10.870487066856178 63.65666592314729,10.907627511084563 63.68177130993499,10.931503510945669 63.689699326815315,10.955379510806775 63.70159135213581,11.00047862165553 63.70159135213581,11.011090177149354 63.7134833774563,11.045577732504285 63.709519369016135,11.045577732504285 63.69366333525548,11.11189995434069 63.70819803286941,11.151693287442532 63.70423402442925,11.149040398569076 63.71612604974974,11.186180842797462 63.712162041309575,11.210056842658567 63.7200900581899,11.204751064911655 63.754444798004656,11.239238620266587 63.754444798004656,11.27107328674806 63.76633682332515,11.286990619988796 63.75048078956449,11.329436841964096 63.754444798004656,11.345354175204832 63.76237281488498,11.329436841964096 63.77030083176531,11.371883063939395 63.77294350405875,11.390453286053589 63.78087152093908,11.422287952535061 63.76633682332515,11.440858174649255 63.784835529379244,11.432899508028886 63.79540621855301,11.462081285636906 63.80333423543334,11.4382052857758 63.81126225231367,11.401064841547413 63.81522626075383,11.401064841547413 63.82315427763416,11.432899508028886 63.821832941487436,11.4382052857758 63.832403630661204,11.419635063661605 63.83372496680793,11.3957590638005 63.84825966442186,11.369230175065939 63.83372496680793,11.316172397596816 63.83768897524809,11.30556084210299 63.84825966442186,11.316172397596816 63.852223672862024,11.300255064356078 63.864115698182516,11.334742619711008 63.857509017448905,11.355965730698657 63.864115698182516,11.377188841686307 63.87997173194317,11.348007064078288 63.89318509341038,11.358618619572113 63.91036246331775,11.377188841686307 63.91036246331775,11.369230175065939 63.92093315249153,11.385147508306677 63.94603853927923,11.37453595281285 63.95000254771939,11.342701286331376 63.936789186252184,11.342701286331376 63.92357582478497,11.318825286470272 63.9130051356112,11.329436841964096 63.894506429557104,11.30556084210299 63.87997173194317,11.300255064356078 63.87072237891612,11.268420397874603 63.86807970662268,11.244544398013499 63.86015168974235,11.231279953646217 63.87072237891612,11.220668398152393 63.86279436203579,11.191486620544374 63.85618768130219,11.178222176177094 63.84561699212842,11.13842884307525 63.83768897524809,11.093329732226497 63.83768897524809,11.082718176732671 63.841652983688256,11.072106621238847 63.86279436203579,11.074759510112303 63.883935740383336,11.114552843214145 63.89847043799727,11.127817287581426 63.90639845487759,11.154346176315988 63.90507711873087,11.186180842797462 63.916969144051365,11.204751064911655 63.919611816344805,11.20740395378511 63.936789186252184,11.255155953507323 63.95132388386612,11.279031953368428 63.97642927065382,11.310866619849904 63.96982258992021,11.316172397596816 63.961894573039885,11.3533128418252 63.97378659836038,11.38249461943322 63.967179917626765,11.38249461943322 63.98039327909398,11.401064841547413 63.97775060680054,11.483304396624554 64.0068200020284,11.43024661915543 64.01342668276202,11.443511063522712 64.02135469964234,11.43024661915543 64.02928271652267,11.37453595281285 64.0187120273489,11.363924397319026 64.03853206954972,11.318825286470272 64.03060405266939,11.316172397596816 64.03853206954972,11.279031953368428 64.03456806110955,11.263114620127691 64.02664004422923,11.241891509140043 64.02664004422923,11.233932842519673 64.07156547321775,11.279031953368428 64.07552948165791,11.350659952951744 64.09799219615218,11.387800397180133 64.10327754073906,11.385147508306677 64.11120555761939,11.334742619711008 64.11120555761939,11.310866619849904 64.11516956605955,11.302907953229534 64.10327754073906,11.318825286470272 64.0993135322989,11.30556084210299 64.09138551541857,11.265767509001147 64.07949349009807,11.218015509278937 64.0742081455112,11.204751064911655 64.05174543101693,11.220668398152393 64.02267603578906,11.202098176038199 64.0068200020284,11.164957731809814 63.9936066405612,11.109247065467233 63.984357287534145,11.016395954896268 63.95528789230628,11.011090177149354 63.94603853927923,10.989867066161704 63.94339586698579,10.939462177566037 63.916969144051365,10.920891955451843 63.90507711873087,10.849263955868526 63.88261440423661,10.711313734448806 63.84825966442186,10.6874377345877 63.84561699212842,10.605198179510559 63.809940916166944,10.594586624016735 63.79672755469973,10.647644401485858 63.81522626075383,10.666214623600052 63.81522626075383,10.695396401208068 63.84033164754153,10.753759956424105 63.84825966442186,10.767024400791385 63.84561699212842,10.812123511640142 63.852223672862024,10.849263955868526 63.864115698182516,10.85456973361544 63.87072237891612,10.963338177427143 63.90507711873087,10.971296844047512 63.894506429557104,11.042924843630828 63.87865039579645,11.04823062137774 63.857509017448905,11.066800843491933 63.841652983688256,11.064147954618477 63.83768897524809,10.995172843908616 63.81786893304727,11.008437288275898 63.79540621855301,10.955379510806775 63.74651678112433,10.944767955312951 63.738588764244,10.796206178399403 63.70819803286941,10.774983067411753 63.70819803286941,10.711313734448806 63.69366333525548,10.679479067967332 63.68177130993499,10.626421290498207 63.67516462920138,10.610503957257471 63.66591527617433,10.607851068384015 63.64873790626696,10.557446179788347 63.624953855625975,10.530917291053786 63.62231118333253,10.507041291192682 63.61041915801204,10.45928929147047 63.599848468838275,10.45928929147047 63.59192045195795,10.419495958368627 63.58795644351778,10.419495958368627 63.56813640131696,10.355826625405678 63.57342174590384,10.305421736810011 63.55360170370303,10.233793737226694 63.55624437599647,10.209917737365588 63.54963769526287,10.209917737365588 63.5390670060891,10.156859959896465 63.52321097232844,10.119719515668077 63.50074825783418,10.101149293553885 63.492820240953854,10.045438627211304 63.490177568660414,10.018909738476744 63.492820240953854,9.989727960868725 63.48621356022025,9.98707507199527 63.495462913247295,9.949934627766883 63.495462913247295,9.934017294526146 63.50074825783418,9.907488405791584 63.535102997648934,9.923405739032322 63.54303101452926,9.894223961424302 63.56152972058336,9.899529739171214 63.57342174590384,9.926058627905778 63.582671098930895,9.918099961285408 63.59192045195795,9.854430628322461 63.58663510737106,9.817290184094073 63.61041915801204,9.806678628600249 63.62891786406614,9.859736406069374 63.64080988938663,9.822595961840985 63.647416570120235,9.822595961840985 63.65666592314729,9.801372850853337 63.660629931587444,9.825248850714441 63.67120062076122,9.811984406347161 63.683092646081704,9.851777739449005 63.689699326815315,9.865042183816286 63.67780730149482,9.873000850436654 63.689699326815315,9.918099961285408 63.70159135213581,9.918099961285408 63.69762734369564,9.960546183260707 63.69630600754892,9.936670183399603 63.70819803286941,9.979116405374901 63.7200900581899,9.979116405374901 63.70819803286941,10.07727329369278 63.73066074736367,10.082579071439692 63.738588764244,10.130331071161903 63.75312346185793,10.07727329369278 63.74915945341777,10.037479960590936 63.731982083510395,10.013603960729831 63.72801807507023,10.018909738476744 63.738588764244,10.03482707171748 63.74651678112433,10.040132849464392 63.757087470298096,10.07727329369278 63.76237281488498,10.071967515945868 63.76897949561859,10.117066626794621 63.776907512498916,10.117066626794621 63.784835529379244,10.064008849325498 63.77558617635219,10.029521293970568 63.76237281488498,9.981769294248357 63.754444798004656,9.934017294526146 63.754444798004656,9.91014129466504 63.742552772684164,9.87565373931011 63.734624755803836,9.880959517057022 63.72801807507023,9.846471961702091 63.71876872204318,9.827901739587897 63.722732730483344,9.804025739726793 63.709519369016135,9.748315073384212 63.70423402442925,9.737703517890388 63.69630600754892,9.67403418492744 63.70159135213581,9.663422629433615 63.69366333525548,9.663422629433615 63.67516462920138,9.636893740699055 63.67780730149482,9.591794629850298 63.67384329305466,9.565265741115738 63.65534458700056,9.544042630128088 63.660629931587444,9.575877296609562 63.68573531837515,9.575877296609562 63.709519369016135,9.549348407875 63.7200900581899,9.620976407458317 63.72801807507023,9.623629296331773 63.731982083510395,9.668728407180527 63.738588764244,9.697910184788546 63.754444798004656,9.766885295498406 63.76237281488498,9.804025739726793 63.76105147873826,9.79871996197988 63.76897949561859,9.753620851131124 63.76897949561859,9.71648040690274 63.76237281488498,9.613017740837948 63.757087470298096,9.581183074356474 63.76237281488498,9.562612852242282 63.77294350405875,9.589141740976842 63.787478201672684,9.607711963091035 63.79144221011285,9.607711963091035 63.799370226993176,9.658116851686703 63.809940916166944,9.67403418492744 63.81786893304727,9.663422629433615 63.82315427763416,9.623629296331773 63.81522626075383,9.634240851825599 63.829760958367764,9.666075518307071 63.83372496680793,9.676687073800895 63.844295655981696,9.72974485127002 63.852223672862024,9.721786184649652 63.85618768130219,9.753620851131124 63.864115698182516,9.76423240662495 63.85618768130219,9.804025739726793 63.86015168974235,9.814637295220617 63.857509017448905,9.79871996197988 63.841652983688256,9.697910184788546 63.827118286074324,9.69525729591509 63.81522626075383,9.735050629016932 63.82315427763416,9.769538184371862 63.821832941487436,9.780149739865688 63.829760958367764,9.817290184094073 63.83768897524809,9.817290184094073 63.84825966442186,9.835860406208267 63.852223672862024,9.851777739449005 63.844295655981696,9.865042183816286 63.852223672862024,9.883612405930478 63.852223672862024,9.886265294803934 63.87072237891612,9.859736406069374 63.85618768130219,9.827901739587897 63.872043715062844,9.88891818367739 63.89318509341038,9.923405739032322 63.89847043799727,9.93136440565269 63.89054242111694,9.957893294387251 63.894506429557104,9.926058627905778 63.88261440423661,9.934017294526146 63.872043715062844,10.029521293970568 63.90904112717104,10.111760849047709 63.92357582478497,10.109107960174253 63.92753983322513,10.156859959896465 63.93282517781202,10.186041737504482 63.94075319469235,10.188694626377938 63.92886116937186,10.215223515112502 63.92357582478497,10.220529292859414 63.936789186252184,10.204611959618676 63.93546785010546,10.204611959618676 63.94735987542595,10.225835070606326 63.94735987542595,10.22318218173287 63.959251900746445,10.183388848631026 63.95000254771939,10.188694626377938 63.959251900746445,10.140942626655727 63.94603853927923,10.106455071300797 63.94075319469235,10.10380218242734 63.95793056459972,10.22318218173287 63.99757064900136,10.20195907074522 63.99757064900136,10.106455071300797 63.9632159091866,10.079926182566236 63.96585858148005,10.119719515668077 63.98039327909398,10.098496404680429 63.97775060680054,10.042785738337848 63.961894573039885,10.026868405097112 63.961894573039885,9.955240405513795 63.95000254771939,9.952587516640339 63.959251900746445,9.981769294248357 63.97642927065382,10.002992405236007 63.97642927065382,10.000339516362551 63.99889198514808,10.050744404958218 63.984357287534145,10.050744404958218 63.9936066405612,10.005645294109463 64.0068200020284,10.005645294109463 64.0187120273489,10.029521293970568 64.02664004422923,10.05605018270513 64.01474801890873,10.064008849325498 64.02267603578906,10.03482707171748 64.03456806110955,10.064008849325498 64.03853206954972,10.082579071439692 64.05042409487021,10.061355960452042 64.05438810331037,10.018909738476744 64.08213616239152,10.037479960590936 64.07949349009807,10.026868405097112 64.09799219615218,10.071967515945868 64.10724154917922,10.143595515529185 64.07817215395136,10.252363959340887 64.10063486844561,10.252363959340887 64.11516956605955,10.207264848492132 64.10327754073906,10.175430182010658 64.10327754073906,10.132983960035359 64.11120555761939,10.119719515668077 64.12838292752676,10.156859959896465 64.14556029743413,10.183388848631026 64.1561309866079,10.220529292859414 64.14423896128741,10.228487959479782 64.14820296972758,10.215223515112502 64.16141633119479,10.22318218173287 64.17595102880873,10.186041737504482 64.18387904568905,10.196653292998308 64.20105641559643,10.228487959479782 64.20105641559643,10.252363959340887 64.18520038183577,10.265628403708167 64.18520038183577,10.247058181593975 64.20502042403659,10.281545736948905 64.20502042403659,10.284198625822361 64.19180706256938,10.300115959063099 64.18520038183577,10.308074625683467 64.20105641559643,10.300115959063099 64.2116271047702,10.350520847658766 64.20502042403659,10.36909106977296 64.19180706256938,10.358479514279134 64.17727236495544,10.374396847519872 64.17727236495544,10.39561995850752 64.20105641559643,10.342562181038398 64.21691244935708,10.292157292442731 64.22484046623741,10.273587070328537 64.23408981926445,10.297463070189643 64.24598184458495,10.323991958924204 64.24598184458495,10.358479514279134 64.25787386990544,10.331950625544572 64.26580188678577,10.36909106977296 64.28297925669314,10.406231514001345 64.25390986146527,10.424801736115539 64.25390986146527,10.39561995850752 64.27769391210626,10.406231514001345 64.28165792054642,10.403578625127889 64.29487128201363,10.435413291609365 64.2988352904538,10.435413291609365 64.28562192898659,10.451330624850101 64.27769391210626,10.467247958090837 64.28165792054642,10.448677735976645 64.29090727357347,10.467247958090837 64.29751395430708,10.491123957951944 64.2869432651333,10.507041291192682 64.3054419711874,10.475206624711205 64.2988352904538,10.451330624850101 64.30676330733412,10.45928929147047 64.31469132421445,10.446024847103189 64.32261934109478,10.469900846964293 64.3305473579751,10.451330624850101 64.33979671100215,10.446024847103189 64.35168873632264,10.483165291331574 64.35829541705625,10.565404846408716 64.32790468568166,10.581322179649455 64.33186869412182,10.512347068939594 64.3556527447628,10.509694180066138 64.37283011467018,10.578669290775998 64.3675447700833,10.615809735004383 64.33979671100215,10.650297290359314 64.3556527447628,10.682131956840788 64.36225942549642,10.63968573486549 64.35961675320297,10.610503957257471 64.36622343393658,10.626421290498207 64.37150877852346,10.602545290637103 64.38736481228412,10.573363513029085 64.38340080384395,10.56275195753526 64.38868614843084,10.581322179649455 64.39529282916445,10.56275195753526 64.40322084604477,10.499082624572312 64.39529282916445,10.483165291331574 64.38736481228412,10.451330624850101 64.40718485448494,10.536223068800698 64.4362542497128,10.56275195753526 64.42039821595215,10.586627957396367 64.41643420751198,10.607851068384015 64.392650156871,10.63968573486549 64.39132882072428,10.615809735004383 64.40850619063166,10.642338623738945 64.4111488629251,10.626421290498207 64.41643420751198,10.607851068384015 64.41643420751198,10.605198179510559 64.42436222439231,10.581322179649455 64.42436222439231,10.549487513167978 64.43889692200625,10.570710624155629 64.44153959429968,10.589280846269823 64.4362542497128,10.599892401763647 64.45607429191362,10.615809735004383 64.45739562806034,10.650297290359314 64.44021825815297,10.682131956840788 64.41247019907182,10.751107067550649 64.41511287136527,10.751107067550649 64.38736481228412,10.759065734171017 64.37679412311034,10.796206178399403 64.38472213999067,10.82008217826051 64.3675447700833,10.841305289248158 64.37150877852346,10.822735067133966 64.38868614843084,10.782941734032123 64.40454218219149,10.82008217826051 64.41511287136527,10.801511956146317 64.42832623283248,10.809470622766685 64.4362542497128,10.761718623044473 64.43229024127264,10.745801289803737 64.44418226659313,10.740495512056825 64.42832623283248,10.70070217895498 64.42436222439231,10.695396401208068 64.4362542497128,10.658255956979684 64.44418226659313,10.655603068106227 64.45607429191362,10.690090623461156 64.45739562806034,10.692743512334612 64.47721567026116,10.70866084557535 64.47721567026116,10.735189734309913 64.46532364494067,10.737842623183369 64.45739562806034,10.756412845297561 64.45607429191362,10.764371511917929 64.46532364494067,10.759065734171017 64.473251661821,10.769677289664841 64.48117967870132,10.812123511640142 64.473251661821,10.828040844880878 64.45343161962018,10.862528400235808 64.45343161962018,10.822735067133966 64.473251661821,10.838652400374702 64.47721567026116,10.793553289525947 64.49703571246198,10.788247511779035 64.51024907392919,10.835999511501246 64.50628506548902,10.873139955729634 64.4983570486087,10.894363066717283 64.46796631723412,10.907627511084563 64.47193032567428,10.891710177843827 64.49307170402182,10.88905728897037 64.50628506548902,10.907627511084563 64.50099972090214,10.907627511084563 64.5168557546628,10.950073733059863 64.50628506548902,10.973949732920968 64.49703571246198,10.947420844186407 64.52081976310296,10.976602621794424 64.53271178842346,10.960685288553687 64.5419611414505,10.934156399819125 64.57103053667836,10.918239066578387 64.5670665282382,10.907627511084563 64.57895855355869,10.944767955312951 64.58688657043902,10.947420844186407 64.59877859575951,10.9659910663006 64.60670661263984,11.00047862165553 64.59481458731935,11.00047862165553 64.5855652342923,11.02170173264318 64.58688657043902,11.072106621238847 64.56574519209148,11.072106621238847 64.53799713301034,11.082718176732671 64.53403312457017,11.072106621238847 64.51421308236935,11.090676843353041 64.51421308236935,11.098635509973409 64.52610510768984,11.1596519540629 64.49307170402182,11.16761062068327 64.49439304016853,11.188833731670918 64.48117967870132,11.191486620544374 64.46928765338083,11.1596519540629 64.44418226659313,11.191486620544374 64.43889692200625,11.223321287025849 64.45211028347346,11.244544398013499 64.4481462750333,11.29229639773571 64.46400230879395,11.342701286331376 64.46003830035379,11.342701286331376 64.44153959429968,11.294949286609166 64.4481462750333,11.294949286609166 64.44021825815297,11.34004839745792 64.4362542497128,11.31351950872336 64.38736481228412,11.279031953368428 64.37547278696363,11.223321287025849 64.3305473579751,11.212709731532023 64.31336998806773,11.23658573139313 64.31336998806773,11.27107328674806 64.35433140861609,11.332089730837552 64.37283011467018,11.337395508584464 64.39132882072428,11.37453595281285 64.39661416531116,11.393106174927045 64.37943679540379,11.377188841686307 64.37943679540379,11.358618619572113 64.36622343393658,11.387800397180133 64.36358076164314,11.409023508167781 64.3675447700833,11.387800397180133 64.40454218219149,11.371883063939395 64.40454218219149,11.350659952951744 64.41907687980543,11.385147508306677 64.42832623283248,11.38249461943322 64.43493291356609,11.406370619294325 64.44418226659313,11.446163952396168 64.43229024127264,11.52044484085294 64.4481462750333,11.517791951979484 64.4613596365005,11.49922172986529 64.46003830035379,11.480651507751098 64.46796631723412,11.462081285636906 64.45343161962018,11.440858174649255 64.45211028347346,11.443511063522712 64.46928765338083,11.424940841408517 64.47589433411444,11.443511063522712 64.48514368714149,11.462081285636906 64.5168557546628,11.512486174232572 64.51421308236935,11.536362174093679 64.51817709080952,11.52044484085294 64.53403312457017,11.509833285359116 64.52610510768984,11.491263063244922 64.52610510768984,11.49922172986529 64.53667579686362,11.48595728549801 64.5419611414505,11.523097729726397 64.54592514989066,11.52044484085294 64.55781717521116,11.573502618322063 64.55517450291771,11.544320840714047 64.53403312457017,11.557585285081327 64.53403312457017,11.621254618044276 64.56574519209148,11.72206439523561 64.58160122585214,11.783080839325102 64.58688657043902,11.780427950451646 64.59085057887918,11.716758617488697 64.58952924273247,11.692882617627593 64.59481458731935,11.650436395652292 64.57895855355869,11.639824840158468 64.58292256199886,11.610643062550452 64.57103053667836,11.621254618044276 64.58688657043902,11.610643062550452 64.5855652342923,11.629213284664644 64.61463462952017,11.602684395930083 64.61859863796033,11.546973729587503 64.60274260419968,11.552279507334415 64.59877859575951,11.589419951562801 64.60406394034639,11.602684395930083 64.5974572596128,11.594725729309713 64.58292256199886,11.552279507334415 64.56574519209148,11.536362174093679 64.56574519209148,11.491263063244922 64.57763721741198,11.48595728549801 64.5855652342923,11.4382052857758 64.60406394034639,11.432899508028886 64.61463462952017,11.398411952673957 64.63181199942754,11.3957590638005 64.64238268860132,11.411676397041237 64.6476680331882,11.385147508306677 64.65427471392181,11.379841730559763 64.66880941153573,11.393106174927045 64.68730811758984,11.41698217478815 64.67938010070951,11.4382052857758 64.69127212603,11.427593730281973 64.69920014291033,11.406370619294325 64.70052147905704,11.403717730420869 64.71241350437754,11.427593730281973 64.70844949593737,11.52044484085294 64.72826953813819,11.533709285220223 64.73751889116524,11.52840350747331 64.74941091648573,11.546973729587503 64.75601759721934,11.581461284942433 64.74412557189885,11.600031507056627 64.7414828996054,11.634519062411556 64.7533749249259,11.623907506917732 64.76130294180622,11.581461284942433 64.75601759721934,11.565543951701695 64.76130294180622,11.600031507056627 64.77187363098,11.629213284664644 64.76790962253983,11.650436395652292 64.77583763942016,11.663700840019574 64.76923095868655,11.708799950868329 64.77319496712671,11.72206439523561 64.7850869924472,11.740634617349803 64.77319496712671,11.793692394818926 64.77319496712671,11.849403061161507 64.7969790177677,11.783080839325102 64.80490703464802,11.780427950451646 64.79433634547425,11.740634617349803 64.79301500932753,11.745940395096717 64.80887104308819,11.703494173121417 64.80490703464802,11.676965284386856 64.81812039611523,11.639824840158468 64.81415638767507,11.639824840158468 64.8220844045554,11.796345283692382 64.83794043831605,11.775122172704734 64.84190444675622,11.809609728059664 64.85908181666359,11.796345283692382 64.8656884973972,11.756551950590541 64.84322578290293,11.719411506362153 64.83794043831605,11.655742173399206 64.8352977660226,11.671659506639942 64.85908181666359,11.708799950868329 64.86304582510375,11.690229728754137 64.87097384198408,11.897155060883719 64.91457793482589,11.952865727226298 64.9343979770267,12.021840837936159 64.9277912962931,12.037758171176897 64.94364733005375,12.064287059911457 64.94761133849391,12.074898615405282 64.95553935537424,12.096121726392932 64.9528966830808,12.106733281886756 64.9595033638144,12.146526614988598 64.96082469996112,12.175708392596617 64.95553935537424,12.191625725837355 64.9410046577603,12.167749725976249 64.93175530473326,12.199584392457723 64.93175530473326,12.242030614433022 64.93836198546687,12.247336392179934 64.9343979770267,12.287129725281776 64.9343979770267,12.295088391902144 64.9277912962931,12.372022169232373 64.91854194326605,12.440997279942234 64.88550853959802,12.456914613182972 64.88947254803819,12.390592391346567 64.92382728785293,12.316311502889794 64.93968332161359,12.300394169649056 64.94496866620047,12.252642169926846 64.94893267464063,12.24998928105339 64.94496866620047,12.199584392457723 64.94761133849391,12.188972836963899 64.95553935537424,12.15183239273551 64.96743138069473,12.117344837380582 64.9713953891349,12.085510170899106 64.96478870840129,12.05632839329109 64.9713953891349,12.024493726809615 64.96082469996112,12.029799504556527 64.95553935537424,12.00592350469542 64.94496866620047,11.952865727226298 64.94893267464063,11.910419505251 64.9277912962931,11.796345283692382 64.90400724565211,11.68757683988068 64.8775805227177,11.613295951423908 64.8656884973972,11.621254618044276 64.85908181666359,11.655742173399206 64.86172448895704,11.639824840158468 64.83794043831605,11.613295951423908 64.82604841299556,11.565543951701695 64.8220844045554,11.552279507334415 64.81283505152835,11.52044484085294 64.81679905996852,11.509833285359116 64.80887104308819,11.45942839676345 64.80887104308819,11.467387063383818 64.79301500932753,11.393106174927045 64.75205358877918,11.3533128418252 64.74544690804557,11.332089730837552 64.74544690804557,11.249850175760411 64.72826953813819,11.218015509278937 64.72562686584475,11.191486620544374 64.74412557189885,11.25780884238078 64.7533749249259,11.279031953368428 64.74808958033901,11.308213730976448 64.7599816056595,11.34004839745792 64.76130294180622,11.366577286192483 64.77319496712671,11.414329285914693 64.80094302620786,11.446163952396168 64.80887104308819,11.443511063522712 64.81415638767507,11.411676397041237 64.80622837079474,11.342701286331376 64.80490703464802,11.310866619849904 64.8101923792349,11.329436841964096 64.8220844045554,11.294949286609166 64.81679905996852,11.29229639773571 64.80887104308819,11.244544398013499 64.80622837079474,11.265767509001147 64.82472707684884,11.260461731254235 64.83133375758244,11.308213730976448 64.83794043831605,11.27107328674806 64.83926177446277,11.276379064494972 64.84586845519638,11.409023508167781 64.8656884973972,11.525750618599853 64.86304582510375,11.531056396346766 64.86965250583737,11.565543951701695 64.87097384198408,11.570849729448607 64.86700983354392,11.60533728480354 64.87890185886441,11.66635372889303 64.88682987574474,11.703494173121417 64.9026859095054,11.684923951007224 64.90664991794556,11.637171951285012 64.89475789262507,11.560238173954783 64.87890185886441,11.454122619016537 64.87097384198408,11.411676397041237 64.87361651427753,11.281684842241884 64.85379647207671,11.276379064494972 64.86700983354392,11.329436841964096 64.8907938841849,11.3533128418252 64.89475789262507,11.3533128418252 64.9026859095054,11.45942839676345 64.93571931317342,11.480651507751098 64.92646996014638,11.54166795184059 64.88682987574474,11.568196840575151 64.89211522033162,11.560238173954783 64.89872190106523,11.59737861818317 64.92382728785293,11.565543951701695 64.91854194326605,11.539015062967135 64.9026859095054,11.52044484085294 64.9158992709726,11.475345730004186 64.93571931317342,11.509833285359116 64.94893267464063,11.565543951701695 64.95686069152096,11.570849729448607 64.94364733005375,11.589419951562801 64.9595033638144,11.60533728480354 64.96082469996112,11.629213284664644 64.94496866620047,11.626560395791188 64.9343979770267,11.655742173399206 64.9343979770267,11.647783506778836 64.94364733005375,11.613295951423908 64.96478870840129,11.650436395652292 64.96875271684145,11.6743123955134 64.96082469996112,11.655742173399206 64.95157534693408,11.727370172982523 64.9528966830808,11.732675950729435 64.96743138069473,11.783080839325102 64.98328741445539,11.716758617488697 64.9846087506021,11.719411506362153 64.97535939757506,11.70084128424796 64.98328741445539,11.639824840158468 64.98064474216194,11.61860172917082 64.97668073372178,11.592072840436257 64.97668073372178,11.613295951423908 64.9965007759226,11.637171951285012 65.00442879280293,11.6743123955134 65.0097141373898,11.669006617766486 65.00046478436276,11.684923951007224 65.00046478436276,11.698188395374505 65.01632081812342,11.711452839741785 65.01632081812342,11.730023061855979 65.00046478436276,11.748593283970173 64.9965007759226,11.775122172704734 65.00310745665621,11.772469283831278 64.99253676748243,11.793692394818926 64.99517943977588,11.788386617072014 65.00839280124309,11.809609728059664 65.02028482656358,11.836138616794226 65.02028482656358,11.928989727365192 65.05728223867177,11.952865727226298 65.05860357481849,11.947559949479386 65.07313827243243,11.921031060744824 65.06653159169882,11.84675017228805 65.03746219647095,11.780427950451646 65.01632081812342,11.748593283970173 65.0097141373898,11.737981728476347 65.02424883500375,11.756551950590541 65.04539021335128,11.793692394818926 65.07049560013898,11.836138616794226 65.08635163389964,11.814915505806576 65.08635163389964,11.854708838908419 65.11409969298079,11.899807949757175 65.127313054448,11.905113727504087 65.13788374362177,11.984700393707772 65.16166779426275,11.990006171454684 65.1709171472898,12.019187949062703 65.16298913040947,12.035105282303439 65.14713309664882,12.003270615821965 65.11277835683407,11.990006171454684 65.11409969298079,11.950212838352842 65.1022076676603,11.995311949201596 65.10617167610046,11.990006171454684 65.08635163389964,12.013882171315789 65.09427965077997,12.043063948923809 65.0771022808726,12.066939948784913 65.07842361701931,12.06959283765837 65.08899430619309,12.053675504417633 65.10617167610046,12.08285728202565 65.1339197351816,12.088163059772562 65.11409969298079,12.1040803930133 65.11277835683407,12.13856794836823 65.11938503756767,12.114691948507126 65.12599171830128,12.109386170760212 65.13788374362177,12.119997726254038 65.15109710508898,12.11203905963367 65.17884516417013,12.117344837380582 65.18677318105046,12.154485281608967 65.19470119793078,12.159791059355879 65.20262921481111,12.202237281331179 65.21187856783816,12.226113281192283 65.21187856783816,12.242030614433022 65.19998654251766,12.265906614294128 65.19073718949062,12.276518169787952 65.1709171472898,12.295088391902144 65.16695313884964,12.2977412807756 65.15506111352914,12.234071947812652 65.11013568454062,12.300394169649056 65.11806370142095,12.337534613877445 65.11277835683407,12.329575947257077 65.09824365922013,12.300394169649056 65.08635163389964,12.234071947812652 65.0652102555521,12.17305550372316 65.05331823023161,12.12530350400095 65.05331823023161,12.093468837519476 65.06917426399227,11.976741727087404 65.07049560013898,11.960824393846666 65.0652102555521,12.077551504278738 65.06124624711194,12.117344837380582 65.04935422179145,12.098774615266388 65.04142620491112,12.133262170621318 65.04539021335128,12.159791059355879 65.04539021335128,12.181014170343529 65.03614086032424,12.19427861471081 65.01632081812342,12.175708392596617 64.9846087506021,12.210195947951547 64.99517943977588,12.212848836825003 65.02028482656358,12.181014170343529 65.04803288564473,12.247336392179934 65.05860357481849,12.252642169926846 65.05331823023161,12.321617280636707 65.06653159169882,12.326923058383619 65.08106628931276,12.385286613599655 65.0903156423398,12.411815502334218 65.08899430619309,12.427732835574954 65.0771022808726,12.459567502056428 65.0771022808726,12.480790613044078 65.08635163389964,12.494055057411359 65.10485033995374,12.480790613044078 65.10617167610046,12.44365016881569 65.08899430619309,12.401203946840392 65.09824365922013,12.43038572444841 65.1022076676603,12.448955946562602 65.11277835683407,12.483443501917534 65.11409969298079,12.502013724031727 65.12202770986111,12.539154168260113 65.13127706288816,12.586906167982324 65.12995572674144,12.586906167982324 65.13920507976849,12.655881278692185 65.16166779426275,12.671798611932921 65.17488115572996,12.714244833908221 65.19470119793078,12.738120833769326 65.1960225340775,12.77791416687117 65.21848524857177,12.793831500111907 65.21187856783816,12.79117861123845 65.22377059315865,12.825666166593379 65.25283998838651,12.857500833074855 65.27266003058733,12.93708749927854 65.30569343425536,12.960963499139645 65.30965744269552,12.966269276886557 65.31758545957585,12.942393277025452 65.33212015718979,12.83362483321375 65.27794537517421,12.801790166732275 65.25283998838651,12.76464972250389 65.23698395462586,12.751385278136606 65.2264132654521,12.677104389679833 65.1960225340775,12.639963945451449 65.18677318105046,12.502013724031727 65.1339197351816,12.41712128008113 65.13920507976849,12.353451947118181 65.15770378582259,12.369369280358917 65.17620249187668,12.409162613460762 65.18809451719717,12.440997279942234 65.18280917261029,12.472831946423709 65.18413050875701,12.509972390652095 65.1960225340775,12.475484835297166 65.1960225340775,12.459567502056428 65.20791455939799,12.425079946701498 65.20659322325128,12.422427057828042 65.2145212401316,12.44365016881569 65.21980658471848,12.422427057828042 65.23169861003898,12.387939502473111 65.22377059315865,12.342840391624357 65.22244925701193,12.334881725003989 65.23169861003898,12.353451947118181 65.23301994618569,12.401203946840392 65.24887597994635,12.46487327980334 65.2396266269193,12.507319501778639 65.2396266269193,12.509972390652095 65.2515186522398,12.462220390929884 65.24491197150618,12.414468391207674 65.25283998838651,12.419774168954586 65.25680399682668,12.462220390929884 65.25548266067996,12.422427057828042 65.26869602214717,12.372022169232373 65.25680399682668,12.390592391346567 65.26869602214717,12.361410613738549 65.26737468600045,12.345493280497813 65.25680399682668,12.321617280636707 65.25680399682668,12.295088391902144 65.24359063535947,12.276518169787952 65.22773460159881,12.247336392179934 65.23037727389226,12.326923058383619 65.26869602214717,12.329575947257077 65.28587339205454,12.364063502612005 65.30833610654881,12.385286613599655 65.30965744269552,12.419774168954586 65.30569343425536,12.446303057689146 65.31362145113569,12.451608835436058 65.32419214030946,12.472831946423709 65.32419214030946,12.470179057550252 65.33608416562996,12.425079946701498 65.31758545957585,12.40385683571385 65.3202281318693,12.422427057828042 65.33740550177667,12.422427057828042 65.345333518657,12.475484835297166 65.36251088856437,12.467526168676796 65.3704389054447,12.433038613321866 65.36118955241766,12.425079946701498 65.36251088856437,12.3401875027509 65.32419214030946,12.273865280914496 65.31758545957585,12.268559503167584 65.31230011498897,12.247336392179934 65.31758545957585,12.244683503306478 65.32815614874963,12.226113281192283 65.32947748489634,12.223460392318827 65.31758545957585,12.234071947812652 65.30040808966848,12.27121239204104 65.2898374004947,12.263253725420672 65.27266003058733,12.252642169926846 65.27266003058733,12.199584392457723 65.23698395462586,12.13856794836823 65.23037727389226,12.074898615405282 65.20791455939799,12.053675504417633 65.21055723169144,12.048369726670721 65.21848524857177,12.1040803930133 65.23698395462586,12.088163059772562 65.2396266269193,12.117344837380582 65.25680399682668,12.1040803930133 65.26341067756029,12.135915059494774 65.28058804746766,12.11203905963367 65.28455205590782,12.13856794836823 65.29644408122832,12.13856794836823 65.30833610654881,12.085510170899106 65.30437209810864,12.085510170899106 65.31362145113569,12.127956392874406 65.32551347645618,12.12530350400095 65.34665485480372,12.13856794836823 65.35061886324388,12.149179503862054 65.3704389054447,12.186319948090443 65.36515356085782,12.19427861471081 65.345333518657,12.218154614571915 65.35061886324388,12.196931503584267 65.36647489700454,12.223460392318827 65.37440291388486,12.231419058939196 65.36647489700454,12.27121239204104 65.38100959461848,12.265906614294128 65.39025894764552,12.212848836825003 65.37836692232503,12.178361281470073 65.37440291388486,12.165096837102793 65.38629493920536,12.186319948090443 65.40611498140618,12.247336392179934 65.43122036819388,12.348146169371269 65.46028976342174,12.353451947118181 65.46689644415535,12.326923058383619 65.46689644415535,12.342840391624357 65.49068049479634,12.27121239204104 65.46689644415535,12.273865280914496 65.4761457971824,12.252642169926846 65.46689644415535,12.24998928105339 65.48010980562256,12.268559503167584 65.48407381406273,12.287129725281776 65.49596583938322,12.231419058939196 65.48275247791601,12.22876617006574 65.4642537718619,12.178361281470073 65.4391483850742,12.19427861471081 65.46689644415535,12.234071947812652 65.49596583938322,12.234071947812652 65.50389385626355,12.260600836547216 65.5448552768119,12.239377725559565 65.5448552768119,12.226113281192283 65.55542596598568,12.263253725420672 65.57656734433321,12.289782614155232 65.58581669736026,12.324270169510163 65.57656734433321,12.324270169510163 65.54089126837174,12.366716391485461 65.5197498900242,12.37467505810583 65.5197498900242,12.448955946562602 65.47878846947584,12.451608835436058 65.46293243571519,12.435691502195322 65.45368308268814,12.44365016881569 65.41932834287338,12.475484835297166 65.41536433443322,12.48609639079099 65.40215097296601,12.509972390652095 65.39818696452585,12.504666612905183 65.37308157773815,12.54180705713357 65.3704389054447,12.536501279386657 65.39025894764552,12.512625279525551 65.38497360305864,12.52058394614592 65.40215097296601,12.496707946284815 65.40611498140618,12.49936083515827 65.4140429982865,12.470179057550252 65.43386304048732,12.456914613182972 65.45368308268814,12.48609639079099 65.45896842727502,12.478137724170622 65.44311239351437,12.502013724031727 65.44971907424798,12.536501279386657 65.4391483850742,12.539154168260113 65.44575506580782,12.515278168399007 65.45764709112831,12.54976572375394 65.4510404103947,12.568335945868132 65.4391483850742,12.552418612627395 65.40611498140618,12.565683056994676 65.41007898984634,12.592211945729236 65.40611498140618,12.578947501361956 65.41536433443322,12.581600390235412 65.4391483850742,12.592211945729236 65.44179105736765,12.63200527883108 65.41007898984634,12.666492834186009 65.39158028379224,12.706286167287853 65.36251088856437,12.698327500667485 65.38629493920536,12.613435056716886 65.43518437663404,12.639963945451449 65.42725635975371,12.653228389818729 65.43386304048732,12.64526972319836 65.44575506580782,12.759343944756978 65.45764709112831,12.77791416687117 65.4642537718619,12.65853416756564 65.45896842727502,12.626699501084168 65.45500441883486,12.602823501223062 65.4642537718619,12.663839945312553 65.48010980562256,12.653228389818729 65.48407381406273,12.592211945729236 65.47482446103568,12.581600390235412 65.49068049479634,12.552418612627395 65.50785786470371,12.581600390235412 65.51710721773075,12.592211945729236 65.51578588158404,12.624046612210712 65.52107122617092,12.626699501084168 65.52767790690453,12.586906167982324 65.52503523461108,12.568335945868132 65.55542596598568,12.5762946124885 65.58449536121354,12.56303016812122 65.5884593696537,12.54976572375394 65.56467531901272,12.552418612627395 65.53296325149141,12.533848390513201 65.51710721773075,12.49936083515827 65.50785786470371,12.459567502056428 65.51710721773075,12.517931057272463 65.55542596598568,12.536501279386657 65.57260333589305,12.539154168260113 65.58449536121354,12.52058394614592 65.58053135277338,12.504666612905183 65.56071131057256,12.446303057689146 65.52767790690453,12.440997279942234 65.52107122617092,12.398551057966936 65.53692725993157,12.385286613599655 65.54881928525207,12.379980835852741 65.56863932745289,12.401203946840392 65.57260333589305,12.414468391207674 65.58978070580042,12.385286613599655 65.57656734433321,12.366716391485461 65.60167273112091,12.366716391485461 65.6254567817619,12.350799058244725 65.62677811790861,12.440997279942234 65.69813026983157,12.507319501778639 65.73909169037992,12.581600390235412 65.71795031203239,12.58955905685578 65.69945160597828,12.605476390096518 65.69945160597828,12.570988834741588 65.67831022763075,12.581600390235412 65.67434621919058,12.61078216784343 65.6941662613914,12.634658167704536 65.69152358909795,12.64526972319836 65.68227423607091,12.602823501223062 65.66641820231025,12.613435056716886 65.6505621685496,12.624046612210712 65.66245419387009,12.642616834324905 65.67038221075042,12.637311056577992 65.64527682396272,12.706286167287853 65.64263415166927,12.74873238926315 65.63470613478894,12.743426611516238 65.61752876488157,12.775261277997714 65.60563673956108,12.783219944618082 65.59374471424059,12.807095944479187 65.60167273112091,12.759343944756978 65.61752876488157,12.761996833630434 65.63074212634878,12.793831500111907 65.63338479864223,12.751385278136606 65.64659816010943,12.743426611516238 65.64263415166927,12.700980389540941 65.65320484084305,12.653228389818729 65.6505621685496,12.655881278692185 65.67038221075042,12.671798611932921 65.68755958065779,12.63200527883108 65.69813026983157,12.626699501084168 65.71398630359222,12.608129278969974 65.71134363129877,12.608129278969974 65.72191432047255,12.539154168260113 65.75230505184713,12.581600390235412 65.76419707716762,12.602823501223062 65.78401711936844,12.61078216784343 65.80383716156926,12.671798611932921 65.81176517844959,12.685063056300205 65.78005311092828,12.714244833908221 65.7747677663414,12.72220350052859 65.78269578322173,12.690368834047117 65.79855181698238,12.693021722920573 65.80383716156926,12.719550611655134 65.79855181698238,12.730162167148958 65.80383716156926,12.693021722920573 65.81705052303647,12.685063056300205 65.84479858211762,12.677104389679833 65.81969319532992,12.663839945312553 65.8249785399168,12.629352389957624 65.82365720377008,12.608129278969974 65.81572918688975,12.597517723476148 65.8249785399168,12.605476390096518 65.84479858211762,12.629352389957624 65.85272659899795,12.642616834324905 65.89765202798647,12.663839945312553 65.92143607862745,12.716897722781678 65.9372921123881,12.716897722781678 65.92936409550778,12.740773722642782 65.94257745697499,12.801790166732275 65.96239749917581,12.809748833352643 65.96768284376269,12.844236388707575 65.9742895244963,12.86811238856868 65.97164685220285,12.86811238856868 65.95711215458893,12.899947055050152 65.95843349073564,12.921170166037804 65.94125612082827,12.939740388151996 65.93861344853482,12.93708749927854 65.9306854316545,12.960963499139645 65.92540008706762,13.02728572097605 65.92540008706762,13.045855943090242 65.91747207018729,13.053814609710614 65.90029470027991,13.072384831824806 65.88972401110614,13.093607942812454 65.88576000266598,13.128095498167387 65.89633069183975,13.141359942534667 65.86990396890532,13.18645905338342 65.82894254835696,13.183806164509964 65.86461862431844,13.165235942395771 65.87386797734548,13.157277275775403 65.8936880195463,13.162583053522315 65.90954405330696,13.133401275914299 65.918793406334,13.136054164787755 65.93861344853482,13.12544260929393 65.94257745697499,13.09626083168591 65.93332810394794,13.064426165204438 65.9372921123881,13.051161720837158 65.94654146541515,13.021979943229137 65.94522012926844,12.987492387874209 65.94654146541515,12.93708749927854 65.97032551605614,12.897294166176696 65.97032551605614,12.897294166176696 65.98353887752334,12.934434610405084 65.99410956669712,12.953004832519277 66.00732292816433,12.93708749927854 66.02185762577827,12.953004832519277 66.03507098724548,12.95035194364582 66.04696301256597,12.990145276747665 66.06017637403318,13.024632832102593 66.06414038247334,13.045855943090242 66.07735374394055,12.95035194364582 66.06281904632662,12.897294166176696 66.05092702100613,12.857500833074855 66.04828434871268,12.846889277581031 66.0548910294463,12.807095944479187 66.05224835715285,12.655881278692185 66.0297856426586,12.653228389818729 66.03507098724548,12.83362483321375 66.0681043909135,12.714244833908221 66.05224835715285,12.746079500389694 66.06281904632662,12.677104389679833 66.06017637403318,12.674451500806377 66.0681043909135,12.703633278414397 66.08131775238071,12.759343944756978 66.10113779458153,12.823013277719923 66.11963650063564,12.823013277719923 66.12756451751596,12.918517277164348 66.14077787898317,12.998103943368033 66.14474188742334,12.99279816562112 66.15002723201022,13.067079054077894 66.15795524889054,13.075037720698262 66.14077787898317,13.093607942812454 66.14606322357005,13.08299638731863 66.15266990430366,13.09626083168591 66.16191925733071,13.191764831130332 66.18173929953153,13.247475497472912 66.18966731641186,13.22890527535872 66.19495266099874,13.29788038606858 66.22137938393317,13.321756385929685 66.22666472852005,13.356243941284617 66.22666472852005,13.377467052272266 66.21873671163972,13.462359496222863 66.23062873696021,13.504805718198163 66.23062873696021,13.5207230514389 66.2425207622807,13.579086606654936 66.23459274540038,13.584392384401848 66.217415375493,13.57643371778148 66.20684468631923,13.549904829046916 66.20684468631923,13.499499940451251 66.19098865255857,13.526028829185812 66.19098865255857,13.608268384262953 66.1989166694389,13.597656828769129 66.1738112826512,13.549904829046916 66.14606322357005,13.539293273553092 66.13549253439629,13.536640384679636 66.10906581146186,13.560516384540744 66.1051018030217,13.565822162287656 66.1236005090758,13.597656828769129 66.14606322357005,13.642755939617885 66.16191925733071,13.682549272719726 66.15795524889054,13.714383939201202 66.16191925733071,13.74887149455613 66.16984727421104,13.801929272025255 66.15399124045038,13.815193716392535 66.14077787898317,13.841722605127096 66.16191925733071,13.788664827657975 66.18306063567825,13.754177272303043 66.18570330797169,13.682549272719726 66.1738112826512,13.66663193947899 66.19098865255857,13.616227050883321 66.17777529109136,13.618879939756777 66.19363132485202,13.650714606238253 66.20684468631923,13.626838606377145 66.21345136705284,13.640103050744429 66.22137938393317,13.597656828769129 66.22666472852005,13.658673272858621 66.23327140925366,13.717036828074658 66.2425207622807,13.793970605404887 66.2425207622807,13.820499494139447 66.23062873696021,13.770094605543779 66.20552335017251,13.76213593892341 66.19363132485202,13.783359049911063 66.18966731641186,13.791317716531431 66.20684468631923,13.847028382874008 66.22270072007989,13.966408382179537 66.24648477072087,13.966408382179537 66.26234080448152,13.982325715420274 66.27159015750857,14.030077715142486 66.27555416594873,14.045995048383222 66.29008886356267,14.088441270358523 66.29141019970939,14.128234603460363 66.3046235611766,14.122928825713451 66.31519425035037,14.149457714448015 66.33633562869791,14.122928825713451 66.34029963713807,14.11762304796654 66.33237162025775,14.019466159648662 66.3046235611766,13.992937270914098 66.31123024191021,13.93722660457152 66.30330222502988,13.910697715836957 66.28744619126923,13.905391938090045 66.27026882136185,13.873557271608572 66.27555416594873,13.844375494000552 66.27159015750857,13.809887938645623 66.27555416594873,13.740912827935762 66.25837679604136,13.74887149455613 66.27159015750857,13.770094605543779 66.27423282980202,13.770094605543779 66.29141019970939,13.743565716809218 66.2927315358561,13.754177272303043 66.27819683824218,13.72234260582157 66.27423282980202,13.727648383568482 66.25837679604136,13.616227050883321 66.23855675384054,13.573780828908024 66.2544127876012,13.579086606654936 66.26630481292169,13.640103050744429 66.28744619126923,13.565822162287656 66.29008886356267,13.552557717920372 66.27159015750857,13.512764384818531 66.25837679604136,13.4782768294636 66.2544127876012,13.462359496222863 66.24516343457415,13.380119941145722 66.23723541769382,13.364202607904986 66.24912744301432,13.316450608182773 66.25044877916103,13.244822608599456 66.21873671163972,13.15993016464886 66.19363132485202,13.035244387596418 66.1738112826512,13.019327054355681 66.17645395494465,13.008715498861857 66.20155934173235,13.02728572097605 66.20155934173235,13.101566609432822 66.23459274540038,13.18645905338342 66.25837679604136,13.183806164509964 66.26234080448152,13.114831053800103 66.24912744301432,13.133401275914299 66.25969813218808,13.199723497750703 66.2795181743889,13.252781275219824 66.28348218282906,13.321756385929685 66.29669554429627,13.382772830019178 66.30330222502988,13.414607496500654 66.30065955273643,13.4782768294636 66.30330222502988,13.499499940451251 66.30726623347005,13.555210606793828 66.30330222502988,13.5631692734142 66.30726623347005,13.502152829324707 66.31915825879054,13.446442162982127 66.31915825879054,13.427871940867934 66.32840761181758,13.483582607210511 66.34426364557824,13.45705371847595 66.34294230943152,13.427871940867934 66.3482276540184,13.403995941006826 66.33633562869791,13.366855496778442 66.3350142925512,13.36154971903153 66.32708627567087,13.236863941979088 66.30726623347005,13.133401275914299 66.30065955273643,13.112178164926647 66.3046235611766,13.144012831408123 66.31123024191021,13.165235942395771 66.32840761181758,13.144012831408123 66.33237162025775,13.104219498306279 66.32047959493725,13.098913720559366 66.31123024191021,13.000756832241489 66.33105028411103,12.990145276747665 66.3482276540184,13.003409721114945 66.3601196793389,13.085649276192086 66.37597571309955,13.133401275914299 66.39711709144709,13.157277275775403 66.40108109988725,13.141359942534667 66.4288291589684,13.149318609155035 66.43675717584873,13.088302165065542 66.45261320960938,13.08299638731863 66.46450523492987,13.114831053800103 66.45789855419626,13.165235942395771 66.46186256263643,13.151971498028491 66.46979057951675,13.101566609432822 66.47375458795692,13.098913720559366 66.49489596630445,13.043203054216786 66.49093195786429,13.02728572097605 66.5094306639184,12.971575054633469 66.5226440253856,12.995451054494577 66.53189337841265,13.024632832102593 66.52792936997248,13.090955053938998 66.5477494121733,13.12544260929393 66.55039208446675,13.122789720420474 66.53850005914626,13.210335053244528 66.51471600850527,13.218293719864896 66.49093195786429,13.239516830852544 66.48961062171757,13.250128386346368 66.48036126869053,13.236863941979088 66.46054122648971,13.21564083099144 66.45261320960938,13.250128386346368 66.4539345457561,13.25543416409328 66.44600652887577,13.350938163537705 66.46186256263643,13.419913274247566 66.46979057951675,13.33236794142351 66.47375458795692,13.295227497195125 66.46450523492987,13.260739941840193 66.46846924337004,13.281963052827845 66.4724332518102,13.274004386207476 66.48564661327741,13.311144830435861 66.50546665547823,13.292574608321669 66.50678799162495,13.258087052966737 66.52660803382577,13.33236794142351 66.53057204226593,13.350938163537705 66.54246406758642,13.37481416339881 66.53850005914626,13.425219051994478 66.53982139529298,13.438483496361759 66.54642807602659,13.549904829046916 66.54246406758642,13.613574162009865 66.52792936997248,13.634797272997517 66.51868001694544,13.66663193947899 66.51471600850527,13.661326161732077 66.5345360507061,13.552557717920372 66.55567742905363,13.472971051716687 66.5596414374938,13.50745860707162 66.58342548813478,13.53398749580618 66.58342548813478,13.560516384540744 66.59531751345527,13.656020383985165 66.6032455303356,13.717036828074658 66.59928152189543,13.732954161315394 66.60853087492248,13.701119494833918 66.61249488336264,13.58969816214876 66.60853087492248,13.560516384540744 66.60720953877576,13.496847051577795 66.5913535050151,13.454400829602495 66.56360544593396,13.433177718614846 66.5596414374938,13.337673719170422 66.5596414374938,13.292574608321669 66.5477494121733,13.223599497611808 66.55832010134708,13.207682164371072 66.55567742905363,13.18645905338342 66.56756945437412,13.212987942117984 66.57549747125445,13.218293719864896 66.59796018574872,13.247475497472912 66.59531751345527,13.25543416409328 66.59928152189543,13.22890527535872 66.61117354721593,13.258087052966737 66.62438690868314,13.276657275080932 66.61117354721593,13.289921719448213 66.61645889180281,13.281963052827845 66.6283509171233,13.313797719309317 66.62306557253642,13.303186163815493 66.63231492556346,13.372161274525354 66.63099358941675,13.380119941145722 66.63627893400363,13.321756385929685 66.64420695088396,13.289921719448213 66.64420695088396,13.274004386207476 66.63760027015034,13.223599497611808 66.63231492556346,13.189111942256876 66.65213496776428,13.165235942395771 66.65742031235116,13.197070608877247 66.6719550099651,13.223599497611808 66.67724035455198,13.260739941840193 66.66799100152494,13.313797719309317 66.66931233767166,13.335020830296965 66.66534832923149,13.369508385651898 66.66931233767166,13.36154971903153 66.64949229547084,13.390731496639546 66.64552828703067,13.385425718892634 66.66006298464461,13.406648829880282 66.653456303911,13.425219051994478 66.66138432079133,13.523375940312356 66.65609897620445,13.518070162565444 66.64552828703067,13.555210606793828 66.64420695088396,13.536640384679636 66.66799100152494,13.49419416270434 66.67724035455198,13.45705371847595 66.67591901840527,13.451747940729039 66.6838470352856,13.390731496639546 66.68913237987248,13.289921719448213 66.69573906060609,13.274004386207476 66.70498841363313,13.295227497195125 66.70763108592658,13.25543416409328 66.71291643051346,13.268698608460564 66.71688043895362,13.21564083099144 66.72084444739379,13.226252386485264 66.72612979198067,13.281963052827845 66.73273647271428,13.324409274803141 66.73009380042083,13.380119941145722 66.734057808861,13.425219051994478 66.72612979198067,13.454400829602495 66.73009380042083,13.472971051716687 66.71820177510034,13.50745860707162 66.72612979198067,13.531334606932724 66.72480845583395,13.528681718059268 66.70366707748641,13.568475051161112 66.69309638831264,13.592351051022217 66.69309638831264,13.640103050744429 66.6970603967528,13.714383939201202 66.69970306904625,13.714383939201202 66.70763108592658,13.687855050466638 66.71291643051346,13.72234260582157 66.71688043895362,13.807235049772167 66.72084444739379,13.902739049216589 66.72612979198067,13.902739049216589 66.73009380042083,13.764788827796867 66.73273647271428,13.72234260582157 66.73009380042083,13.69316082821355 66.72084444739379,13.671937717225902 66.72480845583395,13.671937717225902 66.71688043895362,13.600309717642585 66.7089524220733,13.57643371778148 66.7089524220733,13.552557717920372 66.72480845583395,13.5631692734142 66.74594983418149,13.54725194017346 66.75387785106182,13.592351051022217 66.7591631956487,13.743565716809218 66.75123517876837,13.76213593892341 66.75387785106182,13.613574162009865 66.77105522096919,13.53398749580618 66.76312720408886,13.54725194017346 66.77369789326264,13.510111495945075 66.77501922940935,13.523375940312356 66.78558991858313,13.496847051577795 66.78955392702329,13.502152829324707 66.8027672884905,13.610921273136409 66.80540996078395,13.62418571750369 66.81069530537083,13.701119494833918 66.81333797766428,13.719689716948114 66.80540996078395,13.759483050049955 66.8027672884905,13.820499494139447 66.79483927161017,13.998243048661013 66.79748194390362,13.982325715420274 66.80673129693066,13.945185271191889 66.81069530537083,13.905391938090045 66.80673129693066,13.823152383012903 66.80937396922411,13.743565716809218 66.83183668371836,13.767441716670323 66.83580069215853,13.740912827935762 66.84372870903886,13.706425272580834 66.83051534757165,13.66663193947899 66.83051534757165,13.70907816145429 66.83976470059869,13.695813717087006 66.85165672591918,13.717036828074658 66.85958474279951,13.701119494833918 66.87147676812,13.658673272858621 66.88072612114705,13.648061717364797 66.90054616334787,13.629491495250601 66.9084741802282,13.571127940034568 66.90715284408148,13.54725194017346 66.89922482720115,13.53398749580618 66.90318883564132,13.544599051300004 66.93225823086918,13.496847051577795 66.93490090316263,13.483582607210511 66.94943560077655,13.504805718198163 66.95604228151016,13.54725194017346 66.95339960921672,13.555210606793828 66.94547159233639,13.536640384679636 66.94018624774951,13.555210606793828 66.93622223930934,13.610921273136409 66.95339960921672,13.727648383568482 66.94415025618967,13.801929272025255 66.96132762609705,13.793970605404887 66.96925564297737,13.740912827935762 66.96793430683066,13.72234260582157 66.97454098756425,13.746218605682675 66.98114766829787,13.81254082751908 66.98511167673803,13.862945716114748 66.98246900444458,13.873557271608572 67.00096771049868,13.902739049216589 67.00096771049868,13.92130927133078 67.00889572737901,13.992937270914098 67.01021706352573,14.003548826407926 67.00096771049868,13.963755493306081 66.98246900444458,13.945185271191889 66.96793430683066,13.89478038259622 66.97189831527082,13.905391938090045 66.96132762609705,13.905391938090045 66.94547159233639,13.945185271191889 66.95207827307,13.982325715420274 66.98114766829787,14.01416038190175 66.98643301288475,13.992937270914098 66.96925564297737,14.011507493028294 66.96132762609705,14.038036381762854 66.98114766829787,14.02742482626903 66.9890756851782,14.061912381623959 66.99039702132491,14.024771937395574 67.01814508040606,14.016813270775206 67.03267977802,14.022119048522118 67.04985714792737,14.04068927063631 67.04192913104704,14.038036381762854 67.06703451783474,14.051300826130134 67.08156921544868,14.077829714864698 67.06307050939458,14.101705714725803 67.0577851648077,14.11762304796654 67.03796512260688,14.125581714586907 67.0141810719659,14.138846158954188 66.99436102976507,14.157416381068384 67.00625305508557,14.16006926994184 66.98643301288475,14.183945269802944 66.99700370205852,14.21312704741096 66.99039702132491,14.239655936145525 67.00096771049868,14.226391491778244 67.00625305508557,14.255573269386261 67.02210908884622,14.274143491500453 67.05382115636753,14.237003047272069 67.07760520700852,14.279449269247365 67.07760520700852,14.308631046855385 67.06703451783474,14.353730157704138 67.07760520700852,14.428011046160911 67.07892654315523,14.481068823630036 67.06307050939458,14.486374601376948 67.05514249251425,14.52086215673188 67.0577851648077,14.531473712225704 67.06307050939458,14.571267045327545 67.04985714792737,14.584531489694829 67.03267977802,14.613713267302845 67.03400111416671,14.603101711809021 67.04192913104704,14.61106037842939 67.05117848407409,14.584531489694829 67.0709985262749,14.54739104546644 67.0709985262749,14.499639045744228 67.07496253471507,14.489027490250404 67.06967719012819,14.446581268275107 67.07892654315523,14.446581268275107 67.08685456003556,14.406787935173263 67.09478257691589,14.343118602210314 67.07892654315523,14.303325269108473 67.09213990462244,14.282102158120821 67.08685456003556,14.250267491639349 67.08685456003556,14.247614602765893 67.09213990462244,14.274143491500453 67.09874658535605,14.27679638037391 67.11063861067655,14.300672380235017 67.10006792150277,14.308631046855385 67.1264946444372,14.340465713336858 67.14763602278474,14.31924260234921 67.15952804810523,14.337812824463402 67.17274140957244,14.396176379679439 67.1767054180126,14.438622601654739 67.1952041240667,14.483721712503492 67.19652546021342,14.462498601515843 67.18066942645277,14.502291934617684 67.18331209874621,14.571267045327545 67.17934809030605,14.571267045327545 67.18727610718638,14.621671933923214 67.19652546021342,14.642895044910862 67.18066942645277,14.709217266747267 67.17934809030605,14.727787488861463 67.1885974433331,14.648200822657774 67.19124011562654,14.616366156176301 67.20445347709375,14.544738156592985 67.19916813250687,14.515556378984968 67.20445347709375,14.542085267719528 67.20973882168063,14.62432482279667 67.2203095108544,14.66677104477197 67.21766683856096,14.703911489000355 67.21238149397408,14.73574615548183 67.21634550241424,14.751663488722567 67.22823752773473,14.794109710697864 67.24012955305523,14.823291488305884 67.24012955305523,14.841861710420076 67.22823752773473,14.902878154509569 67.22955886388145,14.974506154092886 67.24937890608227,14.979811931839798 67.24012955305523,15.006340820574358 67.24012955305523,14.940018598737954 67.2203095108544,14.950630154231781 67.20445347709375,14.897572376762657 67.17934809030605,14.886960821268833 67.15952804810523,14.921448376623761 67.1516000312249,14.947977265358325 67.1516000312249,14.955935931978694 67.12781598058392,14.97185326521943 67.11592395526343,15.001035042827446 67.11988796370359,14.974506154092886 67.15556403966507,14.926754154370673 67.16217072039868,14.918795487750305 67.16745606498556,14.94532437648487 67.19256145177326,14.966547487472518 67.2018108048003,15.008993709447815 67.21238149397408,15.02756393156201 67.22823752773473,15.003687931700902 67.22955886388145,15.019605264941642 67.23748688076178,15.09123326452496 67.23616554461506,15.123067931006432 67.22823752773473,15.133679486500256 67.20973882168063,15.15755548636136 67.20841748553391,15.207960374957029 67.2203095108544,15.255712374679241 67.20841748553391,15.266323930173066 67.19916813250687,15.298158596654538 67.19256145177326,15.388356818352051 67.1885974433331,15.420191484833524 67.16745606498556,15.377745262858223 67.12781598058392,15.385703929478595 67.12385197214375,15.417538595960067 67.13574399746425,15.385703929478595 67.10271059379622,15.420191484833524 67.09874658535605,15.433455929200804 67.10271059379622,15.457331929061912 67.09213990462244,15.467943484555736 67.10271059379622,15.438761706947716 67.11063861067655,15.452026151314996 67.11988796370359,15.444067484694628 67.13045865287737,15.44937326244154 67.14763602278474,15.47855504004956 67.16481339269211,15.481207928923016 67.18463343489293,15.467943484555736 67.19256145177326,15.441414595821172 67.19916813250687,15.43610881807426 67.20841748553391,15.396315484972419 67.21238149397408,15.401621262719331 67.22163084700112,15.375092373984767 67.21766683856096,15.351216374123663 67.22163084700112,15.42284437370698 67.24409356149539,15.444067484694628 67.23748688076178,15.430803040327348 67.22559485544129,15.494472373290296 67.23352287232161,15.486513706669928 67.2454148976421,15.44937326244154 67.24409356149539,15.430803040327348 67.25994959525605,15.385703929478595 67.2573069229626,15.351216374123663 67.24805756993555,15.329993263136014 67.23616554461506,15.295505707781082 67.22823752773473,15.27693548566689 67.23352287232161,15.239795041438505 67.23352287232161,15.27693548566689 67.2454148976421,15.314075929895278 67.24145088920194,15.343257707503295 67.24937890608227,15.348563485250207 67.26391360369621,15.231836374818133 67.26787761213637,15.226530597071221 67.2573069229626,15.1734728196021 67.25334291452243,15.115109264386064 67.27316295672325,15.04082837592929 67.26919894828309,15.04082837592929 67.2758056290167,15.077968820157675 67.2824123097503,15.085927486778044 67.27844830131014,15.120415042132976 67.28637631819046,15.1734728196021 67.29034032663063,15.20000170833666 67.30619636039128,15.226530597071221 67.30619636039128,15.258365263552697 67.31412437727161,15.258365263552697 67.34187243635276,15.229183485944677 67.34187243635276,15.229183485944677 67.32998041103227,15.207960374957029 67.32998041103227,15.197348819463205 67.31808838571177,15.160208375234816 67.29430433507079,15.141638153120624 67.29430433507079,15.168167041855188 67.3260164025921,15.154902597487904 67.32733773873882,15.112456375512608 67.32205239415194,15.038175487055835 67.31808838571177,14.987770598460166 67.29694700736424,15.019605264941642 67.29430433507079,14.990423487333622 67.28901899048391,14.974506154092886 67.29430433507079,14.92940704324413 67.29034032663063,14.8949194878892 67.29694700736424,14.815332821685516 67.29430433507079,14.791456821824408 67.28637631819046,14.86573771028118 67.2824123097503,14.83920882154662 67.26787761213637,14.794109710697864 67.26391360369621,14.722481711114547 67.24145088920194,14.69329993350653 67.24937890608227,14.690647044633074 67.25598558681588,14.719828822241091 67.26127093140276,14.717175933367635 67.29430433507079,14.733093266608375 67.30223235195112,14.722481711114547 67.3128030411249,14.714523044494179 67.30487502424457,14.669423933645426 67.29430433507079,14.605754600682477 67.28901899048391,14.632283489417038 67.28505498204375,14.56065548983372 67.27316295672325,14.526167934478792 67.27712696516342,14.4651514903893 67.27316295672325,14.428011046160911 67.26523493984293,14.414746601793631 67.26919894828309,14.316589713475754 67.25202157837572,14.311283935728841 67.26523493984293,14.337812824463402 67.26919894828309,14.404135046299807 67.28637631819046,14.382911935312158 67.29430433507079,14.398829268552895 67.31016036883145,14.430663935034367 67.30619636039128,14.473110157009668 67.31940972185849,14.489027490250404 67.33526575561915,14.565961267580633 67.35904980626013,14.568614156454089 67.3696204954339,14.632283489417038 67.38547652919456,14.640242156037406 67.40001122680849,14.61106037842939 67.39604721836832,14.573919934201001 67.40397523524865,14.589837267441741 67.41190325212898,14.629630600543582 67.41058191598226,14.640242156037406 67.43568730276996,14.685341266886162 67.44361531965029,14.709217266747267 67.43965131121013,14.738399044355287 67.44361531965029,14.727787488861463 67.43304463047652,14.791456821824408 67.43700863891668,14.794109710697864 67.44493665579701,14.860431932534269 67.43568730276996,14.86573771028118 67.42908062203635,14.8524732659139 67.40793924368882,14.820638599432428 67.38679786534128,14.86573771028118 67.38679786534128,14.863084821407725 67.39868989066177,14.910836821129937 67.4317232943298,14.947977265358325 67.42908062203635,14.974506154092886 67.44757932809046,15.056745709170027 67.45154333653062,15.051439931423115 67.4568286811175,14.98511770958671 67.45550734497078,14.940018598737954 67.44757932809046,14.82594437717934 67.46079268955766,14.767580821963303 67.45154333653062,14.703911489000355 67.45550734497078,14.65350660040469 67.47664872331832,14.658812378151602 67.48061273175848,14.775539488583671 67.525538160747,14.932059932117586 67.57442759817569,15.054092820296571 67.59028363193634,15.093886153398415 67.58631962349618,15.125720819879888 67.5625355728552,15.149596819740992 67.56517824514864,15.154902597487904 67.55460755597487,15.136332375373712 67.54139419450766,15.083274597904587 67.54139419450766,15.032869709308923 67.57046358973552,15.001035042827446 67.57707027046914,14.990423487333622 67.5625355728552,14.99838215395399 67.55725022826832,15.02756393156201 67.55460755597487,15.030216820435466 67.54139419450766,15.077968820157675 67.52818083304045,15.030216820435466 67.5123247992798,15.008993709447815 67.49911143781259,14.92940704324413 67.49118342093226,14.977159042966342 67.48457674019865,15.01164659832127 67.48854074863881,15.054092820296571 67.50836079083963,15.083274597904587 67.50968212698635,15.15755548636136 67.53214484148062,15.202654597210117 67.52950216918717,15.202654597210117 67.51628880771996,15.239795041438505 67.50836079083963,15.239795041438505 67.50439678239947,15.18673726396938 67.49646876551914,15.15755548636136 67.5004327739593,15.141638153120624 67.48854074863881,15.176125708475556 67.48325540405193,15.165514152981732 67.46739937029128,15.128373708753344 67.45947135341095,15.138985264247168 67.44757932809046,15.133679486500256 67.43304463047652,15.146943930867536 67.4317232943298,15.15755548636136 67.45286467267734,15.20000170833666 67.46343536185111,15.226530597071221 67.47664872331832,15.218571930450853 67.4872194124921,15.239795041438505 67.49646876551914,15.279588374540346 67.49646876551914,15.29019993003417 67.50439678239947,15.401621262719331 67.49646876551914,15.44937326244154 67.48854074863881,15.473249262302648 67.48061273175848,15.47855504004956 67.46872070643799,15.473249262302648 67.44361531965029,15.518348373151401 67.42775928588964,15.539571484139053 67.40793924368882,15.544877261885965 67.37094183158062,15.584670594987806 67.37358450387407,15.58201770611435 67.34980045323309,15.589976372734718 67.34715778093964,15.635075483583474 67.3696204954339,15.61119948372237 67.37358450387407,15.592629261608174 67.40001122680849,15.65099281682421 67.40793924368882,15.68017459443223 67.42379527744947,15.722620816407527 67.43700863891668,15.696091927672967 67.43700863891668,15.658951483444579 67.42775928588964,15.661604372318035 67.41983126900931,15.63772837245693 67.41190325212898,15.584670594987806 67.40793924368882,15.571406150620525 67.41190325212898,15.542224373012509 67.43700863891668,15.521001262024857 67.43965131121013,15.515695484277945 67.46079268955766,15.55548881737979 67.46475669799783,15.584670594987806 67.47664872331832,15.552835928506333 67.47136337873144,15.528959928645229 67.47664872331832,15.53426570639214 67.4872194124921,15.58201770611435 67.51761014386668,15.68017459443223 67.55328621982815,15.765067038382828 67.5625355728552,15.81016614923158 67.57310626202897,15.844653704586513 67.57046358973552,15.892405704308722 67.57839160661585,15.865876815574161 67.58631962349618,15.918934593043286 67.59424764037651,15.88709992656181 67.59424764037651,15.847306593459969 67.59028363193634,15.844653704586513 67.58631962349618,15.78363726049702 67.5810342789093,15.778331482750108 67.57442759817569,15.733232371901352 67.57046358973552,15.666910150064947 67.5625355728552,15.587323483861262 67.5374301860675,15.518348373151401 67.50836079083963,15.473249262302648 67.525538160747,15.46529059568228 67.53346617762733,15.433455929200804 67.52818083304045,15.385703929478595 67.53610884992078,15.356522151870575 67.53214484148062,15.284894152287258 67.5374301860675,15.223877708197765 67.54932221138799,15.213266152703941 67.56121423670848,15.226530597071221 67.58235561505602,15.213266152703941 67.59028363193634,15.237142152565049 67.59028363193634,15.215919041577397 67.59821164881667,15.253059485805785 67.606139665697,15.242447930311961 67.61671035487078,15.30346437440145 67.61935302716421,15.393662596098963 67.59821164881667,15.425497262580436 67.59689031266996,15.441414595821172 67.57442759817569,15.452026151314996 67.59028363193634,15.433455929200804 67.60878233799045,15.398968373845875 67.60878233799045,15.29019993003417 67.63785173321831,15.268976819046522 67.63917306936503,15.226530597071221 67.62331703560437,15.194695930589749 67.62331703560437,15.15755548636136 67.6312450524847,15.231836374818133 67.68409849835355,15.279588374540346 67.69070517908716,15.324687485389102 67.68409849835355,15.33264615200947 67.69863319596749,15.26367104129961 67.69863319596749,15.247753708058873 67.6999545321142,15.26367104129961 67.71845323816831,15.282241263413802 67.72241724660847,15.311423041021822 67.7369519442224,15.348563485250207 67.73166659963552,15.401621262719331 67.7118465574347,15.398968373845875 67.70391854055437,15.462637706808824 67.69599052367404,15.526307039771769 67.68013448991339,15.536918595265597 67.68277716220683,15.502431039910665 67.6999545321142,15.544877261885965 67.71052522128798,15.627116816963106 67.686741170647,15.653645705697667 67.69070517908716,15.616505261469282 67.69863319596749,15.571406150620525 67.71581056587486,15.547530150759421 67.71977457431503,15.473249262302648 67.71581056587486,15.446720373568084 67.73166659963552,15.406927040466243 67.74752263339617,15.4095799293397 67.75280797798305,15.444067484694628 67.7554506502765,15.53426570639214 67.76866401174371,15.613852372595826 67.76073599486338,15.674868816685319 67.7369519442224,15.712009260913703 67.7303452634888,15.75710837176246 67.7303452634888,15.759761260635916 67.7118465574347,15.778331482750108 67.6999545321142,15.834042149092689 67.68013448991339,15.855265260080337 67.71052522128798,15.818124815851949 67.70391854055437,15.78363726049702 67.71448922972814,15.78363726049702 67.74091595266256,15.72792659415444 67.74884396954289,15.661604372318035 67.77262802018387,15.61119948372237 67.7805560370642,15.571406150620525 67.7805560370642,15.43610881807426 67.80962543229207,15.412232818213155 67.82151745761256,15.420191484833524 67.83340948293305,15.430803040327348 67.82548146605272,15.44937326244154 67.83340948293305,15.452026151314996 67.8492655166937,15.425497262580436 67.87304956733469,15.428150151453892 67.8492655166937,15.404274151592787 67.84133749981338,15.383051040605139 67.8743709034814,15.372439485111311 67.86908555889453,15.375092373984767 67.83737349137321,15.396315484972419 67.83340948293305,15.375092373984767 67.80169741541174,15.306117263274906 67.78980539009125,15.29019993003417 67.77791336477075,15.237142152565049 67.76073599486338,15.197348819463205 67.7554506502765,15.192043041716293 67.74752263339617,15.207960374957029 67.7369519442224,15.168167041855188 67.71845323816831,15.146943930867536 67.71845323816831,15.115109264386064 67.70391854055437,15.101844820018783 67.70788254899453,15.054092820296571 67.68806250679371,14.98511770958671 67.67617048147322,14.947977265358325 67.66295712000601,14.860431932534269 67.65502910312568,14.764927933089847 67.65899311156585,14.786151044077496 67.66427845615273,14.733093266608375 67.66692112844618,14.73574615548183 67.6748491453265,14.791456821824408 67.69070517908716,14.873696376901552 67.70391854055437,14.8949194878892 67.71052522128798,14.884307932395377 67.71977457431503,14.79941548844478 67.71581056587486,14.804721266191692 67.72770259119535,14.762275044216391 67.72373858275519,14.788803932950952 67.73959461651584,14.889613710142289 67.73563060807568,14.977159042966342 67.75148664183634,15.038175487055835 67.74487996110273,15.09123326452496 67.75148664183634,15.14429104199408 67.76337866715683,15.083274597904587 67.76337866715683,15.01164659832127 67.75941465871666,15.030216820435466 67.76998534789043,14.993076376207078 67.76866401174371,14.995729265080534 67.77659202862404,15.04082837592929 67.78584138165108,15.043481264802747 67.7924480623847,14.97185326521943 67.78584138165108,14.82594437717934 67.76866401174371,14.820638599432428 67.77659202862404,14.873696376901552 67.78452004550437,14.833903043799708 67.78848405394453,14.836555932673164 67.8056614238519,14.79941548844478 67.7924480623847,14.75696926646948 67.80169741541174,14.78349815520404 67.82548146605272,14.77023371083676 67.82944547449289,14.810027043938604 67.83340948293305,14.802068377318236 67.84133749981338,14.817985710558972 67.84662284440026,14.876349265775008 67.82944547449289,14.897572376762657 67.83340948293305,14.884307932395377 67.84133749981338,15.067357264663851 67.86644288660108,15.085927486778044 67.85322952513387,15.10449770889224 67.86512155045436,15.138985264247168 67.86908555889453,15.107150597765695 67.8743709034814,14.849820377040444 67.85455086128059,14.828597266052796 67.8611575420142,14.892266599015745 67.86908555889453,14.879002154648465 67.87701357577485,14.900225265636113 67.8862629288019,14.995729265080534 67.90344029870927,15.093886153398415 67.90608297100272,15.085927486778044 67.8994762902691,15.136332375373712 67.89154827338878,15.229183485944677 67.90344029870927,15.20000170833666 67.89022693724206,15.247753708058873 67.89022693724206,15.25040659693233 67.8862629288019,15.194695930589749 67.86644288660108,15.178778597349012 67.85058685284042,15.194695930589749 67.85058685284042,15.27693548566689 67.8862629288019,15.27693548566689 67.89815495412239,15.324687485389102 67.91533232402976,15.35917504074403 67.91929633246993,15.327340374262558 67.90608297100272,15.335299040882926 67.8994762902691,15.42284437370698 67.92326034091009,15.531612817518685 67.9417590469642,15.560794595126701 67.93515236623058,15.526307039771769 67.91533232402976,15.542224373012509 67.9113683155896,15.59528215048163 67.93911637467075,15.59528215048163 67.94704439155107,15.65099281682421 67.94968706384452,15.648339927950754 67.95893641687157,15.725273705280983 67.96818576989861,15.778331482750108 67.9668644337519,15.815471926978493 67.95365107228469,15.849959482333425 67.91533232402976,15.868529704447617 67.9113683155896,15.892405704308722 67.91929633246993,15.884447037688354 67.9417590469642,15.932199037410566 67.96290042531173,15.88709992656181 67.97214977833877,15.905670148676005 67.9800777952191,15.940157704030934 67.97214977833877,15.979951037132778 67.97611378677894,15.953422148398214 67.98404180365927,15.950769259524758 67.9919698205396,15.990562592626603 67.9919698205396,15.987909703753147 67.99725516512648,15.961380815018583 67.99593382897976,15.948116370651302 68.0051831820068,15.977298148259322 68.00782585430025,15.95607503727167 68.0236818880609,15.924240370790198 68.03293124108795,15.860571037827249 68.03689524952811,15.834042149092689 68.05539395558222,15.794248815990844 68.0487872748486,15.778331482750108 68.05671529172893,15.75710837176246 68.04350193026173,15.807513260358125 68.04350193026173,15.820777704725408 68.0355739133814,15.743843927395176 68.03293124108795,15.709356372040247 68.04746593870189,15.619158150342738 68.04746593870189,15.58201770611435 68.04482326640844,15.58201770611435 68.06332197246255,15.59528215048163 68.07257132548959,15.53426570639214 68.08974869539696,15.518348373151401 68.09767671227729,15.521001262024857 68.06464330860926,15.446720373568084 68.04482326640844,15.396315484972419 68.03953792182156,15.404274151592787 68.03293124108795,15.35917504074403 68.02896723264779,15.385703929478595 68.0236818880609,15.428150151453892 68.02500322420762,15.441414595821172 68.01575387118058,15.42284437370698 68.00782585430025,15.414885707086611 67.99593382897976,15.367133707364399 68.0051831820068,15.377745262858223 68.01971787962074,15.335299040882926 68.01178986274041,15.30346437440145 68.0170752073273,15.279588374540346 68.04482326640844,15.27693548566689 68.0606793001691,15.298158596654538 68.06464330860926,15.353869262997119 68.06464330860926,15.314075929895278 68.07653533392975,15.34591059637675 68.1042833930109,15.398968373845875 68.11749675447811,15.391009707225507 68.13071011594532,15.412232818213155 68.14260214126581,15.475902151176104 68.15317283043959,15.515695484277945 68.14920882199942,15.507736817657577 68.13071011594532,15.49181948441684 68.12674610750516,15.497125262163753 68.11353274603795,15.521001262024857 68.10692606530434,15.531612817518685 68.13335278823877,15.55548881737979 68.1293887797986,15.587323483861262 68.13335278823877,15.58201770611435 68.14920882199942,15.627116816963106 68.1412808051191,15.62446392808965 68.17431420878712,15.592629261608174 68.18092088952073,15.627116816963106 68.19017024254778,15.674868816685319 68.18224222566745,15.672215927811859 68.17431420878712,15.717315038660615 68.17035020034696,15.725273705280983 68.14920882199942,15.698744816546423 68.15053015814614,15.685480372179143 68.14524481355926,15.71466214978716 68.13731679667893,15.725273705280983 68.11749675447811,15.704050594293335 68.1042833930109,15.66425726119149 68.10560472915762,15.603240817102002 68.11485408218466,15.597935039355086 68.10956873759778,15.643034150203842 68.09767671227729,15.648339927950754 68.0857846869568,15.61119948372237 68.07257132548959,15.635075483583474 68.06860731704943,15.629769705836562 68.05671529172893,15.658951483444579 68.05935796402238,15.66425726119149 68.07124998934287,15.65099281682421 68.07653533392975,15.669563038938403 68.08842735925025,15.74119103852172 68.0857846869568,15.72792659415444 68.09767671227729,15.762414149509372 68.10692606530434,15.767719927256284 68.09767671227729,15.807513260358125 68.09635537613057,15.7969017048643 68.10956873759778,15.815471926978493 68.11749675447811,15.842000815713057 68.1108900737445,15.897711482055637 68.13335278823877,15.87383548219453 68.13863813282565,15.940157704030934 68.1544941665863,15.868529704447617 68.16242218346663,15.889752815435266 68.17035020034696,15.852612371206881 68.17695688108057,15.849959482333425 68.19941959557482,15.879141259941441 68.20734761245515,15.892405704308722 68.19545558713466,15.92954614853711 68.19545558713466,15.964033703892039 68.20734761245515,15.95607503727167 68.23113166309614,15.940157704030934 68.24302368841663,15.937504815157478 68.25623704988384,15.974645259385866 68.26416506676416,16.046273258969183 68.25623704988384,16.064843481083376 68.22716765465597,16.104636814185216 68.20734761245515,16.01974437023462 68.18620623410762,16.046273258969183 68.17827821722729,16.059537703336463 68.18224222566745,16.091372369817936 68.17827821722729,16.115248369679044 68.19941959557482,16.141777258413605 68.18620623410762,16.14443014728706 68.16242218346663,16.128512814046324 68.1544941665863,16.107289703058672 68.12146076291828,16.1179012585525 68.11749675447811,16.099331036438304 68.08974869539696,16.115248369679044 68.0857846869568,16.064843481083376 68.04746593870189,16.086066592071024 68.0487872748486,16.133818591793236 68.02500322420762,16.155041702780885 68.02764589650107,16.181570591515445 67.99989783741992,16.2266697023642 67.96818576989861,16.229322591237658 67.96025775301828,16.192182147009273 67.90608297100272,16.210752369123465 67.89419094568223,16.237281257858026 67.89022693724206,16.261157257719134 67.89419094568223,16.3115621463148 67.86644288660108,16.3540083682901 67.86644288660108,16.377884368151204 67.8492655166937,16.48665281196291 67.81226810458551,16.51848747844438 67.82019612146584,16.47869414534254 67.82548146605272,16.438900812240696 67.83737349137321,16.438900812240696 67.84530150825354,16.468082589848713 67.85851486972075,16.412371923506136 67.86512155045436,16.36727281265738 67.87965624806829,16.295644813074063 67.89022693724206,16.271768813212958 67.90211896256255,16.242587035604938 67.90211896256255,16.28503325758024 67.95893641687157,16.266463035466046 67.98272046751255,16.29033903532715 67.98800581209943,16.197487924756185 68.01575387118058,16.192182147009273 68.02103921576746,16.231975480111114 68.0236818880609,16.229322591237658 68.03953792182156,16.261157257719134 68.02896723264779,16.279727479833326 68.02896723264779,16.338091035049363 67.97214977833877,16.364619923783923 67.96290042531173,16.43624792336724 67.91797499632321,16.465429700975257 67.91533232402976,16.441553701114152 67.93118835779042,16.468082589848713 67.9549724084314,16.396454590265396 67.95365107228469,16.327479479555535 68.00386184586009,16.31686792406171 68.02896723264779,16.3540083682901 68.02896723264779,16.383190145898116 68.01575387118058,16.388495923645028 68.02896723264779,16.420330590126504 68.01311119888713,16.452165256607977 67.97479245063222,16.4627768121018 67.9668644337519,16.523793256191293 67.96290042531173,16.537057700558574 67.97611378677894,16.489305700836365 67.97611378677894,16.45747103435489 68.00386184586009,16.49195858970982 68.00782585430025,16.510528811824013 68.02896723264779,16.465429700975257 68.03160990494123,16.399107479138852 68.03953792182156,16.356661257163555 68.03953792182156,16.35931414603701 68.0606793001691,16.391148812518484 68.07389266163631,16.401760368012308 68.08974869539696,16.43624792336724 68.08974869539696,16.433595034493784 68.10164072071746,16.454818145481433 68.10560472915762,16.454818145481433 68.12146076291828,16.47869414534254 68.12146076291828,16.515834589570925 68.09371270383713,16.552975033799314 68.08049934236992,16.635214588876455 68.08049934236992,16.65909058873756 68.06332197246255,16.69092525521903 68.07257132548959,16.66439636648447 68.07389266163631,16.648479033243735 68.08446335081008,16.709495477333228 68.08049934236992,16.72806569944742 68.08974869539696,16.606032811268435 68.08974869539696,16.563586589293138 68.09635537613057,16.537057700558574 68.10560472915762,16.53175192281166 68.12146076291828,16.489305700836365 68.13335278823877,16.446859478861064 68.1293887797986,16.420330590126504 68.1108900737445,16.364619923783923 68.09239136769041,16.338091035049363 68.09371270383713,16.279727479833326 68.11749675447811,16.300950590820975 68.11749675447811,16.28503325758024 68.13071011594532,16.24789281335185 68.13335278823877,16.245239924478394 68.13863813282565,16.274421702086414 68.15053015814614,16.29829770194752 68.13863813282565,16.34074392392282 68.14260214126581,16.34074392392282 68.16242218346663,16.36727281265738 68.17035020034696,16.401760368012308 68.13863813282565,16.417677701253048 68.13863813282565,16.420330590126504 68.1663861919068,16.38053725702466 68.17035020034696,16.383190145898116 68.17827821722729,16.452165256607977 68.17695688108057,16.465429700975257 68.1663861919068,16.481347034215997 68.16902886420024,16.473388367595625 68.18752757025433,16.420330590126504 68.19413425098794,16.39380170139194 68.20338360401499,16.407066145759224 68.20734761245515,16.5052230340771 68.19017024254778,16.547669256052398 68.17695688108057,16.587462589154242 68.17695688108057,16.58215681140733 68.18224222566745,16.47604125646908 68.20602627630844,16.47869414534254 68.21923963777564,16.465429700975257 68.22716765465597,16.47604125646908 68.24302368841663,16.452165256607977 68.23641700768302,16.44951236773452 68.22452498236252,16.32482659068208 68.22320364621581,16.269115924339502 68.2099902847486,16.24789281335185 68.21527562933548,16.19483503588273 68.21131162089532,16.1842234803889 68.23245299924285,16.224016813490746 68.23641700768302,16.23462836898457 68.23113166309614,16.269115924339502 68.2350956715363,16.327479479555535 68.24698769685679,16.361967034910467 68.24434502456334,16.351355479416643 68.26812907520433,16.29033903532715 68.25887972217728,16.266463035466046 68.260201058324,16.26381014659259 68.27077174749778,16.21340525799692 68.28002110052482,16.14443014728706 68.28398510896498,16.141777258413605 68.29191312584531,16.173611924895077 68.32098252107318,16.205446591376553 68.32098252107318,16.229322591237658 68.33287454639367,16.25585147997222 68.33155321024695,16.239934146731482 68.31701851263301,16.26381014659259 68.30909049575268,16.29033903532715 68.31305450419285,16.287686146453694 68.31966118492646,16.34604970166973 68.30909049575268,16.335438146175907 68.30116247887236,16.369925701530835 68.29455579813876,16.38053725702466 68.29851980657892,16.364619923783923 68.31305450419285,16.452165256607977 68.29587713428548,16.415024812379592 68.28794911740515,16.47869414534254 68.28794911740515,16.545016367178942 68.26812907520433,16.56889236704005 68.25491571373712,16.571545255913506 68.24434502456334,16.60337992239498 68.23641700768302,16.61664436676226 68.22452498236252,16.60337992239498 68.20206226786827,16.67235503310484 68.18620623410762,16.730718588320876 68.15845817502647,16.81030525452456 68.15053015814614,16.807652365651105 68.16110084731991,16.746635921561612 68.17035020034696,16.738677254941244 68.18092088952073,16.65909058873756 68.20338360401499,16.635214588876455 68.21923963777564,16.648479033243735 68.23113166309614,16.60337992239498 68.24830903300351,16.635214588876455 68.260201058324,16.613991477888803 68.28002110052482,16.44951236773452 68.3038051511658,16.446859478861064 68.31173316804613,16.404413256885768 68.31173316804613,16.34074392392282 68.32362519336662,16.35931414603701 68.32494652951334,16.338091035049363 68.33683855483383,16.300950590820975 68.33155321024695,16.27707459095987 68.33683855483383,16.29829770194752 68.34476657171416,16.269115924339502 68.36062260547482,16.27707459095987 68.37383596694202,16.377884368151204 68.38572799226252,16.407066145759224 68.38044264767564,16.412371923506136 68.38969200070268,16.45747103435489 68.39762001758301,16.49195858970982 68.4095120429035,16.521140367317837 68.40819070675678,16.558280811546226 68.41479738749038,16.579503922533874 68.41083337905022,16.592768366901154 68.42272540437071,16.640520366623367 68.42140406822399,16.66439636648447 68.40554803446334,16.696231032965947 68.41744005978383,16.730718588320876 68.42272540437071,16.78377636579 68.41347605134366,16.773164810296176 68.40158402602317,16.79704081015728 68.40554803446334,16.895197698475158 68.38837066455596,16.903156365095526 68.36987195850186,16.87397458748751 68.3540159247412,16.834181254385665 68.34212389942071,16.842139921006037 68.33683855483383,16.95090836481774 68.35269458859449,17.00661903116032 68.35797993318137,17.027842142147968 68.35665859703465,17.041106586515248 68.36458661391498,17.038453697641792 68.38176398382235,17.099470141731285 68.38572799226252,17.11008169722511 68.38176398382235,17.131304808212757 68.39233467299613,17.187015474555338 68.39365600914284,17.22150302991027 68.37251463079531,17.23476747427755 68.36987195850186,17.245379029771374 68.35005191630104,17.226808807657182 68.340802563274,17.23476747427755 68.3156971764863,17.250684807518287 68.30776915960597,17.332924362595428 68.28002110052482,17.33823014034234 68.26416506676416,17.332924362595428 68.24434502456334,17.309048362734323 68.23245299924285,17.31170125160778 68.22056097392236,17.340883029215796 68.20734761245515,17.31700702935469 68.19017024254778,17.36741191795036 68.20734761245515,17.335577251468884 68.22320364621581,17.362106140203448 68.25887972217728,17.391287917811464 68.24698769685679,17.4072052510522 68.25887972217728,17.391287917811464 68.2786997643781,17.35149458470962 68.29587713428548,17.306395473860867 68.31305450419285,17.258643474138655 68.32362519336662,17.282519473999763 68.32758920180679,17.271907918505935 68.33683855483383,17.279866585126307 68.34873058015432,17.250684807518287 68.36987195850186,17.250684807518287 68.39365600914284,17.26925502963248 68.40158402602317,17.301089696113955 68.40158402602317,17.2984368072405 68.41876139593055,17.35149458470962 68.42536807666416,17.40189947330529 68.41347605134366,17.433734139786765 68.40026268987646,17.574337250079942 68.37251463079531,17.598213249941047 68.38044264767564,17.492097695002798 68.39762001758301,17.423122584292937 68.41347605134366,17.43108125091331 68.42140406822399,17.417816806546025 68.43065342125104,17.383329251191096 68.43065342125104,17.396593695558376 68.4465094550117,17.478833250635518 68.45179479959857,17.545155472471922 68.45443747189202,17.611477694308327 68.44518811886498,17.63004791642252 68.4465094550117,17.693717249385468 68.43329609354448,17.709634582626204 68.43858143813137,17.760039471221873 68.41876139593055,17.82370880418482 68.40554803446334,17.84493191517247 68.41479738749038,17.79717991545026 68.41876139593055,17.688411471638556 68.46236548877235,17.653923916283627 68.46632949721251,17.638006583042888 68.47425751409284,17.598213249941047 68.47557885023956,17.47087458401515 68.46368682491907,17.47618036176206 68.47954285867972,17.53984969472501 68.49936290088054,17.563725694586115 68.51918294308136,17.574337250079942 68.53636031298873,17.545155472471922 68.55089501060267,17.494750583876254 68.53107496840185,17.423122584292937 68.52314695152153,17.35149458470962 68.49539889244038,17.295783918367043 68.47425751409284,17.24803191864483 68.46236548877235,17.08885858623746 68.45047346345186,17.02518925327451 68.45047346345186,17.014577697780688 68.45840148033218,17.05967680862944 68.47557885023956,17.10212303060474 68.47954285867972,17.104775919478197 68.48614953941333,17.072941252996724 68.49539889244038,17.070288364123268 68.5033269093207,17.001313253413407 68.51389759849448,16.99866036453995 68.52446828766824,16.932338142703546 68.51389759849448,16.932338142703546 68.5033269093207,16.868668809740598 68.46765083335923,16.786429254663457 68.46632949721251,16.76255325480235 68.4597228164789,16.66439636648447 68.45179479959857,16.648479033243735 68.47029350565268,16.635214588876455 68.45840148033218,16.563586589293138 68.45047346345186,16.51318170069747 68.45047346345186,16.53175192281166 68.47029350565268,16.523793256191293 68.49143488400021,16.44951236773452 68.50993359005432,16.473388367595625 68.52182561537481,16.4627768121018 68.5403243214289,16.5052230340771 68.54693100216251,16.521140367317837 68.558823027483,16.552975033799314 68.55618035518955,16.58215681140733 68.53636031298873,16.613991477888803 68.53107496840185,16.629908811129543 68.53636031298873,16.627255922256087 68.55618035518955,16.648479033243735 68.558823027483,16.64582614437028 68.56939371665676,16.62195014450917 68.56410837206988,16.56093370041968 68.58128574197725,16.571545255913506 68.61299780949857,16.613991477888803 68.64206720472643,16.68561947747212 68.6526378939002,16.720107032827052 68.6460312131666,16.725412810573964 68.66981526380758,16.799693699030737 68.68302862527479,16.84744569875295 68.68567129756823,16.881933254107878 68.6777432806879,16.90050347622207 68.68170728912807,16.958867031438107 68.71341935664938,17.041106586515248 68.7147406927961,17.041106586515248 68.69492065059528,17.07559414187018 68.67377927224774,17.112734586098565 68.66981526380758,17.133957697086217 68.64470987701988,17.173751030188058 68.64206720472643,17.20823858554299 68.65792323848709,17.12334614159239 68.67377927224774,17.099470141731285 68.68567129756823,17.120693252718933 68.7147406927961,17.187015474555338 68.72134737352971,17.26129636301211 68.73456073499692,17.29047814062013 68.73456073499692,17.301089696113955 68.72663271811659,17.340883029215796 68.72266870967643,17.399246584431832 68.72927539041004,17.417816806546025 68.72266870967643,17.439039917533677 68.68302862527479,17.494750583876254 68.6777432806879,17.531891028104642 68.6777432806879,17.550461250218834 68.68302862527479,17.584948805573767 68.68567129756823,17.667188360650908 68.66981526380758,17.683105693891644 68.67377927224774,17.65922969403054 68.68302862527479,17.60351902768796 68.69359931444856,17.555767027965747 68.69359931444856,17.53984969472501 68.6896353060084,17.481486139508974 68.69888465903544,17.468221695141693 68.71077668435593,17.473527472888605 68.72531138196987,17.46291591739478 68.73456073499692,17.391287917811464 68.74645276031741,17.36741191795036 68.73852474343708,17.322312807101603 68.73720340729037,17.31170125160778 68.74248875187725,17.253337696391743 68.75438077719774,17.26129636301211 68.77155814710511,17.31170125160778 68.77948616398544,17.391287917811464 68.80062754233298,17.42046969541948 68.81648357609363,17.460263028521325 68.81912624838708,17.508015028243538 68.81251956765347,17.58229591670031 68.79137818930593,17.64596524966326 68.77948616398544,17.725551915866944 68.77816482783872,17.746775026854593 68.77155814710511,17.794527026576805 68.74645276031741,17.80513858207063 68.74909543261086,17.79717991545026 68.77420081939856,17.770651026715697 68.78873551701248,17.733510582487312 68.79269952545265,17.656576805157083 68.7953421977461,17.632700805295975 68.79930620618626,17.531891028104642 68.82441159297396,17.473527472888605 68.83101827370757,17.48413902838243 68.8389462905879,17.619436360928695 68.89179973645675,17.669841249524364 68.89576374489691,17.691064360512012 68.89312107260346,17.720246138120032 68.89972775333707,17.717593249246576 68.88387171957642,17.688411471638556 68.87990771113625,17.7282048047404 68.86933702196248,17.744122137981137 68.87330103040264,17.807791470944085 68.86273034122888,17.85289058179284 68.8640516773756,17.778609693336065 68.90501309792396,17.733510582487312 68.91294111480428,17.704328804879292 68.90897710636412,17.720246138120032 68.9327611570051,17.69902302713238 68.93408249315182,17.63535369416943 68.92086913168461,17.529238139231186 68.90897710636412,17.460263028521325 68.89312107260346,17.446998584154045 68.90897710636412,17.452304361900957 68.91822645939116,17.48413902838243 68.93011848471166,17.468221695141693 68.94993852691248,17.49740347274971 68.9578665437928,17.55311413909229 68.95390253535264,17.56637858345957 68.96447322452642,17.54780836134538 68.96843723296658,17.54780836134538 68.9829719305805,17.48413902838243 68.97768658599362,17.47618036176206 68.994863955901,17.48944480612934 68.994863955901,17.529238139231186 69.01468399810182,17.550461250218834 69.03186136800919,17.592907472194135 69.04243205718296,17.693717249385468 69.08603615002477,17.648618138536715 69.09660683919853,17.624742138675607 69.09264283075836,17.640659471916344 69.10849886451902,17.730857693613856 69.12039088983951,17.75473369347496 69.11510554525263,17.786568359956433 69.11642688139935,17.826361693058278 69.12699757057312,17.89533680376814 69.13360425130672,17.929824359123067 69.1441749404805,17.985535025465648 69.15210295736082,18.05981591392242 69.14813894892066,18.05451013617551 69.13228291516,18.131443913505738 69.1441749404805,18.17919591322795 69.12303356213296,18.197766135342142 69.12831890671984,18.147361246746474 69.14813894892066,18.152667024493386 69.1573883019477,18.118179469138457 69.1573883019477,18.112873691391545 69.16531631882803,18.08369191378353 69.1573883019477,18.06777458054279 69.16531631882803,18.08103902491007 69.17720834414853,18.051857247302053 69.18117235258869,18.065121691669333 69.20627773937639,18.086344802656985 69.23006179001737,18.043898580681685 69.23402579845754,17.972270581098368 69.22609778157721,17.974923469971824 69.2379898068977,17.998799469832928 69.2498818322182,17.982882136592192 69.27102321056573,17.996146580959472 69.29877126964688,17.993493692086016 69.30934195882065,18.05451013617551 69.3185913118477,18.08103902491007 69.33973269019523,18.104915024771177 69.3436966986354,18.112873691391545 69.36351674083622,18.094303469277353 69.37937277459687,18.104915024771177 69.38465811918375,18.16593146886067 69.38465811918375,18.176543024354494 69.39522880835753,18.152667024493386 69.40051415294441,18.163278579987214 69.43222622046572,18.131443913505738 69.45336759881326,18.152667024493386 69.46525962413375,18.189807468721774 69.45997427954687,18.232253690697075 69.46658096028047,18.23490657957053 69.4811156578944,18.298575912533476 69.4811156578944,18.301228801406936 69.47318764101408,18.343675023382232 69.46525962413375,18.372856800990252 69.44147557349277,18.35959235662297 69.40051415294441,18.314493245774216 69.36351674083622,18.38877413423099 69.39655014450425,18.48427813367541 69.37540876615671,18.494889689169234 69.36748074927638,18.486931022548866 69.33048333716819,18.500195466916146 69.31991264799441,18.489583911422322 69.28687924432639,18.502848355789602 69.27366588285918,18.500195466916146 69.25913118524524,18.478972355928498 69.24327515148458,18.478972355928498 69.22477644543049,18.492236800295778 69.22213377313705,18.51080702240997 69.2379898068977,18.508154133536515 69.2498818322182,18.524071466777254 69.25780984909852,18.542641688891447 69.29480726120671,18.545294577764903 69.31462730340753,18.529377244524166 69.3318046733149,18.53998880001799 69.35162471551573,18.56651768875255 69.35558872395589,18.590393688613656 69.33973269019523,18.569170577626007 69.3185913118477,18.606311021854395 69.30141394194033,18.691203465804993 69.27102321056573,18.688550576931537 69.25384584065836,18.71242657679264 69.25384584065836,18.715079465666097 69.27895122744606,18.648757243829692 69.30273527808704,18.638145688335868 69.31330596726082,18.664674577070432 69.31330596726082,18.677939021437712 69.31991264799441,18.744261243274117 69.32255532028786,18.760178576514853 69.32651932872803,18.898128797934575 69.31991264799441,18.89547590906112 69.31462730340753,18.855682575959275 69.30537795038049,18.945880797656784 69.29480726120671,18.951186575403696 69.28687924432639,19.006897241746277 69.28687924432639,18.975062575264804 69.29877126964688,18.93526924216296 69.32784066487474,18.815889242857434 69.3318046733149,18.640798577209324 69.36748074927638,18.60365813298094 69.38333678303704,18.59569946636057 69.40447816138457,18.545294577764903 69.42826221202556,18.486931022548866 69.44411824578621,18.476319467055042 69.43619022890589,18.447137689447025 69.44147557349277,18.478972355928498 69.4811156578944,18.444484800573566 69.51018505312227,18.476319467055042 69.51414906156243,18.53468302227108 69.5181130700026,18.5877407997402 69.52604108688293,18.606311021854395 69.53396910376325,18.65671591045006 69.53396910376325,18.746914132147573 69.54189712064358,18.770790132008678 69.54189712064358,18.834459464971626 69.56303849899112,18.85302968708582 69.55378914596407,18.87159990920001 69.5062210446821,18.834459464971626 69.49432901936161,18.855682575959275 69.4811156578944,18.890170131314207 69.4930076832149,18.911393242301855 69.44543958193293,18.996285686252453 69.42033419514523,18.980368353011716 69.39258613606408,19.089136796823418 69.34766070707556,19.13688879654563 69.34237536248868,19.195252351761667 69.34633937092885,19.29075635120609 69.3436966986354,19.319938128814105 69.33576868175507,19.34646701754867 69.31066329496737,19.335855462054845 69.29480726120671,19.285450573459176 69.2815938997395,19.245657240357332 69.25384584065836,19.23239279599005 69.2498818322182,19.237698573736964 69.23270446231082,19.285450573459176 69.22213377313705,19.311979462193737 69.23006179001737,19.35973146191595 69.23666847075098,19.436665239246178 69.22609778157721,19.534822127564055 69.21288442011,19.54012790531097 69.21816976469688,19.48441723896839 69.23006179001737,19.42870657262581 69.24591782377803,19.410136350511618 69.26573786597885,19.40748346163816 69.29084325276655,19.41544212825853 69.3185913118477,19.354425684169037 69.36483807698293,19.37299590628323 69.37540876615671,19.314632351067193 69.37144475771655,19.280144795712264 69.37937277459687,19.237698573736964 69.37937277459687,19.113012796684526 69.37276609386326,19.07321946358268 69.39258613606408,19.0599550192154 69.430904884319,19.03342613048084 69.44015423734605,19.00424435287282 69.44147557349277,18.969756797517892 69.46129561569359,18.996285686252453 69.48640100248129,18.993632797378996 69.50225703624194,19.009550130619733 69.5181130700026,19.03342613048084 69.52075574229605,19.078525241329594 69.54586112908375,19.166070574153647 69.55378914596407,19.17933501852093 69.54057578449687,19.211169685002403 69.53000509532309,19.237698573736964 69.51414906156243,19.250963018104247 69.52075574229605,19.17933501852093 69.55907449055096,19.184640796267843 69.57096651587145,19.168723463027103 69.57096651587145,19.147500352039454 69.5617171628444,19.065260796962313 69.55511048211079,19.036079019354297 69.54586112908375,19.03342613048084 69.53793311220342,19.00424435287282 69.52868375917637,18.96445101977098 69.54057578449687,18.943227908783328 69.55907449055096,18.929963464416048 69.60796392797964,18.945880797656784 69.62778397018046,18.983021241885172 69.65024668467473,19.065260796962313 69.68460142448947,19.089136796823418 69.70442146669029,19.097095463443786 69.73349086191816,19.134235907672174 69.7480255595321,19.144847463166 69.74141887879848,19.174029240774015 69.74538288723865,19.195252351761667 69.7612389209993,19.272186129091896 69.77841629090668,19.293409240079544 69.7731309463198,19.322591017687564 69.77841629090668,19.39421901727088 69.77709495475996,19.42870657262581 69.786344307787,19.447276794740002 69.78238029934684,19.502987461082583 69.79691499696078,19.545433683057883 69.80087900540094,19.569309682918988 69.79691499696078,19.593185682780092 69.80484301384111,19.67011946011032 69.81541370301487,19.731135904199814 69.80748568613454,19.723177237579446 69.77841629090668,19.675425237857233 69.75331090411898,19.69930123771834 69.74009754265177,19.696648348844885 69.72556284503783,19.67011946011032 69.70177879439684,19.662160793489953 69.67667340760914,19.646243460249217 69.6674240545821,19.65685501574304 69.65949603770177,19.691342571097973 69.65553202926161,19.736441681946726 69.64364000394112,19.736441681946726 69.63571198706079,19.709912793212165 69.61985595330013,19.715218570959077 69.60796392797964,19.688689682224517 69.57889453275178,19.69930123771834 69.57493052431161,19.675425237857233 69.55907449055096,19.63828479362885 69.54189712064358,19.627673238135024 69.5062210446821,19.64359057137576 69.4930076832149,19.672772348983777 69.48507966633457,19.65685501574304 69.47318764101408,19.606450127147372 69.4494035903731,19.558698127425163 69.4375115650526,19.53747501643751 69.41901285899851,19.51094612770295 69.40447816138457,19.439318128119634 69.39522880835753,19.434012350372722 69.38862212762392,19.51094612770295 69.39258613606408,19.603797238273916 69.43222622046572,19.640937682502305 69.42033419514523,19.64359057137576 69.40844216982474,19.662160793489953 69.42033419514523,19.640937682502305 69.43619022890589,19.71256568208562 69.47847298560096,19.731135904199814 69.48507966633457,19.731135904199814 69.49432901936161,19.70725990433871 69.49829302780178,19.715218570959077 69.51414906156243,19.739094570820182 69.52604108688293,19.715218570959077 69.55511048211079,19.749706126314006 69.5736091881649,19.760317681807834 69.58814388577882,19.752359015187462 69.5987145749526,19.728483015326358 69.59607190265915,19.736441681946726 69.60664259183292,19.78949945941585 69.6119279364198,19.8107225704035 69.60399991953948,19.842557236884975 69.60267858339276,19.980507458304697 69.58021586889849,20.12376345747133 69.58285854119194,20.10254034648368 69.5868225496321,19.993771902671977 69.59078655807227,19.938061236329396 69.60399991953948,19.837251459138063 69.61985595330013,19.813375459276955 69.64364000394112,19.821334125897323 69.65553202926161,19.800111014909675 69.66874539072882,19.773582126175114 69.67667340760914,19.773582126175114 69.68856543292964,19.80276390378313 69.71631349201078,19.847863014631887 69.72952685347799,19.837251459138063 69.74934689567881,19.842557236884975 69.76520292943947,19.86643323674608 69.77841629090668,19.900920792101008 69.78238029934684,19.93540834745594 69.82202038374848,19.99111901379852 69.84712577053618,19.993771902671977 69.82598439218864,19.95663145844359 69.78238029934684,19.946019902949764 69.75991758485259,19.98581323605161 69.76520292943947,19.99111901379852 69.78502297164029,20.08131723549603 69.87883783805749,20.10784612423059 69.89601520796487,20.129069235218243 69.9356552923665,20.155598123952803 69.94358330924683,20.16355679057317 69.9356552923665,20.16355679057317 69.9105499055788,20.152945235079347 69.89601520796487,20.18477990156082 69.85505378741651,20.208655901421928 69.85505378741651,20.195391457054644 69.87883783805749,20.174168346066995 69.89601520796487,20.203350123675015 69.94094063695339,20.256407901144136 69.96472468759437,20.256407901144136 69.97529537676814,20.285589678752157 69.97661671291486,20.31742434523363 69.96472468759437,20.349259011715105 69.93961930080667,20.37313501157621 69.89997921640503,20.394358122563858 69.8920511995247,20.38639945594349 69.866945812737,20.367829233829298 69.85505378741651,20.354564789462017 69.82202038374848,20.33599456734782 69.80616434998782,20.301507011992893 69.76388159329275,20.285589678752157 69.71631349201078,20.264366567764505 69.71234948357062,20.288242567625613 69.70574280283701,20.24844923452377 69.68063741604931,20.26967234551142 69.67931607990259,20.272325234384876 69.65817470155505,20.35191190058856 69.63571198706079,20.34660612284165 69.61060660027309,20.320077234107085 69.60003591109931,20.314771456360173 69.5868225496321,20.27763101213179 69.58417987733866,20.264366567764505 69.57889453275178,20.221920345789208 69.57757319660506,20.224573234662664 69.54718246523046,20.27763101213179 69.54718246523046,20.221920345789208 69.52868375917637,20.2404905679034 69.5181130700026,20.216614568042296 69.51018505312227,20.208655901421928 69.49829302780178,20.251102123397224 69.49432901936161,20.232531901283032 69.46525962413375,20.198044345928103 69.45336759881326,20.192738568181188 69.4811156578944,20.179474123813907 69.48243699404112,20.15825101282626 69.44808225422638,20.152945235079347 69.40844216982474,20.142333679585523 69.39655014450425,20.09458167986331 69.38069411074359,20.036218124647274 69.3688020854231,19.967243013937413 69.3436966986354,19.980507458304697 69.33576868175507,19.924796791962116 69.30141394194033,19.898267903227552 69.2749872190059,19.903573680974464 69.26970187441901,19.95663145844359 69.2749872190059,19.959284347317045 69.29084325276655,19.993771902671977 69.3066992865272,20.02560656915345 69.33444734560835,20.062747013381838 69.35030337936901,20.19008567930773 69.3873007914772,20.25375501227068 69.37540876615671,20.26701945663796 69.39522880835753,20.25375501227068 69.41637018670507,20.274978123258332 69.4242982035854,20.2829367898787 69.4375115650526,20.32273012298054 69.45733160725342,20.343953233968193 69.49697169165506,20.375787900449666 69.53000509532309,20.39966390031077 69.5868225496321,20.418234122424966 69.59078655807227,20.521696788489756 69.56964517972473,20.534961232857036 69.54453979293703,20.569448788211968 69.54718246523046,20.59597767694653 69.54189712064358,20.617200787934177 69.52075574229605,20.69148167639095 69.51018505312227,20.74188656498662 69.51414906156243,20.789638564708827 69.49697169165506,20.81086167569648 69.50225703624194,20.771068342594635 69.52207707844276,20.74188656498662 69.52604108688293,20.686175898644038 69.52207707844276,20.603936343566897 69.55511048211079,20.577407454832336 69.58285854119194,20.537614121730492 69.60267858339276,20.479250566514455 69.61457060871325,20.458027455526807 69.63967599550095,20.479250566514455 69.66874539072882,20.500473677502107 69.67667340760914,20.527002566236668 69.70838547513046,20.516391010742844 69.73745487035832,20.48190345538791 69.74538288723865,20.49251501088174 69.75331090411898,20.460680344400263 69.76388159329275,20.49251501088174 69.76784560173292,20.542919899477404 69.76520292943947,20.646382565542194 69.79030831622717,20.710051898505142 69.79427232466733,20.776374120341547 69.82202038374848,20.78698567583537 69.84712577053618,20.7551510093539 69.85901779585667,20.749845231606987 69.86958848503045,20.76841545372118 69.88280184649766,20.848002119924864 69.90262188869848,20.8639194531656 69.91847792245913,20.967382119230393 69.93169128392634,21.020439896699518 69.95679667071404,21.06023322980136 69.9607606791542,21.07880345191555 69.95679667071404,21.068191896421727 69.93961930080667,21.031051452193342 69.93301262007306,20.977993674724217 69.91847792245913,20.90105989739399 69.87090982117716,20.842696342177952 69.85505378741651,20.858613675418688 69.84712577053618,20.930241675002005 69.85108977897634,20.95677056373657 69.83919775365585,20.91963011950818 69.83787641750914,20.90105989739399 69.82994840062881,20.92758878612855 69.79691499696078,20.954117674863113 69.79030831622717,20.967382119230393 69.77841629090668,21.004522563458778 69.78105896320012,21.03901011881371 69.79427232466733,20.993911007964954 69.81012835842799,20.98860523021804 69.81805637530832,21.028398563319886 69.83126973677552,21.04696878543408 69.82994840062881,21.054927452054446 69.85108977897634,21.031051452193342 69.85769645970996,21.041663007687166 69.87487382961733,21.076150563042095 69.87883783805749,21.123902562764307 69.87751650191078,21.153084340372324 69.88148051035094,21.182266117980344 69.87487382961733,21.192877673474168 69.86166046815012,21.13451411825813 69.82994840062881,21.126555451637763 69.80616434998782,21.1424727848785 69.80616434998782,21.153084340372324 69.81805637530832,21.214100784461817 69.8418404259493,21.227365228829097 69.85505378741651,21.187571895727256 69.88412318264437,21.1849190068538 69.89601520796487,21.200836340094536 69.9039432248452,21.230018117702553 69.89865788025831,21.314910561653154 69.89997921640503,21.31756345052661 69.91187124172552,21.245935450943293 69.91979925860585,21.1849190068538 69.93301262007306,21.21144789558836 69.98058072135503,21.24062967319638 70.00965011658289,21.2936874506655 70.01229278887634,21.35205100588154 70.02154214190338,21.428984783211767 70.01361412502305,21.442249227579047 70.00040076355585,21.474083894060524 69.9977580912624,21.521835893782733 69.98058072135503,21.51122433828891 69.97133136832798,21.529794560403104 69.95679667071404,21.55897633801112 69.95283266227388,21.577546560125313 69.94094063695339,21.561629226884577 69.93301262007306,21.574893671251857 69.91451391401897,21.720802559291947 69.88280184649766,21.76059589239379 69.87883783805749,21.808347892116 69.85901779585667,21.82426522535674 69.84712577053618,21.87732300282586 69.84316176209602,21.866711447332037 69.83391240906897,21.87732300282586 69.81805637530832,21.917116335927705 69.79427232466733,21.922422113674617 69.77841629090668,21.980785668890654 69.76520292943947,22.015273224245583 69.7731309463198,22.00996744649867 69.76388159329275,22.05241366847397 69.74934689567881,22.03119055748632 69.74406155109193,22.05241366847397 69.73745487035832,21.95425678015609 69.73745487035832,22.007314557625214 69.72556284503783,22.057719446220883 69.72556284503783,22.0869012238289 69.73745487035832,22.12138877918383 69.7361335342116,22.137306112424568 69.7480255595321,22.044455001853603 69.76784560173292,22.07894255720853 69.76916693787963,22.070983890588163 69.78105896320012,21.959562557903002 69.82202038374848,21.943645224662266 69.8114496945747,21.88528166944623 69.83523374521569,21.898546113813513 69.84712577053618,21.951603891282634 69.83787641750914,22.012620335372127 69.8418404259493,22.02323189086595 69.84712577053618,22.007314557625214 69.85901779585667,21.964868335649918 69.866945812737,21.91976922480116 69.87090982117716,21.88528166944623 69.88676585493782,21.88528166944623 69.90658589713864,21.874670113952405 69.9105499055788,21.861405669585125 69.93961930080667,21.87201722507895 69.94490464539355,21.91446344705425 69.947547317687,21.917116335927705 69.95547533456732,21.87732300282586 69.96472468759437,21.87732300282586 69.98322339364847,21.951603891282634 69.99247274667552,21.986091446637566 69.99247274667552,22.012620335372127 69.98454472979519,22.015273224245583 69.96472468759437,21.988744335511022 69.94358330924683,22.033843446359775 69.93301262007306,22.049760779600515 69.94358330924683,22.03119055748632 69.95547533456732,22.041802112980147 69.98850873823535,22.007314557625214 70.01361412502305,22.06567811284125 70.02022080575667,22.076289668335075 70.03211283107716,22.00466166875176 70.02550615034355,21.917116335927705 70.01229278887634,21.842835447470932 70.01229278887634,21.78712478112835 70.028148822637,21.77386033676107 70.03739817566404,21.848141225217844 70.0532542094247,21.86405855845858 70.06250356245174,21.90650478043388 70.06118222630502,21.959562557903002 70.06514623474519,22.002008779878302 70.07439558777223,22.025884779739407 70.09421562997305,22.06037233509434 70.10214364685338,22.07363677946162 70.12328502520091,22.05241366847397 70.12592769749436,22.03119055748632 70.10610765529354,22.00996744649867 70.09817963841321,21.988744335511022 70.10478631914683,21.986091446637566 70.09289429382633,21.943645224662266 70.07703826006568,21.895893224940057 70.0783595962124,21.84548833634439 70.07307425162551,21.829571003103652 70.07439558777223,21.813653669862912 70.09025162153289,21.797736336622176 70.08628761309272,21.797736336622176 70.07703826006568,21.818959447609828 70.0664675708919,21.74733144802651 70.0532542094247,21.723455448165403 70.05061153713125,21.702232337177755 70.05853955401157,21.58550522674568 70.084966276946,21.60142255998642 70.10082231070666,21.58019944899877 70.1100716637337,21.55897633801112 70.09289429382633,21.53244744927656 70.09025162153289,21.45551367194633 70.10082231070666,21.442249227579047 70.1219636890542,21.40776167222412 70.14310506740173,21.44755500532596 70.15103308428206,21.482042560680892 70.16424644574927,21.47673678293398 70.17481713492305,21.38123278348956 70.15896110116239,21.336133672640802 70.15499709272223,21.272464339677853 70.16424644574927,21.251241228690205 70.17481713492305,21.25389411756366 70.18803049639025,21.22471233995564 70.19595851327058,21.21144789558836 70.21049321088452,21.1849190068538 70.19992252171075,21.190224784600712 70.21974256391157,21.20614211784145 70.22370657235173,21.23532389544947 70.2408839422591,21.24062967319638 70.23691993381894,21.296340339538958 70.25673997601976,21.320216339400066 70.24881195913943,21.34409233926117 70.26466799290009,21.367968339122275 70.26466799290009,21.415720338844487 70.27391734592713,21.436943449832135 70.2527759675796,21.4210261165914 70.22370657235173,21.492654116174716 70.19199450483042,21.495307005048172 70.21181454703124,21.46877811631361 70.22238523620501,21.492654116174716 70.2408839422591,21.487348338427804 70.28845204354107,21.471431005187068 70.29770139656812,21.487348338427804 70.30959342188861,21.564282115758033 70.32412811950255,21.56693500463149 70.31355743032877,21.55367056026421 70.28977337968779,21.59346389336605 70.26863200134025,21.68631500393702 70.24484795069927,21.70488522605121 70.23295592537877,21.72610833703886 70.23295592537877,21.715496781545035 70.2157785554714,21.749984336899967 70.21974256391157,21.771207447887615 70.21181454703124,21.784471892254896 70.17878114336321,21.832223891977108 70.16688911804272,21.840182558597476 70.14310506740173,21.861405669585125 70.13914105896157,21.856099891838213 70.1721744626296,21.82426522535674 70.18406648795009,21.811000780989456 70.20388653015091,21.82426522535674 70.21049321088452,21.869364336205493 70.21181454703124,21.869364336205493 70.2157785554714,21.813653669862912 70.21974256391157,21.776513225634528 70.23691993381894,21.784471892254896 70.26202532060664,21.83752966972402 70.27656001822058,21.90119900268697 70.30959342188861,21.948951002409178 70.32941346408943,21.980785668890654 70.32941346408943,22.012620335372127 70.3214854472091,22.00466166875176 70.30562941344844,21.95425678015609 70.28977337968779,21.951603891282634 70.27656001822058,21.988744335511022 70.28580937124762,22.05241366847397 70.31223609418205,22.070983890588163 70.31355743032877,22.09220700157581 70.30430807730173,22.09220700157581 70.28184536280746,22.081595446081987 70.2659893290468,22.084248334955443 70.24484795069927,22.076289668335075 70.23163458923206,22.110777223690008 70.23956260611239,22.105471445943092 70.2659893290468,22.147917667918392 70.28845204354107,22.187711001020237 70.28977337968779,22.291173667085026 70.28052402666074,22.296479444831938 70.27391734592713,22.26729766722392 70.24484795069927,22.27525633384429 70.23559859767222,22.22485144524862 70.21974256391157,22.272603444970834 70.22370657235173,22.26199188947701 70.18803049639025,22.227504334122077 70.15235442042878,22.25138033398318 70.1470690758419,22.203628334260973 70.1351770505214,22.240768778489358 70.12724903364108,22.26729766722392 70.1351770505214,22.333619889060326 70.13121304208124,22.33892566680724 70.13914105896157,22.402594999770187 70.13914105896157,22.439735443998572 70.12989170593453,22.48483455484733 70.12328502520091,22.506057665834977 70.11535700832059,22.53789233231645 70.11403567217387,22.521974999075713 70.12592769749436,22.439735443998572 70.15103308428206,22.386677666529447 70.15499709272223,22.304438111452306 70.15235442042878,22.291173667085026 70.16292510960255,22.30974388919922 70.16688911804272,22.333619889060326 70.19860118556403,22.33096700018687 70.23295592537877,22.34423144455415 70.23559859767222,22.349537222301063 70.26070398445992,22.450346999492396 70.2527759675796,22.50340477696152 70.24484795069927,22.52462788794917 70.22502790849845,22.55380966555719 70.23295592537877,22.612173220773222 70.22370657235173,22.58033855429175 70.20785053859107,22.62278477626705 70.20652920244436,22.6440078872547 70.21974256391157,22.678495442609627 70.21974256391157,22.80318121966207 70.20785053859107,22.906643885726858 70.20785053859107,22.959701663195982 70.19595851327058,22.965007440942895 70.17878114336321,22.935825663334878 70.15631842886894,22.89868521910649 70.16688911804272,22.909296774600314 70.15103308428206,22.882767885865753 70.14310506740173,22.874809219245385 70.13121304208124,22.82971010839663 70.11932101676075,22.80318121966207 70.11403567217387,22.83501588614354 70.1100716637337,22.7952225530417 70.10214364685338,22.723594553458383 70.0968583022665,22.678495442609627 70.08628761309272,22.630743442887418 70.08893028538617,22.60686744302631 70.0783595962124,22.569726998797925 70.07439558777223,22.47687588822696 70.07703826006568,22.44769411061894 70.08232360465256,22.4079007775171 70.06911024318535,22.35749588892143 70.06250356245174,22.35749588892143 70.05457554557141,22.312396778072674 70.04929020098453,22.269950556097378 70.03739817566404,22.293826555958482 70.02154214190338,22.39198344427636 70.05457554557141,22.49809899921461 70.05721821786486,22.646660776128154 70.07439558777223,22.681148331483083 70.07439558777223,22.742164775572576 70.09025162153289,22.78195810867442 70.09025162153289,22.861544774878105 70.10214364685338,22.970313218689807 70.13914105896157,23.002147885171283 70.1351770505214,22.986230551930547 70.12592769749436,22.99153632967746 70.1100716637337,22.98092477418363 70.07439558777223,22.999494996297827 70.05721821786486,22.957048774322526 70.0413621841042,22.999494996297827 70.02947015878371,23.026023885032387 70.0162567973165,23.076428773628056 70.02947015878371,23.102957662362616 70.00040076355585,23.092346106868792 69.98850873823535,23.102957662362616 69.97529537676814,23.132139439970636 69.98058072135503,23.132139439970636 69.96472468759437,23.11356921785644 69.96340335144765,23.04989988489349 69.947547317687,23.012759440665107 69.92376326704601,23.033982551652755 69.92376326704601,23.08704032912188 69.94490464539355,23.110916328982984 69.94490464539355,23.094998995742248 69.93169128392634,23.118874995603353 69.9290486116329,23.132139439970636 69.94094063695339,23.161321217578653 69.95283266227388,23.187850106313213 69.95151132612716,23.2249905505416 69.95943934300749,23.251519439276162 69.97133136832798,23.25947810589653 69.98850873823535,23.304577216745287 69.99247274667552,23.307230105618743 69.97661671291486,23.331106105479847 69.97529537676814,23.368246549708235 69.98058072135503,23.381510994075516 69.96736735988782,23.408039882810076 69.96472468759437,23.429262993797728 69.97661671291486,23.471709215773025 69.98058072135503,23.48232077126685 69.99247274667552,23.52476699324215 70.01361412502305,23.500890993381045 70.02550615034355,23.39212254956934 70.02550615034355,23.35763499421441 70.02022080575667,23.25947810589653 70.03871951181075,23.193155884060126 70.05721821786486,23.1825443285663 70.06911024318535,23.132139439970636 70.08628761309272,23.14275099546446 70.09025162153289,23.19050299518667 70.09421562997305,23.227643439415058 70.10214364685338,23.331106105479847 70.10478631914683,23.347023438720583 70.09817963841321,23.373552327455148 70.12328502520091,23.33641188322676 70.13385571437469,23.29661855012492 70.15235442042878,23.2674367725169 70.15896110116239,23.264783883643442 70.17481713492305,23.37089943858169 70.17613847106976,23.362940771961323 70.18406648795009,23.2674367725169 70.18406648795009,23.198461661807038 70.19992252171075,23.198461661807038 70.21181454703124,23.174585661945933 70.2157785554714,23.21172610617432 70.21974256391157,23.278048328010726 70.21974256391157,23.325800327732935 70.2276705807919,23.402734105063164 70.2276705807919,23.402734105063164 70.23559859767222,23.431915882671184 70.23956260611239,23.5035438822545 70.23691993381894,23.49823810450759 70.24749062299271,23.36559366083478 70.24484795069927,23.317841661112567 70.2408839422591,23.256825217023074 70.24352661455255,23.243560772655794 70.24881195913943,23.27274255026381 70.2593826483132,23.32314743885948 70.26070398445992,23.3523292164675 70.26863200134025,23.408039882810076 70.26070398445992,23.410692771683532 70.26466799290009,23.362940771961323 70.27656001822058,23.445180327038464 70.28580937124762,23.53007277098906 70.28052402666074,23.5884363262051 70.28845204354107,23.60700654831929 70.29770139656812,23.53007277098906 70.29373738812795,23.4610976602792 70.30430807730173,23.51150254887487 70.3214854472091,23.500890993381045 70.32544945564926,23.44783321591192 70.31223609418205,23.429262993797728 70.31223609418205,23.445180327038464 70.32941346408943,23.535378548735974 70.37037488463778,23.58047765958473 70.38226690995828,23.58047765958473 70.3901949268386,23.622923881560027 70.39944427986565,23.62822965930694 70.40737229674598,23.771485658473573 70.44701238114762,23.798014547208137 70.47608177637548,23.853725213550714 70.49325914628285,23.959840768488963 70.50779384389679,23.983716768350067 70.50779384389679,24.042080323566104 70.51307918848367,24.103096767655597 70.49193781013614,24.166766100618545 70.48665246554926,24.222476766961123 70.48665246554926,24.26757587780988 70.47872444866893,24.26757587780988 70.45890440646811,24.304716322038267 70.44701238114762,24.32859232189937 70.44965505344106,24.304716322038267 70.48268845710909,24.25961721118951 70.50382983545663,24.222476766961123 70.51572186077712,24.137584323010525 70.53157789453778,24.097790989908685 70.53289923068449,24.10044387878214 70.55271927288531,24.158807433998177 70.56989664279268,24.174724767238914 70.5897166849935,24.20390654484693 70.601608710314,24.23308832245495 70.59764470187383,24.230435433581494 70.63728478627547,24.243699877948774 70.66239017306317,24.28614609992407 70.65842616462301,24.27288165555679 70.67428219838366,24.291451877670983 70.68353155141071,24.33655098851974 70.68749555985087,24.360426988380844 70.6954235767312,24.355121210633932 70.68617422370416,24.47450120993946 70.67824620682383,24.471848321066005 70.66635418150334,24.562046542763515 70.64653413930252,24.567352320510427 70.63464211398203,24.604492764738815 70.61350073563449,24.63367454234683 70.61350073563449,24.69734387530978 70.63067810554186,24.6840794309425 70.64653413930252,24.62836876459992 70.6703181899435,24.59388120924499 70.69410224058448,24.657550542207936 70.6954235767312,24.57796387600425 70.7139222827853,24.57796387600425 70.70335159361153,24.543476320649322 70.70995827434514,24.562046542763515 70.71656495507874,24.511641654167846 70.72713564425251,24.53817054290241 70.74695568645333,24.527558987408586 70.75488370333366,24.48776565430674 70.74431301415989,24.40022032148269 70.74827702260005,24.344509655140108 70.75224103104021,24.357774099507388 70.7641330563607,24.30206343316481 70.76677572865415,24.238394100201862 70.77866775397464,24.26757587780988 70.81698650222955,24.230435433581494 70.83812788057709,24.352468321760476 70.87644662883201,24.389608765988864 70.86587593965824,24.389608765988864 70.84605589745742,24.410831876976513 70.84869856975087,24.445319432331445 70.83812788057709,24.424096321343793 70.8262358552566,24.519600320788218 70.80773714920251,24.58592254262462 70.78395309856153,24.62041009797955 70.79188111544185,24.62041009797955 70.81698650222955,24.570005209383883 70.82359318296317,24.580616764877707 70.8447345613107,24.556740765016603 70.86587593965824,24.57796387600425 70.87380395653857,24.649591875587568 70.8698399480984,24.673467875448676 70.86587593965824,24.71060831967706 70.8698399480984,24.66285631995485 70.88569598185906,24.548782098396234 70.900230679473,24.554087876143146 70.90551602405988,24.60714565361227 70.9134440409402,24.617757209106095 70.91872938552709,24.55143498726969 70.92269339396725,24.543476320649322 70.95440546148856,24.591228320371535 70.95440546148856,24.638980320093744 70.95969080607544,24.57265809825734 70.96233347836889,24.535517654028954 70.97026149524922,24.59388120924499 70.97951084827626,24.625715875726463 70.99008153745004,24.69734387530978 70.99008153745004,24.67081498657522 70.96761882295577,24.69734387530978 70.97158283139593,24.73979009728508 70.99008153745004,24.77427765264001 70.99008153745004,24.758360319399273 70.9636548145156,24.782236319260377 70.95836946992873,24.7928478747542 70.94383477231479,24.80876520799494 70.94647744460823,24.835294096729502 70.92665740240741,24.790194985880746 70.91476537708692,24.82998831898259 70.9134440409402,24.891004763072083 70.92665740240741,24.92549231842701 70.91740804938037,24.94671542941466 70.91872938552709,24.922839429553555 70.93326408314103,24.959979873781943 70.96233347836889,24.957326984908487 70.9755468398361,25.01038476237761 70.97158283139593,25.04487231773254 70.95440546148856,25.034260762238716 70.93326408314103,24.941409651667747 70.89362399873939,24.875087429831343 70.87380395653857,24.936103873920835 70.88041063727218,24.944062540541204 70.87380395653857,25.018343428997976 70.86587593965824,25.01569054012452 70.8817319734189,25.050178095479453 70.91080136864676,25.119153206189313 70.92665740240741,25.156293650417698 70.9068373602066,25.193434094646086 70.900230679473,25.233227427747927 70.86851861195169,25.235880316621383 70.83284253599021,25.24649187211521 70.82095051066972,25.23057453887447 70.81302249378939,25.233227427747927 70.79716646002873,25.25445053873558 70.81302249378939,25.26771498310286 70.80905848534923,25.291590982963964 70.8262358552566,25.320772760571984 70.80773714920251,25.341995871559632 70.80905848534923,25.328731427192352 70.82887852755005,25.341995871559632 70.83019986369676,25.36321898254728 70.84869856975087,25.320772760571984 70.86059059507136,25.326078538318896 70.86587593965824,25.36321898254728 70.85794792277791,25.35791320480037 70.87776796497873,25.387094982408385 70.8817319734189,25.38444209353493 70.90155201561971,25.341995871559632 70.93458541928774,25.3075083162047 70.93987076387462,25.299549649584332 70.96233347836889,25.312814093951612 70.97422550368938,25.34995453818 70.97422550368938,25.355260315926913 70.9636548145156,25.379136315788017 70.96761882295577,25.437499871004054 70.95969080607544,25.448111426497878 70.94647744460823,25.50912787058737 70.93062141084758,25.511780759460827 70.92269339396725,25.548921203689215 70.9134440409402,25.52239231495465 70.89758800717955,25.40566520452258 70.86191193121807,25.3924007601553 70.85398391433775,25.437499871004054 70.86059059507136,25.429541204383685 70.84605589745742,25.450764315371334 70.8447345613107,25.498516315093546 70.88041063727218,25.50912787058737 70.87776796497873,25.49586342622009 70.85794792277791,25.506474981713914 70.8566265866312,25.533003870448475 70.87380395653857,25.607284758905248 70.9068373602066,25.647078092007092 70.90551602405988,25.708094536096585 70.90551602405988,25.713400313843497 70.89626667103283,25.67625986961511 70.88965999029922,25.72401186933732 70.88437464571234,25.721358980463865 70.86191193121807,25.75054075807188 70.86851861195169,25.742582091451514 70.88965999029922,25.84339186864285 70.90155201561971,25.88318520174469 70.89362399873939,25.85135053526322 70.87644662883201,25.819515868781743 70.8698399480984,25.85135053526322 70.86587593965824,25.909714090479255 70.87380395653857,25.904408312732343 70.86455460351152,25.86992075737741 70.84869856975087,25.848697646389763 70.84605589745742,25.77441675793299 70.82491451910988,25.758499424692253 70.81170115764267,25.76115231356571 70.79188111544185,25.739929202578057 70.78659577085497,25.68421853623548 70.78395309856153,25.62054920327253 70.7760250816812,25.59136742566451 70.74827702260005,25.612590536652164 70.75224103104021,25.623202092145988 70.74299167801317,25.673606980741653 70.76016904792054,25.694830091729305 70.75884771177383,25.68421853623548 70.73109965269268,25.66299542524783 70.72317163581235,25.660342536374372 70.73638499727956,25.64177231426018 70.74034900571972,25.54626831481576 70.70335159361153,25.52239231495465 70.70599426590498,25.50912787058737 70.69410224058448,25.458722981991702 70.67296086223695,25.395053649028757 70.6703181899435,25.40566520452258 70.65710482847629,25.291590982963964 70.59235935728695,25.25445053873558 70.5897166849935,25.233227427747927 70.56593263435252,25.18547542802572 70.55536194517876,25.13507053943005 70.53686323912466,25.09262431745475 70.53289923068449,25.055483873226365 70.50382983545663,25.089971428581293 70.51307918848367,25.219962983380647 70.52893522224433,25.235880316621383 70.521007205364,25.21731009450719 70.49986582701646,25.16159942816461 70.49193781013614,25.076706984214013 70.49722315472302,25.060789650973277 70.48797380169597,25.08466565083438 70.4707964317886,25.222615872254103 70.48004578481564,25.22526876112756 70.46815375949515,25.275673649723227 70.46683242334844,25.23057453887447 70.45890440646811,25.21200431676028 70.43908436426729,25.16159942816461 70.42190699435992,25.18547542802572 70.41397897747959,25.241186094368295 70.41001496903942,25.23853320549484 70.3901949268386,25.21731009450719 70.38623091839844,25.174863872531894 70.3901949268386,25.17751676140535 70.40340828830581,25.14833498379733 70.40605096059926,25.08466565083438 70.36641087619762,25.042219428859084 70.35319751473041,25.06609542872019 70.34923350629025,25.105888761822033 70.36112553161074,25.129764761683138 70.36112553161074,25.082012761960925 70.34262682555664,25.074054095340557 70.32809212794271,25.055483873226365 70.31752143876894,25.0714012064671 70.31355743032877,25.143029206050418 70.33337747252959,25.182822539152262 70.32544945564926,25.16955809478498 70.29373738812795,25.140376317176962 70.28580937124762,25.1138474284424 70.29241605198123,25.116500317315857 70.2778813543673,25.0714012064671 70.26070398445992,25.03160787336526 70.26070398445992,25.02364920674489 70.2527759675796,24.936103873920835 70.23163458923206,24.93875676279429 70.20785053859107,24.917533651806643 70.19992252171075,24.930798096173923 70.18406648795009,24.9626327626554 70.1721744626296,24.928145207300467 70.16424644574927,24.904269207439363 70.15235442042878,24.91222787405973 70.14310506740173,24.914880762933187 70.08100226850584,24.973244318149224 70.0783595962124,24.994467429136872 70.07043157933207,24.983855873643048 70.05457554557141,25.03160787336526 70.05853955401157,25.034260762238716 70.084966276946,24.981202984769592 70.10082231070666,24.98916165138996 70.12724903364108,25.02364920674489 70.15499709272223,25.055483873226365 70.14310506740173,25.087318539707837 70.15896110116239,25.09262431745475 70.13914105896157,25.060789650973277 70.1351770505214,25.060789650973277 70.1219636890542,25.08466565083438 70.12328502520091,25.116500317315857 70.13914105896157,25.145682094923874 70.13385571437469,25.150987872670786 70.12328502520091,25.129764761683138 70.12328502520091,25.105888761822033 70.11403567217387,25.063442539846733 70.11403567217387,25.074054095340557 70.10875032758699,25.082012761960925 70.08232360465256,25.116500317315857 70.0664675708919,25.150987872670786 70.06514623474519,25.180169650278806 70.08100226850584,25.22526876112756 70.09025162153289,25.233227427747927 70.11403567217387,25.25445053873558 70.12989170593453,25.241186094368295 70.13781972281485,25.270367871976315 70.14574773969518,25.283632316343596 70.16292510960255,25.278326538596684 70.1721744626296,25.299549649584332 70.19595851327058,25.320772760571984 70.18803049639025,25.355260315926913 70.19860118556403,25.397706537902213 70.22502790849845,25.40566520452258 70.24881195913943,25.487904759599722 70.26995333748697,25.52239231495465 70.28977337968779,25.493210537346634 70.28845204354107,25.52239231495465 70.31223609418205,25.461375870865158 70.30827208574189,25.42688831551023 70.3214854472091,25.3924007601553 70.3214854472091,25.387094982408385 70.33337747252959,25.429541204383685 70.34262682555664,25.437499871004054 70.3650895400509,25.466681648612074 70.37037488463778,25.493210537346634 70.38226690995828,25.498516315093546 70.39944427986565,25.525045203828107 70.38623091839844,25.55157409256267 70.39548027142548,25.53035098157502 70.40605096059926,25.57279720355032 70.41397897747959,25.580755870170687 70.4271923389468,25.612590536652164 70.43908436426729,25.61524342552562 70.45626173417466,25.64177231426018 70.46022574261482,25.665648314121285 70.49193781013614,25.742582091451514 70.51307918848367,25.8646149796305 70.57253931508613,25.885838090618147 70.56989664279268,25.92563142371999 70.5897166849935,25.981342090062572 70.60557271875416,25.96807764569529 70.6267140971017,25.981342090062572 70.63860612242219,26.013176756544045 70.65842616462301,26.018482534290957 70.68221021526399,26.04235853415206 70.6954235767312,26.02378831203787 70.7073156020517,26.055622978519345 70.72845698039923,26.082151867253906 70.72845698039923,26.108680755988466 70.71920762737219,26.140515422469942 70.75884771177383,26.129903866976118 70.76809706480087,26.17500297782487 70.77866775397464,26.196226088812523 70.77866775397464,26.233366533040908 70.78791710700169,26.220102088673627 70.79320245158857,26.243978088534732 70.81302249378939,26.400498532068646 70.8883386541525,26.42702742080321 70.89230266259267,26.437638976297034 70.90155201561971,26.511919864753807 70.93458541928774,26.567630531096388 70.95176278919512,26.63660564180625 70.95572679763528,26.671093197161177 70.97026149524922,26.70558075251611 70.96629748680905,26.687010530401913 70.95836946992873,26.7241509746303 70.93458541928774,26.700274974769194 70.91872938552709,26.729456752377214 70.91080136864676,26.708233641389565 70.88041063727218,26.665787419414265 70.86191193121807,26.665787419414265 70.82887852755005,26.73210964125067 70.84209188901725,26.73210964125067 70.82359318296317,26.71088653026302 70.82359318296317,26.71884519688339 70.80377314076235,26.681704752655 70.78395309856153,26.673746086034633 70.77206107324103,26.684357641528457 70.75620503948038,26.679051863781545 70.74431301415989,26.623341197438965 70.72317163581235,26.51722564250072 70.69806624902465,26.45355630953777 70.68617422370416,26.400498532068646 70.67956754297055,26.360705198966805 70.66106883691646,26.30764742149768 70.65049814774268,26.336829199105697 70.64653413930252,26.46682075390505 70.66635418150334,26.533142975741455 70.6703181899435,26.58620075321058 70.66106883691646,26.562324753349476 70.67428219838366,26.594159419830948 70.67692487067711,26.618035419692053 70.69013823214432,26.633952752932792 70.68353155141071,26.62068830856551 70.6703181899435,26.59946519757786 70.66899685379678,26.604770975324772 70.65710482847629,26.639258530679705 70.64653413930252,26.615382530818597 70.5897166849935,26.602118086451316 70.57386065123285,26.61272964194514 70.54875526444515,26.551713197855648 70.521007205364,26.54906030898219 70.48929513784269,26.58620075321058 70.48268845710909,26.55701897560256 70.45626173417466,26.527837197994543 70.45097638958778,26.506614087006895 70.42322833050663,26.533142975741455 70.39415893527877,26.501308309259983 70.38755225454516,26.47477942052542 70.36244686775746,26.477432309398875 70.35451885087713,26.51722564250072 70.3465908339968,26.538448753488368 70.37830290151811,26.578242086590212 70.38755225454516,26.610076753071684 70.37830290151811,26.631299864059333 70.37962423766483,26.62599408631242 70.39812294371893,26.580894975463668 70.4020869521591,26.62599408631242 70.43115634738696,26.687010530401913 70.41133630518614,26.721498085756846 70.4153003136263,26.734762530124126 70.42322833050663,26.73210964125067 70.43776302812057,26.763944307732142 70.43908436426729,26.755985641111774 70.45097638958778,26.769250085479054 70.46418975105499,26.74537408561795 70.47872444866893,26.74537408561795 70.48797380169597,26.803737640833987 70.48004578481564,26.817002085201267 70.4959018185763,26.838225196188915 70.48797380169597,26.83557230731546 70.47608177637548,26.9178118623926 70.47872444866893,26.949646528874077 70.48268845710909,26.915158973519144 70.46022574261482,26.962910973241357 70.45494039802794,26.989439861975917 70.4707964317886,27.031886083951218 70.48400979325581,27.076985194799974 70.47476044022876,27.095555416914166 70.46418975105499,27.103514083534535 70.48004578481564,27.084943861420342 70.48665246554926,27.039844750571586 70.48929513784269,27.026580306204306 70.50779384389679,26.99474563972283 70.50911518004351,26.99474563972283 70.52364987765745,26.949646528874077 70.54743392829843,27.01596875071048 70.55536194517876,27.005357195216657 70.56989664279268,26.952299417747533 70.57253931508613,27.008010084090113 70.60557271875416,27.031886083951218 70.60689405490088,27.026580306204306 70.61878608022137,27.076985194799974 70.61878608022137,27.069026528179602 70.61350073563449,27.095555416914166 70.60557271875416,27.20962963847278 70.59632336572712,27.24677008270117 70.58443134040662,27.236158527207344 70.60689405490088,27.13269586114255 70.63332077783531,27.108819861281447 70.63067810554186,27.074332305926518 70.64653413930252,27.076985194799974 70.66106883691646,27.130042972269095 70.6703181899435,27.130042972269095 70.67824620682383,27.084943861420342 70.68221021526399,27.111472750154903 70.68749555985087,27.145960305509835 70.67956754297055,27.172489194244395 70.66899685379678,27.164530527624027 70.68617422370416,27.13269586114255 70.69410224058448,27.06372075043269 70.70203025746481,27.084943861420342 70.71127961049186,27.111472750154903 70.75488370333366,27.14861319438329 70.74827702260005,27.26003452706845 70.7509196948935,27.299827860170293 70.72713564425251,27.326356748904853 70.73506366113284,27.323703860031397 70.74827702260005,27.35553852651287 70.75620503948038,27.270646082562273 70.7641330563607,27.27329897143573 70.79055977929514,27.283910526929553 70.8011304684689,27.27860474918264 70.82491451910988,27.291869193549925 70.83284253599021,27.37145585975361 70.83284253599021,27.41920785947582 70.82491451910988,27.443083859336927 70.81566516608284,27.485530081312223 70.81566516608284,27.506753192299872 70.80773714920251,27.527976303287524 70.80905848534923,27.591645636250473 70.80377314076235,27.708372746682542 70.79980913232218,27.711025635556 70.80377314076235,27.65531496921342 70.81302249378939,27.541240747654804 70.819629174523,27.477571414691855 70.82887852755005,27.45369541483075 70.8447345613107,27.512058970046787 70.85001990589758,27.50940608117333 70.86059059507136,27.53062919216098 70.86587593965824,27.469612748071487 70.8698399480984,27.472265636944943 70.88569598185906,27.374108748627066 70.8817319734189,27.42451363722273 70.9068373602066,27.41124919285545 70.9253360662607,27.3475798598925 70.89362399873939,27.310439415664117 70.88965999029922,27.297174971296837 70.89626667103283,27.25207586044808 70.89362399873939,27.236158527207344 70.90155201561971,27.222894082840064 70.89626667103283,27.164530527624027 70.90419468791316,27.15657186100366 70.9134440409402,27.116778527901815 70.91740804938037,27.10616697240799 70.93458541928774,27.124737194522183 70.9385494277279,27.145960305509835 70.98215352056971,27.193712305232044 70.97951084827626,27.299827860170293 70.94647744460823,27.352885637639414 70.94647744460823,27.318398082284485 70.95572679763528,27.30778652679066 70.97158283139593,27.267993193688817 70.99933089047708,27.222894082840064 71.00329489891725,27.199018082978956 71.01386558809102,27.212282527346236 71.02840028570495,27.275951860309185 71.0442563194656,27.31574519341103 71.03236429414511,27.37145585975361 71.02443627726478,27.374108748627066 71.01386558809102,27.427166526096187 71.02443627726478,27.506753192299872 71.00990157965086,27.504100303426416 70.9755468398361,27.514711858920244 70.95572679763528,27.567769636389365 70.96233347836889,27.554505192022084 70.97026149524922,27.575728303009733 71.01122291579757,27.538587858781348 71.03236429414511,27.498794525679504 71.04029231102544,27.50144741455296 71.08521774001396,27.54389363652826 71.09578842918773,27.551852303148628 71.10503778221478,27.57838119188319 71.10768045450823,27.618174524985033 71.09710976533445,27.644703413719593 71.09710976533445,27.644703413719593 71.10900179065494,27.628786080478857 71.1248578244156,27.644703413719593 71.13278584129593,27.708372746682542 71.11296579909511,27.7534718575313 71.10900179065494,27.718984302176366 71.08521774001396,27.729595857670194 71.08521774001396,27.68184385794798 71.06143368937298,27.72429007992328 71.06407636166642,27.721637191049822 71.05218433634593,27.7534718575313 71.04822032790577,27.795918079506595 71.07200437854675,27.817141190494247 71.06011235322626,27.787959412886227 71.0442563194656,27.82244696824116 71.03236429414511,27.851628745849176 71.05086300019921,27.87019896796337 71.05218433634593,27.867546079089912 71.03500696643856,27.98162030064853 71.08521774001396,27.963050078534337 71.06143368937298,27.98162030064853 71.05350567249265,28.018760744876918 71.07728972313363,28.06385985572567 71.0878604123074,28.05855407797876 71.04822032790577,28.074471411219495 71.04689899175905,28.130182077562075 71.0812537315738,28.156710966296636 71.09182442074757,28.191198521651568 71.09578842918773,28.24690918799415 71.08521774001396,28.26547941010834 71.04822032790577,28.23099185475341 71.03632830258528,28.167322521790464 71.03236429414511,28.20976874376576 71.02707894955823,28.172628299537376 70.99536688203692,28.16997541066392 70.97951084827626,28.191198521651568 70.99800955433037,28.21772741038613 71.00725890735741,28.225686077006497 70.99933089047708,28.180586966157744 70.96233347836889,28.199157188271936 70.95836946992873,28.225686077006497 70.97818951212955,28.23895052137378 70.97158283139593,28.284049632222533 70.99140287359675,28.305272743210182 71.00329489891725,28.408735409274975 71.00329489891725,28.52280963083359 70.98743886515659,28.54403274182124 70.97951084827626,28.549338519568153 70.96761882295577,28.50954518646631 70.9134440409402,28.48832207547866 70.90551602405988,28.47505763111138 70.88965999029922,28.42465274251571 70.88569598185906,28.366289187299675 70.89362399873939,28.347718965185482 70.88569598185906,28.459140297870643 70.87644662883201,28.40608252040152 70.85001990589758,28.326495854197834 70.85266257819103,28.371594965046587 70.84077055287054,28.35037185405894 70.82491451910988,28.331801631944746 70.82359318296317,28.22303318813304 70.8447345613107,28.212421632639217 70.84077055287054,28.313231409830554 70.81170115764267,28.22303318813304 70.78791710700169,28.095694522207147 70.79584512388202,28.10630607770097 70.80509447690906,28.074471411219495 70.79716646002873,28.07712430009295 70.79055977929514,28.018760744876918 70.79716646002873,28.00814918938309 70.81698650222955,27.963050078534337 70.81302249378939,27.957744300787425 70.8011304684689,27.92590963430595 70.79716646002873,27.87815763458374 70.8011304684689,27.78530652401277 70.79716646002873,27.74020741316402 70.8011304684689,27.73224874654365 70.79716646002873,27.80918252387388 70.78791710700169,27.830405634861528 70.78263176241481,27.806529635000423 70.77073973709432,27.7534718575313 70.75224103104021,27.76673630189858 70.74431301415989,27.87019896796337 70.77206107324103,27.902033634444845 70.7760250816812,27.96835585628125 70.77073973709432,28.026719411497286 70.76281172021399,28.000190522762722 70.74034900571972,28.018760744876918 70.74431301415989,28.04528963361148 70.75884771177383,28.098347411080603 70.75224103104021,28.13283496643553 70.74431301415989,28.1407936330559 70.7324209888394,28.108958966574427 70.71920762737219,28.082430077839863 70.71656495507874,28.061206966852215 70.70335159361153,27.984273189521986 70.68749555985087,27.93121541205286 70.68353155141071,27.84897585697572 70.66899685379678,27.88611630120411 70.65710482847629,27.79857096838005 70.63860612242219,27.75877763527821 70.63860612242219,27.729595857670194 70.63067810554186,27.63939763597268 70.62142875251482,27.671232302454158 70.6148220717812,27.742860302037474 70.61746474407465,27.825099857114616 70.63067810554186,27.896727856697932 70.63464211398203,27.936521189799773 70.64653413930252,28.039983855864566 70.66239017306317,28.167322521790464 70.68749555985087,28.201810077145392 70.7073156020517,28.27874385447562 70.7205289635189,28.305272743210182 70.68749555985087,28.289355409969446 70.65446215618284,28.268132298981797 70.63067810554186,28.215074521512673 70.60028737416728,28.079777188966407 70.55536194517876,27.949785634167057 70.52497121380416,27.89938074557139 70.51307918848367,27.88611630120411 70.49986582701646,27.811835412747335 70.48797380169597,27.825099857114616 70.47872444866893,27.851628745849176 70.48004578481564,27.825099857114616 70.4456910450009,27.851628745849176 70.44172703656074,27.854281634722632 70.43115634738696,27.87815763458374 70.42983501124024,27.872851856836828 70.45626173417466,27.88611630120411 70.47872444866893,27.95509141191397 70.49986582701646,27.976314522901617 70.4959018185763,27.928562523179405 70.48004578481564,27.907339412191757 70.46022574261482,27.923256745432493 70.45890440646811,27.978967411775074 70.49193781013614,27.98162030064853 70.48268845710909,28.005496300509634 70.48004578481564,28.02406652262383 70.48929513784269,28.069165633472583 70.49986582701646,28.09038874446023 70.4959018185763,28.15405807742318 70.51175785233696,28.199157188271936 70.50779384389679,28.191198521651568 70.4959018185763,28.130182077562075 70.48929513784269,28.034678078117654 70.45097638958778,28.04528963361148 70.4271923389468,28.05855407797876 70.43115634738696,28.069165633472583 70.45097638958778,28.12752918868862 70.47476044022876,28.177934077284288 70.48797380169597,28.207115854892304 70.48797380169597,28.24690918799415 70.50911518004351,28.2920082988429 70.50911518004351,28.302619854336726 70.50382983545663,28.366289187299675 70.51307918848367,28.366289187299675 70.49986582701646,28.32914874307129 70.48004578481564,28.35567763180585 70.47608177637548,28.39281807603424 70.48797380169597,28.43261140913608 70.49193781013614,28.459140297870643 70.48797380169597,28.44587585350336 70.46418975105499,28.48832207547866 70.44304837270745,28.512198075339764 70.44965505344106,28.506892297592852 70.46418975105499,28.485669186605204 70.4707964317886,28.512198075339764 70.49193781013614,28.546685630694697 70.49986582701646,28.528115408580504 70.50779384389679,28.50954518646631 70.50382983545663,28.46709896449101 70.50911518004351,28.443222964629904 70.52761388609761,28.395470964907695 70.54082724756482,28.408735409274975 70.54875526444515,28.414041187021887 70.56989664279268,28.43791718688299 70.58839534884679,28.46709896449101 70.59764470187383,28.485669186605204 70.63728478627547,28.506892297592852 70.65446215618284,28.50954518646631 70.68353155141071,28.5705616305558 70.67428219838366,28.6130078525311 70.67428219838366,28.623619408024926 70.68353155141071,28.575867408302713 70.68749555985087,28.541379852947784 70.70203025746481,28.51485096421322 70.72713564425251,28.605049185910733 70.76809706480087,28.666065630000222 70.77998909012136,28.658106963379854 70.79320245158857,28.750958073950823 70.85398391433775,28.83585051790142 70.87776796497873,28.976453628194598 70.88569598185906,28.992370961435334 70.8698399480984,29.05073451665137 70.87380395653857,29.09052784975321 70.87380395653857,29.093180738626668 70.85794792277791,29.132974071728512 70.84869856975087,29.201949182438373 70.85398391433775,29.247048293287126 70.84605589745742,29.24970118216058 70.83680654443037,29.27357718202169 70.8262358552566,29.26031273765441 70.819629174523,29.27357718202169 70.80509447690906,29.255006959907494 70.79980913232218,29.278882959768602 70.79188111544185,29.318676292870443 70.79188111544185,29.39030429245376 70.78395309856153,29.358469625972287 70.76281172021399,29.329287848364267 70.75224103104021,29.255006959907494 70.74034900571972,29.27357718202169 70.73638499727956,29.26031273765441 70.72713564425251,29.310717626250074 70.7324209888394,29.331940737237726 70.72449297195907,29.4062216256945 70.73506366113284,29.416833181188323 70.72845698039923,29.284188737515514 70.70995827434514,29.323982070617355 70.69938758517137,29.361122514845743 70.70335159361153,29.37703984808648 70.69938758517137,29.310717626250074 70.68353155141071,29.24439540441367 70.6703181899435,29.30010607075625 70.66503284535662,29.252354071034038 70.65710482847629,29.297453181882794 70.65446215618284,29.345205181605007 70.67956754297055,29.392957181327215 70.69410224058448,29.416833181188323 70.69013823214432,29.451320736543252 70.70203025746481,29.5149900695062 70.70203025746481,29.589270957962974 70.70995827434514,29.66885762416666 70.72845698039923,29.71660962388887 70.73506366113284,29.80150206783947 70.72449297195907,29.7935434012191 70.69938758517137,29.812113623333293 70.69410224058448,29.785584734598732 70.65446215618284,29.69803940177468 70.6267140971017,29.679469179660483 70.6148220717812,29.70334517952159 70.61746474407465,29.743138512623432 70.6267140971017,29.796196290092556 70.63067810554186,29.83333673432094 70.64257013086235,29.904964733904258 70.68353155141071,29.920882067144998 70.68617422370416,29.94741095587956 70.70335159361153,30.011080288842507 70.71127961049186,30.08536117729928 70.7073156020517,30.101278510540016 70.6954235767312,30.178212287870245 70.68353155141071,30.207394065478265 70.67428219838366,30.19412962111098 70.66635418150334,30.11189006603384 70.65446215618284,30.11984873265421 70.64653413930252,30.18882384336407 70.64653413930252,30.247187398580106 70.64124879471564,30.33473273140416 70.61085806334104,30.32146828703688 70.59235935728695,30.28167495393504 70.57386065123285,30.228617176465914 70.56989664279268,30.207394065478265 70.55271927288531,30.156989176882597 70.54875526444515,30.080055399552368 70.54875526444515,30.088014066172736 70.54082724756482,30.146377621388773 70.53289923068449,30.122501621527665 70.52893522224433,30.053526510817804 70.52893522224433,30.024344733209787 70.54082724756482,30.000468733348683 70.53686323912466,30.040262066450524 70.52497121380416,30.114542954907296 70.51704319692384,30.138418954768404 70.50382983545663,30.16229495462951 70.51307918848367,30.21004695435172 70.52497121380416,30.379831842252916 70.5513979367386,30.443501175215864 70.55271927288531,30.475335841697337 70.54743392829843,30.552269619027566 70.54082724756482,30.594715841002866 70.54082724756482,30.61328606311706 70.55271927288531,30.634509174104707 70.54479125600498,30.610633174243603 70.53686323912466,30.61859184086397 70.52497121380416,30.581451396635586 70.50911518004351,30.676955396080007 70.48797380169597,30.740624729042956 70.46815375949515,30.72470739580222 70.43115634738696,30.761847840030605 70.43115634738696,30.77245939552443 70.42190699435992,30.79368250651208 70.42190699435992,30.80164117313245 70.43115634738696,30.85469895060157 70.44304837270745,30.873269172715766 70.43908436426729,30.926326950184887 70.44965505344106,30.955508727792907 70.44304837270745,30.96081450553982 70.42983501124024,30.995302060894748 70.41926432206647,31.037748282870048 70.3901949268386,31.019178060755856 70.36641087619762,31.053665616110784 70.36112553161074,31.045706949490416 70.33337747252959,31.061624282731152 70.32016411106238,31.037748282870048 70.30430807730173,31.06427717160461 70.28845204354107,31.00856650526203 70.28052402666074,30.982037616527467 70.2844880351009,30.94755006117254 70.26863200134025,30.9316327279318 70.27259600978041,30.796335395385537 70.25673997601976,30.761847840030605 70.26070398445992,30.719401618055308 70.25673997601976,30.711442951434936 70.24484795069927,30.666343840586183 70.25145463143288,30.60002161874978 70.24484795069927,30.560228285647934 70.24484795069927,30.554922507901022 70.23691993381894,30.520434952546093 70.2408839422591,30.488600286064617 70.22502790849845,30.48064161944425 70.20785053859107,30.379831842252916 70.19992252171075,30.35595584239181 70.19595851327058,30.329426953657247 70.17613847106976,30.32677406478379 70.16292510960255,30.353302953518355 70.15235442042878,30.36391450901218 70.13914105896157,30.332079842530703 70.1351770505214,30.289633620555406 70.1219636890542,30.21800562097209 70.11403567217387,30.18882384336407 70.10214364685338,30.172906510123333 70.10610765529354,30.122501621527665 70.0968583022665,30.093319843919648 70.084966276946,30.103931399413472 70.0783595962124,30.143724732515317 70.0783595962124,30.172906510123333 70.06911024318535,30.101278510540016 70.0664675708919,30.082708288425824 70.0783595962124,30.00312162222214 70.0664675708919,29.878435845169697 70.05853955401157,29.825378067700573 70.06118222630502,29.785584734598732 70.07307425162551,29.748444290370344 70.07439558777223,29.61314695782408 70.09025162153289,29.54151895824076 70.09289429382633,29.461932292037076 70.10082231070666,29.427444736682148 70.09421562997305,29.339899403858094 70.10214364685338,29.30806473737662 70.11403567217387,29.24439540441367 70.11932101676075,29.19133762694455 70.11403567217387,29.11970962736123 70.12989170593453,29.079916294259387 70.12328502520091,29.018899850169895 70.12328502520091,28.976453628194598 70.1351770505214,28.928701628472385 70.13914105896157,28.902172739737825 70.14839041198861,28.854420740015613 70.14310506740173,28.86237940663598 70.14839041198861,28.809321629166856 70.15631842886894,28.769528296065015 70.17085312648288,28.658106963379854 70.18010247950993,28.562602963935433 70.1721744626296,28.589131852669993 70.1602824373091,28.73769362958354 70.16292510960255,28.764222518318103 70.15896110116239,28.73769362958354 70.14839041198861,28.663412741126766 70.13121304208124,28.575867408302713 70.1219636890542,28.57852029717617 70.11139299988042,28.64749540788603 70.10214364685338,28.674024296620594 70.09421562997305,28.71116474084898 70.10610765529354,28.756263851697735 70.10478631914683,28.796057184799576 70.10875032758699,28.838503406774876 70.10214364685338,28.851767851142156 70.09025162153289,28.83585051790142 70.08628761309272,28.727082074089715 70.09025162153289,28.769528296065015 70.0783595962124,28.833197629027964 70.0783595962124,28.84380918452179 70.07307425162551,28.90482562861128 70.07439558777223,28.955230517206946 70.06250356245174,29.010941183549527 70.06118222630502,29.069304738765563 70.0532542094247,29.106445182993948 70.05721821786486,29.106445182993948 70.04532619254437,29.14889140496925 70.04664752869108,29.18072607145072 70.03343416722387,29.117056738487776 70.01361412502305,29.146238516095792 70.00832878043617,29.178073182577265 70.01757813346322,29.21786651567911 70.00965011658289,29.239089626666757 70.01757813346322,29.276230070895146 70.00965011658289,29.31337051512353 70.02022080575667,29.379692736959935 70.00568610814273,29.39030429245376 70.00965011658289,29.461932292037076 70.00040076355585,29.504378514012377 70.00040076355585,29.493766958518552 69.98850873823535,29.644981624305554 69.97529537676814,29.66089895754629 69.9607606791542,29.637022957685186 69.94886865383371,29.55213051373459 69.92772727548618,29.48315540302473 69.91583525016569,29.464585180910532 69.89997921640503,29.430097625555604 69.89997921640503,29.400915847947584 69.88412318264437,29.41152740344141 69.87090982117716,29.35581673709883 69.87355249347061,29.353163848225375 69.86298180429684,29.42479184780869 69.85505378741651,29.438056292175972 69.866945812737,29.504378514012377 69.90658589713864,29.52825451387348 69.91583525016569,29.60518829120371 69.91451391401897,29.644981624305554 69.9039432248452,29.68742784628085 69.89997921640503,29.684774957407395 69.91187124172552,29.708650957268503 69.91451391401897,29.73783273487652 69.9039432248452,29.72987406825615 69.89469387181815,29.759055845864168 69.88676585493782,29.753750068117256 69.85901779585667,29.743138512623432 69.85108977897634,29.78027895685182 69.83126973677552,29.740485623749976 69.82202038374848,29.759055845864168 69.81409236686815,29.72987406825615 69.80616434998782,29.695386512901223 69.78898698008045,29.68212206853394 69.7731309463198,29.615799846697534 69.76388159329275,29.631717179938274 69.75595357641242,29.658246068672835 69.75727491255914,29.650287402052466 69.74538288723865,29.626411402191362 69.74538288723865,29.562742069228413 69.70045745825013,29.525601625000025 69.70442146669029,29.512337180632745 69.70045745825013,29.4062216256945 69.70045745825013,29.42479184780869 69.69649344980996,29.49641984739201 69.6925294413698,29.533560291620393 69.69781478595668,29.538866069367305 69.6925294413698,29.499072736265465 69.66478138228865,29.4725438475309 69.65949603770177,29.499072736265465 69.65156802082144,29.549477624861133 69.66874539072882,29.57070073584878 69.68856543292964,29.623758513317906 69.70442146669029,29.64763451317901 69.72556284503783,29.679469179660483 69.73745487035832,29.774973179104908 69.7480255595321,29.851906956435137 69.74406155109193,29.886394511790066 69.73216952577144,29.91822917827154 69.75727491255914,29.971286955740663 69.76916693787963,30.05617939969126 69.78105896320012,30.077402510678912 69.76916693787963,30.037609177577067 69.73745487035832,29.99516295560177 69.72556284503783,29.94741095587956 69.71631349201078,29.920882067144998 69.70574280283701,29.894353178410434 69.70442146669029,29.894353178410434 69.68460142448947,29.920882067144998 69.6674240545821,29.91822917827154 69.65156802082144,29.934146511512278 69.59078655807227,29.95271673362647 69.5868225496321,29.928840733765366 69.69649344980996,30.04291495532398 69.72820551733128,30.082708288425824 69.72952685347799,30.069443844058544 69.7176348281575,30.08536117729928 69.70574280283701,30.11189006603384 69.67270939916898,30.127807399274577 69.67270939916898,30.11189006603384 69.70838547513046,30.130460288148033 69.72556284503783,30.109237177160384 69.73216952577144,30.09862562166656 69.75595357641242,30.20208828773135 69.76916693787963,30.191476732237525 69.79030831622717,30.15433628800914 69.80748568613454,30.172906510123333 69.82202038374848,30.133113177021492 69.84976844282963,30.14903051026223 69.87090982117716,30.199435398857894 69.87883783805749,30.225964287592458 69.87487382961733,30.268410509567754 69.88148051035094,30.30024517604923 69.87883783805749,30.33473273140416 69.86562447659028,30.310856731543055 69.85373245126979,30.233922954212826 69.84316176209602,30.233922954212826 69.83391240906897,30.329426953657247 69.8418404259493,30.353302953518355 69.84712577053618,30.371873175632548 69.84316176209602,30.387790508873284 69.81409236686815,30.387790508873284 69.78238029934684,30.401054953240564 69.78238029934684,30.409013619860932 69.7480255595321,30.406360730987476 69.72027750045095,30.419625175354756 69.68856543292964,30.35595584239181 69.67667340760914,30.305550953796143 69.67138806302226,30.38248473112637 69.66478138228865,30.44615406408932 69.67535207146243,30.456765619583145 69.68460142448947,30.443501175215864 69.6925294413698,30.435542508595496 69.72556284503783,30.443501175215864 69.7361335342116,30.46737717507697 69.73349086191816,30.462071397330057 69.7480255595321,30.43288961972204 69.7612389209993,30.44084828634241 69.78238029934684,30.419625175354756 69.80220034154766,30.422278064228212 69.81409236686815,30.504517619305357 69.8233417198952,30.533699396913374 69.8114496945747,30.554922507901022 69.81409236686815,30.602674507623234 69.79691499696078,30.602674507623234 69.81409236686815,30.63185628523125 69.81012835842799,30.671649618333095 69.81012835842799,30.650426507345447 69.7982363331075,30.66899672945964 69.79030831622717,30.6955256181942 69.80220034154766,30.732666062422588 69.7982363331075,30.722054506928764 69.786344307787,30.684914062700376 69.78238029934684,30.68226117382692 69.76388159329275,30.71674872918185 69.7612389209993,30.727360284675676 69.77180961017308,30.796335395385537 69.79030831622717,30.822864284120097 69.79030831622717,30.873269172715766 69.75595357641242,30.873269172715766 69.74141887879848,30.889186505956502 69.73745487035832,30.889186505956502 69.72027750045095,30.873269172715766 69.71367081971734,30.928979839058343 69.68460142448947,30.944897172299083 69.68328008834276,30.92367406131143 69.66874539072882,30.95285583891945 69.6304266424739,30.950202950045995 69.60003591109931,30.93959139455217 69.59475056651243,30.94755006117254 69.57493052431161,30.9316327279318 69.55907449055096,30.817558506373185 69.52868375917637,30.692872729320744 69.53793311220342,30.51512917479918 69.54057578449687,30.4169722864813 69.58814388577882,30.233922954212826 69.65024668467473,30.151683399135685 69.66874539072882,30.08536117729928 69.65817470155505,30.090666955046192 69.6423186677944,30.138418954768404 69.64364000394112,30.151683399135685 69.60796392797964,30.18882384336407 69.56700250743128,30.17555939899679 69.53793311220342,30.122501621527665 69.5181130700026,30.117195843780753 69.46922363257391,30.053526510817804 69.43619022890589,30.00842739996905 69.41637018670507,29.936799400385734 69.40447816138457,29.91822917827154 69.41637018670507,29.859865623055505 69.4242982035854,29.796196290092556 69.40712083367802,29.782931845725276 69.39655014450425,29.72456829050924 69.38862212762392,29.695386512901223 69.36351674083622,29.57070073584878 69.31726997570098,29.533560291620393 69.3185913118477,29.52294873612657 69.32784066487474,29.4725438475309 69.31991264799441,29.416833181188323 69.3185913118477,29.39561007020067 69.32387665643458,29.289494515262426 69.29480726120671,29.276230070895146 69.25780984909852,29.289494515262426 69.24591782377803,29.31337051512353 69.2379898068977,29.305411848503162 69.20892041166984,29.294800293009338 69.20495640322967,29.28684162638897 69.17588700800181,29.24970118216058 69.16135231038787,29.257659848780953 69.15342429350754,29.239089626666757 69.13624692360017,29.241742515540214 69.11246287295918,29.16746162708344 69.07150145241083,29.093180738626668 69.03978938488952,29.056040294398283 69.01468399810182,29.042775850031003 69.01071998966165,29.018899850169895 69.02393335112886,28.928701628472385 69.05168141021001,28.85707362888907 69.07546546085099,28.8066687402934 69.11114153681247,28.830544740154508 69.17192299956164,28.833197629027964 69.22477644543049,29.05869318327174 69.32387665643458,29.220519404552565 69.39655014450425,29.33724651498464 69.47715164945424,29.28684162638897 69.52604108688293,29.20460207131183 69.60796392797964,29.170114515956897 69.63967599550095,29.132974071728512 69.69385077751652,28.894214073117457 69.73349086191816,28.644842519012574 69.77841629090668,28.403429631528063 69.81805637530832,28.32914874307129 69.84976844282963,28.345066076312026 69.87883783805749,28.162016744043548 69.91979925860585,28.032025189244198 69.98718740208864,27.984273189521986 70.01361412502305,27.976314522901617 70.0532542094247,27.96039718966088 70.09025162153289,27.883463412330652 70.08628761309272,27.787959412886227 70.07439558777223,27.742860302037474 70.06250356245174,27.700414080062174 70.07439558777223,27.61286874723812 70.07439558777223,27.559810969768996 70.05853955401157,27.525323414414068 70.02154214190338,27.427166526096187 70.01757813346322,27.358191415386326 69.9911514105288,27.30778652679066 69.98850873823535,27.275951860309185 69.97529537676814,27.305133637917205 69.9607606791542,27.29452208242338 69.95283266227388,27.236158527207344 69.94886865383371,27.167183416497483 69.93301262007306,27.13269586114255 69.93169128392634,27.10086119466108 69.91583525016569,27.058414972685778 69.91583525016569,27.03719186169813 69.9105499055788,26.98678697310246 69.9356552923665,26.94168786225371 69.93961930080667,26.87801852929076 69.93169128392634,26.859448307176567 69.94094063695339,26.8514896405562 69.9607606791542,26.785167418719794 69.95679667071404,26.716192308009933 69.94358330924683,26.679051863781545 69.96472468759437,26.551713197855648 69.947547317687,26.488043864892703 69.94358330924683,26.464167865031595 69.93961930080667,26.456209198411226 69.91847792245913,26.408457198689014 69.89997921640503,26.416415865309386 69.88676585493782,26.387234087701366 69.85505378741651,26.241325199661276 69.81409236686815,26.246630977408188 69.79427232466733,26.228060755293995 69.79295098852062,26.214796310926715 69.77841629090668,26.18826742219215 69.77709495475996,26.180308755571783 69.75991758485259,26.151126977963767 69.75595357641242,26.13520964472303 69.73745487035832,26.045011423025517 69.72027750045095,26.01052386767059 69.72159883659766,25.949507423581096 69.69649344980996,25.941548756960728 69.68460142448947,25.89114386836506 69.66478138228865,25.899102534985428 69.65817470155505,25.93359009034036 69.65421069311489,25.954813201328008 69.64364000394112,25.96011897907492 69.61985595330013,25.97603631231566 69.61060660027309,25.936242979213816 69.57096651587145,25.875226535124323 69.55378914596407,25.840738979769394 69.55114647367063,25.840738979769394 69.54189712064358,25.86992075737741 69.53264776761654,25.87787942399778 69.52207707844276,25.846044757516307 69.49036501092145,25.8646149796305 69.4745089771608,25.835433202022482 69.46922363257391,25.8221687576552 69.44808225422638,25.792986980047182 69.42033419514523,25.819515868781743 69.41637018670507,25.811557202161374 69.40447816138457,25.832780313149026 69.40712083367802,25.846044757516307 69.39258613606408,25.811557202161374 69.37540876615671,25.816862979908286 69.35955273239605,25.782375424553358 69.35294605166244,25.758499424692253 69.33973269019523,25.758499424692253 69.32784066487474,25.7372763137046 69.31066329496737,25.74523498032497 69.28555790817967,25.721358980463865 69.25780984909852,25.702788758349673 69.25384584065836,25.713400313843497 69.21024174781655,25.69217720285585 69.19570705020263,25.73197053595769 69.15342429350754,25.742582091451514 69.13756825974689,25.721358980463865 69.11114153681247,25.73197053595769 69.10321351993214,25.72401186933732 69.07942946929116,25.747887869198426 69.05960942709034,25.747887869198426 69.03054003186247,25.777069646806446 69.01864800654198,25.763805202439165 69.00279197278132,25.716053202716953 68.98165059443379,25.713400313843497 68.96579456067313,25.69217720285585 68.94993852691248,25.65503675862746 68.90501309792396,25.59932609228488 68.88519305572314,25.53035098157502 68.88783572801658,25.48259898185281 68.90501309792396,25.397706537902213 68.8891570641633,25.397706537902213 68.88519305572314,25.26771498310286 68.85083831590839,25.235880316621383 68.8389462905879,25.196086983519542 68.8085555592133,25.156293650417698 68.79930620618626,25.124458983936226 68.75041676875757,25.12180609506277 68.73059672655675,25.129764761683138 68.7147406927961,25.111194539568945 68.70152733132889,25.10854165069549 68.6777432806879,25.119153206189313 68.64206720472643,25.068748317593645 68.6209258263789,25.01569054012452 68.6209258263789,24.991814540263416 68.61299780949857,24.957326984908487 68.61696181793873,24.917533651806643 68.60506979261824,24.90692209631282 68.57996440583054,24.904269207439363 68.55485901904284,24.85651720771715 68.56146569977643,24.782236319260377 68.63678186013955,24.60714565361227 68.68170728912807,24.466542543319093 68.69888465903544,24.30206343316481 68.71738336508955,24.251658544569143 68.72663271811659,24.209212322593842 68.7451314241707,24.153501656251265 68.75173810490429,24.158807433998177 68.78873551701248,24.073914990047577 68.77948616398544,23.983716768350067 68.8270542652674,23.87229543566491 68.83630361829445,23.77413854734703 68.81912624838708,23.731692325371732 68.75041676875757,23.673328770155695 68.70549133976905,23.439874549291552 68.69095664215511,23.33641188322676 68.66981526380758,23.166626995325565 68.62885384325922,23.04459410714658 68.6896353060084,22.800528330788612 68.68567129756823,22.59360299865903 68.72927539041004,22.535239443442993 68.7451314241707,22.373413222162167 68.7147406927961,22.3654545555418 68.75041676875757,22.341578555680695 68.8270542652674,22.19301677876715 68.91690512324445,22.171793667779497 68.95654520764609,22.02323189086595 69.04771740176984,21.975479891143742 69.07810813314444,21.84548833634439 69.1441749404805,21.723455448165403 69.21420575625672,21.62795144872098 69.2749872190059,21.529794560403104 69.28555790817967,21.277770117424765 69.31066329496737,21.097373674029747 69.25913118524524,21.004522563458778 69.22213377313705,20.98860523021804 69.19174304176246,21.04696878543408 69.13756825974689,21.054927452054446 69.12039088983951,21.10798522952357 69.10453485607886,21.057580340927903 69.03450404030264,20.834737675557584 69.09000015846493,20.715357676252054 69.12039088983951,20.55353145497123 69.05960942709034,20.473944788767543 69.05828809094362,20.195391457054644 69.04771740176984,20.06009412450838 69.04639606562313,20.26171367889105 68.9446531823256,20.306812789739805 68.92615447627149,20.33599456734782 68.80062754233298,20.245796345650312 68.71077668435593,20.203350123675015 68.66585125536741,20.160903901699715 68.64470987701988,20.052135457888014 68.58921375885758,19.938061236329396 68.55618035518955,20.02560656915345 68.53107496840185,20.22722612353612 68.49143488400021,19.97785456943124 68.38837066455596,19.92214390308866 68.35665859703465,19.82398701477078 68.37251463079531,19.778887903922026 68.38176398382235,19.343814128675213 68.45443747189202,19.17933501852093 68.48350686711989,18.983021241885172 68.5152189346412,18.62222835509513 68.50729091776087,18.465707911561218 68.56146569977643,18.404691467471725 68.57996440583054,18.126138135758826 68.53636031298873,18.10226213589772 68.40554803446334,18.126138135758826 68.29455579813876,18.152667024493386 68.19941959557482,18.09695635815081 68.14656614970598,18.051857247302053 68.10692606530434,17.90064258151505 67.96818576989861,17.78922124882989 67.99989783741992,17.71228747149966 68.0236818880609,17.638006583042888 68.04482326640844,17.282519473999763 68.11749675447811,17.240073252024462 68.09371270383713,17.181709696808426 68.0487872748486,17.080899919617092 68.02103921576746,16.94294969819737 67.9800777952191,16.738677254941244 67.91401098788305,16.669702144231383 67.80962543229207,16.63786747774991 67.76602133945026,16.600727033521522 67.71052522128798,16.55562792267277 67.64710108624536,16.49195858970982 67.59028363193634,16.407066145759224 67.53346617762733,16.28503325758024 67.52818083304045,16.15769459165434 67.51761014386668,16.08871948094448 67.43568730276996,16.33013236842899 67.26127093140276,16.404413256885768 67.20445347709375,16.388495923645028 67.06967719012819,16.388495923645028 67.0458931394872,16.335438146175907 67.02607309728639,16.27707459095987 67.01021706352573,16.19483503588273 66.98114766829787,16.03831459234881 66.91243818866836,15.993215481500059 66.87147676812,15.87383548219453 66.78294724628968,15.767719927256284 66.70498841363313,15.621811039216194 66.59399617730855,15.44937326244154 66.5226440253856,15.375092373984767 66.4843252771307,15.4095799293397 66.4288291589684,15.452026151314996 66.34426364557824,15.483860817796472 66.28216084668234,15.30346437440145 66.23327140925366,15.213266152703941 66.20552335017251,15.035522598182379 66.15266990430366,14.743704822102199 66.14077787898317,14.515556378984968 66.13284986210284,14.539432378846072 66.06414038247334,14.550043934339897 66.02185762577827,14.573919934201001 65.95843349073564,14.584531489694829 65.89765202798647,14.595143045188653 65.8804746580791,14.62432482279667 65.81176517844959,14.542085267719528 65.69945160597828,14.53412660109916 65.67302488304387,14.515556378984968 65.58449536121354,14.499639045744228 65.5197498900242,14.499639045744228 65.43518437663404,14.499639045744228 65.41932834287338,14.499639045744228 65.35722554397749,14.50494482349114 65.30965744269552,14.377606157565246 65.24755464379963,14.327201268969578 65.11806370142095,14.244961713892437 65.06124624711194,14.109664381346171 64.96082469996112,14.064565270497415 64.93175530473326,13.931920826824609 64.8220844045554,13.85498704949438 64.76130294180622,13.817846605265991 64.72826953813819,13.706425272580834 64.63974001630787,13.65336749511171 64.57895855355869,13.841722605127096 64.52214109924968,13.892127493722764 64.50628506548902,14.085788381485067 64.47721567026116,14.114970159093083 64.4613596365005,14.11762304796654 64.43493291356609,14.149457714448015 64.25787386990544,14.157416381068384 64.1931283987161,14.05395371500359 64.09138551541857,13.966408382179537 64.0068200020284,13.717036828074658 64.04646008643005,13.41726038537411 64.07552948165791,13.36154971903153 64.07949349009807,13.210335053244528 64.09534952385873,13.175847497889595 64.09006417927185,12.926475943784716 64.05835211175054,12.74873238926315 63.99757064900136,12.67975727855329 63.97378659836038,12.61078216784343 63.916969144051365,12.49936083515827 63.832403630661204,12.422427057828042 63.776907512498916,12.329575947257077 63.7134833774563,12.2977412807756 63.67120062076122,12.231419058939196 63.6328818725063,12.149179503862054 63.59456312425139,12.212848836825003 63.47828554333992,12.080204393152194 63.355401281694846,12.035105282303439 63.31576119729321,11.974088838213948 63.26951443215797,12.077551504278738 63.15191551509978,12.175708392596617 63.048851295655524,12.218154614571915 62.99996185822684,12.074898615405282 62.90218298336947,12.135915059494774 62.74758665420309,12.096121726392932 62.681519846867026,12.05632839329109 62.61016769494408,12.06959283765837 62.594311661183426,12.186319948090443 62.42518063440311,12.2977412807756 62.26662029679656,12.276518169787952 62.19658948102034,12.27121239204104 62.170162758085915,12.234071947812652 62.06181319405478,12.212848836825003 61.97724768066462,12.202237281331179 61.933643587822814,12.170402614849705 61.83454337681873,12.159791059355879 61.79886730085725,12.13856794836823 61.723551140494145,12.276518169787952 61.64030696325071,12.3401875027509 61.61520157646301,12.419774168954586 61.561026794447436,12.44365016881569 61.566312139034316,12.568335945868132 61.568954811327764,12.61078216784343 61.538564079953176,12.655881278692185 61.50817334857859,12.70893905616131 61.46985460032367,12.815054611099555 61.39850244840073,12.870765277442135 61.35621969170565,12.857500833074855 61.31525827115729,12.823013277719923 61.23994211079418,12.79117861123845 61.1976593540991,12.706286167287853 61.142163235936806,12.706286167287853 61.136877891349926,12.67975727855329 61.05759772254665,12.65853416756564 61.05099104181304,12.613435056716886 61.047027033372885,12.488749279664447 61.049669705666325,12.44365016881569 61.049669705666325,12.321617280636707 61.03117099961223,12.239377725559565 61.01927897429174,12.220807503445371 61.01267229355813,12.234071947812652 60.99813759594419,12.332228836130533 60.889788031913056,12.334881725003989 60.852790619804864,12.348146169371269 60.81843587999011,12.39589816909348 60.732549030453235,12.459567502056428 60.68630226531799,12.509972390652095 60.64137683632947,12.512625279525551 60.59909407963439,12.581600390235412 60.550204642205706,12.605476390096518 60.51188589395079,12.605476390096518 60.406179002213094,12.547112834880481 60.34936154790408,12.49936083515827 60.32293482496966,12.504666612905183 60.27668805983441,12.523236835019375 60.223834613965565,12.54180705713357 60.19344388259098,12.525889723892831 60.16437448736311,12.502013724031727 60.09962901617377,12.446303057689146 60.038847553424596,12.39589816909348 60.01506350278361,12.3401875027509 59.96617406535493,12.22876617006574 59.92785531710001,12.17305550372316 59.88821523269837,12.15183239273551 59.886893896551655,12.117344837380582 59.892179241138535,12.053675504417633 59.884251224258215,11.984700393707772 59.89878592187215,11.928989727365192 59.886893896551655,11.915725282997911 59.87235919893772,11.883890616516437 59.87235919893772,11.88919639426335 59.85782450132379,11.838791505667682 59.83932579526969,11.852055950034963 59.83007644224264,11.875931949896069 59.8274337699492,11.926336838491736 59.79307903013445,11.931642616238648 59.7587242903197,11.92368394961828 59.74815360114592,11.931642616238648 59.73890424811888,11.93694839398556 59.69397881913036,11.88919639426335 59.69133614683691,11.878584838769525 59.68340812995659,11.867973283275699 59.66094541546232,11.854708838908419 59.647732053995114,11.788386617072014 59.64376804555495,11.727370172982523 59.62659067564758,11.698188395374505 59.608091969593474,11.690229728754137 59.58827192739266,11.727370172982523 59.51163443088283,11.753899061717085 59.4786010272148,11.761857728337453 59.42574758134595,11.775122172704734 59.41385555602546,11.780427950451646 59.38478616079759,11.817568394680032 59.345146076395956,11.82022128355349 59.29625663896727) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt b/rust/geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt new file mode 100644 index 00000000..4e12f5b5 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt @@ -0,0 +1 @@ +LINESTRING(7.717377961338066 57.74911832172092,12.83203125 58.722598828043374,31.218815724995086 69.50004679809811,31.220360609653444 69.74967563784787,31.22041170425437 70.00042112672493,31.220012092660365 70.50025174432726,30.61987385954102 70.74988171707938,28.291580927773403 71.25031072902001,27.018043769538682 71.25053409142788,25.81713611470763 71.25061029282803,23.99734444112429 71.25032666052927,23.41773118246719 71.25021807292373,18.503596794856012 70.49788127446817,15.010693169334283 69.49664550225157,12.617561279995918 68.4983356095851,9.580078125 64.62387720204688,4.340231074407465 61.998825794804695,4.346980035524813 60.498808789126734,4.722530819313656 59.24963650749106,5.464957056755467 58.24822761552509,6.968425350867709 57.74957737187902,7.717377961338066 57.74911832172092) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/poly1.wkt b/rust/geo-test-fixtures/fixtures/poly1.wkt new file mode 100644 index 00000000..b35056fb --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/poly1.wkt @@ -0,0 +1 @@ +LINESTRING(-75.57274028771249 110.01960141091608,-47.01425001453319 224.2535625036333,-44.1986052400443 233.56520178444188,-40.491516848197264 242.55919851821028,-35.928066677809895 251.1504384831045,-30.55144070299677 259.2576189250935,-24.412520344941953 266.8040179623472,-17.56940095820731 273.7182206387879,-10.086842048356445 279.93479475582495,-2.0356544237308825 285.394910086574,6.507969918963688 290.0468951126591,15.463178833668529 293.8467260149487,24.745225165064543 296.758443290685,34.26626874888323 298.7544920543751,43.93620768274765 299.8159828020204,53.66353100085455 299.9328701709592,63.35618468325523 299.10404800363494,72.92244280430123 297.33735981566144,82.27177557618647 294.64952456911897,91.31570607290114 291.0659784535237,99.96864752703414 286.6206341717666,108.14871327570971 281.355560009008,115.77849169077639 275.3205817216414,122.78577875973701 268.57281101383126,129.10426138467784 261.17610506386103,134.67414493283295 253.20046221503722,139.44271909999156 244.72135954999587,189.4427190999916 144.72135954999578,193.40316487178438 135.7190256296874,196.46014848027284 126.37119176608674,198.5841005952538 116.76827688896145,199.75447683394128 107.00316725394137,199.959956480919 97.1703179802708,199.19855199019082 87.36483941339068,197.47762821014587 77.68157714970485,194.8138311454814 68.21419462218802,191.23292694514913 59.05426712072333,186.76955267374814 50.29039601045239,181.46688127708177 42.007351716050565,175.37620398257155 34.28525376159651,168.5564341738489 27.198795797276006,161.07353753840516 20.81652310901589,152.99989400031805 15.200169599491232,98.33653286253586 -18.964431111622638,97.01425001453319 -24.253562503633297,94.16983504461093 -33.64583432864707,90.41851308474087 -42.71407837639184,85.79641141607766 -51.37096249948156,80.34804340438832 -59.53311617147662,74.12587981200636 -67.12193339062866,67.189843475707 -74.06432969864774,59.606732217031976 -80.2934460239878,51.44957554275259 -85.74929257125446,42.79693133079759 -90.37932655572841,33.73212927494458 -94.13895821910516,24.342468374316272 -96.99198025324264,14.718376196296493 -98.91091649633165,4.952538009623515 -99.87728654335396,-4.860995825414805 -99.88178372248515,-14.627715613363762 -98.92436472343178,-17.953756809330994 -98.26435835897965,-53.64820903700594 -226.76438637860946,-56.7355378616229 -236.07963555856995,-60.72105444017349 -245.0474181249662,-65.5663760693013 -253.58136942939535,-71.22483965299563 -261.59930285566344,-77.64195109371464 -269.02400132182726,-84.75591010033425 -275.7839609229046,-92.49820535873518 -281.81407955256725,-100.79427433320987 -287.05628387201347,-109.56422134444159 -291.46008858796654,-118.72358700857137 -294.98308265364733,-128.18416162723517 -297.59133771033885,-137.85483469517902 -299.2597348360279,-147.64247234423098 -299.9722064543555,-157.4528142733637 -299.72189107416057,-167.19138152692128 -298.5111993693906,-176.76438637860946 -296.3517909629941,-186.0796355585698 -293.26446213837716,-195.04741812496607 -289.2789455598266,-203.58136942939524 -284.4336239306988,-211.59930285566332 -278.7751603470045,-219.02400132182714 -272.3580489062855,-225.78396092290453 -265.2440898996658,-231.8140795525672 -257.50179464126495,-237.0562838720134 -249.20572566679022,-241.46008858796648 -240.4357786555585,-244.98308265364727 -231.27641299142869,-247.59133771033882 -221.8158383727649,-249.25973483602792 -212.145165304821,-249.97220645435553 -202.35752765576902,-249.72189107416057 -192.54718572663626,-248.51119936939062 -182.8086184730787,-246.35179096299407 -173.23561362139054,-196.35179096299407 6.7643863786094585,-193.32576660256726 15.920764023655508,-189.43184924301974 24.74309266215056,-184.7062507874361 33.14932810051302,-179.19291744665992 41.0612956486063,-172.94312105678188 48.40541711367358,-166.01498227118805 55.11339504865113,-158.47293006129595 61.12284789161923,-150.3871025524086 66.37789008984335,-75.57274028771249 110.01960141091608) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/poly1_hull.wkt b/rust/geo-test-fixtures/fixtures/poly1_hull.wkt new file mode 100644 index 00000000..a9d29458 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/poly1_hull.wkt @@ -0,0 +1 @@ +LINESTRING(-249.25973483602792 -212.145165304821,-247.59133771033882 -221.8158383727649,-244.98308265364727 -231.27641299142869,-241.46008858796648 -240.4357786555585,-237.0562838720134 -249.20572566679022,-231.8140795525672 -257.50179464126495,-225.78396092290453 -265.2440898996658,-219.02400132182714 -272.3580489062855,-211.59930285566332 -278.7751603470045,-203.58136942939524 -284.4336239306988,-195.04741812496607 -289.2789455598266,-186.0796355585698 -293.26446213837716,-176.76438637860946 -296.3517909629941,-167.19138152692128 -298.5111993693906,-157.4528142733637 -299.72189107416057,-147.64247234423098 -299.9722064543555,-137.85483469517902 -299.2597348360279,-128.18416162723517 -297.59133771033885,-118.72358700857137 -294.98308265364733,-109.56422134444159 -291.46008858796654,-100.79427433320987 -287.05628387201347,-92.49820535873518 -281.81407955256725,-84.75591010033425 -275.7839609229046,-77.64195109371464 -269.02400132182726,-71.22483965299563 -261.59930285566344,175.37620398257155 34.28525376159651,181.46688127708177 42.007351716050565,186.76955267374814 50.29039601045239,191.23292694514913 59.05426712072333,194.8138311454814 68.21419462218802,197.47762821014587 77.68157714970485,199.19855199019082 87.36483941339068,199.959956480919 97.1703179802708,199.75447683394128 107.00316725394137,198.5841005952538 116.76827688896145,196.46014848027284 126.37119176608674,193.40316487178438 135.7190256296874,189.4427190999916 144.72135954999578,139.44271909999156 244.72135954999587,134.67414493283295 253.20046221503722,129.10426138467784 261.17610506386103,122.78577875973701 268.57281101383126,115.77849169077639 275.3205817216414,108.14871327570971 281.355560009008,99.96864752703414 286.6206341717666,91.31570607290114 291.0659784535237,82.27177557618647 294.64952456911897,72.92244280430123 297.33735981566144,63.35618468325523 299.10404800363494,53.66353100085455 299.9328701709592,43.93620768274765 299.8159828020204,34.26626874888323 298.7544920543751,24.745225165064543 296.758443290685,15.463178833668529 293.8467260149487,6.507969918963688 290.0468951126591,-2.0356544237308825 285.394910086574,-10.086842048356445 279.93479475582495,-17.56940095820731 273.7182206387879,-24.412520344941953 266.8040179623472,-30.55144070299677 259.2576189250935,-184.7062507874361 33.14932810051302,-189.43184924301974 24.74309266215056,-193.32576660256726 15.920764023655508,-196.35179096299407 6.7643863786094585,-246.35179096299407 -173.23561362139054,-248.51119936939062 -182.8086184730787,-249.72189107416057 -192.54718572663626,-249.97220645435553 -202.35752765576902,-249.25973483602792 -212.145165304821) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/poly2.wkt b/rust/geo-test-fixtures/fixtures/poly2.wkt new file mode 100644 index 00000000..abd4c965 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/poly2.wkt @@ -0,0 +1 @@ +LINESTRING(0 -100,-9.801714032956664 -99.51847266721963,-19.509032201613387 -98.07852804032294,-29.02846772544675 -95.69403357322072,-38.268343236509445 -92.38795325112848,-47.13967368260018 -88.19212643483529,-55.5570233019606 -83.14696123025428,-63.439328416364795 -77.30104533627349,-70.710678118655 -70.71067811865453,-77.30104533627389 -63.439328416364326,-83.14696123025468 -55.55702330196001,-88.1921264348356 -47.13967368259957,-92.38795325112875 -38.2683432365088,-95.69403357322092 -29.028467725446088,-98.07852804032306 -19.509032201612705,-99.5184726672197 -9.80171403295597,-100 0,-100 500,-99.51847266721968 509.80171403295606,-98.07852804032305 519.5090322016129,-95.69403357322088 529.0284677254463,-92.38795325112868 538.2683432365089,-88.1921264348355 547.1396736825998,-83.14696123025453 555.5570233019603,-77.3010453362737 563.4393284163646,-70.71067811865474 570.7106781186548,-63.439328416364525 577.3010453362738,-55.55702330196019 583.1469612302545,-47.13967368259977 588.1921264348355,-38.268343236508976 592.3879532511287,-29.028467725446223 595.6940335732208,-19.5090322016128 598.078528040323,-9.80171403295602 599.5184726672197,0 600,500 600,509.8017140329562 599.5184726672196,519.509032201613 598.078528040323,529.0284677254464 595.6940335732208,538.268343236509 592.3879532511287,547.1396736825999 588.1921264348355,555.5570233019603 583.1469612302544,563.4393284163647 577.3010453362737,570.7106781186549 570.7106781186546,577.3010453362738 563.4393284163644,583.1469612302545 555.5570233019602,588.1921264348355 547.1396736825997,592.3879532511287 538.2683432365089,595.6940335732208 529.0284677254463,598.078528040323 519.5090322016129,599.5184726672197 509.80171403295606,600 500,599.5184726672197 490.19828596704394,598.078528040323 480.4909677983872,595.6940335732208 470.9715322745538,592.3879532511287 461.73165676349106,588.1921264348355 452.8603263174003,583.1469612302545 444.44297669803984,577.3010453362738 436.5606715836355,570.7106781186548 429.28932188134524,563.4393284163646 422.69895466372634,555.5570233019603 416.85303876974547,547.1396736825998 411.8078735651645,538.2683432365089 407.6120467488713,529.0284677254463 404.3059664267791,519.5090322016127 401.921471959677,509.801714032956 400.4815273327803,500 400,100 400,100 100,500 100,509.8017140329562 99.51847266721967,519.509032201613 98.07852804032302,529.0284677254464 95.69403357322085,538.268343236509 92.38795325112864,547.1396736825999 88.19212643483544,555.5570233019603 83.14696123025446,563.4393284163647 77.30104533627363,570.7106781186549 70.7106781186547,577.3010453362738 63.439328416364496,583.1469612302545 55.55702330196017,588.1921264348355 47.139673682599714,592.3879532511287 38.26834323650893,595.6940335732208 29.028467725446205,598.078528040323 19.509032201612804,599.5184726672197 9.801714032956049,600 0,599.5184726672197 -9.801714032956049,598.078528040323 -19.509032201612804,595.6940335732208 -29.028467725446205,592.3879532511287 -38.26834323650893,588.1921264348355 -47.139673682599714,583.1469612302545 -55.557023301960186,577.3010453362738 -63.439328416364525,570.7106781186548 -70.71067811865474,563.4393284163646 -77.30104533627369,555.5570233019603 -83.14696123025452,547.1396736825998 -88.1921264348355,538.2683432365089 -92.38795325112868,529.0284677254463 -95.69403357322089,519.5090322016127 -98.07852804032305,509.801714032956 -99.5184726672197,500 -100,0 -100) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/poly2_hull.wkt b/rust/geo-test-fixtures/fixtures/poly2_hull.wkt new file mode 100644 index 00000000..7cb8a8ef --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/poly2_hull.wkt @@ -0,0 +1 @@ +LINESTRING(-99.5184726672197 -9.80171403295597,-98.07852804032306 -19.509032201612705,-95.69403357322092 -29.028467725446088,-92.38795325112875 -38.2683432365088,-88.1921264348356 -47.13967368259957,-83.14696123025468 -55.55702330196001,-77.30104533627389 -63.439328416364326,-70.710678118655 -70.71067811865453,-63.439328416364795 -77.30104533627349,-55.5570233019606 -83.14696123025428,-47.13967368260018 -88.19212643483529,-38.268343236509445 -92.38795325112848,-29.02846772544675 -95.69403357322072,-19.509032201613387 -98.07852804032294,-9.801714032956664 -99.51847266721963,0 -100,500 -100,509.801714032956 -99.5184726672197,519.5090322016127 -98.07852804032305,529.0284677254463 -95.69403357322089,538.2683432365089 -92.38795325112868,547.1396736825998 -88.1921264348355,555.5570233019603 -83.14696123025452,563.4393284163646 -77.30104533627369,570.7106781186548 -70.71067811865474,577.3010453362738 -63.439328416364525,583.1469612302545 -55.557023301960186,588.1921264348355 -47.139673682599714,592.3879532511287 -38.26834323650893,595.6940335732208 -29.028467725446205,598.078528040323 -19.509032201612804,599.5184726672197 -9.801714032956049,600 0,600 500,599.5184726672197 509.80171403295606,598.078528040323 519.5090322016129,595.6940335732208 529.0284677254463,592.3879532511287 538.2683432365089,588.1921264348355 547.1396736825997,583.1469612302545 555.5570233019602,577.3010453362738 563.4393284163644,570.7106781186549 570.7106781186546,563.4393284163647 577.3010453362737,555.5570233019603 583.1469612302544,547.1396736825999 588.1921264348355,538.268343236509 592.3879532511287,529.0284677254464 595.6940335732208,519.509032201613 598.078528040323,509.8017140329562 599.5184726672196,500 600,0 600,-9.80171403295602 599.5184726672197,-19.5090322016128 598.078528040323,-29.028467725446223 595.6940335732208,-38.268343236508976 592.3879532511287,-47.13967368259977 588.1921264348355,-55.55702330196019 583.1469612302545,-63.439328416364525 577.3010453362738,-70.71067811865474 570.7106781186548,-77.3010453362737 563.4393284163646,-83.14696123025453 555.5570233019603,-88.1921264348355 547.1396736825998,-92.38795325112868 538.2683432365089,-95.69403357322088 529.0284677254463,-98.07852804032305 519.5090322016129,-99.51847266721968 509.80171403295606,-100 500,-100 0,-99.5184726672197 -9.80171403295597) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/poly_in_ring.wkt b/rust/geo-test-fixtures/fixtures/poly_in_ring.wkt new file mode 100644 index 00000000..57cd79ca --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/poly_in_ring.wkt @@ -0,0 +1 @@ +LINESTRING(4 1,3.9855541800165906 0.7059485790113185,3.9423558412096913 0.41472903395161576,3.8708210071966267 0.12914596823661362,3.771638597533861 -0.14805029709526818,3.6457637930450657 -0.41419021047799154,3.4944088369076365 -0.6667106990588052,3.3190313600882124 -0.9031798524909349,3.1213203435596446 -1.121320343559641,2.903179852490939 -1.3190313600882089,2.6667106990588096 -1.4944088369076338,2.4141902104779955 -1.6457637930450635,2.1480502970952724 -1.771638597533859,1.8708540317633906 -1.8708210071966254,1.5852709660483888 -1.9423558412096904,1.2940514209886862 -1.9855541800165901,1.0000000000000049 -2,0.7059485790113234 -1.985554180016591,0.41472903395162053 -1.9423558412096922,0.1291459682366185 -1.8708210071966285,-0.14805029709526352 -1.7716385975338627,-0.4141902104779871 -1.6457637930450684,-0.6667106990588012 -1.4944088369076391,-0.9031798524909318 -1.3190313600882146,-1.1213203435596384 -1.1213203435596468,-1.319031360088207 -0.9031798524909405,-1.494408836907633 -0.666710699058811,-1.645763793045063 -0.4141902104779971,-1.7716385975338587 -0.1480502970952733,-1.8708210071966254 0.12914596823660918,-1.9423558412096904 0.41472903395161165,-1.9855541800165906 0.7059485790113149,-2 0.999999999999997,-1.9855541800165906 1.294051420988679,-1.9423558412096922 1.5852709660483826,-1.8708210071966271 1.8708540317633853,-1.7716385975338609 2.148050297095268,-1.6457637930450657 2.414190210477992,-1.4944088369076365 2.6667106990588056,-1.3190313600882115 2.903179852490936,-1.1213203435596428 3.1213203435596424,-0.9031798524909378 3.3190313600882098,-0.6667106990588088 3.494408836907634,-0.414190210477996 3.6457637930450635,-0.1480502970952735 3.7716385975338587,0.12914596823660762 3.870821007196625,0.41472903395160876 3.94235584120969,0.7059485790113107 3.9855541800165897,0.9999999999999915 4,1.2940514209886724 3.9855541800165915,1.5852709660483744 3.942355841209693,1.870854031763376 3.87082100719663,2.1480502970952577 3.7716385975338653,2.414190210477981 3.6457637930450715,2.6667106990587945 3.494408836907644,2.9031798524909247 3.3190313600882204,3.121320343559631 3.1213203435596544,3.3190313600881995 2.90317985249095,3.4944088369076254 2.666710699058822,3.645763793045056 2.41419021047801,3.771638597533852 2.1480502970952884,3.8708210071966205 1.870854031763408,3.942355841209687 1.585270966048407,3.9855541800165883 1.2940514209887053,4 1.0000000000000246,4 1) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/ring.wkt b/rust/geo-test-fixtures/fixtures/ring.wkt new file mode 100644 index 00000000..2a74d503 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/ring.wkt @@ -0,0 +1 @@ +LINESTRING(10 1,9.956662540049772 0.1178457370339554,9.827067523629074 -0.7558128981451526,9.61246302158988 -1.612562095290159,9.314915792601582 -2.4441508912858048,8.937291379135196 -3.242570631433975,8.483226510722911 -4.000132097176415,7.957094080264637 -4.709539557472804,7.363961030678933 -5.363961030678923,6.709539557472817 -5.957094080264627,6.0001320971764285 -6.483226510722902,5.2425706314339875 -6.937291379135191,4.444150891285817 -7.314915792601576,3.612562095290172 -7.6124630215898765,2.755812898145167 -7.827067523629072,1.8821542629660588 -7.95666254004977,1.0000000000000144 -8,0.11784573703397005 -7.9566625400497735,-0.7558128981451382 -7.827067523629077,-1.6125620952901443 -7.612463021589885,-2.4441508912857906 -7.314915792601587,-3.2425706314339617 -6.937291379135204,-4.000132097176404 -6.483226510722918,-4.709539557472795 -5.957094080264644,-5.363961030678915 -5.36396103067894,-5.957094080264622 -4.709539557472821,-6.483226510722899 -4.000132097176433,-6.937291379135188 -3.242570631433991,-7.314915792601576 -2.44415089128582,-7.6124630215898765 -1.6125620952901727,-7.827067523629072 -0.7558128981451653,-7.956662540049772 0.11784573703394452,-8 0.9999999999999909,-7.956662540049772 1.8821542629660373,-7.827067523629076 2.7558128981451473,-7.612463021589882 3.6125620952901554,-7.314915792601582 4.444150891285803,-6.937291379135197 5.242570631433975,-6.4832265107229095 6.000132097176418,-5.957094080264634 6.709539557472807,-5.363961030678929 7.363961030678928,-4.709539557472813 7.95709408026463,-4.000132097176427 8.483226510722902,-3.2425706314339875 8.937291379135191,-2.4441508912858207 9.314915792601576,-1.6125620952901771 9.612463021589875,-0.7558128981451737 9.82706752362907,0.11784573703393209 9.95666254004977,0.9999999999999744 10,1.8821542629660168 9.956662540049773,2.7558128981451233 9.82706752362908,3.612562095290128 9.612463021589889,4.444150891285773 9.314915792601596,5.242570631433943 8.937291379135214,6.000132097176383 8.483226510722933,6.709539557472773 7.957094080264662,7.363961030678892 7.363961030678963,7.957094080264599 6.7095395574728505,8.483226510722876 6.000132097176467,8.937291379135168 5.242570631434031,9.314915792601557 4.444150891285865,9.61246302158986 3.6125620952902233,9.827067523629061 2.755812898145221,9.956662540049765 1.8821542629661163,10 1.0000000000000742,10 1) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/shell.wkt b/rust/geo-test-fixtures/fixtures/shell.wkt new file mode 100644 index 00000000..e8a91494 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/shell.wkt @@ -0,0 +1 @@ +LINESTRING(11 1,10.95184726672197 0.019828596704394963,10.807852804032304 -0.9509032201612808,10.56940335732209 -1.902846772544621,10.23879532511287 -2.826834323650894,9.819212643483553 -3.713967368259972,9.314696123025456 -4.555702330196017,8.730104533627374 -5.343932841636449,8.07106781186548 -6.07106781186547,7.343932841636462 -6.7301045336273635,6.5557023301960315 -7.314696123025447,5.713967368259986 -7.819212643483546,4.826834323650909 -8.238795325112862,3.9028467725446356 -8.569403357322084,2.9509032201612966 -8.807852804032303,1.9801714032956208 -8.951847266721966,1.0000000000000162 -9,0.019828596704411172 -8.95184726672197,-0.9509032201612646 -8.807852804032308,-1.902846772544605 -8.569403357322095,-2.8268343236508784 -8.238795325112875,-3.713967368259957 -7.81921264348356,-4.555702330196004 -7.314696123025465,-5.343932841636439 -6.730104533627382,-6.071067811865461 -6.071067811865489,-6.730104533627358 -5.343932841636468,-7.314696123025444 -4.555702330196036,-7.819212643483542 -3.71396736825999,-8.238795325112862 -2.8268343236509113,-8.569403357322084 -1.902846772544636,-8.807852804032303 -0.9509032201612948,-8.951847266721968 0.01982859670438286,-9 0.9999999999999899,-8.95184726672197 1.980171403295597,-8.807852804032306 2.9509032201612753,-8.569403357322091 3.902846772544617,-8.23879532511287 4.826834323650893,-7.819212643483553 5.713967368259972,-7.314696123025454 6.55570233019602,-6.730104533627371 7.343932841636453,-6.071067811865477 8.071067811865476,-5.343932841636459 8.730104533627367,-4.55570233019603 9.314696123025447,-3.7139673682599863 9.819212643483546,-2.8268343236509117 10.238795325112862,-1.902846772544641 10.569403357322084,-0.9509032201613041 10.8078528040323,0.019828596704368984 10.951847266721966,0.9999999999999715 11,1.9801714032955744 10.951847266721972,2.950903220161248 10.807852804032311,3.902846772544587 10.569403357322098,4.826834323650859 10.238795325112884,5.713967368259937 9.81921264348357,6.555702330195982 9.314696123025481,7.3439328416364145 8.730104533627403,8.071067811865436 8.071067811865515,8.730104533627333 7.343932841636501,9.314696123025417 6.555702330196074,9.81921264348352 5.713967368260034,10.238795325112841 4.826834323650961,10.569403357322068 3.9028467725446925,10.80785280403229 2.950903220161357,10.95184726672196 1.9801714032956848,11 1.0000000000000824,11 1) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/vw_orig.wkt b/rust/geo-test-fixtures/fixtures/vw_orig.wkt new file mode 100644 index 00000000..be42f7b3 --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/vw_orig.wkt @@ -0,0 +1 @@ +LINESTRING(2.32986 48.86005,2.35093 48.863411,2.43115 48.940418,2.54246 48.960732,2.63999 49.001961,2.72844 49.08049,2.73925 49.098728,2.77004 49.111778,2.80339 49.144669,2.85119 49.15979,2.99549 49.23616,3.03301 49.241539,3.08543 49.26516,3.13198 49.266472,3.18086 49.294731,3.21429 49.302959,3.28301 49.356419,3.3289 49.35873,3.35653 49.368698,3.37508 49.387329,3.3684 49.40694,3.40955 49.42358,3.43405 49.446411,3.51661 49.463291,3.58582 49.519058,3.59405 49.535789,3.62701 49.551029,3.63567 49.573921,3.65985 49.59404,3.71867 49.705761,3.80852 49.78054,3.9306 49.8503,4.00552 49.867611,4.02625 49.889511,4.06293 49.90406,4.09659 49.905418,4.10586 49.934929,4.14826 49.948738,4.16724 49.974251,4.20531 49.97723,4.31856 50.0275,4.37885 50.030609,4.46792 50.070969,4.46888 50.083069,4.49986 50.102741,4.49368 50.127609,4.50478 50.152081,4.52658 50.17326,4.53016 50.19585,4.55226 50.203079,4.57809 50.246059,4.60485 50.252739,4.65955 50.304298,4.71331 50.31625,4.73277 50.346191,4.74492 50.346069,4.77921 50.37978,4.82965 50.398071,4.84423 50.415329,4.86628 50.42218,4.85599 50.445961,4.86486 50.45866,4.89671 50.468529,4.94456 50.503571,5.00459 50.525509,5.0625 50.5825,5.12338 50.591831,5.14038 50.606461,5.14052 50.615791,5.17591 50.62899,5.19067 50.649441,5.23795 50.676979,5.3241 50.72472,5.36659 50.737,5.46203 50.78297,5.59527 50.811749,5.66683 50.840649,5.69181 50.859291,5.70955 50.859509,5.78653 50.907829,5.83605 50.9123,5.96387 50.980091,6.14661 51.039459,6.15822 51.053169,6.17824 51.055672,6.21046 51.077419,6.25705 51.084091,6.2703 51.098911,6.33651 51.12685,6.36855 51.158169,6.42585 51.195591,6.43804 51.19519,6.47667 51.218029,6.48883 51.22998,6.47779 51.252701,6.5801 51.331532,6.69558 51.36377,6.75227 51.371132,6.81237 51.399792,6.84989 51.429039,6.87801 51.431438,6.93167 51.462551,6.97855 51.47644,6.98048 51.488819,7.00807 51.496368,7.01853 51.508781,7.0581 51.51609,7.08124 51.53183,7.19856 51.544189,7.24011 51.55888,7.31798 51.557789,7.36123 51.57444,7.38654 51.575272,7.42589 51.595341,7.54105 51.608761,7.59659 51.636028,7.70191 51.658932,7.70489 51.672791,7.74593 51.686958,7.92157 51.708809,8.03324 51.75507,8.07623 51.76083,8.19468 51.80426,8.21855 51.80405,8.35782 51.849621,8.44433 51.859482,8.49079 51.879719,8.5841 51.884579,8.60752 51.900669,8.66277 51.90995,8.69632 51.90266,8.72335 51.909081,8.7726 51.906609,8.90044 51.947609,8.91911 51.945801,8.9343 51.95689,9.00241 51.956379,9.09687 51.99094,9.15502 51.99136,9.33535 52.079762,9.35207 52.090561,9.34909 52.101231,9.36184 52.104111,9.41245 52.10014,9.48007 52.10656,9.53231 52.12204,9.56786 52.110561,9.60129 52.084061,9.61335 52.084469,9.73862 52.124001,9.76815 52.149029,9.85091 52.159939,9.93417 52.153461,10.01568 52.160728,10.12938 52.199108,10.15967 52.20097,10.26939 52.233261,10.33079 52.25803,10.38941 52.26247,10.40875 52.256908,10.5142 52.26252,10.6691 52.245571,10.79077 52.25753,10.84149 52.234901,10.88113 52.22681,10.99778 52.229191,11.03062 52.217602,11.05477 52.22015,11.11851 52.208031,11.35227 52.18716,11.43668 52.188049,11.52164 52.164879,11.62238 52.187531,11.68052 52.218311,11.76374 52.229019,12.05675 52.23267,12.2143 52.252441,12.29568 52.247169,12.34305 52.26495,12.44244 52.2799,12.50953 52.33836,12.55295 52.351181,12.60367 52.349911,12.66093 52.335209,12.80768 52.337711,12.91879 52.290451,12.97733 52.3036,13.24849 52.300331,13.27942 52.30859,13.44054 52.30608,13.51074 52.319302,13.64603 52.310699,13.7164 52.324501,13.8241 52.310299,13.89843 52.316368,13.95759 52.31155,14.0635 52.33419,14.18073 52.343922,14.29105 52.324291,14.54354 52.314289,14.75599 52.33532,14.84256 52.328499,14.95564 52.338371,15.06221 52.32468,15.16572 52.325298,15.28446 52.294231,15.39406 52.318531,15.54209 52.32399,15.65358 52.29948,15.71254 52.296532,15.83711 52.327572,15.93636 52.330448,16.130489 52.36385,16.448879 52.390018,16.5352 52.385269,16.62204 52.356419,16.67141 52.348579,16.88826 52.35461,17.004881 52.345322,17.170919 52.307411,17.362419 52.310108,17.440769 52.31905,17.521919 52.316971,17.549561 52.30616,17.554529 52.313641,17.62093 52.32695,17.78367 52.318829,17.890829 52.282341,17.98637 52.313019,18.00901 52.336861,18.069059 52.358261,18.130541 52.36541,18.158409 52.394329,18.18281 52.39386,18.225611 52.376949,18.30847 52.370152,18.41881 52.3894,18.527161 52.38678,18.615891 52.398628,18.68129 52.39312,18.7043 52.405609,18.732691 52.405029,18.762569 52.420631,18.80508 52.4128,18.86809 52.426079,18.89086 52.418201,18.94124 52.419811,19.0529 52.404129,19.164961 52.40538,19.24848 52.423641,19.305229 52.41375,19.35132 52.43359,19.396641 52.44128,19.429609 52.44141,19.46174 52.42918,19.482149 52.444271,19.611401 52.465778,19.654921 52.491261,19.648609 52.504318,19.70643 52.546162,19.816271 52.573441,19.88517 52.606121,19.91324 52.607239,19.98106 52.63168,20.05653 52.647541,20.33197 52.61694,20.440701 52.62476,20.49379 52.65279,20.52486 52.659981,20.570709 52.66391,20.655951 52.65588,20.707939 52.67017,20.7414 52.666321,20.81212 52.68528,20.89023 52.694012,21.043341 52.67868,21.0809 52.696308,21.09758 52.69495,21.115641 52.708408,21.31554 52.724289,21.361641 52.716061,21.39842 52.698738,21.590389 52.685459,21.59984 52.694321,21.63352 52.685341,21.85906 52.784401,21.87155 52.79987,21.89496 52.802479,22.24649 52.987999,22.4666 53.090141,22.924431 53.164379,22.9757 53.163528,23.159651 53.135971,23.196211 53.120152,23.233709 53.126122,23.41815 53.12582,23.44846 53.13739,23.50668 53.14436,23.643511 53.10825,23.796881 53.108688,23.87129 53.124249,24.06872 53.116779,24.450899 53.15369,24.47839 53.14238,24.557699 53.150539,24.71763 53.137539,24.85112 53.146969,25.131519 53.118011,25.25131 53.08876,25.303431 53.086411,25.32103 53.09425,25.41754 53.097252,25.488529 53.087769,25.59878 53.1077,25.715191 53.146481,25.90134 53.13982,25.92585 53.132629,26.067511 53.181671,26.120001 53.20966,26.330429 53.266708,26.599449 53.402821,26.76107 53.50737,26.81377 53.51268,26.96689 53.55397,27.03907 53.58942,27.05237 53.619888,27.089849 53.66666,27.303511 53.73513,27.391319 53.803421,27.432171 53.817829,27.475559 53.849411,27.49699 53.85548,27.49404 53.869808,27.5397 53.88554,27.58568 53.916759,27.71962 53.955311,27.854549 54.008701,27.997959 54.030449,28.33709 54.106628,28.48181 54.20295,28.49527 54.226021,28.51235 54.237518,28.57115 54.255291,28.770069 54.27718,28.802771 54.290051,28.876591 54.29155,29.036091 54.31271,29.166031 54.364811,29.304399 54.37254,29.807631 54.477001,29.89637 54.473911,30.11908 54.506271,30.195641 54.542679,30.27557 54.55484,30.32493 54.575699,30.35874 54.602482,30.40913 54.619732,30.591089 54.642479,30.780769 54.683159,31.06407 54.689949,31.201559 54.70348,31.37289 54.738861,31.48156 54.749538,31.63796 54.814232,31.67371 54.84396,32.004681 54.86578,32.101212 54.89006,32.147099 54.9259,32.299351 55.016338,32.344479 55.029751,32.4063 55.034019,32.504452 55.056099,32.597309 55.059959,32.674419 55.078171,32.745689 55.079319,33.19561 55.132179,33.346119 55.15284,33.471249 55.183289,33.647659 55.179359,33.89735 55.1996,34.06139 55.18755,34.237122 55.22208,34.389042 55.2654,34.562809 55.32428,34.946049 55.486511,34.976509 55.49308,35.120701 55.505718,35.398941 55.491329,35.519581 55.470581,35.61898 55.46545,35.913269 55.46558,36.064789 55.457821,36.17548 55.494419,36.455029 55.54895,37.198662 55.626869,37.29747 55.6576,37.366482 55.70998,37.53793 55.73756,37.532028 55.752178,37.538471 55.76757,37.569962 55.77998) \ No newline at end of file diff --git a/rust/geo-test-fixtures/fixtures/vw_simplified.wkt b/rust/geo-test-fixtures/fixtures/vw_simplified.wkt new file mode 100644 index 00000000..f07b0bcf --- /dev/null +++ b/rust/geo-test-fixtures/fixtures/vw_simplified.wkt @@ -0,0 +1 @@ +LINESTRING(2.32986 48.86005,2.35093 48.863411,2.43115 48.940418,2.54246 48.960732,2.63999 49.001961,2.80339 49.144669,2.85119 49.15979,2.99549 49.23616,3.08543 49.26516,3.13198 49.266472,3.21429 49.302959,3.28301 49.356419,3.3289 49.35873,3.37508 49.387329,3.3684 49.40694,3.43405 49.446411,3.51661 49.463291,3.62701 49.551029,3.65985 49.59404,3.71867 49.705761,3.80852 49.78054,3.9306 49.8503,4.00552 49.867611,4.02625 49.889511,4.09659 49.905418,4.10586 49.934929,4.16724 49.974251,4.20531 49.97723,4.31856 50.0275,4.37885 50.030609,4.46792 50.070969,4.49368 50.127609,4.57809 50.246059,4.60485 50.252739,4.65955 50.304298,4.71331 50.31625,4.77921 50.37978,4.86628 50.42218,4.85599 50.445961,4.94456 50.503571,5.00459 50.525509,5.0625 50.5825,5.12338 50.591831,5.19067 50.649441,5.3241 50.72472,5.46203 50.78297,5.59527 50.811749,5.70955 50.859509,5.78653 50.907829,5.83605 50.9123,5.96387 50.980091,6.14661 51.039459,6.21046 51.077419,6.33651 51.12685,6.36855 51.158169,6.48883 51.22998,6.47779 51.252701,6.5801 51.331532,6.75227 51.371132,6.84989 51.429039,6.87801 51.431438,6.97855 51.47644,7.01853 51.508781,7.08124 51.53183,7.19856 51.544189,7.24011 51.55888,7.31798 51.557789,7.42589 51.595341,7.54105 51.608761,7.59659 51.636028,7.70191 51.658932,7.74593 51.686958,7.92157 51.708809,8.03324 51.75507,8.07623 51.76083,8.19468 51.80426,8.21855 51.80405,8.35782 51.849621,8.44433 51.859482,8.49079 51.879719,8.5841 51.884579,8.66277 51.90995,8.7726 51.906609,8.9343 51.95689,9.00241 51.956379,9.09687 51.99094,9.15502 51.99136,9.33535 52.079762,9.36184 52.104111,9.48007 52.10656,9.53231 52.12204,9.61335 52.084469,9.73862 52.124001,9.76815 52.149029,9.85091 52.159939,9.93417 52.153461,10.01568 52.160728,10.15967 52.20097,10.33079 52.25803,10.5142 52.26252,10.6691 52.245571,10.79077 52.25753,10.88113 52.22681,10.99778 52.229191,11.11851 52.208031,11.35227 52.18716,11.43668 52.188049,11.52164 52.164879,11.62238 52.187531,11.68052 52.218311,11.76374 52.229019,12.05675 52.23267,12.2143 52.252441,12.29568 52.247169,12.34305 52.26495,12.44244 52.2799,12.50953 52.33836,12.55295 52.351181,12.66093 52.335209,12.80768 52.337711,12.91879 52.290451,12.97733 52.3036,13.24849 52.300331,13.27942 52.30859,13.44054 52.30608,13.51074 52.319302,13.64603 52.310699,13.7164 52.324501,13.8241 52.310299,13.95759 52.31155,14.0635 52.33419,14.18073 52.343922,14.29105 52.324291,14.54354 52.314289,14.75599 52.33532,14.84256 52.328499,14.95564 52.338371,15.06221 52.32468,15.16572 52.325298,15.28446 52.294231,15.39406 52.318531,15.54209 52.32399,15.65358 52.29948,15.71254 52.296532,15.83711 52.327572,15.93636 52.330448,16.130489 52.36385,16.448879 52.390018,16.5352 52.385269,16.67141 52.348579,16.88826 52.35461,17.004881 52.345322,17.170919 52.307411,17.362419 52.310108,17.440769 52.31905,17.554529 52.313641,17.62093 52.32695,17.78367 52.318829,17.890829 52.282341,17.98637 52.313019,18.00901 52.336861,18.130541 52.36541,18.158409 52.394329,18.30847 52.370152,18.41881 52.3894,18.527161 52.38678,18.615891 52.398628,18.68129 52.39312,18.762569 52.420631,18.80508 52.4128,18.86809 52.426079,19.0529 52.404129,19.164961 52.40538,19.24848 52.423641,19.305229 52.41375,19.35132 52.43359,19.482149 52.444271,19.611401 52.465778,19.70643 52.546162,19.816271 52.573441,19.88517 52.606121,20.05653 52.647541,20.33197 52.61694,20.440701 52.62476,20.49379 52.65279,20.570709 52.66391,20.655951 52.65588,20.89023 52.694012,21.043341 52.67868,21.115641 52.708408,21.31554 52.724289,21.39842 52.698738,21.63352 52.685341,21.85906 52.784401,22.24649 52.987999,22.4666 53.090141,22.924431 53.164379,22.9757 53.163528,23.233709 53.126122,23.41815 53.12582,23.50668 53.14436,23.643511 53.10825,23.796881 53.108688,23.87129 53.124249,24.06872 53.116779,24.450899 53.15369,24.47839 53.14238,24.557699 53.150539,24.71763 53.137539,24.85112 53.146969,25.131519 53.118011,25.25131 53.08876,25.41754 53.097252,25.488529 53.087769,25.59878 53.1077,25.715191 53.146481,25.90134 53.13982,25.92585 53.132629,26.067511 53.181671,26.120001 53.20966,26.330429 53.266708,26.599449 53.402821,26.76107 53.50737,26.81377 53.51268,26.96689 53.55397,27.03907 53.58942,27.089849 53.66666,27.303511 53.73513,27.391319 53.803421,27.432171 53.817829,27.49404 53.869808,27.58568 53.916759,27.71962 53.955311,27.854549 54.008701,27.997959 54.030449,28.33709 54.106628,28.48181 54.20295,28.51235 54.237518,28.57115 54.255291,28.770069 54.27718,29.036091 54.31271,29.166031 54.364811,29.304399 54.37254,29.807631 54.477001,29.89637 54.473911,30.11908 54.506271,30.195641 54.542679,30.27557 54.55484,30.40913 54.619732,30.591089 54.642479,30.780769 54.683159,31.06407 54.689949,31.201559 54.70348,31.37289 54.738861,31.48156 54.749538,31.63796 54.814232,31.67371 54.84396,32.004681 54.86578,32.101212 54.89006,32.147099 54.9259,32.299351 55.016338,32.504452 55.056099,32.597309 55.059959,32.674419 55.078171,32.745689 55.079319,33.19561 55.132179,33.346119 55.15284,33.471249 55.183289,33.647659 55.179359,33.89735 55.1996,34.06139 55.18755,34.237122 55.22208,34.389042 55.2654,34.562809 55.32428,34.946049 55.486511,35.120701 55.505718,35.398941 55.491329,35.519581 55.470581,35.61898 55.46545,35.913269 55.46558,36.064789 55.457821,36.17548 55.494419,36.455029 55.54895,37.198662 55.626869,37.29747 55.6576,37.366482 55.70998,37.53793 55.73756,37.569962 55.77998) \ No newline at end of file diff --git a/rust/geo-test-fixtures/pp_points.py b/rust/geo-test-fixtures/pp_points.py new file mode 100755 index 00000000..4757823f --- /dev/null +++ b/rust/geo-test-fixtures/pp_points.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +''' Script to parse coordinates through debug log, and replace them with easier +names. + +''' + +import sys +import re + +def main(): + pts = {} + + float_regex = r"[-+]?(?:\d*\.\d+|\d+)" + coord_regex = f"({float_regex}),? ({float_regex})" + regex = re.compile(coord_regex) + + line = sys.stdin.readline() + while line: + if line.startswith('input:'): + print(line, end='') + m = regex.search(line) + while m: + st = m.start() + print(line[:st], end='') + sig = m.expand(r"\1#\2") + if sig not in pts: + pts[sig] = len(pts) + idx = pts[sig] + print(f'⚝{idx}', end='') + + en = m.end() + line = line[en:] + m = regex.search(line) + print(line, end='') + line = sys.stdin.readline() + + print("end of input") + print("points:") + for sig in pts: + x,y = sig.split('#') + idx = pts[sig] + print(f"\t{idx}: Pt({x} {y})") +if __name__ == "__main__": + main() diff --git a/rust/geo-test-fixtures/src/lib.rs b/rust/geo-test-fixtures/src/lib.rs new file mode 100644 index 00000000..5cb1f256 --- /dev/null +++ b/rust/geo-test-fixtures/src/lib.rs @@ -0,0 +1,170 @@ +use std::{path::PathBuf, str::FromStr}; + +use geo_types::{LineString, MultiPolygon, Point, Polygon}; +use wkt::{TryFromWkt, WktFloat}; + +pub fn louisiana() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("louisiana.wkt") +} + +pub fn baton_rouge() -> Point +where + T: WktFloat + Default + FromStr, +{ + let x = T::from(-91.147385).unwrap(); + let y = T::from(30.471165).unwrap(); + Point::new(x, y) +} + +pub fn east_baton_rouge() -> Polygon +where + T: WktFloat + Default + FromStr, +{ + polygon("east_baton_rouge.wkt") +} + +pub fn norway_main() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("norway_main.wkt") +} + +pub fn norway_concave_hull() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("norway_concave_hull.wkt") +} + +pub fn norway_convex_hull() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("norway_convex_hull.wkt") +} + +pub fn norway_nonconvex_hull() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("norway_nonconvex_hull.wkt") +} + +pub fn vw_orig() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("vw_orig.wkt") +} + +pub fn vw_simplified() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("vw_simplified.wkt") +} + +pub fn poly1() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("poly1.wkt") +} + +pub fn poly1_hull() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("poly1_hull.wkt") +} + +pub fn poly2() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("poly2.wkt") +} + +pub fn poly2_hull() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("poly2_hull.wkt") +} + +pub fn poly_in_ring() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("poly_in_ring.wkt") +} + +pub fn ring() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("ring.wkt") +} + +pub fn shell() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("shell.wkt") +} + +// From https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetFeature&service=WFS&srsName=EPSG:4326&typeName=kadastralekaartv4:perceel&version=2.0.0&outputFormat=json&bbox=165593,480993,166125,481552 +pub fn nl_zones() -> MultiPolygon +where + T: WktFloat + Default + FromStr, +{ + multi_polygon("nl_zones.wkt") +} + +// From https://afnemers.ruimtelijkeplannen.nl/afnemers/services?request=GetFeature&service=WFS&srsName=EPSG:4326&typeName=Enkelbestemming&version=2.0.0&bbox=165618,480983,166149,481542"; +pub fn nl_plots_wgs84() -> MultiPolygon +where + T: WktFloat + Default + FromStr, +{ + multi_polygon("nl_plots.wkt") +} + +pub fn nl_plots_epsg_28992() -> MultiPolygon +where + T: WktFloat + Default + FromStr, +{ + // https://epsg.io/28992 + multi_polygon("nl_plots_epsg_28992.wkt") +} + +fn line_string(name: &str) -> LineString +where + T: WktFloat + Default + FromStr, +{ + LineString::try_from_wkt_reader(file(name)).unwrap() +} + +pub fn polygon(name: &str) -> Polygon +where + T: WktFloat + Default + FromStr, +{ + Polygon::try_from_wkt_reader(file(name)).unwrap() +} + +pub fn multi_polygon(name: &str) -> MultiPolygon +where + T: WktFloat + Default + FromStr, +{ + MultiPolygon::try_from_wkt_reader(file(name)).unwrap() +} + +pub fn file(name: &str) -> std::fs::File { + let mut res = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + res.push("fixtures"); + res.push(name); + std::fs::File::open(&mut res).unwrap_or_else(|_| panic!("Can't open file: {res:?}")) +} diff --git a/rust/geo-traits-ext/Cargo.toml b/rust/geo-traits-ext/Cargo.toml new file mode 100644 index 00000000..50f6246e --- /dev/null +++ b/rust/geo-traits-ext/Cargo.toml @@ -0,0 +1,30 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +[package] +name = "geo-traits-ext" +version.workspace = true +homepage.workspace = true +repository.workspace = true +description.workspace = true +readme.workspace = true +edition.workspace = true +rust-version.workspace = true + +[dependencies] +geo-traits = { workspace = true } +geo-types = { workspace = true } +num-traits = { workspace = true } diff --git a/rust/geo-traits-ext/README.md b/rust/geo-traits-ext/README.md new file mode 100644 index 00000000..683420e3 --- /dev/null +++ b/rust/geo-traits-ext/README.md @@ -0,0 +1,9 @@ +# Geo-Traits Extended + +This crate extends the `geo-traits` crate with additional traits and +implementations. The goal is to provide a set of traits that are useful for +implementing algorithms on top of the `geo-generic-alg` crate. Most of the methods are +inspired by the `geo-types` crate, but are implemented as traits on the +`geo-traits` types. Some methods returns concrete types defined in `geo-types`, +these methods are only for computing tiny, intermediate results during +algorithm execution. diff --git a/rust/geo-traits-ext/src/coord.rs b/rust/geo-traits-ext/src/coord.rs new file mode 100644 index 00000000..c35ba91b --- /dev/null +++ b/rust/geo-traits-ext/src/coord.rs @@ -0,0 +1,50 @@ +//! Extend CoordTrait traits for the `geo-traits` crate + +use geo_traits::{CoordTrait, UnimplementedCoord}; +use geo_types::{Coord, CoordNum}; + +use crate::{CoordTag, GeoTraitExtWithTypeTag}; + +pub trait CoordTraitExt: CoordTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + fn geo_coord(&self) -> Coord { + Coord { + x: self.x(), + y: self.y(), + } + } +} + +impl CoordTraitExt for Coord +where + T: CoordNum, +{ + fn geo_coord(&self) -> Coord { + *self + } +} + +impl GeoTraitExtWithTypeTag for Coord { + type Tag = CoordTag; +} + +impl CoordTraitExt for &Coord +where + T: CoordNum, +{ + fn geo_coord(&self) -> Coord { + **self + } +} + +impl GeoTraitExtWithTypeTag for &Coord { + type Tag = CoordTag; +} + +impl CoordTraitExt for UnimplementedCoord where T: CoordNum {} + +impl GeoTraitExtWithTypeTag for UnimplementedCoord { + type Tag = CoordTag; +} diff --git a/rust/geo-traits-ext/src/geometry.rs b/rust/geo-traits-ext/src/geometry.rs new file mode 100644 index 00000000..d077aefc --- /dev/null +++ b/rust/geo-traits-ext/src/geometry.rs @@ -0,0 +1,326 @@ +// Extend GeometryTrait traits for the `geo-traits` crate + +use core::{borrow::Borrow, panic}; + +use geo_traits::*; +use geo_types::*; + +use crate::*; + +#[allow(clippy::type_complexity)] +pub trait GeometryTraitExt: GeometryTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type PointTypeExt<'a>: 'a + PointTraitExt::T> + where + Self: 'a; + + type LineStringTypeExt<'a>: 'a + LineStringTraitExt::T> + where + Self: 'a; + + type PolygonTypeExt<'a>: 'a + PolygonTraitExt::T> + where + Self: 'a; + + type MultiPointTypeExt<'a>: 'a + MultiPointTraitExt::T> + where + Self: 'a; + + type MultiLineStringTypeExt<'a>: 'a + MultiLineStringTraitExt::T> + where + Self: 'a; + + type MultiPolygonTypeExt<'a>: 'a + MultiPolygonTraitExt::T> + where + Self: 'a; + + type TriangleTypeExt<'a>: 'a + TriangleTraitExt::T> + where + Self: 'a; + + type RectTypeExt<'a>: 'a + RectTraitExt::T> + where + Self: 'a; + + type LineTypeExt<'a>: 'a + LineTraitExt::T> + where + Self: 'a; + + // Note that we don't have a GeometryCollectionTypeExt here, because it would introduce recursive GATs + // such as G::GeometryCollectionTypeExt::GeometryTypeExt::GeometryCollectionTypeExt::... and easily + // trigger a Rust compiler bug: https://github.com/rust-lang/rust/issues/128887 and https://github.com/rust-lang/rust/issues/131960. + // See also https://github.com/geoarrow/geoarrow-rs/issues/1339. + // + // Although this could be worked around by not implementing generic functions using trait-based approach and use + // function-based approach instead, see https://github.com/geoarrow/geoarrow-rs/pull/956 and https://github.com/georust/wkb/pull/77, + // we are not certain if there will be other issues caused by recursive GATs in the future. So we decided to completely get rid + // of recursive GATs. + + type InnerGeometryRef<'a>: 'a + Borrow + where + Self: 'a; + + /// Returns true if this geometry is a GeometryCollection + fn is_collection(&self) -> bool { + matches!(self.as_type(), GeometryType::GeometryCollection(_)) + } + + /// Returns the number of geometries inside this GeometryCollection + fn num_geometries_ext(&self) -> usize { + let GeometryType::GeometryCollection(gc) = self.as_type() else { + panic!("Not a GeometryCollection"); + }; + gc.num_geometries() + } + + /// Cast this geometry to a [`GeometryTypeExt`] enum, which allows for downcasting to a specific + /// type. This does not work when the geometry is a GeometryCollection. Please use `is_collection` + /// to check if the geometry is NOT a GeometryCollection first before calling this method. + fn as_type_ext( + &self, + ) -> GeometryTypeExt< + '_, + Self::PointTypeExt<'_>, + Self::LineStringTypeExt<'_>, + Self::PolygonTypeExt<'_>, + Self::MultiPointTypeExt<'_>, + Self::MultiLineStringTypeExt<'_>, + Self::MultiPolygonTypeExt<'_>, + Self::RectTypeExt<'_>, + Self::TriangleTypeExt<'_>, + Self::LineTypeExt<'_>, + >; + + /// Returns a geometry by index, or None if the index is out of bounds. This method only works with + /// GeometryCollection. Please use `is_collection` to check if the geometry is a GeometryCollection first before + /// calling this method. + fn geometry_ext(&self, i: usize) -> Option>; + + /// Returns a geometry by index without bounds checking. This method only works with GeometryCollection. + /// Please use `is_collection` to check if the geometry is a GeometryCollection first before calling this method. + /// + /// # Safety + /// The caller must ensure that `i` is a valid index less than the number of geometries. + /// Otherwise, this function may cause undefined behavior. + unsafe fn geometry_unchecked_ext(&self, i: usize) -> Self::InnerGeometryRef<'_>; + + /// Returns an iterator over the geometries in this GeometryCollection. This method only works with + /// GeometryCollection. Please use `is_collection` to check if the geometry is a GeometryCollection first before + /// calling this method. + fn geometries_ext(&self) -> impl Iterator>; +} + +#[derive(Debug)] +pub enum GeometryTypeExt<'a, P, LS, Y, MP, ML, MY, R, TT, L> +where + P: PointTraitExt, + LS: LineStringTraitExt, + Y: PolygonTraitExt, + MP: MultiPointTraitExt, + ML: MultiLineStringTraitExt, + MY: MultiPolygonTraitExt, + R: RectTraitExt, + TT: TriangleTraitExt, + L: LineTraitExt, +

::T: CoordNum, + ::T: CoordNum, + ::T: CoordNum, + ::T: CoordNum, + ::T: CoordNum, + ::T: CoordNum, + ::T: CoordNum, + ::T: CoordNum, + ::T: CoordNum, +{ + Point(&'a P), + LineString(&'a LS), + Polygon(&'a Y), + MultiPoint(&'a MP), + MultiLineString(&'a ML), + MultiPolygon(&'a MY), + Rect(&'a R), + Triangle(&'a TT), + Line(&'a L), +} + +#[macro_export] +macro_rules! forward_geometry_trait_ext_funcs { + ($t:ty) => { + type PointTypeExt<'__g_inner> + = ::PointType<'__g_inner> + where + Self: '__g_inner; + + type LineStringTypeExt<'__g_inner> + = ::LineStringType<'__g_inner> + where + Self: '__g_inner; + + type PolygonTypeExt<'__g_inner> + = ::PolygonType<'__g_inner> + where + Self: '__g_inner; + + type MultiPointTypeExt<'__g_inner> + = ::MultiPointType<'__g_inner> + where + Self: '__g_inner; + + type MultiLineStringTypeExt<'__g_inner> + = ::MultiLineStringType<'__g_inner> + where + Self: '__g_inner; + + type MultiPolygonTypeExt<'__g_inner> + = ::MultiPolygonType<'__g_inner> + where + Self: '__g_inner; + + type RectTypeExt<'__g_inner> + = ::RectType<'__g_inner> + where + Self: '__g_inner; + + type TriangleTypeExt<'__g_inner> + = ::TriangleType<'__g_inner> + where + Self: '__g_inner; + + type LineTypeExt<'__g_inner> + = ::LineType<'__g_inner> + where + Self: '__g_inner; + + fn as_type_ext( + &self, + ) -> GeometryTypeExt< + '_, + Self::PointTypeExt<'_>, + Self::LineStringTypeExt<'_>, + Self::PolygonTypeExt<'_>, + Self::MultiPointTypeExt<'_>, + Self::MultiLineStringTypeExt<'_>, + Self::MultiPolygonTypeExt<'_>, + Self::RectTypeExt<'_>, + Self::TriangleTypeExt<'_>, + Self::LineTypeExt<'_>, + > { + match self.as_type() { + GeometryType::Point(p) => GeometryTypeExt::Point(p), + GeometryType::LineString(ls) => GeometryTypeExt::LineString(ls), + GeometryType::Polygon(p) => GeometryTypeExt::Polygon(p), + GeometryType::MultiPoint(mp) => GeometryTypeExt::MultiPoint(mp), + GeometryType::MultiLineString(mls) => GeometryTypeExt::MultiLineString(mls), + GeometryType::MultiPolygon(mp) => GeometryTypeExt::MultiPolygon(mp), + GeometryType::GeometryCollection(_) => { + panic!("GeometryCollection is not supported in GeometryTraitExt::as_type_ext") + } + GeometryType::Rect(r) => GeometryTypeExt::Rect(r), + GeometryType::Triangle(t) => GeometryTypeExt::Triangle(t), + GeometryType::Line(l) => GeometryTypeExt::Line(l), + } + } + }; +} + +impl GeometryTraitExt for Geometry +where + T: CoordNum, +{ + forward_geometry_trait_ext_funcs!(T); + + type InnerGeometryRef<'a> + = &'a Geometry + where + Self: 'a; + + fn geometry_ext(&self, i: usize) -> Option<&Geometry> { + let GeometryType::GeometryCollection(gc) = self.as_type() else { + panic!("Not a GeometryCollection"); + }; + gc.geometry(i) + } + + unsafe fn geometry_unchecked_ext(&self, i: usize) -> &Geometry { + let GeometryType::GeometryCollection(gc) = self.as_type() else { + panic!("Not a GeometryCollection"); + }; + gc.geometry_unchecked(i) + } + + fn geometries_ext(&self) -> impl Iterator> { + let GeometryType::GeometryCollection(gc) = self.as_type() else { + panic!("Not a GeometryCollection"); + }; + gc.geometries() + } +} + +impl GeoTraitExtWithTypeTag for Geometry { + type Tag = GeometryTag; +} + +impl<'a, T> GeometryTraitExt for &'a Geometry +where + T: CoordNum, +{ + forward_geometry_trait_ext_funcs!(T); + + type InnerGeometryRef<'b> + = &'a Geometry + where + Self: 'b; + + fn geometry_ext(&self, i: usize) -> Option<&'a Geometry> { + let g = *self; + g.geometry_ext(i) + } + + unsafe fn geometry_unchecked_ext(&self, i: usize) -> &'a Geometry { + let g = *self; + g.geometry_unchecked_ext(i) + } + + fn geometries_ext(&self) -> impl Iterator> { + let g = *self; + g.geometries_ext() + } +} + +impl GeoTraitExtWithTypeTag for &Geometry { + type Tag = GeometryTag; +} + +impl GeometryTraitExt for UnimplementedGeometry +where + T: CoordNum, +{ + forward_geometry_trait_ext_funcs!(T); + + type InnerGeometryRef<'a> + = &'a UnimplementedGeometry + where + Self: 'a; + + fn geometry_ext(&self, _i: usize) -> Option> { + unimplemented!() + } + + unsafe fn geometry_unchecked_ext(&self, _i: usize) -> Self::InnerGeometryRef<'_> { + unimplemented!() + } + + fn geometries_ext(&self) -> impl Iterator> { + unimplemented!(); + + // For making the type checker happy + #[allow(unreachable_code)] + core::iter::empty() + } +} + +impl GeoTraitExtWithTypeTag for UnimplementedGeometry { + type Tag = GeometryTag; +} diff --git a/rust/geo-traits-ext/src/geometry_collection.rs b/rust/geo-traits-ext/src/geometry_collection.rs new file mode 100644 index 00000000..41d231d3 --- /dev/null +++ b/rust/geo-traits-ext/src/geometry_collection.rs @@ -0,0 +1,82 @@ +// Extend GeometryCollectionTrait traits for the `geo-traits` crate + +use geo_traits::{GeometryCollectionTrait, GeometryTrait, UnimplementedGeometryCollection}; +use geo_types::{CoordNum, GeometryCollection}; + +use crate::{GeoTraitExtWithTypeTag, GeometryCollectionTag, GeometryTraitExt}; + +pub trait GeometryCollectionTraitExt: + GeometryCollectionTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type GeometryTypeExt<'a>: 'a + GeometryTraitExt::T> + where + Self: 'a; + + fn geometry_ext(&self, i: usize) -> Option>; + + /// Returns a geometry by index without bounds checking. + /// + /// # Safety + /// The caller must ensure that `i` is a valid index less than the number of geometries. + /// Otherwise, this function may cause undefined behavior. + unsafe fn geometry_unchecked_ext(&self, i: usize) -> Self::GeometryTypeExt<'_>; + + fn geometries_ext(&self) -> impl Iterator>; +} + +#[macro_export] +macro_rules! forward_geometry_collection_trait_ext_funcs { + () => { + type GeometryTypeExt<'__gc_inner> + = ::GeometryType<'__gc_inner> + where + Self: '__gc_inner; + + fn geometry_ext(&self, i: usize) -> Option> { + ::geometry(self, i) + } + + unsafe fn geometry_unchecked_ext(&self, i: usize) -> Self::GeometryTypeExt<'_> { + unsafe { ::geometry_unchecked(self, i) } + } + + fn geometries_ext(&self) -> impl Iterator> { + ::geometries(self) + } + }; +} + +impl GeometryCollectionTraitExt for GeometryCollection +where + T: CoordNum, +{ + forward_geometry_collection_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for GeometryCollection { + type Tag = GeometryCollectionTag; +} + +impl GeometryCollectionTraitExt for &GeometryCollection +where + T: CoordNum, +{ + forward_geometry_collection_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for &GeometryCollection { + type Tag = GeometryCollectionTag; +} + +impl GeometryCollectionTraitExt for UnimplementedGeometryCollection +where + T: CoordNum, +{ + forward_geometry_collection_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for UnimplementedGeometryCollection { + type Tag = GeometryCollectionTag; +} diff --git a/rust/geo-traits-ext/src/lib.rs b/rust/geo-traits-ext/src/lib.rs new file mode 100644 index 00000000..2dcb77b7 --- /dev/null +++ b/rust/geo-traits-ext/src/lib.rs @@ -0,0 +1,46 @@ +//! Extended traits for the `geo-traits` crate +//! +//! This crate extends the `geo-traits` crate with additional traits and +//! implementations. The goal is to provide a set of traits that are useful for +//! implementing algorithms on top of the `geo` crate. Most of the methods are +//! inspired by the `geo-types` crate, but are implemented as traits on the +//! `geo-traits` types. Some methods returns concrete types defined in `geo-types`, +//! these methods are only for computing tiny, intermediate results during +//! algorithm execution. +//! +//! The crate is designed to support migration of the `geo` crate to use the +//! traits defined in `geo-traits` by providing generic implementations of the +//! geospatial algorithms, rather than implementing algorithms on concrete types +//! defined in `geo-types`. +//! +//! The crate is currently under active development and the API is subject to +//! change. + +pub use coord::CoordTraitExt; +pub use geometry::{GeometryTraitExt, GeometryTypeExt}; +pub use geometry_collection::GeometryCollectionTraitExt; +pub use line::LineTraitExt; +pub use line_string::LineStringTraitExt; +pub use multi_line_string::MultiLineStringTraitExt; +pub use multi_point::MultiPointTraitExt; +pub use multi_polygon::MultiPolygonTraitExt; +pub use point::PointTraitExt; +pub use polygon::PolygonTraitExt; +pub use rect::RectTraitExt; +pub use triangle::TriangleTraitExt; + +mod coord; +mod geometry; +mod geometry_collection; +mod line; +mod line_string; +mod multi_line_string; +mod multi_point; +mod multi_polygon; +mod point; +mod polygon; +mod rect; +mod triangle; + +pub use type_tag::*; +mod type_tag; diff --git a/rust/geo-traits-ext/src/line.rs b/rust/geo-traits-ext/src/line.rs new file mode 100644 index 00000000..bf154564 --- /dev/null +++ b/rust/geo-traits-ext/src/line.rs @@ -0,0 +1,110 @@ +// Extend LineTrait traits for the `geo-traits` crate + +use geo_traits::{GeometryTrait, LineTrait, UnimplementedLine}; +use geo_types::{CoordNum, Line}; + +use crate::{CoordTraitExt, GeoTraitExtWithTypeTag, LineTag}; + +pub trait LineTraitExt: LineTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type CoordTypeExt<'a>: 'a + CoordTraitExt::T> + where + Self: 'a; + + fn start_ext(&self) -> Self::CoordTypeExt<'_>; + fn end_ext(&self) -> Self::CoordTypeExt<'_>; + fn coords_ext(&self) -> [Self::CoordTypeExt<'_>; 2]; + + fn start_coord(&self) -> geo_types::Coord<::T> { + self.start_ext().geo_coord() + } + + fn end_coord(&self) -> geo_types::Coord<::T> { + self.end_ext().geo_coord() + } + + fn geo_line(&self) -> Line<::T> { + Line::new(self.start_coord(), self.end_coord()) + } +} + +#[macro_export] +macro_rules! forward_line_trait_ext_funcs { + () => { + type CoordTypeExt<'__l_inner> + = ::CoordType<'__l_inner> + where + Self: '__l_inner; + + fn start_ext(&self) -> Self::CoordTypeExt<'_> { + ::start(self) + } + + fn end_ext(&self) -> Self::CoordTypeExt<'_> { + ::end(self) + } + + fn coords_ext(&self) -> [Self::CoordTypeExt<'_>; 2] { + [self.start_ext(), self.end_ext()] + } + }; +} + +impl LineTraitExt for Line +where + T: CoordNum, +{ + forward_line_trait_ext_funcs!(); + + fn start_coord(&self) -> geo_types::Coord { + self.start + } + + fn end_coord(&self) -> geo_types::Coord { + self.end + } + + fn geo_line(&self) -> geo_types::Line { + *self + } +} + +impl GeoTraitExtWithTypeTag for Line { + type Tag = LineTag; +} + +impl LineTraitExt for &Line +where + T: CoordNum, +{ + forward_line_trait_ext_funcs!(); + + fn start_coord(&self) -> geo_types::Coord { + self.start + } + + fn end_coord(&self) -> geo_types::Coord { + self.end + } + + fn geo_line(&self) -> geo_types::Line { + **self + } +} + +impl GeoTraitExtWithTypeTag for &Line { + type Tag = LineTag; +} + +impl LineTraitExt for UnimplementedLine +where + T: CoordNum, +{ + forward_line_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for UnimplementedLine { + type Tag = LineTag; +} diff --git a/rust/geo-traits-ext/src/line_string.rs b/rust/geo-traits-ext/src/line_string.rs new file mode 100644 index 00000000..8cff5f88 --- /dev/null +++ b/rust/geo-traits-ext/src/line_string.rs @@ -0,0 +1,168 @@ +// Extend LineStringTrait traits for the `geo-traits` crate + +use geo_traits::{GeometryTrait, LineStringTrait, UnimplementedLineString}; +use geo_types::{Coord, CoordNum, Line, LineString, Triangle}; + +use crate::{CoordTraitExt, GeoTraitExtWithTypeTag, LineStringTag}; + +pub trait LineStringTraitExt: + LineStringTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type CoordTypeExt<'a>: 'a + CoordTraitExt::T> + where + Self: 'a; + + fn coord_ext(&self, i: usize) -> Option>; + + /// Returns a coordinate by index without bounds checking. + /// + /// # Safety + /// The caller must ensure that `i` is a valid index less than the number of coordinates. + /// Otherwise, this function may cause undefined behavior. + unsafe fn coord_unchecked_ext(&self, i: usize) -> Self::CoordTypeExt<'_>; + + fn coords_ext(&self) -> impl Iterator>; + + /// Returns a coordinate by index without bounds checking. + /// + /// # Safety + /// The caller must ensure that `i` is a valid index less than the number of coordinates. + /// Otherwise, this function may cause undefined behavior. + unsafe fn geo_coord_unchecked(&self, i: usize) -> Coord { + self.coord_unchecked_ext(i).geo_coord() + } + + /// Return an iterator yielding one [`Line`] for each line segment + /// in the [`LineString`][`geo_types::LineString`]. + fn lines(&'_ self) -> impl ExactSizeIterator::T>> + '_ { + let num_coords = self.num_coords(); + (0..num_coords.saturating_sub(1)).map(|i| unsafe { + let coord1 = self.coord_unchecked_ext(i); + let coord2 = self.coord_unchecked_ext(i + 1); + Line::new(coord1.geo_coord(), coord2.geo_coord()) + }) + } + + /// Return an iterator yielding one [`Line`] for each line segment in the [`LineString`][`geo_types::LineString`], + /// starting from the **end** point of the LineString, working towards the start. + /// + /// Note: This is like [`Self::lines`], but the sequence **and** the orientation of + /// segments are reversed. + fn rev_lines(&'_ self) -> impl ExactSizeIterator::T>> + '_ { + let num_coords = self.num_coords(); + (num_coords - 1..0).map(|i| unsafe { + let coord1 = self.coord_unchecked_ext(i); + let coord2 = self.coord_unchecked_ext(i - 1); + Line::new(coord2.geo_coord(), coord1.geo_coord()) + }) + } + + /// An iterator which yields the coordinates of a [`LineString`][`geo_types::LineString`] as [Triangle]s + fn triangles( + &'_ self, + ) -> impl ExactSizeIterator::T>> + '_ { + let num_coords = self.num_coords(); + (0..num_coords - 2).map(|i| unsafe { + let coord1 = self.coord_unchecked_ext(i); + let coord2 = self.coord_unchecked_ext(i + 1); + let coord3 = self.coord_unchecked_ext(i + 2); + Triangle::new(coord1.geo_coord(), coord2.geo_coord(), coord3.geo_coord()) + }) + } + + // Returns an iterator yielding the coordinates of this line string as `geo_types::Coord`s. + fn coord_iter(&self) -> impl Iterator::T>> { + self.coords_ext().map(|c| c.geo_coord()) + } + + fn is_closed(&self) -> bool { + match (self.coords_ext().next(), self.coords_ext().last()) { + (Some(first), Some(last)) => first.geo_coord() == last.geo_coord(), + (None, None) => true, + _ => false, + } + } +} + +#[macro_export] +macro_rules! forward_line_string_trait_ext_funcs { + () => { + type CoordTypeExt<'__l_inner> + = ::CoordType<'__l_inner> + where + Self: '__l_inner; + + fn coord_ext(&self, i: usize) -> Option> { + ::coord(self, i) + } + + unsafe fn coord_unchecked_ext(&self, i: usize) -> Self::CoordTypeExt<'_> { + ::coord_unchecked(self, i) + } + + fn coords_ext(&self) -> impl Iterator> { + ::coords(self) + } + }; +} + +impl LineStringTraitExt for LineString +where + T: CoordNum, +{ + forward_line_string_trait_ext_funcs!(); + + unsafe fn geo_coord_unchecked(&self, i: usize) -> Coord { + *self.0.get_unchecked(i) + } + + // Delegate to the `geo-types` implementation for less performance overhead + fn lines(&'_ self) -> impl ExactSizeIterator::T>> + '_ { + self.lines() + } + + fn coord_iter(&self) -> impl Iterator::T>> { + self.0.iter().copied() + } +} + +impl GeoTraitExtWithTypeTag for LineString { + type Tag = LineStringTag; +} + +impl LineStringTraitExt for &LineString +where + T: CoordNum, +{ + forward_line_string_trait_ext_funcs!(); + + unsafe fn geo_coord_unchecked(&self, i: usize) -> Coord { + *self.0.get_unchecked(i) + } + + // Delegate to the `geo-types` implementation for less performance overhead + fn lines(&'_ self) -> impl ExactSizeIterator::T>> + '_ { + (*self).lines() + } + + fn coord_iter(&self) -> impl Iterator::T>> { + self.0.iter().copied() + } +} + +impl GeoTraitExtWithTypeTag for &LineString { + type Tag = LineStringTag; +} + +impl LineStringTraitExt for UnimplementedLineString +where + T: CoordNum, +{ + forward_line_string_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for UnimplementedLineString { + type Tag = LineStringTag; +} diff --git a/rust/geo-traits-ext/src/multi_line_string.rs b/rust/geo-traits-ext/src/multi_line_string.rs new file mode 100644 index 00000000..88497585 --- /dev/null +++ b/rust/geo-traits-ext/src/multi_line_string.rs @@ -0,0 +1,88 @@ +// Extend MultiLineStringTrait traits for the `geo-traits` crate + +use geo_traits::{GeometryTrait, MultiLineStringTrait, UnimplementedMultiLineString}; +use geo_types::{CoordNum, MultiLineString}; + +use crate::{GeoTraitExtWithTypeTag, LineStringTraitExt, MultiLineStringTag}; + +pub trait MultiLineStringTraitExt: + MultiLineStringTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type LineStringTypeExt<'a>: 'a + LineStringTraitExt::T> + where + Self: 'a; + + fn line_string_ext(&self, i: usize) -> Option>; + + /// Returns a line string by index without bounds checking. + /// + /// # Safety + /// The caller must ensure that `i` is a valid index less than the number of line strings. + /// Otherwise, this function may cause undefined behavior. + unsafe fn line_string_unchecked_ext(&self, i: usize) -> Self::LineStringTypeExt<'_>; + + fn line_strings_ext(&self) -> impl Iterator>; + + /// True if the MultiLineString is empty or if all of its LineStrings are closed + fn is_closed(&self) -> bool { + // Note: Unlike JTS et al, we consider an empty MultiLineString as closed. + self.line_strings_ext().all(|ls| ls.is_closed()) + } +} + +#[macro_export] +macro_rules! forward_multi_line_string_trait_ext_funcs { + () => { + type LineStringTypeExt<'__l_inner> + = ::InnerLineStringType<'__l_inner> + where + Self: '__l_inner; + + fn line_string_ext(&self, i: usize) -> Option> { + ::line_string(self, i) + } + + unsafe fn line_string_unchecked_ext(&self, i: usize) -> Self::LineStringTypeExt<'_> { + ::line_string_unchecked(self, i) + } + + fn line_strings_ext(&self) -> impl Iterator> { + ::line_strings(self) + } + }; +} + +impl MultiLineStringTraitExt for MultiLineString +where + T: CoordNum, +{ + forward_multi_line_string_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for MultiLineString { + type Tag = MultiLineStringTag; +} + +impl MultiLineStringTraitExt for &MultiLineString +where + T: CoordNum, +{ + forward_multi_line_string_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for &MultiLineString { + type Tag = MultiLineStringTag; +} + +impl MultiLineStringTraitExt for UnimplementedMultiLineString +where + T: CoordNum, +{ + forward_multi_line_string_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for UnimplementedMultiLineString { + type Tag = MultiLineStringTag; +} diff --git a/rust/geo-traits-ext/src/multi_point.rs b/rust/geo-traits-ext/src/multi_point.rs new file mode 100644 index 00000000..33f815b4 --- /dev/null +++ b/rust/geo-traits-ext/src/multi_point.rs @@ -0,0 +1,114 @@ +// Extend MultiPointTrait traits for the `geo-traits` crate + +use geo_traits::{GeometryTrait, MultiPointTrait, UnimplementedMultiPoint}; +use geo_types::{Coord, CoordNum, MultiPoint}; + +use crate::{CoordTraitExt, GeoTraitExtWithTypeTag, MultiPointTag, PointTraitExt}; + +pub trait MultiPointTraitExt: + MultiPointTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type PointTypeExt<'a>: 'a + PointTraitExt::T> + where + Self: 'a; + + fn point_ext(&self, i: usize) -> Option>; + + /// Returns a point by index without bounds checking. + /// + /// # Safety + /// The caller must ensure that `i` is a valid index less than the number of points. + /// Otherwise, this function may cause undefined behavior. + unsafe fn point_unchecked_ext(&self, i: usize) -> Self::PointTypeExt<'_>; + + /// Returns a coordinate by index without bounds checking. + /// + /// # Safety + /// The caller must ensure that `i` is a valid index less than the number of points. + /// Otherwise, this function may cause undefined behavior. + unsafe fn geo_coord_unchecked(&self, i: usize) -> Option::T>> { + let point = unsafe { self.point_unchecked_ext(i) }; + point.coord_ext().map(|c| c.geo_coord()) + } + + fn points_ext(&self) -> impl DoubleEndedIterator>; + + fn coord_iter(&self) -> impl DoubleEndedIterator::T>> { + self.points_ext().flat_map(|p| p.geo_coord()) + } +} + +#[macro_export] +macro_rules! forward_multi_point_trait_ext_funcs { + () => { + type PointTypeExt<'__l_inner> + = ::InnerPointType<'__l_inner> + where + Self: '__l_inner; + + fn point_ext(&self, i: usize) -> Option> { + ::point(self, i) + } + + unsafe fn point_unchecked_ext(&self, i: usize) -> Self::PointTypeExt<'_> { + ::point_unchecked(self, i) + } + + fn points_ext(&self) -> impl DoubleEndedIterator> { + ::points(self) + } + }; +} + +impl MultiPointTraitExt for MultiPoint +where + T: CoordNum, +{ + forward_multi_point_trait_ext_funcs!(); + + unsafe fn geo_coord_unchecked(&self, i: usize) -> Option> { + Some(self.0.get_unchecked(i).0) + } + + // Specialized implementation for geo_types::MultiPoint to reduce performance overhead + fn coord_iter(&self) -> impl DoubleEndedIterator::T>> { + self.0.iter().map(|p| p.0) + } +} + +impl GeoTraitExtWithTypeTag for MultiPoint { + type Tag = MultiPointTag; +} + +impl MultiPointTraitExt for &MultiPoint +where + T: CoordNum, +{ + forward_multi_point_trait_ext_funcs!(); + + unsafe fn geo_coord_unchecked(&self, i: usize) -> Option> { + Some(self.0.get_unchecked(i).0) + } + + // Specialized implementation for geo_types::MultiPoint to reduce performance overhead + fn coord_iter(&self) -> impl DoubleEndedIterator::T>> { + self.0.iter().map(|p| p.0) + } +} + +impl GeoTraitExtWithTypeTag for &MultiPoint { + type Tag = MultiPointTag; +} + +impl MultiPointTraitExt for UnimplementedMultiPoint +where + T: CoordNum, +{ + forward_multi_point_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for UnimplementedMultiPoint { + type Tag = MultiPointTag; +} diff --git a/rust/geo-traits-ext/src/multi_polygon.rs b/rust/geo-traits-ext/src/multi_polygon.rs new file mode 100644 index 00000000..8d4b524c --- /dev/null +++ b/rust/geo-traits-ext/src/multi_polygon.rs @@ -0,0 +1,82 @@ +// Extend MultiPolygonTrait traits for the `geo-traits` crate + +use geo_traits::{GeometryTrait, MultiPolygonTrait, UnimplementedMultiPolygon}; +use geo_types::{CoordNum, MultiPolygon}; + +use crate::{GeoTraitExtWithTypeTag, MultiPolygonTag, PolygonTraitExt}; + +pub trait MultiPolygonTraitExt: + MultiPolygonTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type PolygonTypeExt<'a>: 'a + PolygonTraitExt::T> + where + Self: 'a; + + fn polygon_ext(&self, i: usize) -> Option>; + + /// Returns a polygon by index without bounds checking. + /// + /// # Safety + /// The caller must ensure that `i` is a valid index less than the number of polygons. + /// Otherwise, this function may cause undefined behavior. + unsafe fn polygon_unchecked_ext(&self, i: usize) -> Self::PolygonTypeExt<'_>; + + fn polygons_ext(&self) -> impl Iterator>; +} + +#[macro_export] +macro_rules! forward_multi_polygon_trait_ext_funcs { + () => { + type PolygonTypeExt<'__l_inner> + = ::InnerPolygonType<'__l_inner> + where + Self: '__l_inner; + + fn polygon_ext(&self, i: usize) -> Option> { + ::polygon(self, i) + } + + unsafe fn polygon_unchecked_ext(&self, i: usize) -> Self::PolygonTypeExt<'_> { + ::polygon_unchecked(self, i) + } + + fn polygons_ext(&self) -> impl Iterator> { + ::polygons(self) + } + }; +} + +impl MultiPolygonTraitExt for MultiPolygon +where + T: CoordNum, +{ + forward_multi_polygon_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for MultiPolygon { + type Tag = MultiPolygonTag; +} + +impl MultiPolygonTraitExt for &MultiPolygon +where + T: CoordNum, +{ + forward_multi_polygon_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for &MultiPolygon { + type Tag = MultiPolygonTag; +} + +impl MultiPolygonTraitExt for UnimplementedMultiPolygon +where + T: CoordNum, +{ + forward_multi_polygon_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for UnimplementedMultiPolygon { + type Tag = MultiPolygonTag; +} diff --git a/rust/geo-traits-ext/src/point.rs b/rust/geo-traits-ext/src/point.rs new file mode 100644 index 00000000..a9e663ba --- /dev/null +++ b/rust/geo-traits-ext/src/point.rs @@ -0,0 +1,89 @@ +// Extend PointTrait traits for the `geo-traits` crate + +use geo_traits::{CoordTrait, GeometryTrait, PointTrait, UnimplementedPoint}; +use geo_types::{Coord, CoordNum, Point}; + +use crate::{CoordTraitExt, GeoTraitExtWithTypeTag, PointTag}; + +pub trait PointTraitExt: PointTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type CoordTypeExt<'a>: 'a + CoordTraitExt::T> + where + Self: 'a; + + fn coord_ext(&self) -> Option>; + + fn geo_point(&self) -> Option::T>> { + self.coord_ext() + .map(|coord| Point::new(coord.x(), coord.y())) + } + + fn geo_coord(&self) -> Option::T>> { + self.coord_ext().map(|coord| coord.geo_coord()) + } +} + +#[macro_export] +macro_rules! forward_point_trait_ext_funcs { + () => { + type CoordTypeExt<'__l_inner> + = ::CoordType<'__l_inner> + where + Self: '__l_inner; + + fn coord_ext(&self) -> Option> { + ::coord(self) + } + }; +} + +impl PointTraitExt for Point +where + T: CoordNum, +{ + forward_point_trait_ext_funcs!(); + + fn geo_point(&self) -> Option> { + Some(*self) + } + + fn geo_coord(&self) -> Option> { + Some(self.0) + } +} + +impl GeoTraitExtWithTypeTag for Point { + type Tag = PointTag; +} + +impl PointTraitExt for &Point +where + T: CoordNum, +{ + forward_point_trait_ext_funcs!(); + + fn geo_point(&self) -> Option> { + Some(**self) + } + + fn geo_coord(&self) -> Option> { + Some(self.0) + } +} + +impl GeoTraitExtWithTypeTag for &Point { + type Tag = PointTag; +} + +impl PointTraitExt for UnimplementedPoint +where + T: CoordNum, +{ + forward_point_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for UnimplementedPoint { + type Tag = PointTag; +} diff --git a/rust/geo-traits-ext/src/polygon.rs b/rust/geo-traits-ext/src/polygon.rs new file mode 100644 index 00000000..7366834b --- /dev/null +++ b/rust/geo-traits-ext/src/polygon.rs @@ -0,0 +1,89 @@ +// Extend PolygonTrait traits for the `geo-traits` crate + +use geo_traits::{GeometryTrait, PolygonTrait, UnimplementedPolygon}; +use geo_types::{CoordNum, Polygon}; + +use crate::{GeoTraitExtWithTypeTag, LineStringTraitExt, PolygonTag}; + +pub trait PolygonTraitExt: PolygonTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type RingTypeExt<'a>: 'a + LineStringTraitExt::T> + where + Self: 'a; + + fn exterior_ext(&self) -> Option>; + fn interiors_ext( + &self, + ) -> impl DoubleEndedIterator + ExactSizeIterator>; + fn interior_ext(&self, i: usize) -> Option>; + + /// Returns an interior ring by index without bounds checking. + /// + /// # Safety + /// The caller must ensure that `i` is a valid index less than the number of interior rings. + /// Otherwise, this function may cause undefined behavior. + unsafe fn interior_unchecked_ext(&self, i: usize) -> Self::RingTypeExt<'_>; +} + +#[macro_export] +macro_rules! forward_polygon_trait_ext_funcs { + () => { + type RingTypeExt<'__l_inner> + = ::RingType<'__l_inner> + where + Self: '__l_inner; + + fn exterior_ext(&self) -> Option> { + ::exterior(self) + } + + fn interiors_ext( + &self, + ) -> impl DoubleEndedIterator + ExactSizeIterator> { + ::interiors(self) + } + + fn interior_ext(&self, i: usize) -> Option> { + ::interior(self, i) + } + + unsafe fn interior_unchecked_ext(&self, i: usize) -> Self::RingTypeExt<'_> { + ::interior_unchecked(self, i) + } + }; +} + +impl PolygonTraitExt for Polygon +where + T: CoordNum, +{ + forward_polygon_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for Polygon { + type Tag = PolygonTag; +} + +impl PolygonTraitExt for &Polygon +where + T: CoordNum, +{ + forward_polygon_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for &Polygon { + type Tag = PolygonTag; +} + +impl PolygonTraitExt for UnimplementedPolygon +where + T: CoordNum, +{ + forward_polygon_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for UnimplementedPolygon { + type Tag = PolygonTag; +} diff --git a/rust/geo-traits-ext/src/rect.rs b/rust/geo-traits-ext/src/rect.rs new file mode 100644 index 00000000..97e1ad07 --- /dev/null +++ b/rust/geo-traits-ext/src/rect.rs @@ -0,0 +1,283 @@ +// Extend RectTrait traits for the `geo-traits` crate + +use geo_traits::{CoordTrait, GeometryTrait, RectTrait, UnimplementedRect}; +use geo_types::{coord, Coord, CoordFloat, CoordNum, Line, LineString, Polygon, Rect}; +use num_traits::One; + +use crate::{CoordTraitExt, GeoTraitExtWithTypeTag, RectTag}; + +static RECT_INVALID_BOUNDS_ERROR: &str = "Failed to create Rect: 'min' coordinate's x/y value must be smaller or equal to the 'max' x/y value"; + +pub trait RectTraitExt: RectTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type CoordTypeExt<'a>: 'a + CoordTraitExt::T> + where + Self: 'a; + + fn min_ext(&self) -> Self::CoordTypeExt<'_>; + fn max_ext(&self) -> Self::CoordTypeExt<'_>; + + fn min_coord(&self) -> Coord<::T> { + self.min_ext().geo_coord() + } + + fn max_coord(&self) -> Coord<::T> { + self.max_ext().geo_coord() + } + + fn geo_rect(&self) -> Rect<::T> { + Rect::new(self.min_coord(), self.max_coord()) + } + + fn width(&self) -> ::T { + self.max().x() - self.min().x() + } + + fn height(&self) -> ::T { + self.max().y() - self.min().y() + } + + fn to_polygon(&self) -> Polygon<::T> + where + ::T: Clone, + { + let min_coord = self.min_coord(); + let max_coord = self.max_coord(); + + let min_x = min_coord.x; + let min_y = min_coord.y; + let max_x = max_coord.x; + let max_y = max_coord.y; + + let line_string = LineString::new(vec![ + Coord { x: min_x, y: min_y }, + Coord { x: min_x, y: max_y }, + Coord { x: max_x, y: max_y }, + Coord { x: max_x, y: min_y }, + Coord { x: min_x, y: min_y }, + ]); + + Polygon::new(line_string, vec![]) + } + + fn to_lines(&self) -> [Line<::T>; 4] { + let min_coord = self.min_coord(); + let max_coord = self.max_coord(); + [ + Line::new( + coord! { + x: max_coord.x, + y: min_coord.y, + }, + coord! { + x: max_coord.x, + y: max_coord.y, + }, + ), + Line::new( + coord! { + x: max_coord.x, + y: min_coord.y, + }, + coord! { + x: min_coord.x, + y: max_coord.y, + }, + ), + Line::new( + coord! { + x: min_coord.x, + y: max_coord.y, + }, + coord! { + x: min_coord.x, + y: min_coord.y, + }, + ), + Line::new( + coord! { + x: min_coord.x, + y: min_coord.y, + }, + coord! { + x: max_coord.x, + y: min_coord.y, + }, + ), + ] + } + + fn to_line_string(&self) -> LineString<::T> + where + ::T: Clone, + { + let min_coord = self.min_coord(); + let max_coord = self.max_coord(); + + let min_x = min_coord.x; + let min_y = min_coord.y; + let max_x = max_coord.x; + let max_y = max_coord.y; + + LineString::new(vec![ + Coord { x: min_x, y: min_y }, + Coord { x: min_x, y: max_y }, + Coord { x: max_x, y: max_y }, + Coord { x: max_x, y: min_y }, + Coord { x: min_x, y: min_y }, + ]) + } + + fn has_valid_bounds(&self) -> bool { + let min_coord = self.min_coord(); + let max_coord = self.max_coord(); + min_coord.x <= max_coord.x && min_coord.y <= max_coord.y + } + + fn assert_valid_bounds(&self) { + if !self.has_valid_bounds() { + panic!("{}", RECT_INVALID_BOUNDS_ERROR); + } + } + + fn contains_point(&self, coord: &Coord<::T>) -> bool + where + ::T: PartialOrd, + { + let min_coord = self.min_coord(); + let max_coord = self.max_coord(); + + let min_x = min_coord.x; + let min_y = min_coord.y; + let max_x = max_coord.x; + let max_y = max_coord.y; + + (min_x <= coord.x && coord.x <= max_x) && (min_y <= coord.y && coord.y <= max_y) + } + + fn contains_rect(&self, rect: &Self) -> bool + where + ::T: PartialOrd, + { + let self_min = self.min_coord(); + let self_max = self.max_coord(); + let other_min = rect.min_coord(); + let other_max = rect.max_coord(); + + let self_min_x = self_min.x; + let self_min_y = self_min.y; + let self_max_x = self_max.x; + let self_max_y = self_max.y; + + let other_min_x = other_min.x; + let other_min_y = other_min.y; + let other_max_x = other_max.x; + let other_max_y = other_max.y; + + (self_min_x <= other_min_x && other_max_x <= self_max_x) + && (self_min_y <= other_min_y && other_max_y <= self_max_y) + } + + fn center(&self) -> Coord<::T> + where + ::T: CoordFloat, + { + let two = ::T::one() + ::T::one(); + coord! { + x: (self.max_coord().x + self.min_coord().x) / two, + y: (self.max_coord().y + self.min_coord().y) / two, + } + } +} + +#[macro_export] +macro_rules! forward_rect_trait_ext_funcs { + () => { + type CoordTypeExt<'__l_inner> + = ::CoordType<'__l_inner> + where + Self: '__l_inner; + + fn min_ext(&self) -> Self::CoordTypeExt<'_> { + ::min(self) + } + + fn max_ext(&self) -> Self::CoordTypeExt<'_> { + ::max(self) + } + }; +} + +impl RectTraitExt for Rect +where + T: CoordNum, +{ + forward_rect_trait_ext_funcs!(); + + fn min_coord(&self) -> Coord { + Rect::min(*self) + } + + fn max_coord(&self) -> Coord { + Rect::max(*self) + } + + fn geo_rect(&self) -> Rect { + *self + } + + fn to_lines(&self) -> [Line<::T>; 4] { + self.to_lines() + } +} + +impl GeoTraitExtWithTypeTag for Rect { + type Tag = RectTag; +} + +impl RectTraitExt for &Rect +where + T: CoordNum, +{ + forward_rect_trait_ext_funcs!(); + + fn min_coord(&self) -> Coord { + Rect::min(**self) + } + + fn max_coord(&self) -> Coord { + Rect::max(**self) + } + + fn geo_rect(&self) -> Rect { + **self + } + + fn to_polygon(&self) -> Polygon<::T> + where + ::T: Clone, + { + (*self).to_polygon() + } + + fn to_lines(&self) -> [Line<::T>; 4] { + (*self).to_lines() + } +} + +impl GeoTraitExtWithTypeTag for &Rect { + type Tag = RectTag; +} + +impl RectTraitExt for UnimplementedRect +where + T: CoordNum, +{ + forward_rect_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for UnimplementedRect { + type Tag = RectTag; +} diff --git a/rust/geo-traits-ext/src/triangle.rs b/rust/geo-traits-ext/src/triangle.rs new file mode 100644 index 00000000..c156bcef --- /dev/null +++ b/rust/geo-traits-ext/src/triangle.rs @@ -0,0 +1,140 @@ +// Extend TriangleTrait traits for the `geo-traits` crate + +use geo_traits::{GeometryTrait, TriangleTrait, UnimplementedTriangle}; +use geo_types::{polygon, Coord, CoordNum, Line, Polygon, Triangle}; + +use crate::{CoordTraitExt, GeoTraitExtWithTypeTag, TriangleTag}; + +pub trait TriangleTraitExt: TriangleTrait + GeoTraitExtWithTypeTag +where + ::T: CoordNum, +{ + type CoordTypeExt<'a>: 'a + CoordTraitExt::T> + where + Self: 'a; + + fn first_ext(&self) -> Self::CoordTypeExt<'_>; + fn second_ext(&self) -> Self::CoordTypeExt<'_>; + fn third_ext(&self) -> Self::CoordTypeExt<'_>; + fn coords_ext(&self) -> [Self::CoordTypeExt<'_>; 3]; + + fn first_coord(&self) -> Coord<::T> { + self.first_ext().geo_coord() + } + + fn second_coord(&self) -> Coord<::T> { + self.second_ext().geo_coord() + } + + fn third_coord(&self) -> Coord<::T> { + self.third_ext().geo_coord() + } + + fn to_array(&self) -> [Coord<::T>; 3] { + [self.first_coord(), self.second_coord(), self.third_coord()] + } + + fn to_lines(&self) -> [Line<::T>; 3] { + [ + Line::new(self.first_coord(), self.second_coord()), + Line::new(self.second_coord(), self.third_coord()), + Line::new(self.third_coord(), self.first_coord()), + ] + } + + fn to_polygon(&self) -> Polygon<::T> { + polygon![ + self.first_coord(), + self.second_coord(), + self.third_coord(), + self.first_coord(), + ] + } + + fn coord_iter(&self) -> impl Iterator::T>> { + [self.first_coord(), self.second_coord(), self.third_coord()].into_iter() + } +} + +#[macro_export] +macro_rules! forward_triangle_trait_ext_funcs { + () => { + type CoordTypeExt<'__l_inner> + = ::CoordType<'__l_inner> + where + Self: '__l_inner; + + fn first_ext(&self) -> Self::CoordTypeExt<'_> { + ::first(self) + } + + fn second_ext(&self) -> Self::CoordTypeExt<'_> { + ::second(self) + } + + fn third_ext(&self) -> Self::CoordTypeExt<'_> { + ::third(self) + } + + fn coords_ext(&self) -> [Self::CoordTypeExt<'_>; 3] { + [self.first_ext(), self.second_ext(), self.third_ext()] + } + }; +} + +impl TriangleTraitExt for Triangle +where + T: CoordNum, +{ + forward_triangle_trait_ext_funcs!(); + + fn first_coord(&self) -> Coord<::T> { + self.0 + } + + fn second_coord(&self) -> Coord<::T> { + self.1 + } + + fn third_coord(&self) -> Coord<::T> { + self.2 + } +} + +impl GeoTraitExtWithTypeTag for Triangle { + type Tag = TriangleTag; +} + +impl TriangleTraitExt for &Triangle +where + T: CoordNum, +{ + forward_triangle_trait_ext_funcs!(); + + fn first_coord(&self) -> Coord<::T> { + self.0 + } + + fn second_coord(&self) -> Coord<::T> { + self.1 + } + + fn third_coord(&self) -> Coord<::T> { + self.2 + } +} + +impl GeoTraitExtWithTypeTag for &Triangle { + type Tag = TriangleTag; +} + +impl TriangleTraitExt for UnimplementedTriangle +where + T: CoordNum, +{ + forward_triangle_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for UnimplementedTriangle { + type Tag = TriangleTag; +} diff --git a/rust/geo-traits-ext/src/type_tag.rs b/rust/geo-traits-ext/src/type_tag.rs new file mode 100644 index 00000000..07b84538 --- /dev/null +++ b/rust/geo-traits-ext/src/type_tag.rs @@ -0,0 +1,33 @@ +// Geometry type tags for dispatching algorithm traits to the corresponding implementation + +pub trait GeoTypeTag {} + +pub struct CoordTag; +pub struct PointTag; +pub struct LineStringTag; +pub struct PolygonTag; +pub struct MultiPointTag; +pub struct MultiLineStringTag; +pub struct MultiPolygonTag; +pub struct GeometryCollectionTag; +pub struct GeometryTag; +pub struct LineTag; +pub struct RectTag; +pub struct TriangleTag; + +impl GeoTypeTag for CoordTag {} +impl GeoTypeTag for PointTag {} +impl GeoTypeTag for LineStringTag {} +impl GeoTypeTag for PolygonTag {} +impl GeoTypeTag for MultiPointTag {} +impl GeoTypeTag for MultiLineStringTag {} +impl GeoTypeTag for MultiPolygonTag {} +impl GeoTypeTag for GeometryCollectionTag {} +impl GeoTypeTag for GeometryTag {} +impl GeoTypeTag for LineTag {} +impl GeoTypeTag for RectTag {} +impl GeoTypeTag for TriangleTag {} + +pub trait GeoTraitExtWithTypeTag { + type Tag: GeoTypeTag; +} diff --git a/rust/sedona-geo/Cargo.toml b/rust/sedona-geo/Cargo.toml index f9c947a5..95d37a6f 100644 --- a/rust/sedona-geo/Cargo.toml +++ b/rust/sedona-geo/Cargo.toml @@ -40,7 +40,7 @@ arrow-schema = { workspace = true } arrow-array = { workspace = true } datafusion-common = { workspace = true } datafusion-expr = { workspace = true } -geo-generic-alg = { workspace = true } +geo-generic-alg = { path = "../geo-generic-alg" } geo-traits = { workspace = true, features = ["geo-types"] } geo-types = { workspace = true } geo = { workspace = true } diff --git a/rust/sedona-geo/src/to_geo.rs b/rust/sedona-geo/src/to_geo.rs index 56a92178..7f24252c 100644 --- a/rust/sedona-geo/src/to_geo.rs +++ b/rust/sedona-geo/src/to_geo.rs @@ -79,35 +79,38 @@ fn to_geometry(item: impl GeometryTrait) -> Option { MultiPoint(geom) => geom.try_to_multi_point().map(Geometry::MultiPoint), MultiLineString(geom) => Some(Geometry::MultiLineString(geom.to_multi_line_string())), MultiPolygon(geom) => Some(Geometry::MultiPolygon(geom.to_multi_polygon())), - GeometryCollection(geom) => { - let geometries = geom - .geometries() - .filter_map(|child| match child.as_type() { - Point(geom) => geom.try_to_point().map(Geometry::Point), - LineString(geom) => Some(Geometry::LineString(geom.to_line_string())), - Polygon(geom) => Some(Geometry::Polygon(geom.to_polygon())), - MultiPoint(geom) => geom.try_to_multi_point().map(Geometry::MultiPoint), - MultiLineString(geom) => { - Some(Geometry::MultiLineString(geom.to_multi_line_string())) - } - MultiPolygon(geom) => Some(Geometry::MultiPolygon(geom.to_multi_polygon())), - _ => None, - }) - .collect::>(); - - // If any child conversions failed, also return None - if geometries.len() != geom.num_geometries() { - return None; - } - - Some(Geometry::GeometryCollection(geo_types::GeometryCollection( - geometries, - ))) - } + GeometryCollection(geom) => geometry_collection_to_geometry(geom), _ => None, } } +fn geometry_collection_to_geometry>( + geom: &GC, +) -> Option { + let geometries = geom + .geometries() + .filter_map(|child| match child.as_type() { + Point(geom) => geom.try_to_point().map(Geometry::Point), + LineString(geom) => Some(Geometry::LineString(geom.to_line_string())), + Polygon(geom) => Some(Geometry::Polygon(geom.to_polygon())), + MultiPoint(geom) => geom.try_to_multi_point().map(Geometry::MultiPoint), + MultiLineString(geom) => Some(Geometry::MultiLineString(geom.to_multi_line_string())), + MultiPolygon(geom) => Some(Geometry::MultiPolygon(geom.to_multi_polygon())), + GeometryCollection(geom) => geometry_collection_to_geometry(geom), + _ => None, + }) + .collect::>(); + + // If any child conversions failed, also return None + if geometries.len() != geom.num_geometries() { + return None; + } + + Some(Geometry::GeometryCollection(geo_types::GeometryCollection( + geometries, + ))) +} + #[cfg(test)] mod tests { use datafusion_expr::ColumnarValue; diff --git a/rust/sedona-spatial-join/Cargo.toml b/rust/sedona-spatial-join/Cargo.toml index 0b2029f2..54c48514 100644 --- a/rust/sedona-spatial-join/Cargo.toml +++ b/rust/sedona-spatial-join/Cargo.toml @@ -43,9 +43,9 @@ datafusion-execution = { workspace = true } datafusion-common-runtime = { workspace = true } futures = { workspace = true } parking_lot = { workspace = true } -geo-generic-alg = { workspace = true } +geo-generic-alg = { path = "../geo-generic-alg" } geo-traits = { workspace = true, features = ["geo-types"] } -geo-traits-ext = { workspace = true } +geo-traits-ext = { path = "../geo-traits-ext" } geo-types = { workspace = true } sedona-common = { path = "../sedona-common" } sedona-expr = { path = "../sedona-expr" } From c3efad60323c34e11a7524075c2336f156ea27cc Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Fri, 26 Sep 2025 18:15:52 +0800 Subject: [PATCH 02/17] Delete more unused code in geo-generic-alg, add more inlines to geo-traits-ext --- .../src/algorithm/bounding_rect.rs | 13 +- .../src/algorithm/coordinate_position.rs | 14 +- .../src/algorithm/dimensions.rs | 10 +- .../src/algorithm/kernels/mod.rs | 13 - .../src/algorithm/line_measures/length.rs | 4 +- rust/geo-generic-alg/src/geometry_cow.rs | 185 -------------- rust/geo-generic-alg/src/lib.rs | 234 ------------------ rust/geo-generic-alg/src/utils.rs | 144 ----------- rust/geo-traits-ext/src/coord.rs | 1 + rust/geo-traits-ext/src/geometry.rs | 2 + .../geo-traits-ext/src/geometry_collection.rs | 3 + rust/geo-traits-ext/src/line.rs | 6 + rust/geo-traits-ext/src/line_string.rs | 9 + rust/geo-traits-ext/src/multi_line_string.rs | 4 + rust/geo-traits-ext/src/multi_point.rs | 5 + rust/geo-traits-ext/src/multi_polygon.rs | 3 + rust/geo-traits-ext/src/point.rs | 3 + rust/geo-traits-ext/src/polygon.rs | 4 + rust/geo-traits-ext/src/rect.rs | 10 + rust/geo-traits-ext/src/triangle.rs | 11 + 20 files changed, 67 insertions(+), 611 deletions(-) delete mode 100644 rust/geo-generic-alg/src/geometry_cow.rs diff --git a/rust/geo-generic-alg/src/algorithm/bounding_rect.rs b/rust/geo-generic-alg/src/algorithm/bounding_rect.rs index d1673811..149ae894 100644 --- a/rust/geo-generic-alg/src/algorithm/bounding_rect.rs +++ b/rust/geo-generic-alg/src/algorithm/bounding_rect.rs @@ -1,5 +1,5 @@ use crate::utils::{partial_max, partial_min}; -use crate::{coord, geometry::*, CoordNum, GeometryCow}; +use crate::{coord, geometry::*, CoordNum}; use core::borrow::Borrow; use geo_traits_ext::*; use geo_types::private_utils::get_bounding_rect; @@ -252,17 +252,6 @@ where } } -impl BoundingRect for GeometryCow<'_, T> -where - T: CoordNum, -{ - type Output = Option>; - - crate::geometry_cow_delegate_impl! { - fn bounding_rect(&self) -> Self::Output; - } -} - // Return a new rectangle that encompasses the provided rectangles fn bounding_rect_merge(a: Rect, b: Rect) -> Rect { Rect::new( diff --git a/rust/geo-generic-alg/src/algorithm/coordinate_position.rs b/rust/geo-generic-alg/src/algorithm/coordinate_position.rs index 41310a70..89e525e7 100644 --- a/rust/geo-generic-alg/src/algorithm/coordinate_position.rs +++ b/rust/geo-generic-alg/src/algorithm/coordinate_position.rs @@ -5,7 +5,7 @@ use crate::geometry::*; use crate::intersects::{point_in_rect, value_in_between}; use crate::kernels::*; use crate::{BoundingRect, HasDimensions, Intersects}; -use crate::{GeoNum, GeometryCow}; +use crate::GeoNum; use geo_traits_ext::*; /// The position of a `Coord` relative to a `Geometry` @@ -498,18 +498,6 @@ where } } -impl CoordinatePosition for GeometryCow<'_, T> { - type Scalar = T; - - crate::geometry_cow_delegate_impl! { - fn calculate_coordinate_position( - &self, - coord: &Coord, - is_inside: &mut bool, - boundary_count: &mut usize) -> (); - } -} - /// Calculate the position of a `Coord` relative to a /// closed `LineString`. pub fn coord_pos_relative_to_ring(coord: Coord, linestring: &LS) -> CoordPos diff --git a/rust/geo-generic-alg/src/algorithm/dimensions.rs b/rust/geo-generic-alg/src/algorithm/dimensions.rs index 78f2cd16..3bcadce2 100644 --- a/rust/geo-generic-alg/src/algorithm/dimensions.rs +++ b/rust/geo-generic-alg/src/algorithm/dimensions.rs @@ -2,7 +2,7 @@ use core::borrow::Borrow; use geo_traits_ext::*; use crate::Orientation::Collinear; -use crate::{CoordNum, GeoNum, GeometryCow}; +use crate::{CoordNum, GeoNum}; /// Geometries can have 0, 1, or two dimensions. Or, in the case of an [`empty`](#is_empty) /// geometry, a special `Empty` dimensionality. @@ -132,14 +132,6 @@ pub trait HasDimensions { fn boundary_dimensions(&self) -> Dimensions; } -impl HasDimensions for GeometryCow<'_, C> { - crate::geometry_cow_delegate_impl! { - fn is_empty(&self) -> bool; - fn dimensions(&self) -> Dimensions; - fn boundary_dimensions(&self) -> Dimensions; - } -} - impl HasDimensions for G where G: GeoTraitExtWithTypeTag + HasDimensionsTrait, diff --git a/rust/geo-generic-alg/src/algorithm/kernels/mod.rs b/rust/geo-generic-alg/src/algorithm/kernels/mod.rs index 814c4575..2940b65a 100644 --- a/rust/geo-generic-alg/src/algorithm/kernels/mod.rs +++ b/rust/geo-generic-alg/src/algorithm/kernels/mod.rs @@ -1,5 +1,4 @@ use num_traits::Zero; -use std::cmp::Ordering; use crate::{coord, Coord, CoordNum}; @@ -10,18 +9,6 @@ pub enum Orientation { Collinear, } -impl Orientation { - /// Helper to convert orientation-2d into an ordering. - #[inline] - pub(crate) fn as_ordering(&self) -> Ordering { - match self { - Orientation::CounterClockwise => Ordering::Less, - Orientation::Clockwise => Ordering::Greater, - Orientation::Collinear => Ordering::Equal, - } - } -} - /// Kernel trait to provide predicates to operate on /// different scalar types. pub trait Kernel { diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/length.rs b/rust/geo-generic-alg/src/algorithm/line_measures/length.rs index dc007d0c..f8a9c47f 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/length.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/length.rs @@ -1,5 +1,5 @@ use super::Distance; -use crate::{CoordFloat, Line, LineString, MultiLineString, Point}; +use crate::{CoordFloat, Point}; use geo_traits::{CoordTrait, PolygonTrait}; use geo_traits_ext::*; use std::borrow::Borrow; @@ -359,6 +359,8 @@ mod tests { // Tests for LengthMeasurableExt - adapted from euclidean_length.rs mod length_measurable_ext_tests { + use geo::LineString; + use super::*; use crate::{ coord, line_string, polygon, Geometry, GeometryCollection, Line, MultiLineString, diff --git a/rust/geo-generic-alg/src/geometry_cow.rs b/rust/geo-generic-alg/src/geometry_cow.rs deleted file mode 100644 index cd106021..00000000 --- a/rust/geo-generic-alg/src/geometry_cow.rs +++ /dev/null @@ -1,185 +0,0 @@ -use crate::{ - CoordNum, Geometry, GeometryCollection, Line, LineString, MultiLineString, MultiPoint, - MultiPolygon, Point, Polygon, Rect, Triangle, -}; -use std::borrow::Cow; - -/// A `GeometryCow` is a "one of" enum, just like [`Geometry`], except it is possible for the inner -/// type of a `GeometryCow` to be a reference rather than owned. -/// -/// This is a way to "upgrade" an inner type to something like a `Geometry` without `moving` it. -/// -/// As an example, see the [`Relate`] trait which uses `GeometryCow`. -#[derive(PartialEq, Debug, Hash, Clone)] -#[allow(dead_code)] -pub enum GeometryCow<'a, T> -where - T: CoordNum, -{ - Point(Cow<'a, Point>), - Line(Cow<'a, Line>), - LineString(Cow<'a, LineString>), - Polygon(Cow<'a, Polygon>), - MultiPoint(Cow<'a, MultiPoint>), - MultiLineString(Cow<'a, MultiLineString>), - MultiPolygon(Cow<'a, MultiPolygon>), - GeometryCollection(Cow<'a, GeometryCollection>), - Rect(Cow<'a, Rect>), - Triangle(Cow<'a, Triangle>), -} - -impl<'a, T: CoordNum> From<&'a Geometry> for GeometryCow<'a, T> { - fn from(geometry: &'a Geometry) -> Self { - match geometry { - Geometry::Point(g) => GeometryCow::Point(Cow::Borrowed(g)), - Geometry::Line(g) => GeometryCow::Line(Cow::Borrowed(g)), - Geometry::LineString(g) => GeometryCow::LineString(Cow::Borrowed(g)), - Geometry::Polygon(g) => GeometryCow::Polygon(Cow::Borrowed(g)), - Geometry::MultiPoint(g) => GeometryCow::MultiPoint(Cow::Borrowed(g)), - Geometry::MultiLineString(g) => GeometryCow::MultiLineString(Cow::Borrowed(g)), - Geometry::MultiPolygon(g) => GeometryCow::MultiPolygon(Cow::Borrowed(g)), - Geometry::GeometryCollection(g) => GeometryCow::GeometryCollection(Cow::Borrowed(g)), - Geometry::Rect(g) => GeometryCow::Rect(Cow::Borrowed(g)), - Geometry::Triangle(g) => GeometryCow::Triangle(Cow::Borrowed(g)), - } - } -} - -impl<'a, T: CoordNum> From<&'a Point> for GeometryCow<'a, T> { - fn from(point: &'a Point) -> Self { - GeometryCow::Point(Cow::Borrowed(point)) - } -} - -impl<'a, T: CoordNum> From<&'a LineString> for GeometryCow<'a, T> { - fn from(line_string: &'a LineString) -> Self { - GeometryCow::LineString(Cow::Borrowed(line_string)) - } -} - -impl<'a, T: CoordNum> From<&'a Line> for GeometryCow<'a, T> { - fn from(line: &'a Line) -> Self { - GeometryCow::Line(Cow::Borrowed(line)) - } -} - -impl<'a, T: CoordNum> From<&'a Polygon> for GeometryCow<'a, T> { - fn from(polygon: &'a Polygon) -> Self { - GeometryCow::Polygon(Cow::Borrowed(polygon)) - } -} - -impl<'a, T: CoordNum> From<&'a MultiPoint> for GeometryCow<'a, T> { - fn from(multi_point: &'a MultiPoint) -> GeometryCow<'a, T> { - GeometryCow::MultiPoint(Cow::Borrowed(multi_point)) - } -} - -impl<'a, T: CoordNum> From<&'a MultiLineString> for GeometryCow<'a, T> { - fn from(multi_line_string: &'a MultiLineString) -> Self { - GeometryCow::MultiLineString(Cow::Borrowed(multi_line_string)) - } -} - -impl<'a, T: CoordNum> From<&'a MultiPolygon> for GeometryCow<'a, T> { - fn from(multi_polygon: &'a MultiPolygon) -> Self { - GeometryCow::MultiPolygon(Cow::Borrowed(multi_polygon)) - } -} - -impl<'a, T: CoordNum> From<&'a GeometryCollection> for GeometryCow<'a, T> { - fn from(geometry_collection: &'a GeometryCollection) -> Self { - GeometryCow::GeometryCollection(Cow::Borrowed(geometry_collection)) - } -} - -impl<'a, T: CoordNum> From<&'a Rect> for GeometryCow<'a, T> { - fn from(rect: &'a Rect) -> Self { - GeometryCow::Rect(Cow::Borrowed(rect)) - } -} - -impl<'a, T: CoordNum> From<&'a Triangle> for GeometryCow<'a, T> { - fn from(triangle: &'a Triangle) -> Self { - GeometryCow::Triangle(Cow::Borrowed(triangle)) - } -} - -impl From> for GeometryCow<'_, T> { - fn from(point: Point) -> Self { - GeometryCow::Point(Cow::Owned(point)) - } -} - -impl From> for GeometryCow<'_, T> { - fn from(line_string: LineString) -> Self { - GeometryCow::LineString(Cow::Owned(line_string)) - } -} - -impl From> for GeometryCow<'_, T> { - fn from(line: Line) -> Self { - GeometryCow::Line(Cow::Owned(line)) - } -} - -impl From> for GeometryCow<'_, T> { - fn from(polygon: Polygon) -> Self { - GeometryCow::Polygon(Cow::Owned(polygon)) - } -} - -impl<'a, T: CoordNum> From> for GeometryCow<'a, T> { - fn from(multi_point: MultiPoint) -> GeometryCow<'a, T> { - GeometryCow::MultiPoint(Cow::Owned(multi_point)) - } -} - -impl From> for GeometryCow<'_, T> { - fn from(multi_line_string: MultiLineString) -> Self { - GeometryCow::MultiLineString(Cow::Owned(multi_line_string)) - } -} - -impl From> for GeometryCow<'_, T> { - fn from(multi_polygon: MultiPolygon) -> Self { - GeometryCow::MultiPolygon(Cow::Owned(multi_polygon)) - } -} - -impl From> for GeometryCow<'_, T> { - fn from(geometry_collection: GeometryCollection) -> Self { - GeometryCow::GeometryCollection(Cow::Owned(geometry_collection)) - } -} - -impl From> for GeometryCow<'_, T> { - fn from(rect: Rect) -> Self { - GeometryCow::Rect(Cow::Owned(rect)) - } -} - -impl From> for GeometryCow<'_, T> { - fn from(triangle: Triangle) -> Self { - GeometryCow::Triangle(Cow::Owned(triangle)) - } -} - -impl From> for GeometryCow<'_, T> { - fn from(geometry: Geometry) -> Self { - match geometry { - Geometry::Point(point) => GeometryCow::from(point), - Geometry::Line(line) => GeometryCow::from(line), - Geometry::LineString(line_string) => GeometryCow::from(line_string), - Geometry::Polygon(polygon) => GeometryCow::from(polygon), - Geometry::MultiPoint(multi_point) => GeometryCow::from(multi_point), - Geometry::MultiLineString(multi_line_string) => GeometryCow::from(multi_line_string), - Geometry::MultiPolygon(multi_polygon) => GeometryCow::from(multi_polygon), - Geometry::GeometryCollection(geometry_collection) => { - GeometryCow::from(geometry_collection) - } - Geometry::Rect(rect) => GeometryCow::from(rect), - Geometry::Triangle(triangle) => GeometryCow::from(triangle), - } - } -} diff --git a/rust/geo-generic-alg/src/lib.rs b/rust/geo-generic-alg/src/lib.rs index 20ac23da..2a6ab039 100644 --- a/rust/geo-generic-alg/src/lib.rs +++ b/rust/geo-generic-alg/src/lib.rs @@ -1,235 +1,3 @@ -#![doc(html_logo_url = "https://raw.githubusercontent.com/georust/meta/master/logo/logo.png")] - -//! The `geo` crate provides geospatial primitive types and algorithms. -//! -//! # Types -//! -//! - **[`Coord`]**: A two-dimensional coordinate. All geometry types are composed of [`Coord`]s, though [`Coord`] itself is not a [`Geometry`] type -//! - **[`Point`]**: A single point represented by one [`Coord`] -//! - **[`MultiPoint`]**: A collection of [`Point`]s -//! - **[`Line`]**: A line segment represented by two [`Coord`]s -//! - **[`LineString`]**: A series of contiguous line segments represented by two or more -//! [`Coord`]s -//! - **[`MultiLineString`]**: A collection of [`LineString`]s -//! - **[`Polygon`]**: A bounded area represented by one [`LineString`] exterior ring, and zero or -//! more [`LineString`] interior rings -//! - **[`MultiPolygon`]**: A collection of [`Polygon`]s -//! - **[`Rect`]**: An axis-aligned bounded rectangle represented by minimum and maximum -//! [`Coord`]s -//! - **[`Triangle`]**: A bounded area represented by three [`Coord`] vertices -//! - **[`GeometryCollection`]**: A collection of [`Geometry`]s -//! - **[`Geometry`]**: An enumeration of all geometry types, excluding [`Coord`] -//! -//! The preceding types are reexported from the [`geo-types`] crate. Consider using that crate -//! if you only need access to these types and no other `geo` functionality. -//! -//! ## Semantics -//! -//! The geospatial types provided here aim to adhere to the [OpenGIS Simple feature access][OGC-SFA] -//! standards. Thus, the types here are inter-operable with other implementations of the standards: -//! [JTS], [GEOS], etc. -//! -//! # Algorithms -//! -//! ## Measures -//! -//! Algorithms for measures along a line, and how a line is measured. -//! -//! ### Metric Spaces -//! -//! - **[`Euclidean`]**: The [Euclidean plane] measures distance with the pythagorean formula. Not suitable for lon/lat geometries. -//! - **[`Haversine`]**: The [Haversine Formula] measures distance on a sphere. Only suitable for lon/lat geometries. -//! - **[`Geodesic`]**: Geodesic methods based on [Karney (2013)] more accurately reflect the shape of the Earth, but are slower than Haversine. Only suitable for lon/lat geometries. -//! - **[`Rhumb`]**: [Rhumb line] (a.k.a. loxodrome) measures can be useful for navigation applications where maintaining a constant bearing or direction is important. Only suitable for lon/lat geometries. -//! -//! ### Operations on Metric Spaces -//! -//! - **[`Distance`]**: Calculate the minimum distance between two geometries. -//! - **[`Length`]**: Calculate the length of a `Line`, `LineString`, or `MultiLineString`. -//! - **[`Bearing`]**: Calculate the bearing between two points. -//! -//! - **[`Destination`]**: Calculate the destination point from an origin point, given a bearing and a distance. -//! - **[`InterpolateLine`]**: Interpolate a `Point` along a `Line` or `LineString`. -//! - **[`InterpolatePoint`]**: Interpolate points along a line. -//! - **[`Densify`]**: Insert points into a geometry so there is never more than `max_segment_length` between points. -//! -//! ### Misc measures -//! -//! - **[`HausdorffDistance`]**: Calculate "the maximum of the distances from a point in any of the sets to the nearest point in the other set." (Rote, 1991) -//! - **[`VincentyDistance`]**: Calculate the minimum geodesic distance between geometries using Vincenty’s formula -//! - **[`VincentyLength`]**: Calculate the geodesic length of a geometry using Vincenty’s formula -//! - **[`FrechetDistance`]**: Calculate the similarity between [`LineString`]s using the Fréchet distance -//! -//! ## Area -//! -//! - **[`Area`]**: Calculate the planar area of a geometry -//! - **[`ChamberlainDuquetteArea`]**: Calculate the geodesic area of a geometry on a sphere using the algorithm presented in _Some Algorithms for Polygons on a Sphere_ by Chamberlain and Duquette (2007) -//! - **[`GeodesicArea`]**: Calculate the geodesic area and perimeter of a geometry on an ellipsoid using the algorithm presented in _Algorithms for geodesics_ by Charles Karney (2013) -//! -//! ## Boolean Operations -//! -//! - **[`BooleanOps`]**: Combine or split (Multi)Polygons using intersection, union, xor, or difference operations -//! - **[`unary_union`]**: Efficient union of many [`Polygon`] or [`MultiPolygon`]s -//! -//! ## Outlier Detection -//! -//! - **[`OutlierDetection`]**: Detect outliers in a group of points using [LOF](https://en.wikipedia.org/wiki/Local_outlier_factor) -//! -//! ## Simplification -//! -//! - **[`Simplify`]**: Simplify a geometry using the Ramer–Douglas–Peucker algorithm -//! - **[`SimplifyIdx`]**: Calculate a simplified geometry using the Ramer–Douglas–Peucker algorithm, returning coordinate indices -//! - **[`SimplifyVw`]**: Simplify a geometry using the Visvalingam-Whyatt algorithm -//! - **[`SimplifyVwPreserve`]**: Simplify a geometry using a topology-preserving variant of the Visvalingam-Whyatt algorithm -//! - **[`SimplifyVwIdx`]**: Calculate a simplified geometry using the Visvalingam-Whyatt algorithm, returning coordinate indices -//! -//! ## Query -//! -//! - **[`ClosestPoint`]**: Find the point on a geometry -//! closest to a given point -//! - **[`HaversineClosestPoint`]**: Find the point on a geometry -//! closest to a given point on a sphere using spherical coordinates and lines being great arcs -//! - **[`IsConvex`]**: Calculate the convexity of a [`LineString`] -//! - **[`LineLocatePoint`]**: Calculate the -//! fraction of a line’s total length representing the location of the closest point on the -//! line to the given point -//! - **[`InteriorPoint`]**: -//! Calculates a representative point inside a `Geometry` -//! -//! ## Topology -//! -//! - **[`Contains`]**: Calculate if a geometry contains another -//! geometry -//! - **[`CoordinatePosition`]**: Calculate -//! the position of a coordinate relative to a geometry -//! - **[`HasDimensions`]**: Determine the dimensions of a geometry -//! - **[`Intersects`]**: Calculate if a geometry intersects -//! another geometry -//! - **[`line_intersection`]**: Calculates the -//! intersection, if any, between two lines -//! - **[`Relate`]**: Topologically relate two geometries based on -//! [DE-9IM](https://en.wikipedia.org/wiki/DE-9IM) semantics -//! - **[`Within`]**: Calculate if a geometry lies completely within another geometry -//! -//! ## Triangulation -//! -//! - **[`TriangulateEarcut`](triangulate_earcut)**: Triangulate polygons using the earcut algorithm. Requires the `earcutr` feature, which is enabled by default -//! - **[`TriangulateDelaunay`](triangulate_delaunay)**: Produce constrained or unconstrained Delaunay triangulations of polygons. Requires the `spade` feature, which is enabled by default -//! ## Winding -//! -//! - **[`Orient`]**: Apply a specified winding [`Direction`](orient::Direction) to a [`Polygon`]’s interior and exterior rings -//! - **[`Winding`]**: Calculate and manipulate the [`WindingOrder`](winding_order::WindingOrder) of a [`LineString`] -//! -//! ## Iteration -//! -//! - **[`CoordsIter`]**: Iterate over the coordinates of a geometry -//! - **[`MapCoords`]**: Map a function over all the coordinates -//! in a geometry, returning a new geometry -//! - **[`MapCoordsInPlace`]**: Map a function over all the -//! coordinates in a geometry in-place -//! - **[`LinesIter`]**: Iterate over lines of a geometry -//! -//! ## Boundary -//! -//! - **[`BoundingRect`]**: Calculate the axis-aligned -//! bounding rectangle of a geometry -//! - **[`MinimumRotatedRect`]**: Calculate the -//! minimum bounding box of a geometry -//! - **[`ConcaveHull`]**: Calculate the concave hull of a -//! geometry -//! - **[`ConvexHull`]**: Calculate the convex hull of a -//! geometry -//! - **[`Extremes`]**: Calculate the extreme coordinates and -//! indices of a geometry -//! -//! ## Affine transformations -//! -//! - **[`Rotate`]**: Rotate a geometry around its centroid -//! - **[`Scale`]**: Scale a geometry up or down by a factor -//! - **[`Skew`]**: Skew a geometry by shearing angles along the `x` and `y` dimension -//! - **[`Translate`]**: Translate a geometry along its axis -//! - **[`AffineOps`]**: generalised composable affine operations -//! -//! ## Conversion -//! -//! - **[`Convert`]**: Convert (infalliby) the numeric type of a geometry’s coordinate value -//! - **[`TryConvert`]**: Convert (falliby) the numeric type of a geometry’s coordinate value -//! - **[`ToDegrees`]**: Radians to degrees coordinate transforms for a given geometry -//! - **[`ToRadians`]**: Degrees to radians coordinate transforms for a given geometry -//! -//! ## Miscellaneous -//! -//! - **[`Centroid`]**: Calculate the centroid of a geometry -//! - **[`ChaikinSmoothing`]**: Smoothen `LineString`, `Polygon`, `MultiLineString` and `MultiPolygon` using Chaikin's algorithm -//! - **[`proj`]**: Project geometries with the `proj` crate (requires the `use-proj` feature) -//! - **[`LineStringSegmentize`]**: Segment a LineString into `n` segments -//! - **[`LineStringSegmentizeHaversine`]**: Segment a LineString using Haversine distance -//! - **[`Transform`]**: Transform a geometry using Proj -//! - **[`RemoveRepeatedPoints`]**: Remove repeated points from a geometry -//! - **[`Validation`]**: Checks if the geometry is well formed. Some algorithms may not work correctly with invalid geometries -//! -//! # Spatial Indexing -//! -//! `geo` geometries ([`Point`], [`Line`], [`LineString`], [`Polygon`], [`MultiPolygon`]) can be used with the [rstar](https://docs.rs/rstar/0.12.0/rstar/struct.RTree.html#usage) -//! R*-tree crate for fast distance and nearest-neighbour queries. Multi- geometries can be added to the tree by iterating over -//! their members and adding them. Note in particular the availability of the [`bulk_load`](https://docs.rs/rstar/0.12.0/rstar/struct.RTree.html#method.bulk_load) -//! method and [`GeomWithData`](https://docs.rs/rstar/0.12.0/rstar/primitives/struct.GeomWithData.html) struct. -//! -//! # Features -//! -//! The following optional [Cargo features] are available: -//! -//! - `earcutr`: -//! - Enables the `earcutr` crate, which provides triangulation of polygons using the earcut algorithm -//! - ☑ Enabled by default -//! - `proj-network`: -//! - Enables [network grid] support for the [`proj` crate] -//! - After enabling this feature, [further configuration][proj crate file download] is required to use the network grid. -//! - ☐ Disabled by default -//! - `use-proj`: -//! - Enables coordinate conversion and transformation of `Point` geometries using the [`proj` crate] -//! - ☐ Disabled by default -//! - `use-serde`: -//! - Allows geometry types to be serialized and deserialized with [Serde] -//! - ☐ Disabled by default -//! - `multithreading`: -//! - Enables multithreading support (via Rayon), and activates the `multithreading` flag -//! in `geo-types`, enabling multi-threaded iteration over `Multi*` geometries -//! - ☑ Enabled by default -//! -//! # Ecosystem -//! -//! There’s a wide variety of `geo`-compatible crates in the ecosystem that offer functionality not -//! included in the `geo` crate, including: -//! -//! * Reading and writing file formats (e.g. [GeoJSON][geojson crate], [WKT][wkt crate], -//! [shapefile][shapefile crate]) -//! * [Latitude and longitude parsing][latlng crate] -//! * [Label placement][polylabel crate] -//! * [Geocoding][geocoding crate] -//! * [and much more...][georust website] -//! -//! [Euclidean plane]: https://en.wikipedia.org/wiki/Euclidean_plane -//! [`geo-types`]: https://crates.io/crates/geo-types -//! [haversine formula]: https://en.wikipedia.org/wiki/Haversine_formula -//! [`proj` crate]: https://github.com/georust/proj -//! [geojson crate]: https://crates.io/crates/geojson -//! [Karney (2013)]: https://arxiv.org/pdf/1109.4448.pdf -//! [wkt crate]: https://crates.io/crates/wkt -//! [shapefile crate]: https://crates.io/crates/shapefile -//! [latlng crate]: https://crates.io/crates/latlon -//! [polylabel crate]: https://crates.io/crates/polylabel -//! [geocoding crate]: https://crates.io/crates/geocoding -//! [georust website]: https://georust.org -//! [Cargo features]: https://doc.rust-lang.org/cargo/reference/features.html -//! [GEOS]: https://trac.osgeo.org/geos -//! [JTS]: https://github.com/locationtech/jts -//! [network grid]: https://proj.org/usage/network.html -//! [OGC-SFA]: https://www.ogc.org/standards/sfa -//! [proj crate file download]: https://docs.rs/proj/*/proj/#grid-file-download -//! [rhumb line]: https://en.wikipedia.org/wiki/Rhumb_line -//! [Serde]: https://serde.rs/ - #[cfg(feature = "use-serde")] #[macro_use] extern crate serde; @@ -245,11 +13,9 @@ pub use geometry::*; /// This module includes all the functions of geometric calculations pub mod algorithm; -mod geometry_cow; mod types; mod utils; use crate::kernels::{RobustKernel, SimpleKernel}; -pub(crate) use geometry_cow::GeometryCow; #[cfg(test)] #[macro_use] diff --git a/rust/geo-generic-alg/src/utils.rs b/rust/geo-generic-alg/src/utils.rs index 15720364..5cb60732 100644 --- a/rust/geo-generic-alg/src/utils.rs +++ b/rust/geo-generic-alg/src/utils.rs @@ -1,80 +1,5 @@ //! Internal utility functions, types, and data structures. -use geo_types::{Coord, CoordFloat, CoordNum}; -use num_traits::FromPrimitive; - -/// Partition a mutable slice in-place so that it contains all elements for -/// which `predicate(e)` is `true`, followed by all elements for which -/// `predicate(e)` is `false`. Returns sub-slices to all predicated and -/// non-predicated elements, respectively. -/// -/// https://github.com/llogiq/partition/blob/master/src/lib.rs -pub fn partition_slice(data: &mut [T], predicate: P) -> (&mut [T], &mut [T]) -where - P: Fn(&T) -> bool, -{ - let len = data.len(); - if len == 0 { - return (&mut [], &mut []); - } - let (mut l, mut r) = (0, len - 1); - loop { - while l < len && predicate(&data[l]) { - l += 1; - } - while r > 0 && !predicate(&data[r]) { - r -= 1; - } - if l >= r { - return data.split_at_mut(l); - } - data.swap(l, r); - } -} - -pub enum EitherIter { - A(I1), - B(I2), -} - -impl ExactSizeIterator for EitherIter -where - I1: ExactSizeIterator, - I2: ExactSizeIterator, -{ - #[inline] - fn len(&self) -> usize { - match self { - EitherIter::A(i1) => i1.len(), - EitherIter::B(i2) => i2.len(), - } - } -} - -impl Iterator for EitherIter -where - I1: Iterator, - I2: Iterator, -{ - type Item = T; - - #[inline] - fn next(&mut self) -> Option { - match self { - EitherIter::A(iter) => iter.next(), - EitherIter::B(iter) => iter.next(), - } - } - - #[inline] - fn size_hint(&self) -> (usize, Option) { - match self { - EitherIter::A(iter) => iter.size_hint(), - EitherIter::B(iter) => iter.size_hint(), - } - } -} - // The Rust standard library has `max` for `Ord`, but not for `PartialOrd` pub fn partial_max(a: T, b: T) -> T { if a > b { @@ -93,75 +18,6 @@ pub fn partial_min(a: T, b: T) -> T { } } -use std::cmp::Ordering; - -/// Compare two coordinates lexicographically: first by the -/// x coordinate, and break ties with the y coordinate. -/// Expects none of coordinates to be uncomparable (eg. nan) -#[inline] -pub fn lex_cmp(p: &Coord, q: &Coord) -> Ordering { - p.x.partial_cmp(&q.x) - .unwrap() - .then(p.y.partial_cmp(&q.y).unwrap()) -} - -/// Compute index of the least point in slice. Comparison is -/// done using [`lex_cmp`]. -/// -/// Should only be called on a non-empty slice with no `nan` -/// coordinates. -pub fn least_index(pts: &[Coord]) -> usize { - pts.iter() - .enumerate() - .min_by(|(_, p), (_, q)| lex_cmp(p, q)) - .unwrap() - .0 -} - -/// Compute index of the lexicographically least _and_ the -/// greatest coordinate in one pass. -/// -/// Should only be called on a non-empty slice with no `nan` -/// coordinates. -pub fn least_and_greatest_index(pts: &[Coord]) -> (usize, usize) { - assert_ne!(pts.len(), 0); - let (min, max) = pts - .iter() - .enumerate() - .fold((None, None), |(min, max), (idx, p)| { - ( - if let Some((midx, min)) = min { - if lex_cmp(p, min) == Ordering::Less { - Some((idx, p)) - } else { - Some((midx, min)) - } - } else { - Some((idx, p)) - }, - if let Some((midx, max)) = max { - if lex_cmp(p, max) == Ordering::Greater { - Some((idx, p)) - } else { - Some((midx, max)) - } - } else { - Some((idx, p)) - }, - ) - }); - (min.unwrap().0, max.unwrap().0) -} - -/// Normalize a longitude to coordinate to ensure it's within [-180,180] -pub fn normalize_longitude(coord: T) -> T { - let one_eighty = T::from(180.0f64).unwrap(); - let three_sixty = T::from(360.0f64).unwrap(); - let five_forty = T::from(540.0f64).unwrap(); - - ((coord + five_forty) % three_sixty) - one_eighty -} - #[cfg(test)] mod test { use super::{partial_max, partial_min}; diff --git a/rust/geo-traits-ext/src/coord.rs b/rust/geo-traits-ext/src/coord.rs index c35ba91b..8175ff2a 100644 --- a/rust/geo-traits-ext/src/coord.rs +++ b/rust/geo-traits-ext/src/coord.rs @@ -9,6 +9,7 @@ pub trait CoordTraitExt: CoordTrait + GeoTraitExtWithTypeTag where ::T: CoordNum, { + #[inline] fn geo_coord(&self) -> Coord { Coord { x: self.x(), diff --git a/rust/geo-traits-ext/src/geometry.rs b/rust/geo-traits-ext/src/geometry.rs index d077aefc..6bc52a5c 100644 --- a/rust/geo-traits-ext/src/geometry.rs +++ b/rust/geo-traits-ext/src/geometry.rs @@ -63,11 +63,13 @@ where Self: 'a; /// Returns true if this geometry is a GeometryCollection + #[inline] fn is_collection(&self) -> bool { matches!(self.as_type(), GeometryType::GeometryCollection(_)) } /// Returns the number of geometries inside this GeometryCollection + #[inline] fn num_geometries_ext(&self) -> usize { let GeometryType::GeometryCollection(gc) = self.as_type() else { panic!("Not a GeometryCollection"); diff --git a/rust/geo-traits-ext/src/geometry_collection.rs b/rust/geo-traits-ext/src/geometry_collection.rs index 41d231d3..d0559fca 100644 --- a/rust/geo-traits-ext/src/geometry_collection.rs +++ b/rust/geo-traits-ext/src/geometry_collection.rs @@ -34,14 +34,17 @@ macro_rules! forward_geometry_collection_trait_ext_funcs { where Self: '__gc_inner; + #[inline] fn geometry_ext(&self, i: usize) -> Option> { ::geometry(self, i) } + #[inline] unsafe fn geometry_unchecked_ext(&self, i: usize) -> Self::GeometryTypeExt<'_> { unsafe { ::geometry_unchecked(self, i) } } + #[inline] fn geometries_ext(&self) -> impl Iterator> { ::geometries(self) } diff --git a/rust/geo-traits-ext/src/line.rs b/rust/geo-traits-ext/src/line.rs index bf154564..77dc0af6 100644 --- a/rust/geo-traits-ext/src/line.rs +++ b/rust/geo-traits-ext/src/line.rs @@ -17,14 +17,17 @@ where fn end_ext(&self) -> Self::CoordTypeExt<'_>; fn coords_ext(&self) -> [Self::CoordTypeExt<'_>; 2]; + #[inline] fn start_coord(&self) -> geo_types::Coord<::T> { self.start_ext().geo_coord() } + #[inline] fn end_coord(&self) -> geo_types::Coord<::T> { self.end_ext().geo_coord() } + #[inline] fn geo_line(&self) -> Line<::T> { Line::new(self.start_coord(), self.end_coord()) } @@ -38,14 +41,17 @@ macro_rules! forward_line_trait_ext_funcs { where Self: '__l_inner; + #[inline] fn start_ext(&self) -> Self::CoordTypeExt<'_> { ::start(self) } + #[inline] fn end_ext(&self) -> Self::CoordTypeExt<'_> { ::end(self) } + #[inline] fn coords_ext(&self) -> [Self::CoordTypeExt<'_>; 2] { [self.start_ext(), self.end_ext()] } diff --git a/rust/geo-traits-ext/src/line_string.rs b/rust/geo-traits-ext/src/line_string.rs index 8cff5f88..756a8577 100644 --- a/rust/geo-traits-ext/src/line_string.rs +++ b/rust/geo-traits-ext/src/line_string.rs @@ -30,12 +30,14 @@ where /// # Safety /// The caller must ensure that `i` is a valid index less than the number of coordinates. /// Otherwise, this function may cause undefined behavior. + #[inline] unsafe fn geo_coord_unchecked(&self, i: usize) -> Coord { self.coord_unchecked_ext(i).geo_coord() } /// Return an iterator yielding one [`Line`] for each line segment /// in the [`LineString`][`geo_types::LineString`]. + #[inline] fn lines(&'_ self) -> impl ExactSizeIterator::T>> + '_ { let num_coords = self.num_coords(); (0..num_coords.saturating_sub(1)).map(|i| unsafe { @@ -50,6 +52,7 @@ where /// /// Note: This is like [`Self::lines`], but the sequence **and** the orientation of /// segments are reversed. + #[inline] fn rev_lines(&'_ self) -> impl ExactSizeIterator::T>> + '_ { let num_coords = self.num_coords(); (num_coords - 1..0).map(|i| unsafe { @@ -60,6 +63,7 @@ where } /// An iterator which yields the coordinates of a [`LineString`][`geo_types::LineString`] as [Triangle]s + #[inline] fn triangles( &'_ self, ) -> impl ExactSizeIterator::T>> + '_ { @@ -73,10 +77,12 @@ where } // Returns an iterator yielding the coordinates of this line string as `geo_types::Coord`s. + #[inline] fn coord_iter(&self) -> impl Iterator::T>> { self.coords_ext().map(|c| c.geo_coord()) } + #[inline] fn is_closed(&self) -> bool { match (self.coords_ext().next(), self.coords_ext().last()) { (Some(first), Some(last)) => first.geo_coord() == last.geo_coord(), @@ -94,14 +100,17 @@ macro_rules! forward_line_string_trait_ext_funcs { where Self: '__l_inner; + #[inline] fn coord_ext(&self, i: usize) -> Option> { ::coord(self, i) } + #[inline] unsafe fn coord_unchecked_ext(&self, i: usize) -> Self::CoordTypeExt<'_> { ::coord_unchecked(self, i) } + #[inline] fn coords_ext(&self) -> impl Iterator> { ::coords(self) } diff --git a/rust/geo-traits-ext/src/multi_line_string.rs b/rust/geo-traits-ext/src/multi_line_string.rs index 88497585..8918fd99 100644 --- a/rust/geo-traits-ext/src/multi_line_string.rs +++ b/rust/geo-traits-ext/src/multi_line_string.rs @@ -26,6 +26,7 @@ where fn line_strings_ext(&self) -> impl Iterator>; /// True if the MultiLineString is empty or if all of its LineStrings are closed + #[inline] fn is_closed(&self) -> bool { // Note: Unlike JTS et al, we consider an empty MultiLineString as closed. self.line_strings_ext().all(|ls| ls.is_closed()) @@ -40,14 +41,17 @@ macro_rules! forward_multi_line_string_trait_ext_funcs { where Self: '__l_inner; + #[inline] fn line_string_ext(&self, i: usize) -> Option> { ::line_string(self, i) } + #[inline] unsafe fn line_string_unchecked_ext(&self, i: usize) -> Self::LineStringTypeExt<'_> { ::line_string_unchecked(self, i) } + #[inline] fn line_strings_ext(&self) -> impl Iterator> { ::line_strings(self) } diff --git a/rust/geo-traits-ext/src/multi_point.rs b/rust/geo-traits-ext/src/multi_point.rs index 33f815b4..e7d24099 100644 --- a/rust/geo-traits-ext/src/multi_point.rs +++ b/rust/geo-traits-ext/src/multi_point.rs @@ -28,6 +28,7 @@ where /// # Safety /// The caller must ensure that `i` is a valid index less than the number of points. /// Otherwise, this function may cause undefined behavior. + #[inline] unsafe fn geo_coord_unchecked(&self, i: usize) -> Option::T>> { let point = unsafe { self.point_unchecked_ext(i) }; point.coord_ext().map(|c| c.geo_coord()) @@ -35,6 +36,7 @@ where fn points_ext(&self) -> impl DoubleEndedIterator>; + #[inline] fn coord_iter(&self) -> impl DoubleEndedIterator::T>> { self.points_ext().flat_map(|p| p.geo_coord()) } @@ -48,14 +50,17 @@ macro_rules! forward_multi_point_trait_ext_funcs { where Self: '__l_inner; + #[inline] fn point_ext(&self, i: usize) -> Option> { ::point(self, i) } + #[inline] unsafe fn point_unchecked_ext(&self, i: usize) -> Self::PointTypeExt<'_> { ::point_unchecked(self, i) } + #[inline] fn points_ext(&self) -> impl DoubleEndedIterator> { ::points(self) } diff --git a/rust/geo-traits-ext/src/multi_polygon.rs b/rust/geo-traits-ext/src/multi_polygon.rs index 8d4b524c..3a1cfd71 100644 --- a/rust/geo-traits-ext/src/multi_polygon.rs +++ b/rust/geo-traits-ext/src/multi_polygon.rs @@ -34,14 +34,17 @@ macro_rules! forward_multi_polygon_trait_ext_funcs { where Self: '__l_inner; + #[inline] fn polygon_ext(&self, i: usize) -> Option> { ::polygon(self, i) } + #[inline] unsafe fn polygon_unchecked_ext(&self, i: usize) -> Self::PolygonTypeExt<'_> { ::polygon_unchecked(self, i) } + #[inline] fn polygons_ext(&self) -> impl Iterator> { ::polygons(self) } diff --git a/rust/geo-traits-ext/src/point.rs b/rust/geo-traits-ext/src/point.rs index a9e663ba..bafcf164 100644 --- a/rust/geo-traits-ext/src/point.rs +++ b/rust/geo-traits-ext/src/point.rs @@ -15,11 +15,13 @@ where fn coord_ext(&self) -> Option>; + #[inline] fn geo_point(&self) -> Option::T>> { self.coord_ext() .map(|coord| Point::new(coord.x(), coord.y())) } + #[inline] fn geo_coord(&self) -> Option::T>> { self.coord_ext().map(|coord| coord.geo_coord()) } @@ -33,6 +35,7 @@ macro_rules! forward_point_trait_ext_funcs { where Self: '__l_inner; + #[inline] fn coord_ext(&self) -> Option> { ::coord(self) } diff --git a/rust/geo-traits-ext/src/polygon.rs b/rust/geo-traits-ext/src/polygon.rs index 7366834b..335a2574 100644 --- a/rust/geo-traits-ext/src/polygon.rs +++ b/rust/geo-traits-ext/src/polygon.rs @@ -35,20 +35,24 @@ macro_rules! forward_polygon_trait_ext_funcs { where Self: '__l_inner; + #[inline] fn exterior_ext(&self) -> Option> { ::exterior(self) } + #[inline] fn interiors_ext( &self, ) -> impl DoubleEndedIterator + ExactSizeIterator> { ::interiors(self) } + #[inline] fn interior_ext(&self, i: usize) -> Option> { ::interior(self, i) } + #[inline] unsafe fn interior_unchecked_ext(&self, i: usize) -> Self::RingTypeExt<'_> { ::interior_unchecked(self, i) } diff --git a/rust/geo-traits-ext/src/rect.rs b/rust/geo-traits-ext/src/rect.rs index 97e1ad07..88e1781d 100644 --- a/rust/geo-traits-ext/src/rect.rs +++ b/rust/geo-traits-ext/src/rect.rs @@ -19,22 +19,27 @@ where fn min_ext(&self) -> Self::CoordTypeExt<'_>; fn max_ext(&self) -> Self::CoordTypeExt<'_>; + #[inline] fn min_coord(&self) -> Coord<::T> { self.min_ext().geo_coord() } + #[inline] fn max_coord(&self) -> Coord<::T> { self.max_ext().geo_coord() } + #[inline] fn geo_rect(&self) -> Rect<::T> { Rect::new(self.min_coord(), self.max_coord()) } + #[inline] fn width(&self) -> ::T { self.max().x() - self.min().x() } + #[inline] fn height(&self) -> ::T { self.max().y() - self.min().y() } @@ -130,18 +135,21 @@ where ]) } + #[inline] fn has_valid_bounds(&self) -> bool { let min_coord = self.min_coord(); let max_coord = self.max_coord(); min_coord.x <= max_coord.x && min_coord.y <= max_coord.y } + #[inline] fn assert_valid_bounds(&self) { if !self.has_valid_bounds() { panic!("{}", RECT_INVALID_BOUNDS_ERROR); } } + #[inline] fn contains_point(&self, coord: &Coord<::T>) -> bool where ::T: PartialOrd, @@ -157,6 +165,7 @@ where (min_x <= coord.x && coord.x <= max_x) && (min_y <= coord.y && coord.y <= max_y) } + #[inline] fn contains_rect(&self, rect: &Self) -> bool where ::T: PartialOrd, @@ -180,6 +189,7 @@ where && (self_min_y <= other_min_y && other_max_y <= self_max_y) } + #[inline] fn center(&self) -> Coord<::T> where ::T: CoordFloat, diff --git a/rust/geo-traits-ext/src/triangle.rs b/rust/geo-traits-ext/src/triangle.rs index c156bcef..76478775 100644 --- a/rust/geo-traits-ext/src/triangle.rs +++ b/rust/geo-traits-ext/src/triangle.rs @@ -18,22 +18,27 @@ where fn third_ext(&self) -> Self::CoordTypeExt<'_>; fn coords_ext(&self) -> [Self::CoordTypeExt<'_>; 3]; + #[inline] fn first_coord(&self) -> Coord<::T> { self.first_ext().geo_coord() } + #[inline] fn second_coord(&self) -> Coord<::T> { self.second_ext().geo_coord() } + #[inline] fn third_coord(&self) -> Coord<::T> { self.third_ext().geo_coord() } + #[inline] fn to_array(&self) -> [Coord<::T>; 3] { [self.first_coord(), self.second_coord(), self.third_coord()] } + #[inline] fn to_lines(&self) -> [Line<::T>; 3] { [ Line::new(self.first_coord(), self.second_coord()), @@ -42,6 +47,7 @@ where ] } + #[inline] fn to_polygon(&self) -> Polygon<::T> { polygon![ self.first_coord(), @@ -51,6 +57,7 @@ where ] } + #[inline] fn coord_iter(&self) -> impl Iterator::T>> { [self.first_coord(), self.second_coord(), self.third_coord()].into_iter() } @@ -64,18 +71,22 @@ macro_rules! forward_triangle_trait_ext_funcs { where Self: '__l_inner; + #[inline] fn first_ext(&self) -> Self::CoordTypeExt<'_> { ::first(self) } + #[inline] fn second_ext(&self) -> Self::CoordTypeExt<'_> { ::second(self) } + #[inline] fn third_ext(&self) -> Self::CoordTypeExt<'_> { ::third(self) } + #[inline] fn coords_ext(&self) -> [Self::CoordTypeExt<'_>; 3] { [self.first_ext(), self.second_ext(), self.third_ext()] } From d1b0a5b88de65f0c253d575fa9832c010869f5b1 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Fri, 26 Sep 2025 19:29:07 +0800 Subject: [PATCH 03/17] Fix doc tests --- rust/geo-generic-alg/README.md | 21 +------- .../src/algorithm/affine_ops.rs | 14 ++--- rust/geo-generic-alg/src/algorithm/area.rs | 4 +- .../src/algorithm/bounding_rect.rs | 4 +- .../geo-generic-alg/src/algorithm/centroid.rs | 52 +++++++++---------- rust/geo-generic-alg/src/algorithm/convert.rs | 4 +- .../src/algorithm/coordinate_position.rs | 6 +-- .../src/algorithm/coords_iter.rs | 10 ++-- .../src/algorithm/dimensions.rs | 10 ++-- .../src/algorithm/euclidean_length.rs | 4 +- .../geo-generic-alg/src/algorithm/extremes.rs | 4 +- .../src/algorithm/intersects/mod.rs | 4 +- .../metric_spaces/euclidean/distance.rs | 2 +- .../metric_spaces/euclidean/mod.rs | 4 +- .../metric_spaces/euclidean/utils.rs | 2 +- .../src/algorithm/map_coords.rs | 16 +++--- rust/geo-generic-alg/src/algorithm/mod.rs | 4 +- rust/geo-generic-alg/src/algorithm/rotate.rs | 8 +-- rust/geo-generic-alg/src/algorithm/scale.rs | 12 ++--- .../geo-generic-alg/src/algorithm/simplify.rs | 8 +-- rust/geo-generic-alg/src/algorithm/skew.rs | 12 ++--- .../src/algorithm/translate.rs | 4 +- rust/geo-generic-alg/src/lib.rs | 23 -------- rust/geo-test-fixtures/README.md | 2 + rust/geo-traits-ext/README.md | 17 ++++-- 25 files changed, 111 insertions(+), 140 deletions(-) create mode 100644 rust/geo-test-fixtures/README.md diff --git a/rust/geo-generic-alg/README.md b/rust/geo-generic-alg/README.md index b17b6526..483f1f1d 100644 --- a/rust/geo-generic-alg/README.md +++ b/rust/geo-generic-alg/README.md @@ -1,22 +1,5 @@ # Generic Algorithms for Geo-Traits -This crate provides the same algorithms as the `geo` crate, but applies traits -defined in `geo-traits` instead of concrete geometry types defined in +This crate contains algorithms ported from the [`geo` crate](https://github.com/georust/geo), +but works with traits defined in `geo-traits-ext` instead of concrete geometry types defined in `geo-types`. - -We are still in the early stage of migrating the algorithms, and the crate is -not ready for production use yet. - -## Status - -- [ ] Area calculation -- [ ] Centroid calculation -- [ ] Convex hull calculation -- [ ] Relationships (contains, within, etc) -- [ ] Simplification -- [ ] Buffer -- [ ] Distance -- [ ] Intersection -- [ ] Union -- [ ] Difference -- [ ] Symmetric difference diff --git a/rust/geo-generic-alg/src/algorithm/affine_ops.rs b/rust/geo-generic-alg/src/algorithm/affine_ops.rs index 17deb5dd..31b31dcd 100644 --- a/rust/geo-generic-alg/src/algorithm/affine_ops.rs +++ b/rust/geo-generic-alg/src/algorithm/affine_ops.rs @@ -18,8 +18,8 @@ use std::{fmt, ops::Mul, ops::Neg}; /// # Examples /// ## Build up transforms by beginning with a constructor, then chaining mutation operations /// ``` -/// use geo::{AffineOps, AffineTransform}; -/// use geo::{point, line_string, BoundingRect}; +/// use geo_generic_alg::{AffineOps, AffineTransform}; +/// use geo_generic_alg::{point, line_string, BoundingRect}; /// use approx::assert_relative_eq; /// /// let line_string = line_string![(x: 0.0, y: 0.0),(x: 1.0, y: 1.0)]; @@ -108,8 +108,8 @@ impl> AffineOpsMut for M { /// # Examples /// ## Build up transforms by beginning with a constructor, then chaining mutation operations /// ``` -/// use geo::{AffineOps, AffineTransform}; -/// use geo::{point, line_string, BoundingRect}; +/// use geo_generic_alg::{AffineOps, AffineTransform}; +/// use geo_generic_alg::{point, line_string, BoundingRect}; /// use approx::assert_relative_eq; /// /// let line_string = line_string![(x: 0.0, y: 0.0),(x: 1.0, y: 1.0)]; @@ -126,7 +126,7 @@ impl> AffineOpsMut for M { /// /// ## Create affine transform manually, and access elements using getter methods /// ``` -/// use geo::AffineTransform; +/// use geo_generic_alg::AffineTransform; /// /// let transform = AffineTransform::new(10.0, 0.0, 400_000.0, 0.0, -10.0, 500_000.0); /// @@ -198,7 +198,7 @@ impl AffineTransform { /// /// This is a **cumulative** operation; the new transform is *added* to the existing transform. /// ``` - /// use geo::AffineTransform; + /// use geo_generic_alg::AffineTransform; /// let mut transform = AffineTransform::identity(); /// /// // create two transforms that cancel each other @@ -242,7 +242,7 @@ impl AffineTransform { /// that is, whether it's application will be a a no-op. /// /// ``` - /// use geo::AffineTransform; + /// use geo_generic_alg::AffineTransform; /// let mut transform = AffineTransform::identity(); /// assert!(transform.is_identity()); /// diff --git a/rust/geo-generic-alg/src/algorithm/area.rs b/rust/geo-generic-alg/src/algorithm/area.rs index f16a4bb5..d0e75f27 100644 --- a/rust/geo-generic-alg/src/algorithm/area.rs +++ b/rust/geo-generic-alg/src/algorithm/area.rs @@ -48,8 +48,8 @@ pub(crate) fn twice_signed_ring_area> /// # Examples /// /// ``` -/// use geo::polygon; -/// use geo::Area; +/// use geo_generic_alg::polygon; +/// use geo_generic_alg::Area; /// /// let mut polygon = polygon![ /// (x: 0., y: 0.), diff --git a/rust/geo-generic-alg/src/algorithm/bounding_rect.rs b/rust/geo-generic-alg/src/algorithm/bounding_rect.rs index 149ae894..0ae3493f 100644 --- a/rust/geo-generic-alg/src/algorithm/bounding_rect.rs +++ b/rust/geo-generic-alg/src/algorithm/bounding_rect.rs @@ -13,8 +13,8 @@ pub trait BoundingRect { /// # Examples /// /// ``` - /// use geo::BoundingRect; - /// use geo::line_string; + /// use geo_generic_alg::BoundingRect; + /// use geo_generic_alg::line_string; /// /// let line_string = line_string![ /// (x: 40.02f64, y: 116.34), diff --git a/rust/geo-generic-alg/src/algorithm/centroid.rs b/rust/geo-generic-alg/src/algorithm/centroid.rs index e931d093..df63b7c4 100644 --- a/rust/geo-generic-alg/src/algorithm/centroid.rs +++ b/rust/geo-generic-alg/src/algorithm/centroid.rs @@ -20,8 +20,8 @@ use crate::GeoFloat; /// # Examples /// /// ``` -/// use geo::Centroid; -/// use geo::{point, polygon}; +/// use geo_generic_alg::Centroid; +/// use geo_generic_alg::{point, polygon}; /// /// // rhombus shaped polygon /// let polygon = polygon![ @@ -45,8 +45,8 @@ pub trait Centroid { /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::{line_string, point}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{line_string, point}; /// /// let line_string = line_string![ /// (x: 40.02f64, y: 116.34), @@ -90,8 +90,8 @@ where /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::{Line, point}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{Line, point}; /// /// let line = Line::new( /// point!(x: 1.0f64, y: 3.0), @@ -125,8 +125,8 @@ where /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::{line_string, point}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{line_string, point}; /// /// let line_string = line_string![ /// (x: 1.0f32, y: 1.0), @@ -160,8 +160,8 @@ where /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::{MultiLineString, line_string, point}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{MultiLineString, line_string, point}; /// /// let multi_line_string = MultiLineString::new(vec![ /// // centroid: (2.5, 2.5) @@ -195,8 +195,8 @@ where /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::{polygon, point}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{polygon, point}; /// /// let polygon = polygon![ /// (x: 0.0f32, y: 0.0), @@ -230,8 +230,8 @@ where /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::{MultiPolygon, polygon, point}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{MultiPolygon, polygon, point}; /// /// let multi_polygon = MultiPolygon::new(vec![ /// // centroid (1.0, 0.5) @@ -275,8 +275,8 @@ where /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::{Rect, point}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{Rect, point}; /// /// let rect = Rect::new( /// point!(x: 0.0f32, y: 0.0), @@ -305,8 +305,8 @@ where /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::{Triangle, coord, point}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{Triangle, coord, point}; /// /// let triangle = Triangle::new( /// coord!(x: 0.0f32, y: -1.0), @@ -340,8 +340,8 @@ where /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::point; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::point; /// /// let point = point!(x: 1.0f32, y: 2.0); /// @@ -368,8 +368,8 @@ where /// # Example /// /// ``` - /// use geo::Centroid; - /// use geo::{MultiPoint, Point}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{MultiPoint, Point}; /// /// let empty: Vec = Vec::new(); /// let empty_multi_points: MultiPoint<_> = empty.into(); @@ -397,8 +397,8 @@ where /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::{Geometry, Rect, point}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{Geometry, Rect, point}; /// /// let rect = Rect::new( /// point!(x: 0.0f32, y: 0.0), @@ -456,8 +456,8 @@ where /// # Examples /// /// ``` - /// use geo::Centroid; - /// use geo::{Geometry, GeometryCollection, Rect, Triangle, point, coord}; + /// use geo_generic_alg::Centroid; + /// use geo_generic_alg::{Geometry, GeometryCollection, Rect, Triangle, point, coord}; /// /// let rect_geometry = Geometry::from(Rect::new( /// point!(x: 0.0f32, y: 0.0), diff --git a/rust/geo-generic-alg/src/algorithm/convert.rs b/rust/geo-generic-alg/src/algorithm/convert.rs index 88ab151b..130d7408 100644 --- a/rust/geo-generic-alg/src/algorithm/convert.rs +++ b/rust/geo-generic-alg/src/algorithm/convert.rs @@ -5,7 +5,7 @@ use crate::{Coord, CoordNum, MapCoords}; /// # Examples /// /// ```rust -/// use geo::{Convert, LineString, line_string}; +/// use geo_generic_alg::{Convert, LineString, line_string}; /// /// let line_string_32: LineString = line_string![ /// (x: 5., y: 10.), @@ -41,7 +41,7 @@ where /// # Examples /// /// ```rust -/// use geo::{TryConvert, LineString, line_string}; +/// use geo_generic_alg::{TryConvert, LineString, line_string}; /// /// let line_string_64: LineString = line_string![ /// (x: 5, y: 10), diff --git a/rust/geo-generic-alg/src/algorithm/coordinate_position.rs b/rust/geo-generic-alg/src/algorithm/coordinate_position.rs index 89e525e7..b15e6f60 100644 --- a/rust/geo-generic-alg/src/algorithm/coordinate_position.rs +++ b/rust/geo-generic-alg/src/algorithm/coordinate_position.rs @@ -4,8 +4,8 @@ use std::cmp::Ordering; use crate::geometry::*; use crate::intersects::{point_in_rect, value_in_between}; use crate::kernels::*; -use crate::{BoundingRect, HasDimensions, Intersects}; use crate::GeoNum; +use crate::{BoundingRect, HasDimensions, Intersects}; use geo_traits_ext::*; /// The position of a `Coord` relative to a `Geometry` @@ -21,8 +21,8 @@ pub enum CoordPos { /// # Examples /// /// ```rust -/// use geo::{polygon, coord}; -/// use geo::coordinate_position::{CoordinatePosition, CoordPos}; +/// use geo_generic_alg::{polygon, coord}; +/// use geo_generic_alg::coordinate_position::{CoordinatePosition, CoordPos}; /// /// let square_poly = polygon![(x: 0.0, y: 0.0), (x: 2.0, y: 0.0), (x: 2.0, y: 2.0), (x: 0.0, y: 2.0), (x: 0.0, y: 0.0)]; /// diff --git a/rust/geo-generic-alg/src/algorithm/coords_iter.rs b/rust/geo-generic-alg/src/algorithm/coords_iter.rs index 97b5d0df..1dce8af1 100644 --- a/rust/geo-generic-alg/src/algorithm/coords_iter.rs +++ b/rust/geo-generic-alg/src/algorithm/coords_iter.rs @@ -27,7 +27,7 @@ pub trait CoordsIter { /// # Examples /// /// ``` - /// use geo::coords_iter::CoordsIter; + /// use geo_generic_alg::coords_iter::CoordsIter; /// /// let multi_point = geo::MultiPoint::new(vec![ /// geo::point!(x: -10., y: 0.), @@ -48,8 +48,8 @@ pub trait CoordsIter { /// # Examples /// /// ``` - /// use geo::coords_iter::CoordsIter; - /// use geo::line_string; + /// use geo_generic_alg::coords_iter::CoordsIter; + /// use geo_generic_alg::line_string; /// /// let ls = line_string![ /// (x: 1., y: 2.), @@ -66,8 +66,8 @@ pub trait CoordsIter { /// # Examples /// /// ``` - /// use geo::coords_iter::CoordsIter; - /// use geo::polygon; + /// use geo_generic_alg::coords_iter::CoordsIter; + /// use geo_generic_alg::polygon; /// /// // a diamond shape /// let polygon = polygon![ diff --git a/rust/geo-generic-alg/src/algorithm/dimensions.rs b/rust/geo-generic-alg/src/algorithm/dimensions.rs index 3bcadce2..065e9fab 100644 --- a/rust/geo-generic-alg/src/algorithm/dimensions.rs +++ b/rust/geo-generic-alg/src/algorithm/dimensions.rs @@ -11,7 +11,7 @@ use crate::{CoordNum, GeoNum}; /// /// ``` /// use geo_types::{Point, Rect, line_string}; -/// use geo::dimensions::{HasDimensions, Dimensions}; +/// use geo_generic_alg::dimensions::{HasDimensions, Dimensions}; /// /// let point = Point::new(0.0, 5.0); /// let line_string = line_string![(x: 0.0, y: 0.0), (x: 5.0, y: 5.0), (x: 0.0, y: 5.0)]; @@ -44,7 +44,7 @@ pub trait HasDimensions { /// never be considered empty. /// ``` /// use geo_types::{Point, coord, LineString}; - /// use geo::HasDimensions; + /// use geo_generic_alg::HasDimensions; /// /// let line_string = LineString::new(vec![ /// coord! { x: 0., y: 0. }, @@ -69,7 +69,7 @@ pub trait HasDimensions { /// /// ``` /// use geo_types::{GeometryCollection, Rect, Point}; - /// use geo::dimensions::{Dimensions, HasDimensions}; + /// use geo_generic_alg::dimensions::{Dimensions, HasDimensions}; /// /// // normal rectangle /// let rect = Rect::new((0.0, 0.0), (10.0, 10.0)); @@ -103,7 +103,7 @@ pub trait HasDimensions { /// /// ``` /// use geo_types::{GeometryCollection, Rect, Point}; - /// use geo::dimensions::{Dimensions, HasDimensions}; + /// use geo_generic_alg::dimensions::{Dimensions, HasDimensions}; /// /// // a point has no boundary /// let point = Point::new(10.0, 10.0); @@ -307,7 +307,7 @@ where /// ``` /// use geo_types::line_string; - /// use geo::dimensions::{HasDimensions, Dimensions}; + /// use geo_generic_alg::dimensions::{HasDimensions, Dimensions}; /// /// let ls = line_string![(x: 0., y: 0.), (x: 0., y: 1.), (x: 1., y: 1.)]; /// assert_eq!(Dimensions::ZeroDimensional, ls.boundary_dimensions()); diff --git a/rust/geo-generic-alg/src/algorithm/euclidean_length.rs b/rust/geo-generic-alg/src/algorithm/euclidean_length.rs index 4c832327..52c8e6a7 100644 --- a/rust/geo-generic-alg/src/algorithm/euclidean_length.rs +++ b/rust/geo-generic-alg/src/algorithm/euclidean_length.rs @@ -15,8 +15,8 @@ pub trait EuclideanLength { /// # Examples /// /// ``` - /// use geo::EuclideanLength; - /// use geo::line_string; + /// use geo_generic_alg::EuclideanLength; + /// use geo_generic_alg::line_string; /// /// let line_string = line_string![ /// (x: 40.02f64, y: 116.34), diff --git a/rust/geo-generic-alg/src/algorithm/extremes.rs b/rust/geo-generic-alg/src/algorithm/extremes.rs index 893be016..a4438512 100644 --- a/rust/geo-generic-alg/src/algorithm/extremes.rs +++ b/rust/geo-generic-alg/src/algorithm/extremes.rs @@ -6,8 +6,8 @@ use crate::{Coord, CoordNum}; /// # Examples /// /// ``` -/// use geo::extremes::Extremes; -/// use geo::polygon; +/// use geo_generic_alg::extremes::Extremes; +/// use geo_generic_alg::polygon; /// /// // a diamond shape /// let polygon = polygon![ diff --git a/rust/geo-generic-alg/src/algorithm/intersects/mod.rs b/rust/geo-generic-alg/src/algorithm/intersects/mod.rs index bae78135..f33147b5 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/mod.rs +++ b/rust/geo-generic-alg/src/algorithm/intersects/mod.rs @@ -17,8 +17,8 @@ use crate::*; /// # Examples /// /// ``` -/// use geo::Intersects; -/// use geo::line_string; +/// use geo_generic_alg::Intersects; +/// use geo_generic_alg::line_string; /// /// let line_string_a = line_string![ /// (x: 3., y: 2.), diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs index 8d390032..816d99e7 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs @@ -1064,8 +1064,8 @@ where #[cfg(test)] mod tests { use super::*; - use geo::orient::{Direction, Orient}; use crate::{Line, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon}; + use geo::orient::{Direction, Orient}; use geo_types::{coord, polygon, private_utils::line_segment_distance}; mod distance_cross_validation_tests { diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs index 7b27a16d..65fa0e6f 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs @@ -49,8 +49,8 @@ impl Distance, Point> for Euclidean { /// /// # Example /// ``` - /// use geo::{Euclidean, Distance}; - /// use geo::Point; + /// use geo_generic_alg::{Euclidean, Distance}; + /// use geo_generic_alg::Point; /// // web mercator /// let new_york_city = Point::new(-8238310.24, 4942194.78); /// // web mercator diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs index 788bad11..6ec25393 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs @@ -716,9 +716,9 @@ symmetric_distance_generic_impl!( #[cfg(test)] mod tests { use super::*; - use geo::algorithm::line_measures::{Distance, Euclidean}; use crate::{coord, Line, LineString, Point, Polygon, Triangle}; use approx::assert_relative_eq; + use geo::algorithm::line_measures::{Distance, Euclidean}; // ┌────────────────────────────────────────────────────────────┐ // │ Tests for point_distance_generic function │ diff --git a/rust/geo-generic-alg/src/algorithm/map_coords.rs b/rust/geo-generic-alg/src/algorithm/map_coords.rs index a4d05fc9..3cb7feff 100644 --- a/rust/geo-generic-alg/src/algorithm/map_coords.rs +++ b/rust/geo-generic-alg/src/algorithm/map_coords.rs @@ -14,8 +14,8 @@ pub trait MapCoords { /// # Examples /// /// ``` - /// use geo::MapCoords; - /// use geo::{Coord, Point}; + /// use geo_generic_alg::MapCoords; + /// use geo_generic_alg::{Coord, Point}; /// use approx::assert_relative_eq; /// /// let p1 = Point::new(10., 20.); @@ -57,8 +57,8 @@ pub trait MapCoords { /// /// ``` /// use approx::assert_relative_eq; - /// use geo::MapCoords; - /// use geo::{Coord, Point}; + /// use geo_generic_alg::MapCoords; + /// use geo_generic_alg::{Coord, Point}; /// /// let p1 = Point::new(10., 20.); /// let p2 = p1 @@ -83,8 +83,8 @@ pub trait MapCoordsInPlace { /// # Examples /// /// ``` - /// use geo::MapCoordsInPlace; - /// use geo::{Coord, Point}; + /// use geo_generic_alg::MapCoordsInPlace; + /// use geo_generic_alg::{Coord, Point}; /// use approx::assert_relative_eq; /// /// let mut p = Point::new(10., 20.); @@ -104,8 +104,8 @@ pub trait MapCoordsInPlace { /// # Examples /// /// ``` - /// use geo::MapCoordsInPlace; - /// use geo::Coord; + /// use geo_generic_alg::MapCoordsInPlace; + /// use geo_generic_alg::Coord; /// /// let mut p1 = geo::point!{x: 10u32, y: 20u32}; /// diff --git a/rust/geo-generic-alg/src/algorithm/mod.rs b/rust/geo-generic-alg/src/algorithm/mod.rs index 6cd5d4ef..b4fbece4 100644 --- a/rust/geo-generic-alg/src/algorithm/mod.rs +++ b/rust/geo-generic-alg/src/algorithm/mod.rs @@ -51,9 +51,7 @@ pub use intersects::Intersects; pub mod line_measures; pub use line_measures::metric_spaces::Euclidean; -pub use line_measures::{ - Distance, DistanceExt, LengthMeasurableExt, -}; +pub use line_measures::{Distance, DistanceExt, LengthMeasurableExt}; /// Apply a function to all `Coord`s of a `Geometry`. pub mod map_coords; diff --git a/rust/geo-generic-alg/src/algorithm/rotate.rs b/rust/geo-generic-alg/src/algorithm/rotate.rs index a80af126..4a624e30 100644 --- a/rust/geo-generic-alg/src/algorithm/rotate.rs +++ b/rust/geo-generic-alg/src/algorithm/rotate.rs @@ -24,8 +24,8 @@ pub trait Rotate { /// # Examples /// /// ``` - /// use geo::Rotate; - /// use geo::line_string; + /// use geo_generic_alg::Rotate; + /// use geo_generic_alg::line_string; /// use approx::assert_relative_eq; /// /// let line_string = line_string![ @@ -62,8 +62,8 @@ pub trait Rotate { /// # Examples /// /// ``` - /// use geo::Rotate; - /// use geo::{line_string, point}; + /// use geo_generic_alg::Rotate; + /// use geo_generic_alg::{line_string, point}; /// /// let ls = line_string![ /// (x: 0.0, y: 0.0), diff --git a/rust/geo-generic-alg/src/algorithm/scale.rs b/rust/geo-generic-alg/src/algorithm/scale.rs index a5e25f85..04ee494e 100644 --- a/rust/geo-generic-alg/src/algorithm/scale.rs +++ b/rust/geo-generic-alg/src/algorithm/scale.rs @@ -18,8 +18,8 @@ pub trait Scale { /// # Examples /// /// ``` - /// use geo::Scale; - /// use geo::{LineString, line_string}; + /// use geo_generic_alg::Scale; + /// use geo_generic_alg::{LineString, line_string}; /// /// let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)]; /// @@ -39,8 +39,8 @@ pub trait Scale { /// # Examples /// /// ``` - /// use geo::Scale; - /// use geo::{LineString, line_string}; + /// use geo_generic_alg::Scale; + /// use geo_generic_alg::{LineString, line_string}; /// /// let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)]; /// @@ -63,8 +63,8 @@ pub trait Scale { /// # Examples /// /// ``` - /// use geo::Scale; - /// use geo::{LineString, line_string, Coord}; + /// use geo_generic_alg::Scale; + /// use geo_generic_alg::{LineString, line_string, Coord}; /// /// let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)]; /// diff --git a/rust/geo-generic-alg/src/algorithm/simplify.rs b/rust/geo-generic-alg/src/algorithm/simplify.rs index ce09d825..97e4a53e 100644 --- a/rust/geo-generic-alg/src/algorithm/simplify.rs +++ b/rust/geo-generic-alg/src/algorithm/simplify.rs @@ -172,8 +172,8 @@ pub trait Simplify { /// # Examples /// /// ``` - /// use geo::Simplify; - /// use geo::line_string; + /// use geo_generic_alg::Simplify; + /// use geo_generic_alg::line_string; /// /// let line_string = line_string![ /// (x: 0.0, y: 0.0), @@ -217,8 +217,8 @@ pub trait SimplifyIdx { /// # Examples /// /// ``` - /// use geo::SimplifyIdx; - /// use geo::line_string; + /// use geo_generic_alg::SimplifyIdx; + /// use geo_generic_alg::line_string; /// /// let line_string = line_string![ /// (x: 0.0, y: 0.0), diff --git a/rust/geo-generic-alg/src/algorithm/skew.rs b/rust/geo-generic-alg/src/algorithm/skew.rs index d42fa9b6..a94b1542 100644 --- a/rust/geo-generic-alg/src/algorithm/skew.rs +++ b/rust/geo-generic-alg/src/algorithm/skew.rs @@ -20,8 +20,8 @@ pub trait Skew { /// # Examples /// /// ``` - /// use geo::Skew; - /// use geo::{Polygon, polygon}; + /// use geo_generic_alg::Skew; + /// use geo_generic_alg::{Polygon, polygon}; /// /// let square: Polygon = polygon![ /// (x: 0., y: 0.), @@ -48,8 +48,8 @@ pub trait Skew { /// # Examples /// /// ``` - /// use geo::Skew; - /// use geo::{Polygon, polygon}; + /// use geo_generic_alg::Skew; + /// use geo_generic_alg::{Polygon, polygon}; /// /// let square: Polygon = polygon![ /// (x: 0., y: 0.), @@ -81,8 +81,8 @@ pub trait Skew { /// # Examples /// /// ``` - /// use geo::Skew; - /// use geo::{Polygon, polygon, point}; + /// use geo_generic_alg::Skew; + /// use geo_generic_alg::{Polygon, polygon, point}; /// /// let square: Polygon = polygon![ /// (x: 0., y: 0.), diff --git a/rust/geo-generic-alg/src/algorithm/translate.rs b/rust/geo-generic-alg/src/algorithm/translate.rs index 13d93144..6580f46c 100644 --- a/rust/geo-generic-alg/src/algorithm/translate.rs +++ b/rust/geo-generic-alg/src/algorithm/translate.rs @@ -17,8 +17,8 @@ pub trait Translate { /// # Examples /// /// ``` - /// use geo::Translate; - /// use geo::line_string; + /// use geo_generic_alg::Translate; + /// use geo_generic_alg::line_string; /// /// let ls = line_string![ /// (x: 0.0, y: 0.0), diff --git a/rust/geo-generic-alg/src/lib.rs b/rust/geo-generic-alg/src/lib.rs index 2a6ab039..e25a6ef7 100644 --- a/rust/geo-generic-alg/src/lib.rs +++ b/rust/geo-generic-alg/src/lib.rs @@ -38,29 +38,6 @@ pub mod prelude { /// generic over all the numeric types supported by geo, you probably want to constrain /// your function input to `GeoFloat`. For methods which work for integers, and not just floating /// point, see [`GeoNum`]. -/// -/// # Examples -/// -/// ``` -/// use geo::{GeoFloat, MultiPolygon, Polygon, Point}; -/// -/// // An admittedly silly method implementation, but the signature shows how to use the GeoFloat trait -/// fn farthest_from<'a, T: GeoFloat>(point: &Point, polygons: &'a MultiPolygon) -> Option<&'a Polygon> { -/// polygons.iter().fold(None, |accum, next| { -/// match accum { -/// None => Some(next), -/// Some(farthest) => { -/// use geo::{euclidean_distance::EuclideanDistance}; -/// if next.euclidean_distance(point) > farthest.euclidean_distance(point) { -/// Some(next) -/// } else { -/// Some(farthest) -/// } -/// } -/// } -/// }) -/// } -/// ``` pub trait GeoFloat: GeoNum + num_traits::Float + num_traits::Signed + num_traits::Bounded + float_next_after::NextAfter { diff --git a/rust/geo-test-fixtures/README.md b/rust/geo-test-fixtures/README.md new file mode 100644 index 00000000..a105f66c --- /dev/null +++ b/rust/geo-test-fixtures/README.md @@ -0,0 +1,2 @@ +This module was taken from the `geo` crate for testing the correctness of generic algorithms in `geo-generic-alg` crate. +Please refer to https://github.com/georust/geo/tree/geo-0.31.0/geo-test-fixtures for the original source code. diff --git a/rust/geo-traits-ext/README.md b/rust/geo-traits-ext/README.md index 683420e3..2aa29f71 100644 --- a/rust/geo-traits-ext/README.md +++ b/rust/geo-traits-ext/README.md @@ -2,8 +2,19 @@ This crate extends the `geo-traits` crate with additional traits and implementations. The goal is to provide a set of traits that are useful for -implementing algorithms on top of the `geo-generic-alg` crate. Most of the methods are -inspired by the `geo-types` crate, but are implemented as traits on the +implementing algorithms in `geo-generic-alg` crate. Most of the methods are +inspired by the `geo-types` crate, but are implemented as traits for the `geo-traits` types. Some methods returns concrete types defined in `geo-types`, these methods are only for computing tiny, intermediate results during -algorithm execution. +algorithm execution. By adding methods in `geo-types` to `geo-traits-ext`, +we can port algorithms in `geo` crate for concrete `geo-types` types to generic +`geo-traits-ext` types more easily. + +`geo-traits-ext` traits also has an associated `Tag` type to workaround the +single orphan rule in Rust. For instance, we cannot write blanket `AreaTrait` +implementations for both `LineStringTrait` and `PolygonTrait` because we +cannot show that there would be no type implementing both `LineStringTrait` and +`PolygonTrait`. By adding an associated `Tag` type, we can write blanket +implementations for `AreaTrait` and `AreaTrait`, since +`AreaTrait` and `AreaTrait` are different types. +Please refer to the source code of `geo-generic-alg` for more details. From 74ca6008c9924de8dfe07bad87dc9960fd7ba0fe Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Fri, 26 Sep 2025 21:00:39 +0800 Subject: [PATCH 04/17] Fix clippy --- rust/geo-generic-alg/src/algorithm/dimensions.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/geo-generic-alg/src/algorithm/dimensions.rs b/rust/geo-generic-alg/src/algorithm/dimensions.rs index 065e9fab..986e6be6 100644 --- a/rust/geo-generic-alg/src/algorithm/dimensions.rs +++ b/rust/geo-generic-alg/src/algorithm/dimensions.rs @@ -334,7 +334,7 @@ where { fn is_empty_trait(&self) -> bool { self.exterior_ext() - .map_or(true, |exterior| exterior.is_empty_trait()) + .is_none_or(|exterior| exterior.is_empty_trait()) } fn dimensions_trait(&self) -> Dimensions { From 8c06f113895a7148faf14d5f5210fe970263e1b9 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Fri, 26 Sep 2025 23:24:05 +0800 Subject: [PATCH 05/17] Implemented geo-traits-ext for wkb --- Cargo.lock | 6 +- Cargo.toml | 4 +- rust/geo-traits-ext/Cargo.toml | 2 + rust/geo-traits-ext/src/lib.rs | 2 + rust/geo-traits-ext/src/wkb_ext.rs | 535 +++++++++++++++++++++++++++++ 5 files changed, 545 insertions(+), 4 deletions(-) create mode 100644 rust/geo-traits-ext/src/wkb_ext.rs diff --git a/Cargo.lock b/Cargo.lock index ff860f3f..f657f9b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2668,9 +2668,11 @@ dependencies = [ name = "geo-traits-ext" version = "0.2.0" dependencies = [ + "byteorder", "geo-traits", "geo-types", "num-traits", + "wkb", ] [[package]] @@ -6437,9 +6439,7 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "wkb" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff9eff6aebac4c64f9c7c057a68f6359284e2a80acf102dffe041fe219b3a082" +version = "0.9.1" dependencies = [ "byteorder", "geo-traits", diff --git a/Cargo.toml b/Cargo.toml index 73f974fd..15885e2d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -67,6 +67,7 @@ arrow-json = { version = "55.1.0" } arrow-schema = { version = "55.1.0" } async-trait = { version = "0.1.87" } bytes = "1.10" +byteorder = "1" chrono = { version = "0.4.38", default-features = false } comfy-table = { version = "7.0" } criterion = { version = "0.5", features = ["html_reports"] } @@ -96,7 +97,7 @@ geo = "0.31.0" geo-index = { version = "0.3.1" } -wkb = { version = "0.9.0" } +wkb = { version = "0.9.1" } wkt = "0.14.0" parking_lot = "0.12" @@ -130,3 +131,4 @@ datafusion-physical-plan = { git = "https://github.com/paleolimbot/datafusion.gi # geo-index = { git = "https://github.com/Kontinuation/geo-index.git", branch = "geo-0.31.0" } geo-index = { path = "/Users/bopeng/workspace/github/geo-index" } +wkb = { path = "/Users/bopeng/workspace/github/wkb.worktrees/main" } diff --git a/rust/geo-traits-ext/Cargo.toml b/rust/geo-traits-ext/Cargo.toml index 50f6246e..ed4eeb3f 100644 --- a/rust/geo-traits-ext/Cargo.toml +++ b/rust/geo-traits-ext/Cargo.toml @@ -28,3 +28,5 @@ rust-version.workspace = true geo-traits = { workspace = true } geo-types = { workspace = true } num-traits = { workspace = true } +wkb = { workspace = true } +byteorder ={ workspace = true } diff --git a/rust/geo-traits-ext/src/lib.rs b/rust/geo-traits-ext/src/lib.rs index 2dcb77b7..3d3b942e 100644 --- a/rust/geo-traits-ext/src/lib.rs +++ b/rust/geo-traits-ext/src/lib.rs @@ -44,3 +44,5 @@ mod triangle; pub use type_tag::*; mod type_tag; + +pub mod wkb_ext; diff --git a/rust/geo-traits-ext/src/wkb_ext.rs b/rust/geo-traits-ext/src/wkb_ext.rs new file mode 100644 index 00000000..33693156 --- /dev/null +++ b/rust/geo-traits-ext/src/wkb_ext.rs @@ -0,0 +1,535 @@ +use std::marker::PhantomData; + +use crate::*; +use byteorder::{BigEndian, ByteOrder, LittleEndian}; +use geo_traits::{ + GeometryCollectionTrait, GeometryTrait, GeometryType, LineStringTrait, MultiLineStringTrait, + MultiPointTrait, MultiPolygonTrait, PointTrait, PolygonTrait, +}; +use geo_types::{Coord as GeoCoord, Line}; +use wkb::reader::{ + Coord, Dimension, GeometryCollection, LineString, LinearRing, MultiLineString, MultiPoint, + MultiPolygon, Point, Polygon, Wkb, +}; +use wkb::Endianness; + +// ┌──────────────────────────────────────────────────────────┐ +// │ Coord │ +// └──────────────────────────────────────────────────────────┘ +impl CoordTraitExt for Coord<'_> { + #[inline] + fn geo_coord(&self) -> geo_types::Coord { + let coord_slice = self.coord_slice(); + unsafe { + let x_bytes = std::slice::from_raw_parts(coord_slice.as_ptr(), 8); + let y_bytes = std::slice::from_raw_parts(coord_slice.as_ptr().add(8), 8); + match self.byte_order() { + Endianness::BigEndian => { + let x = BigEndian::read_f64(x_bytes); + let y = BigEndian::read_f64(y_bytes); + geo_types::Coord { x, y } + } + Endianness::LittleEndian => { + let x = LittleEndian::read_f64(x_bytes); + let y = LittleEndian::read_f64(y_bytes); + geo_types::Coord { x, y } + } + } + } + } +} + +impl GeoTraitExtWithTypeTag for Coord<'_> { + type Tag = CoordTag; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ Point │ +// └──────────────────────────────────────────────────────────┘ + +impl PointTraitExt for Point<'_> { + forward_point_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for Point<'_> { + type Tag = PointTag; +} + +impl PointTraitExt for &Point<'_> { + forward_point_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for &Point<'_> { + type Tag = PointTag; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ LineString │ +// └──────────────────────────────────────────────────────────┘ + +impl LineStringTraitExt for LineString<'_> { + forward_line_string_trait_ext_funcs!(); + + #[inline(always)] + fn lines(&'_ self) -> impl ExactSizeIterator> + '_ { + let buf = self.coords_slice(); + let dim_size = dimension_size(self.dimension()); + let num_coords = self.num_coords(); + match self.byte_order() { + Endianness::LittleEndian => { + EndianLineIter::LE(LineIter::new(buf, num_coords, dim_size)) + } + Endianness::BigEndian => EndianLineIter::BE(LineIter::new(buf, num_coords, dim_size)), + } + } + + #[inline(always)] + fn coord_iter(&self) -> impl Iterator> { + let buf = self.coords_slice(); + let dim_size = dimension_size(self.dimension()); + let num_coords = self.num_coords(); + match self.byte_order() { + Endianness::LittleEndian => { + EndianCoordIter::LE(CoordIter::new(buf, num_coords, dim_size)) + } + Endianness::BigEndian => EndianCoordIter::BE(CoordIter::new(buf, num_coords, dim_size)), + } + } +} + +impl GeoTraitExtWithTypeTag for LineString<'_> { + type Tag = LineStringTag; +} + +impl LineStringTraitExt for &LineString<'_> { + forward_line_string_trait_ext_funcs!(); + + #[inline(always)] + fn lines(&'_ self) -> impl ExactSizeIterator> + '_ { + (*self).lines() + } + + #[inline(always)] + fn coord_iter(&self) -> impl Iterator> { + (*self).coord_iter() + } +} + +impl GeoTraitExtWithTypeTag for &LineString<'_> { + type Tag = LineStringTag; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ LinearRing │ +// └──────────────────────────────────────────────────────────┘ + +impl LineStringTraitExt for LinearRing<'_> { + forward_line_string_trait_ext_funcs!(); + + #[inline(always)] + fn lines(&'_ self) -> impl ExactSizeIterator> + '_ { + let buf = self.coords_slice(); + let dim_size = dimension_size(self.dimension()); + let num_coords = self.num_coords(); + match self.byte_order() { + Endianness::LittleEndian => { + EndianLineIter::LE(LineIter::new(buf, num_coords, dim_size)) + } + Endianness::BigEndian => EndianLineIter::BE(LineIter::new(buf, num_coords, dim_size)), + } + } + + #[inline(always)] + fn coord_iter(&self) -> impl Iterator> { + let buf = self.coords_slice(); + let dim_size = dimension_size(self.dimension()); + let num_coords = self.num_coords(); + match self.byte_order() { + Endianness::LittleEndian => { + EndianCoordIter::LE(CoordIter::new(buf, num_coords, dim_size)) + } + Endianness::BigEndian => EndianCoordIter::BE(CoordIter::new(buf, num_coords, dim_size)), + } + } +} + +impl GeoTraitExtWithTypeTag for LinearRing<'_> { + type Tag = LineStringTag; +} + +impl LineStringTraitExt for &LinearRing<'_> { + forward_line_string_trait_ext_funcs!(); + + #[inline(always)] + fn lines(&'_ self) -> impl ExactSizeIterator> + '_ { + (*self).lines() + } + + #[inline(always)] + fn coord_iter(&self) -> impl Iterator> { + (*self).coord_iter() + } +} + +impl GeoTraitExtWithTypeTag for &LinearRing<'_> { + type Tag = LineStringTag; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ Polygon │ +// └──────────────────────────────────────────────────────────┘ + +impl PolygonTraitExt for Polygon<'_> { + forward_polygon_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for Polygon<'_> { + type Tag = PolygonTag; +} + +impl PolygonTraitExt for &Polygon<'_> { + forward_polygon_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for &Polygon<'_> { + type Tag = PolygonTag; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ MultiPoint │ +// └──────────────────────────────────────────────────────────┘ + +impl MultiPointTraitExt for MultiPoint<'_> { + forward_multi_point_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for MultiPoint<'_> { + type Tag = MultiPointTag; +} + +impl<'a, 'b> MultiPointTraitExt for &'b MultiPoint<'a> +where + 'a: 'b, +{ + forward_multi_point_trait_ext_funcs!(); +} + +impl<'a, 'b> GeoTraitExtWithTypeTag for &'b MultiPoint<'a> +where + 'a: 'b, +{ + type Tag = MultiPointTag; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ MultiLineString │ +// └──────────────────────────────────────────────────────────┘ + +impl MultiLineStringTraitExt for MultiLineString<'_> { + forward_multi_line_string_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for MultiLineString<'_> { + type Tag = MultiLineStringTag; +} + +impl<'a, 'b> MultiLineStringTraitExt for &'b MultiLineString<'a> +where + 'a: 'b, +{ + forward_multi_line_string_trait_ext_funcs!(); +} + +impl<'a, 'b> GeoTraitExtWithTypeTag for &'b MultiLineString<'a> +where + 'a: 'b, +{ + type Tag = MultiLineStringTag; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ MultiPolygon │ +// └──────────────────────────────────────────────────────────┘ + +impl MultiPolygonTraitExt for MultiPolygon<'_> { + forward_multi_polygon_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for MultiPolygon<'_> { + type Tag = MultiPolygonTag; +} + +impl<'a, 'b> MultiPolygonTraitExt for &'b MultiPolygon<'a> +where + 'a: 'b, +{ + forward_multi_polygon_trait_ext_funcs!(); +} + +impl<'a, 'b> GeoTraitExtWithTypeTag for &'b MultiPolygon<'a> +where + 'a: 'b, +{ + type Tag = MultiPolygonTag; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ GeometryCollection │ +// └──────────────────────────────────────────────────────────┘ + +impl GeometryCollectionTraitExt for GeometryCollection<'_> { + forward_geometry_collection_trait_ext_funcs!(); +} + +impl GeoTraitExtWithTypeTag for GeometryCollection<'_> { + type Tag = GeometryCollectionTag; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ Wkb/Geometry │ +// └──────────────────────────────────────────────────────────┘ + +impl<'a> GeometryTraitExt for Wkb<'a> { + forward_geometry_trait_ext_funcs!(f64); + + type InnerGeometryRef<'b> + = &'b Wkb<'a> + where + Self: 'b; + + #[inline] + fn geometry_ext(&self, i: usize) -> Option> { + let GeometryType::GeometryCollection(gc) = self.as_type() else { + return None; + }; + gc.geometry(i) + } + + #[inline] + unsafe fn geometry_unchecked_ext(&self, i: usize) -> Self::InnerGeometryRef<'_> { + let GeometryType::GeometryCollection(gc) = self.as_type() else { + panic!("Called geometry_unchecked_ext on a non-GeometryCollection geometry"); + }; + gc.geometry_unchecked(i) + } + + #[inline] + fn geometries_ext(&self) -> impl Iterator> { + let GeometryType::GeometryCollection(gc) = self.as_type() else { + panic!("Called geometries_ext on a non-GeometryCollection geometry"); + }; + gc.geometries() + } +} + +impl<'a, 'b> GeometryTraitExt for &'b Wkb<'a> +where + 'a: 'b, +{ + forward_geometry_trait_ext_funcs!(f64); + + type InnerGeometryRef<'c> + = &'b Wkb<'a> + where + Self: 'c; + + #[inline] + fn geometry_ext(&self, i: usize) -> Option> { + (*self).geometry_ext(i) + } + + #[inline] + unsafe fn geometry_unchecked_ext(&self, i: usize) -> Self::InnerGeometryRef<'_> { + (*self).geometry_unchecked_ext(i) + } + + #[inline] + fn geometries_ext(&self) -> impl Iterator> { + (*self).geometries_ext() + } +} + +impl GeoTraitExtWithTypeTag for Wkb<'_> { + type Tag = GeometryTag; +} + +impl<'a, 'b> GeoTraitExtWithTypeTag for &'b Wkb<'a> +where + 'a: 'b, +{ + type Tag = GeometryTag; +} + +// ┌──────────────────────────────────────────────────────────┐ +// │ Iterators │ +// └──────────────────────────────────────────────────────────┘ + +// Coordinate iterator with compile-time endianness +pub struct CoordIter<'a, B: ByteOrder> { + buf: &'a [u8], + current_offset: usize, + remaining: usize, + dim_size: usize, + _marker: PhantomData, +} + +impl<'a, B: ByteOrder> CoordIter<'a, B> { + #[inline] + pub fn new(buf: &'a [u8], num_coords: usize, dim_size: usize) -> Self { + Self { + buf, + current_offset: 0, + remaining: num_coords, + dim_size, + _marker: PhantomData, + } + } +} + +impl Iterator for CoordIter<'_, B> { + type Item = GeoCoord; + + #[inline] + fn next(&mut self) -> Option { + if self.remaining == 0 { + return None; + } + + // SAFETY: We're reading raw memory from the buffer at calculated offsets. + // This assumes the buffer contains valid data and offsets are within bounds. + let coord = unsafe { + let x_bytes = std::slice::from_raw_parts(self.buf.as_ptr().add(self.current_offset), 8); + let y_bytes = + std::slice::from_raw_parts(self.buf.as_ptr().add(self.current_offset + 8), 8); + let x = B::read_f64(x_bytes); + let y = B::read_f64(y_bytes); + GeoCoord { x, y } + }; + + self.current_offset += self.dim_size * 8; + self.remaining -= 1; + Some(coord) + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + (self.remaining, Some(self.remaining)) + } +} + +impl ExactSizeIterator for CoordIter<'_, B> {} + +// Line iterator with compile-time endianness +pub struct LineIter<'a, B: ByteOrder> { + coord_iter: CoordIter<'a, B>, + prev_coord: Option>, +} + +impl<'a, B: ByteOrder> LineIter<'a, B> { + #[inline] + pub fn new(buf: &'a [u8], num_coords: usize, dim_size: usize) -> Self { + Self { + coord_iter: CoordIter::new(buf, num_coords, dim_size), + prev_coord: None, + } + } +} + +impl Iterator for LineIter<'_, B> { + type Item = Line; + + #[inline] + fn next(&mut self) -> Option { + let current_coord = self.coord_iter.next()?; + + match self.prev_coord { + Some(prev_coord) => { + let line = Line::new(prev_coord, current_coord); + self.prev_coord = Some(current_coord); + Some(line) + } + None => { + // Grab the next coordinate to form the first line segment + let next_coord = self.coord_iter.next()?; + let line = Line::new(current_coord, next_coord); + self.prev_coord = Some(next_coord); + Some(line) + } + } + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + let (min, max) = self.coord_iter.size_hint(); + (min.saturating_sub(1), max.map(|m| m.saturating_sub(1))) + } +} + +impl ExactSizeIterator for LineIter<'_, B> {} + +// Enum-based wrappers to handle the different endianness types without boxing. +// The dispatch in the iterator methods is static and can be inlined by the compiler. +pub enum EndianCoordIter<'a> { + LE(CoordIter<'a, LittleEndian>), + BE(CoordIter<'a, BigEndian>), +} + +impl Iterator for EndianCoordIter<'_> { + type Item = GeoCoord; + + #[inline] + fn next(&mut self) -> Option { + // We rely on compiler optimization to hoist the match out of the loop, so that + // there's no performance overhead of checking the endianness inside the loop. + match self { + EndianCoordIter::LE(iter) => iter.next(), + EndianCoordIter::BE(iter) => iter.next(), + } + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + match self { + EndianCoordIter::LE(iter) => iter.size_hint(), + EndianCoordIter::BE(iter) => iter.size_hint(), + } + } +} + +pub enum EndianLineIter<'a> { + LE(LineIter<'a, LittleEndian>), + BE(LineIter<'a, BigEndian>), +} + +impl Iterator for EndianLineIter<'_> { + type Item = Line; + + #[inline] + fn next(&mut self) -> Option { + match self { + EndianLineIter::LE(iter) => iter.next(), + EndianLineIter::BE(iter) => iter.next(), + } + } + + #[inline] + fn size_hint(&self) -> (usize, Option) { + match self { + EndianLineIter::LE(iter) => iter.size_hint(), + EndianLineIter::BE(iter) => iter.size_hint(), + } + } +} + +impl ExactSizeIterator for EndianLineIter<'_> {} + +// ┌──────────────────────────────────────────────────────────┐ +// │ Utils. │ +// └──────────────────────────────────────────────────────────┘ +fn dimension_size(dim: Dimension) -> usize { + match dim { + Dimension::Xy => 2, + Dimension::Xyz | Dimension::Xym => 3, + Dimension::Xyzm => 4, + } +} From 45b531766278dd8b2a608fe271099854c834e3ed Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Fri, 26 Sep 2025 23:32:29 +0800 Subject: [PATCH 06/17] Passing pre-commit and adding licence to readme --- .pre-commit-config.yaml | 1 + rust/geo-generic-alg/README.md | 17 +++++++++ .../src/algorithm/line_measures/distance.rs | 2 +- .../geo-generic-alg/src/algorithm/simplify.rs | 2 +- rust/geo-test-fixtures/README.md | 17 +++++++++ rust/geo-test-fixtures/pp_points.py | 37 +++++++++++++++---- rust/geo-traits-ext/README.md | 17 +++++++++ 7 files changed, 83 insertions(+), 10 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 84f26f58..00b18df4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,6 +20,7 @@ repos: hooks: - id: check-yaml - id: end-of-file-fixer + exclude: "^rust/geo-test-fixtures/fixtures/.*" - id: trailing-whitespace - repo: https://github.com/codespell-project/codespell diff --git a/rust/geo-generic-alg/README.md b/rust/geo-generic-alg/README.md index 483f1f1d..1ba86778 100644 --- a/rust/geo-generic-alg/README.md +++ b/rust/geo-generic-alg/README.md @@ -1,3 +1,20 @@ + + # Generic Algorithms for Geo-Traits This crate contains algorithms ported from the [`geo` crate](https://github.com/georust/geo), diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs b/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs index c1f4653a..ec7c1f66 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs @@ -2,7 +2,7 @@ pub trait Distance { /// Note that not all implementations support all geometry combinations, but at least `Point` to `Point` /// is supported. - /// See [specific implementations](#implementors) for details. + /// See [specific implementations](#implementers) for details. /// /// # Units /// diff --git a/rust/geo-generic-alg/src/algorithm/simplify.rs b/rust/geo-generic-alg/src/algorithm/simplify.rs index 97e4a53e..9ef81e2d 100644 --- a/rust/geo-generic-alg/src/algorithm/simplify.rs +++ b/rust/geo-generic-alg/src/algorithm/simplify.rs @@ -130,7 +130,7 @@ where } // The farthest index was less than or equal to epsilon, so we will retain only the first - // and last indices, resulting in the indices inbetween getting culled. + // and last indices, resulting in the indices in between getting culled. // Update `simplified_len` to reflect the new number of indices by subtracting the number // of indices we're culling. diff --git a/rust/geo-test-fixtures/README.md b/rust/geo-test-fixtures/README.md index a105f66c..b7f90417 100644 --- a/rust/geo-test-fixtures/README.md +++ b/rust/geo-test-fixtures/README.md @@ -1,2 +1,19 @@ + + This module was taken from the `geo` crate for testing the correctness of generic algorithms in `geo-generic-alg` crate. Please refer to https://github.com/georust/geo/tree/geo-0.31.0/geo-test-fixtures for the original source code. diff --git a/rust/geo-test-fixtures/pp_points.py b/rust/geo-test-fixtures/pp_points.py index 4757823f..0771caac 100755 --- a/rust/geo-test-fixtures/pp_points.py +++ b/rust/geo-test-fixtures/pp_points.py @@ -1,12 +1,31 @@ #!/usr/bin/env python3 -''' Script to parse coordinates through debug log, and replace them with easier + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +"""Script to parse coordinates through debug log, and replace them with easier names. -''' +""" import sys import re + def main(): pts = {} @@ -16,29 +35,31 @@ def main(): line = sys.stdin.readline() while line: - if line.startswith('input:'): - print(line, end='') + if line.startswith("input:"): + print(line, end="") m = regex.search(line) while m: st = m.start() - print(line[:st], end='') + print(line[:st], end="") sig = m.expand(r"\1#\2") if sig not in pts: pts[sig] = len(pts) idx = pts[sig] - print(f'⚝{idx}', end='') + print(f"⚝{idx}", end="") en = m.end() line = line[en:] m = regex.search(line) - print(line, end='') + print(line, end="") line = sys.stdin.readline() print("end of input") print("points:") for sig in pts: - x,y = sig.split('#') + x, y = sig.split("#") idx = pts[sig] print(f"\t{idx}: Pt({x} {y})") + + if __name__ == "__main__": main() diff --git a/rust/geo-traits-ext/README.md b/rust/geo-traits-ext/README.md index 2aa29f71..73463218 100644 --- a/rust/geo-traits-ext/README.md +++ b/rust/geo-traits-ext/README.md @@ -1,3 +1,20 @@ + + # Geo-Traits Extended This crate extends the `geo-traits` crate with additional traits and From 2e58069e526a4808079550f7fd00a38325e54165 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Sat, 27 Sep 2025 00:48:23 +0800 Subject: [PATCH 07/17] Implemented fast wkb_to_geos --- Cargo.lock | 2 + Cargo.toml | 2 +- c/sedona-geos/Cargo.toml | 2 + c/sedona-geos/src/executor.rs | 4 +- c/sedona-geos/src/lib.rs | 1 + c/sedona-geos/src/wkb_to_geos.rs | 270 ++++++++++++++++++++ rust/sedona-functions/src/st_geomfromwkt.rs | 13 +- 7 files changed, 289 insertions(+), 5 deletions(-) create mode 100644 c/sedona-geos/src/wkb_to_geos.rs diff --git a/Cargo.lock b/Cargo.lock index f657f9b0..1ef39442 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5039,9 +5039,11 @@ version = "0.2.0" dependencies = [ "arrow-array", "arrow-schema", + "byteorder", "criterion", "datafusion-common", "datafusion-expr", + "geo-traits", "geos", "rstest", "sedona", diff --git a/Cargo.toml b/Cargo.toml index 15885e2d..57f2d7ee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,7 +89,7 @@ num-traits = { version = "0.2", default-features = false, features = ["libm"] } mimalloc = { version = "0.1", default-features = false } libmimalloc-sys = { version = "0.1", default-features = false } -geos = { version = "10.0.0", features = ["geo"] } +geos = { version = "10.0.0", features = ["geo", "v3_10_0"] } geo-types = "0.7.17" geo-traits = "0.3.0" diff --git a/c/sedona-geos/Cargo.toml b/c/sedona-geos/Cargo.toml index 747a7cbb..98047c96 100644 --- a/c/sedona-geos/Cargo.toml +++ b/c/sedona-geos/Cargo.toml @@ -42,7 +42,9 @@ sedona-expr = { path = "../../rust/sedona-expr" } sedona-functions = { path = "../../rust/sedona-functions" } sedona-geometry = { path = "../../rust/sedona-geometry" } sedona-schema = { path = "../../rust/sedona-schema" } +geo-traits = { workspace = true } wkb = { workspace = true } +byteorder = { workspace = true } [[bench]] harness = false diff --git a/c/sedona-geos/src/executor.rs b/c/sedona-geos/src/executor.rs index 3d806cc3..5e8a021d 100644 --- a/c/sedona-geos/src/executor.rs +++ b/c/sedona-geos/src/executor.rs @@ -17,13 +17,15 @@ use datafusion_common::{DataFusionError, Result}; use sedona_functions::executor::{GenericExecutor, GeometryFactory}; +use crate::wkb_to_geos::GEOSWkbFactory; + /// A [GenericExecutor] that iterates over [geos::Geometry] pub type GeosExecutor<'a, 'b> = GenericExecutor<'a, 'b, GeosGeometryFactory, GeosGeometryFactory>; /// [GeometryFactory] implementation for iterating over [geos::Geometry] #[derive(Default)] pub struct GeosGeometryFactory { - inner: wkb::reader::to_geos::GEOSWkbFactory, + inner: GEOSWkbFactory, } impl GeometryFactory for GeosGeometryFactory { diff --git a/c/sedona-geos/src/lib.rs b/c/sedona-geos/src/lib.rs index 667bc823..74d57b94 100644 --- a/c/sedona-geos/src/lib.rs +++ b/c/sedona-geos/src/lib.rs @@ -27,3 +27,4 @@ mod st_convexhull; mod st_dwithin; mod st_length; mod st_perimeter; +pub mod wkb_to_geos; diff --git a/c/sedona-geos/src/wkb_to_geos.rs b/c/sedona-geos/src/wkb_to_geos.rs new file mode 100644 index 00000000..a13f8e85 --- /dev/null +++ b/c/sedona-geos/src/wkb_to_geos.rs @@ -0,0 +1,270 @@ +use std::cell::RefCell; + +use byteorder::{BigEndian, ByteOrder, LittleEndian}; +use geo_traits::*; +use geos::GResult; +use wkb::{reader::*, Endianness}; + +/// A factory for converting WKB to GEOS geometries. +/// +/// This factory uses a scratch buffer to store intermediate coordinate data. +/// The scratch buffer is reused for each conversion, which reduces memory allocation +/// overhead. +pub struct GEOSWkbFactory { + scratch: RefCell>, +} + +impl Default for GEOSWkbFactory { + fn default() -> Self { + Self::new() + } +} + +impl GEOSWkbFactory { + /// Create a new GEOSWkbFactory. + pub fn new() -> Self { + Self { + scratch: RefCell::new(Vec::new()), + } + } + + /// Create a GEOS geometry from a WKB. + pub fn create(&self, wkb: &Wkb) -> GResult { + let scratch = &mut self.scratch.borrow_mut(); + geometry_to_geos(scratch, wkb) + } +} + +fn geometry_to_geos(scratch: &mut Vec, wkb: &Wkb) -> GResult { + let geom = wkb.as_type(); + match geom { + geo_traits::GeometryType::Point(p) => point_to_geos(scratch, p), + geo_traits::GeometryType::LineString(ls) => line_string_to_geos(scratch, ls), + geo_traits::GeometryType::Polygon(poly) => polygon_to_geos(scratch, poly), + geo_traits::GeometryType::MultiPoint(mp) => multi_point_to_geos(scratch, mp), + geo_traits::GeometryType::MultiLineString(mls) => multi_line_string_to_geos(scratch, mls), + geo_traits::GeometryType::MultiPolygon(mpoly) => multi_polygon_to_geos(scratch, mpoly), + geo_traits::GeometryType::GeometryCollection(gc) => { + geometry_collection_to_geos(scratch, gc) + } + _ => Err(geos::Error::ConversionError( + "Unsupported geometry type".to_string(), + )), + } +} + +fn point_to_geos(scratch: &mut Vec, p: &Point) -> GResult { + if p.is_empty() { + geos::Geometry::create_empty_point() + } else { + let coord_seq = create_coord_sequence_from_raw_parts( + p.coord_slice(), + p.dimension(), + p.byte_order(), + 1, + scratch, + )?; + let point = geos::Geometry::create_point(coord_seq)?; + Ok(point) + } +} + +fn line_string_to_geos(scratch: &mut Vec, ls: &LineString) -> GResult { + let num_points = ls.num_coords(); + if num_points == 0 { + geos::Geometry::create_empty_line_string() + } else { + let coord_seq = create_coord_sequence_from_raw_parts( + ls.coords_slice(), + ls.dimension(), + ls.byte_order(), + num_points, + scratch, + )?; + geos::Geometry::create_line_string(coord_seq) + } +} + +fn polygon_to_geos(scratch: &mut Vec, poly: &Polygon) -> GResult { + // Create exterior ring + let exterior = if let Some(ring) = poly.exterior() { + let coord_seq = create_coord_sequence_from_raw_parts( + ring.coords_slice(), + ring.dimension(), + ring.byte_order(), + ring.num_coords(), + scratch, + )?; + geos::Geometry::create_linear_ring(coord_seq)? + } else { + return geos::Geometry::create_empty_polygon(); + }; + + // Create interior rings + let num_interiors = poly.num_interiors(); + let mut interior_rings = Vec::with_capacity(num_interiors); + for i in 0..num_interiors { + let ring = poly.interior(i).unwrap(); + let coord_seq = create_coord_sequence_from_raw_parts( + ring.coords_slice(), + ring.dimension(), + ring.byte_order(), + ring.num_coords(), + scratch, + )?; + let interior_ring = geos::Geometry::create_linear_ring(coord_seq)?; + interior_rings.push(interior_ring); + } + + geos::Geometry::create_polygon(exterior, interior_rings) +} + +fn multi_point_to_geos(scratch: &mut Vec, mp: &MultiPoint) -> GResult { + let num_points = mp.num_points(); + if num_points == 0 { + // Create an empty multi-point by creating a geometry collection with no geometries + geos::Geometry::create_empty_collection(geos::GeometryTypes::MultiPoint) + } else { + let mut points = Vec::with_capacity(num_points); + for i in 0..num_points { + let point = unsafe { mp.point_unchecked(i) }; + let geos_point = point_to_geos(scratch, &point)?; + points.push(geos_point); + } + geos::Geometry::create_multipoint(points) + } +} + +fn multi_line_string_to_geos( + scratch: &mut Vec, + mls: &MultiLineString, +) -> GResult { + let num_line_strings = mls.num_line_strings(); + if num_line_strings == 0 { + geos::Geometry::create_empty_collection(geos::GeometryTypes::MultiLineString) + } else { + let mut line_strings = Vec::with_capacity(num_line_strings); + for i in 0..num_line_strings { + let ls = unsafe { mls.line_string_unchecked(i) }; + let geos_line_string = line_string_to_geos(scratch, ls)?; + line_strings.push(geos_line_string); + } + geos::Geometry::create_multiline_string(line_strings) + } +} + +fn multi_polygon_to_geos(scratch: &mut Vec, mpoly: &MultiPolygon) -> GResult { + let num_polygons = mpoly.num_polygons(); + if num_polygons == 0 { + geos::Geometry::create_empty_collection(geos::GeometryTypes::MultiPolygon) + } else { + let mut polygons = Vec::with_capacity(num_polygons); + for i in 0..num_polygons { + let poly = unsafe { mpoly.polygon_unchecked(i) }; + let geos_polygon = polygon_to_geos(scratch, poly)?; + polygons.push(geos_polygon); + } + geos::Geometry::create_multipolygon(polygons) + } +} + +fn geometry_collection_to_geos( + scratch: &mut Vec, + gc: &GeometryCollection, +) -> GResult { + if gc.num_geometries() == 0 { + geos::Geometry::create_empty_collection(geos::GeometryTypes::GeometryCollection) + } else { + let num_geometries = gc.num_geometries(); + let mut geometries = Vec::with_capacity(num_geometries); + for i in 0..num_geometries { + let geom = gc.geometry(i).unwrap(); + let geos_geom = geometry_to_geos(scratch, geom)?; + geometries.push(geos_geom); + } + geos::Geometry::create_geometry_collection(geometries) + } +} + +const NATIVE_ENDIANNESS: Endianness = if cfg!(target_endian = "big") { + Endianness::BigEndian +} else { + Endianness::LittleEndian +}; + +fn create_coord_sequence_from_raw_parts( + buf: &[u8], + dim: Dimension, + byte_order: Endianness, + num_coords: usize, + scratch: &mut Vec, +) -> GResult { + let (has_z, has_m, dim_size) = match dim { + Dimension::Xy => (false, false, 2), + Dimension::Xyz => (true, false, 3), + Dimension::Xym => (false, true, 3), + Dimension::Xyzm => (true, true, 4), + }; + let num_ordinates = dim_size * num_coords; + + // If the byte order matches native endianness, we can potentially use zero-copy + if byte_order == NATIVE_ENDIANNESS { + let ptr = buf.as_ptr(); + + // On platforms with unaligned memory access support, we can construct the coord seq + // directly from the raw parts without copying to the scratch buffer. + #[cfg(any(target_arch = "aarch64", target_arch = "x86_64"))] + { + let coords_f64 = + unsafe { &*core::ptr::slice_from_raw_parts(ptr as *const f64, num_ordinates) }; + geos::CoordSeq::new_from_buffer(coords_f64, num_coords, has_z, has_m) + } + + // On platforms without unaligned memory access support, we need to copy the data to the + // scratch buffer to make sure the data is aligned. + #[cfg(not(any(target_arch = "aarch64", target_arch = "x86_64")))] + { + unsafe { + scratch.clear(); + scratch.reserve(num_ordinates); + scratch.set_len(num_ordinates); + std::ptr::copy_nonoverlapping( + ptr, + scratch.as_mut_ptr() as *mut u8, + num_ordinates * std::mem::size_of::(), + ); + geos::CoordSeq::new_from_buffer(scratch.as_slice(), num_coords, has_z, has_m) + } + } + } else { + // Need to convert byte order + match byte_order { + Endianness::BigEndian => { + save_f64_to_scratch::(scratch, buf, num_ordinates); + } + Endianness::LittleEndian => { + save_f64_to_scratch::(scratch, buf, num_ordinates); + } + } + geos::CoordSeq::new_from_buffer(scratch.as_slice(), num_coords, has_z, has_m) + } +} + +fn save_f64_to_scratch(scratch: &mut Vec, buf: &[u8], num_ordinates: usize) { + scratch.clear(); + scratch.reserve(num_ordinates); + // Safety: we have already reserved the capacity, so we can set the length safely. + // Justification: rewriting the loop to not use Vec::push makes it many times faster, + // since it eliminates several memory loads and stores for vector's length and capacity, + // and it enables the compiler to generate vectorized code. + #[allow(clippy::uninit_vec)] + unsafe { + scratch.set_len(num_ordinates); + } + assert!(num_ordinates * 8 <= buf.len()); + for (i, tgt) in scratch.iter_mut().enumerate().take(num_ordinates) { + let offset = i * 8; + let value = B::read_f64(&buf[offset..]); + *tgt = value; + } +} diff --git a/rust/sedona-functions/src/st_geomfromwkt.rs b/rust/sedona-functions/src/st_geomfromwkt.rs index b35d628b..558fbec3 100644 --- a/rust/sedona-functions/src/st_geomfromwkt.rs +++ b/rust/sedona-functions/src/st_geomfromwkt.rs @@ -29,7 +29,8 @@ use sedona_schema::{ datatypes::{SedonaType, WKB_GEOGRAPHY, WKB_GEOMETRY}, matchers::ArgMatcher, }; -use wkb::writer::write_geometry; +use wkb::writer::{write_geometry, WriteOptions}; +use wkb::Endianness; use wkt::Wkt; use crate::executor::WkbExecutor; @@ -128,8 +129,14 @@ fn invoke_scalar(wkt_bytes: &str, builder: &mut BinaryBuilder) -> Result<()> { let geometry: Wkt = Wkt::from_str(wkt_bytes) .map_err(|err| DataFusionError::Internal(format!("WKT parse error: {err}")))?; - write_geometry(builder, &geometry, wkb::Endianness::LittleEndian) - .map_err(|err| DataFusionError::Internal(format!("WKB write error: {err}"))) + write_geometry( + builder, + &geometry, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .map_err(|err| DataFusionError::Internal(format!("WKB write error: {err}"))) } #[cfg(test)] From f1641c59bddc750d480a650abf734f4e1e555ad6 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Mon, 29 Sep 2025 23:05:01 +0800 Subject: [PATCH 08/17] Now everything compiles, but some tests are failing --- Cargo.lock | 18 +- Cargo.toml | 8 +- c/sedona-geos/Cargo.toml | 5 + c/sedona-geos/benches/wkb_to_geos.rs | 61 + c/sedona-geos/src/wkb_to_geos.rs | 1049 +++++++++++++++++ c/sedona-tg/benches/parse-wkb.rs | 8 +- rust/geo-generic-alg/Cargo.toml | 4 +- rust/geo-generic-alg/benches/area.rs | 34 +- rust/geo-generic-alg/benches/centroid.rs | 34 +- rust/geo-generic-alg/benches/distance.rs | 25 +- rust/geo-generic-alg/benches/intersection.rs | 96 +- rust/geo-generic-alg/benches/length.rs | 12 +- rust/geo-generic-alg/benches/perimeter.rs | 12 +- rust/geo-generic-alg/benches/utils/wkb.rs | 14 - .../geo-generic-alg/benches/utils/wkb_util.rs | 9 + rust/sedona-adbc/Cargo.toml | 1 + rust/sedona-adbc/src/database.rs | 4 +- rust/sedona-adbc/src/lib.rs | 3 +- rust/sedona-geo/src/st_intersection_aggr.rs | 10 +- rust/sedona-geo/src/st_union_aggr.rs | 10 +- rust/sedona-geo/src/to_geo.rs | 9 +- rust/sedona-geometry/src/bounds.rs | 10 +- rust/sedona-geometry/src/is_empty.rs | 12 +- rust/sedona-geometry/src/wkb_factory.rs | 102 +- rust/sedona-spatial-join/Cargo.toml | 3 +- rust/sedona-spatial-join/src/refine/geo.rs | 26 +- rust/sedona-spatial-join/src/refine/geos.rs | 4 +- rust/sedona-testing/src/create.rs | 10 +- rust/sedona-testing/src/datagen.rs | 11 +- 29 files changed, 1459 insertions(+), 145 deletions(-) create mode 100644 c/sedona-geos/benches/wkb_to_geos.rs delete mode 100644 rust/geo-generic-alg/benches/utils/wkb.rs create mode 100644 rust/geo-generic-alg/benches/utils/wkb_util.rs diff --git a/Cargo.lock b/Cargo.lock index 1ef39442..405305e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -60,6 +60,17 @@ dependencies = [ "arrow-schema", ] +[[package]] +name = "adbc_ffi" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c30e0f28a8363a76a8ec802934223ea5811ea658308c7403c8beb9aa86fa808f" +dependencies = [ + "adbc_core", + "arrow-array", + "arrow-schema", +] + [[package]] name = "addr2line" version = "0.24.2" @@ -2619,7 +2630,6 @@ dependencies = [ "geo-traits", "geo-traits-ext", "geo-types", - "geos", "i_overlay", "log", "num-traits", @@ -2629,12 +2639,14 @@ dependencies = [ "robust", "rstar", "serde", + "wkb", "wkt 0.14.0", ] [[package]] name = "geo-index" version = "0.3.1" +source = "git+https://github.com/Kontinuation/geo-index.git?branch=geo-0.31.0#bb50e17c9bf921e147de72e826d4d924c4c298cf" dependencies = [ "bytemuck", "float_next_after", @@ -4860,6 +4872,7 @@ name = "sedona-adbc" version = "0.2.0" dependencies = [ "adbc_core", + "adbc_ffi", "arrow-array", "arrow-schema", "datafusion", @@ -5043,6 +5056,7 @@ dependencies = [ "criterion", "datafusion-common", "datafusion-expr", + "geo", "geo-traits", "geos", "rstest", @@ -5131,6 +5145,7 @@ dependencies = [ "datafusion-physical-plan", "float_next_after", "futures", + "geo", "geo-generic-alg", "geo-index", "geo-traits", @@ -6442,6 +6457,7 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "wkb" version = "0.9.1" +source = "git+https://github.com/Kontinuation/wkb?branch=expose-more-apis#6bf1a6bbe489f83f633f69cbef6a11ecce844381" dependencies = [ "byteorder", "geo-traits", diff --git a/Cargo.toml b/Cargo.toml index 57f2d7ee..28e09b27 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -58,6 +58,7 @@ rust-version = "1.82" approx = "0.5" abi_stable = "0.11.3" adbc_core = "0.20.0" +adbc_ffi = "0.20.0" lru = "0.12" arrow = { version = "55.1.0", features = ["prettyprint", "ffi", "chrono-tz"] } arrow-array = { version = "55.1.0" } @@ -129,6 +130,7 @@ datafusion-ffi = { git = "https://github.com/paleolimbot/datafusion.git", branch datafusion-physical-expr = { git = "https://github.com/paleolimbot/datafusion.git", branch = "local-49-with-patch", package = "datafusion-physical-expr" } datafusion-physical-plan = { git = "https://github.com/paleolimbot/datafusion.git", branch = "local-49-with-patch", package = "datafusion-physical-plan" } -# geo-index = { git = "https://github.com/Kontinuation/geo-index.git", branch = "geo-0.31.0" } -geo-index = { path = "/Users/bopeng/workspace/github/geo-index" } -wkb = { path = "/Users/bopeng/workspace/github/wkb.worktrees/main" } +geo-index = { git = "https://github.com/Kontinuation/geo-index.git", branch = "geo-0.31.0" } +# geo-index = { path = "/Users/bopeng/workspace/github/geo-index" } +wkb = { git = "https://github.com/Kontinuation/wkb", branch = "expose-more-apis" } +# wkb = { path = "/Users/bopeng/workspace/github/wkb.worktrees/main" } diff --git a/c/sedona-geos/Cargo.toml b/c/sedona-geos/Cargo.toml index 98047c96..33bc07c6 100644 --- a/c/sedona-geos/Cargo.toml +++ b/c/sedona-geos/Cargo.toml @@ -31,6 +31,7 @@ criterion = { workspace = true } sedona = { path = "../../rust/sedona" } sedona-testing = { path = "../../rust/sedona-testing", features = ["criterion"] } rstest = { workspace = true } +geo = { workspace = true } [dependencies] arrow-schema = { workspace = true } @@ -49,3 +50,7 @@ byteorder = { workspace = true } [[bench]] harness = false name = "geos-functions" + +[[bench]] +harness = false +name = "wkb_to_geos" diff --git a/c/sedona-geos/benches/wkb_to_geos.rs b/c/sedona-geos/benches/wkb_to_geos.rs new file mode 100644 index 00000000..f295922c --- /dev/null +++ b/c/sedona-geos/benches/wkb_to_geos.rs @@ -0,0 +1,61 @@ +use criterion::{criterion_group, criterion_main}; +use geo::{LineString, Point}; +use sedona_geos::wkb_to_geos::GEOSWkbFactory; +use wkb::Endianness; + +fn generate_wkb_linestring(num_points: usize, endianness: Endianness) -> Vec { + let mut points = Vec::new(); + for i in 0..num_points { + points.push(Point::new(i as f64, i as f64)); + } + let linestring = LineString::from(points); + let mut buffer = Vec::new(); + wkb::writer::write_geometry( + &mut buffer, + &linestring, + &wkb::writer::WriteOptions { endianness }, + ) + .unwrap(); + buffer +} + +fn bench_parse(c: &mut criterion::Criterion) { + for num_points in [4, 10, 100, 500, 1000] { + for endianness in [Endianness::BigEndian, Endianness::LittleEndian] { + let wkb_buf = generate_wkb_linestring(num_points, endianness); + let wkb = wkb::reader::read_wkb(&wkb_buf).unwrap(); + let endianness_name: &str = match endianness { + Endianness::BigEndian => "big endian", + Endianness::LittleEndian => "little endian", + }; + + c.bench_function( + &format!( + "convert linestring containing {num_points} points using to_geos ({endianness_name})" + ), + |b| { + let factory = GEOSWkbFactory::new(); + b.iter(|| { + let g = factory.create(&wkb).unwrap(); + criterion::black_box(g); + }); + }, + ); + + c.bench_function( + &format!( + "convert linestring containing {num_points} points using geos wkb parser ({endianness_name})" + ), + |b| { + b.iter(|| { + let g = geos::Geometry::new_from_wkb(wkb.buf()).unwrap(); + criterion::black_box(g); + }); + }, + ); + } + } +} + +criterion_group!(benches, bench_parse); +criterion_main!(benches); diff --git a/c/sedona-geos/src/wkb_to_geos.rs b/c/sedona-geos/src/wkb_to_geos.rs index a13f8e85..dfd5f91e 100644 --- a/c/sedona-geos/src/wkb_to_geos.rs +++ b/c/sedona-geos/src/wkb_to_geos.rs @@ -268,3 +268,1052 @@ fn save_f64_to_scratch(scratch: &mut Vec, buf: &[u8], num_ord *tgt = value; } } + +#[cfg(test)] +mod test { + use super::*; + use geo::{ + line_string, point, polygon, Geometry, GeometryCollection, LineString, MultiLineString, + MultiPoint, MultiPolygon, Point, Polygon, + }; + use geos::Geom; + use wkb::{ + writer::{ + write_geometry_collection, write_line_string, write_multi_line_string, + write_multi_point, write_multi_polygon, write_point, write_polygon, WriteOptions, + }, + Endianness, + }; + + pub(super) fn point_2d() -> Point { + point!( + x: 0., y: 1. + ) + } + + pub(super) fn linestring_2d() -> LineString { + line_string![ + (x: 0., y: 1.), + (x: 1., y: 2.) + ] + } + + pub(super) fn polygon_2d() -> Polygon { + polygon![ + (x: -111., y: 45.), + (x: -111., y: 41.), + (x: -104., y: 41.), + (x: -104., y: 45.), + ] + } + + pub(super) fn polygon_2d_with_interior() -> Polygon { + polygon!( + exterior: [ + (x: -111., y: 45.), + (x: -111., y: 41.), + (x: -104., y: 41.), + (x: -104., y: 45.), + ], + interiors: [ + [ + (x: -110., y: 44.), + (x: -110., y: 42.), + (x: -105., y: 42.), + (x: -105., y: 44.), + ], + ], + ) + } + + pub(super) fn multi_point_2d() -> MultiPoint { + MultiPoint::new(vec![ + point!( + x: 0., y: 1. + ), + point!( + x: 1., y: 2. + ), + ]) + } + + pub(super) fn multi_line_string_2d() -> MultiLineString { + MultiLineString::new(vec![ + line_string![ + (x: -111., y: 45.), + (x: -111., y: 41.), + (x: -104., y: 41.), + (x: -104., y: 45.), + ], + line_string![ + (x: -110., y: 44.), + (x: -110., y: 42.), + (x: -105., y: 42.), + (x: -105., y: 44.), + ], + ]) + } + + pub(super) fn multi_polygon_2d() -> MultiPolygon { + MultiPolygon::new(vec![ + polygon![ + (x: -111., y: 45.), + (x: -111., y: 41.), + (x: -104., y: 41.), + (x: -104., y: 45.), + ], + polygon!( + exterior: [ + (x: -111., y: 45.), + (x: -111., y: 41.), + (x: -104., y: 41.), + (x: -104., y: 45.), + ], + interiors: [ + [ + (x: -110., y: 44.), + (x: -110., y: 42.), + (x: -105., y: 42.), + (x: -105., y: 44.), + ], + ], + ), + ]) + } + + pub(super) fn geometry_collection_2d() -> GeometryCollection { + GeometryCollection::new_from(vec![ + Geometry::Point(point_2d()), + Geometry::LineString(linestring_2d()), + Geometry::Polygon(polygon_2d()), + Geometry::Polygon(polygon_2d_with_interior()), + Geometry::MultiPoint(multi_point_2d()), + Geometry::MultiLineString(multi_line_string_2d()), + Geometry::MultiPolygon(multi_polygon_2d()), + ]) + } + + fn test_geometry_conversion(geo_geom: &Geometry, endianness: Endianness) { + // Convert geo geometry to WKB + let mut buf = Vec::new(); + let write_options = WriteOptions { endianness }; + match geo_geom { + Geometry::Point(p) => write_point(&mut buf, p, &write_options).unwrap(), + Geometry::LineString(ls) => write_line_string(&mut buf, ls, &write_options).unwrap(), + Geometry::Polygon(p) => write_polygon(&mut buf, p, &write_options).unwrap(), + Geometry::MultiPoint(mp) => write_multi_point(&mut buf, mp, &write_options).unwrap(), + Geometry::MultiLineString(mls) => { + write_multi_line_string(&mut buf, mls, &write_options).unwrap() + } + Geometry::MultiPolygon(mp) => { + write_multi_polygon(&mut buf, mp, &write_options).unwrap() + } + Geometry::GeometryCollection(gc) => { + write_geometry_collection(&mut buf, gc, &write_options).unwrap() + } + Geometry::Line(_) => panic!("Line geometry not supported in tests"), + Geometry::Rect(_) => panic!("Rect geometry not supported in tests"), + Geometry::Triangle(_) => panic!("Triangle geometry not supported in tests"), + } + + // Read WKB back + let wkb = wkb::reader::read_wkb(&buf).unwrap(); + + // Convert to GEOS using our ToGeos converter + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + // Convert back to geo for comparison + let geo_from_geos: Geometry = geos_geom.try_into().unwrap(); + + // Compare the geometries + assert_eq!(*geo_geom, geo_from_geos); + } + + #[test] + fn test_point_conversion() { + let point = point_2d(); + let geo_geom = Geometry::Point(point); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_empty_point_conversion() { + // Create an empty point by writing NaN coordinates + let mut buf = Vec::new(); + buf.push(1); // Little endian + buf.extend_from_slice(&1u32.to_le_bytes()); // Point type + buf.extend_from_slice(&f64::NAN.to_le_bytes()); // x = NaN + buf.extend_from_slice(&f64::NAN.to_le_bytes()); // y = NaN + + let wkb = read_wkb(&buf).unwrap(); + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + assert!(geos_geom.is_empty().unwrap()); + } + + #[test] + fn test_line_string_conversion() { + let line_string = linestring_2d(); + let geo_geom = Geometry::LineString(line_string); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_empty_line_string_conversion() { + let mut buf = Vec::new(); + write_line_string( + &mut buf, + &geo::LineString::new(vec![]), + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); + + let wkb = read_wkb(&buf).unwrap(); + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + assert!(geos_geom.is_empty().unwrap()); + } + + #[test] + fn test_polygon_conversion() { + let polygon = polygon_2d(); + let geo_geom = Geometry::Polygon(polygon); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_polygon_with_interior_conversion() { + let polygon = polygon_2d_with_interior(); + let geo_geom = Geometry::Polygon(polygon); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_multi_point_conversion() { + let multi_point = multi_point_2d(); + let geo_geom = Geometry::MultiPoint(multi_point); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_empty_multi_point_conversion() { + let mut buf = Vec::new(); + write_multi_point( + &mut buf, + &geo::MultiPoint::new(vec![]), + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); + + let wkb = read_wkb(&buf).unwrap(); + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + assert!(geos_geom.is_empty().unwrap()); + } + + #[test] + fn test_multi_line_string_conversion() { + let multi_line_string = multi_line_string_2d(); + let geo_geom = Geometry::MultiLineString(multi_line_string); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_empty_multi_line_string_conversion() { + let mut buf = Vec::new(); + write_multi_line_string( + &mut buf, + &geo::MultiLineString::new(vec![]), + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); + + let wkb = read_wkb(&buf).unwrap(); + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + assert!(geos_geom.is_empty().unwrap()); + } + + #[test] + fn test_multi_polygon_conversion() { + let multi_polygon = multi_polygon_2d(); + let geo_geom = Geometry::MultiPolygon(multi_polygon); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_empty_multi_polygon_conversion() { + let mut buf = Vec::new(); + write_multi_polygon( + &mut buf, + &geo::MultiPolygon::new(vec![]), + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); + + let wkb = read_wkb(&buf).unwrap(); + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + assert!(geos_geom.is_empty().unwrap()); + } + + #[test] + fn test_geometry_collection_conversion() { + let geometry_collection = geometry_collection_2d(); + let geo_geom = Geometry::GeometryCollection(geometry_collection); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_empty_geometry_collection_conversion() { + let mut buf = Vec::new(); + write_geometry_collection( + &mut buf, + &geo::GeometryCollection::new_from(vec![]), + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); + + let wkb = read_wkb(&buf).unwrap(); + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + assert!(geos_geom.is_empty().unwrap()); + } + + #[test] + fn test_nested_geometry_collection() { + // Create a geometry collection containing other geometry collections + let inner_gc1 = geo::GeometryCollection::new_from(vec![ + Geometry::Point(point_2d()), + Geometry::LineString(linestring_2d()), + ]); + + let inner_gc2 = geo::GeometryCollection::new_from(vec![ + Geometry::Polygon(polygon_2d()), + Geometry::MultiPoint(multi_point_2d()), + ]); + + let outer_gc = geo::GeometryCollection::new_from(vec![ + Geometry::GeometryCollection(inner_gc1), + Geometry::GeometryCollection(inner_gc2), + Geometry::MultiLineString(multi_line_string_2d()), + ]); + + let geo_geom = Geometry::GeometryCollection(outer_gc); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_coordinate_precision() { + // Test with high precision coordinates + let high_precision_point = geo::Point::new(123.456789012345, -98.765432109876); + let geo_geom = Geometry::Point(high_precision_point); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_large_coordinates() { + // Test with very large coordinate values + let large_point = geo::Point::new(1e10, -1e10); + let geo_geom = Geometry::Point(large_point); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_negative_coordinates() { + // Test with negative coordinates + let negative_point = geo::Point::new(-180.0, -90.0); + let geo_geom = Geometry::Point(negative_point); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_zero_coordinates() { + // Test with zero coordinates + let zero_point = geo::Point::new(0.0, 0.0); + let geo_geom = Geometry::Point(zero_point); + + test_geometry_conversion(&geo_geom, Endianness::LittleEndian); + test_geometry_conversion(&geo_geom, Endianness::BigEndian); + } + + #[test] + fn test_endianness_handling() { + let factory = GEOSWkbFactory::new(); + // Test that both endianness variants work correctly + let point = point_2d(); + let geo_geom = Geometry::Point(point); + + // Test little endian + let mut buf_le = Vec::new(); + write_point( + &mut buf_le, + &point_2d(), + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); + let wkb_le = read_wkb(&buf_le).unwrap(); + let geos_geom_le = factory.create(&wkb_le).unwrap(); + let geo_from_geos_le: Geometry = geos_geom_le.try_into().unwrap(); + + // Test big endian + let mut buf_be = Vec::new(); + write_point( + &mut buf_be, + &point_2d(), + &WriteOptions { + endianness: Endianness::BigEndian, + }, + ) + .unwrap(); + let wkb_be = read_wkb(&buf_be).unwrap(); + let geos_geom_be = factory.create(&wkb_be).unwrap(); + let geo_from_geos_be: Geometry = geos_geom_be.try_into().unwrap(); + + // Both should produce the same result + assert_eq!(geo_from_geos_le, geo_from_geos_be); + assert_eq!(geo_geom, geo_from_geos_le); + } + + #[test] + fn test_xyz_dimension_handling() { + // Test XYZ dimension handling by manually creating WKB with XYZ coordinates + let mut buf = Vec::new(); + + // Write WKB header for LineString XYZ (type 1002) + buf.push(1); // Little endian + buf.extend_from_slice(&1002u32.to_le_bytes()); // LineString XYZ + buf.extend_from_slice(&2u32.to_le_bytes()); // 2 points + + // Write XYZ coordinates: (0.0, 1.0, 10.0), (1.0, 2.0, 20.0) + buf.extend_from_slice(&0.0f64.to_le_bytes()); + buf.extend_from_slice(&1.0f64.to_le_bytes()); + buf.extend_from_slice(&10.0f64.to_le_bytes()); + buf.extend_from_slice(&1.0f64.to_le_bytes()); + buf.extend_from_slice(&2.0f64.to_le_bytes()); + buf.extend_from_slice(&20.0f64.to_le_bytes()); + + let wkb = read_wkb(&buf).unwrap(); + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + // Verify the geometry was created successfully + assert!(!geos_geom.is_empty().unwrap()); + + // Verify coordinates by checking the WKT representation + let wkt = geos_geom.to_wkt().unwrap(); + // Expected WKT for LineString with XYZ coordinates (0.0, 1.0, 10.0), (1.0, 2.0, 20.0) + let expected_wkt = "LINESTRING Z (0 1 10, 1 2 20)"; + assert_eq!(wkt, expected_wkt); + } + + #[test] + fn test_xym_dimension_handling() { + // Test XYM dimension handling by manually creating WKB with XYM coordinates + let mut buf = Vec::new(); + + // Write WKB header for LineString XYM (type 2002) + buf.push(1); // Little endian + buf.extend_from_slice(&2002u32.to_le_bytes()); // LineString XYM + buf.extend_from_slice(&2u32.to_le_bytes()); // 2 points + + // Write XYM coordinates: (0.0, 1.0, 100.0), (1.0, 2.0, 200.0) + buf.extend_from_slice(&0.0f64.to_le_bytes()); + buf.extend_from_slice(&1.0f64.to_le_bytes()); + buf.extend_from_slice(&100.0f64.to_le_bytes()); + buf.extend_from_slice(&1.0f64.to_le_bytes()); + buf.extend_from_slice(&2.0f64.to_le_bytes()); + buf.extend_from_slice(&200.0f64.to_le_bytes()); + + let wkb = read_wkb(&buf).unwrap(); + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + // Verify the geometry was created successfully + assert!(!geos_geom.is_empty().unwrap()); + + // Verify coordinates by checking the WKT representation + let wkt = geos_geom.to_wkt().unwrap(); + // Expected WKT for LineString with XYM coordinates (0.0, 1.0, 100.0), (1.0, 2.0, 200.0) + let expected_wkt = "LINESTRING M (0 1 100, 1 2 200)"; + assert_eq!(wkt, expected_wkt); + } + + #[test] + fn test_xyzm_dimension_handling() { + // Test XYZM dimension handling by manually creating WKB with XYZM coordinates + let mut buf = Vec::new(); + + // Write WKB header for LineString XYZM (type 3002) + buf.push(1); // Little endian + buf.extend_from_slice(&3002u32.to_le_bytes()); // LineString XYZM + buf.extend_from_slice(&2u32.to_le_bytes()); // 2 points + + // Write XYZM coordinates: (0.0, 1.0, 10.0, 100.0), (1.0, 2.0, 20.0, 200.0) + buf.extend_from_slice(&0.0f64.to_le_bytes()); + buf.extend_from_slice(&1.0f64.to_le_bytes()); + buf.extend_from_slice(&10.0f64.to_le_bytes()); + buf.extend_from_slice(&100.0f64.to_le_bytes()); + buf.extend_from_slice(&1.0f64.to_le_bytes()); + buf.extend_from_slice(&2.0f64.to_le_bytes()); + buf.extend_from_slice(&20.0f64.to_le_bytes()); + buf.extend_from_slice(&200.0f64.to_le_bytes()); + + let wkb = read_wkb(&buf).unwrap(); + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + // Verify the geometry was created successfully + assert!(!geos_geom.is_empty().unwrap()); + + // Verify coordinates by checking the WKT representation + let wkt = geos_geom.to_wkt().unwrap(); + // Expected WKT for LineString with XYZM coordinates (0.0, 1.0, 10.0, 100.0), (1.0, 2.0, 20.0, 200.0) + let expected_wkt = "LINESTRING ZM (0 1 10 100, 1 2 20 200)"; + assert_eq!(wkt, expected_wkt); + } + + #[test] + fn test_big_endian_xyz_dimension_handling() { + // Test XYZ dimension handling with big endian byte order + let mut buf = Vec::new(); + + // Write WKB header for LineString XYZ (type 1002) in big endian + buf.push(0); // Big endian + buf.extend_from_slice(&1002u32.to_be_bytes()); // LineString XYZ + buf.extend_from_slice(&2u32.to_be_bytes()); // 2 points + + // Write XYZ coordinates in big endian: (0.0, 1.0, 10.0), (1.0, 2.0, 20.0) + buf.extend_from_slice(&0.0f64.to_be_bytes()); + buf.extend_from_slice(&1.0f64.to_be_bytes()); + buf.extend_from_slice(&10.0f64.to_be_bytes()); + buf.extend_from_slice(&1.0f64.to_be_bytes()); + buf.extend_from_slice(&2.0f64.to_be_bytes()); + buf.extend_from_slice(&20.0f64.to_be_bytes()); + + let wkb = read_wkb(&buf).unwrap(); + let geos_geom = GEOSWkbFactory::new().create(&wkb).unwrap(); + + // Verify the geometry was created successfully + assert!(!geos_geom.is_empty().unwrap()); + + // Verify coordinates by checking the WKT representation + let wkt = geos_geom.to_wkt().unwrap(); + // Expected WKT for LineString with XYZ coordinates (0.0, 1.0, 10.0), (1.0, 2.0, 20.0) + let expected_wkt = "LINESTRING Z (0 1 10, 1 2 20)"; + assert_eq!(wkt, expected_wkt); + } + + /// Represents a single WKB test case, holding the expected geometry type, Dimension, + /// the raw WKB bytes, and the WKT string. + /// This is the direct Rust equivalent of your C++ `WKBTestCase` struct, with WKT added. + #[derive(Debug, PartialEq, Clone)] + pub struct WkbTestCase { + pub dimension: Dimension, + pub wkb_bytes: Vec, + pub wkt_string: String, // Added WKT field + } + + // You can then define your test cases as a `Vec` + pub fn get_wkb_test_cases() -> Vec { + vec![ + // POINT EMPTY + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![ + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, + ], + wkt_string: "POINT EMPTY".to_string(), + }, + // POINT (30 10) + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![ + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, + ], + wkt_string: "POINT (30 10)".to_string(), + }, + // POINT Z (30 10 40) + WkbTestCase { + dimension: Dimension::Xyz, + wkb_bytes: vec![ + 0x01, 0xe9, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x40, + ], + wkt_string: "POINT Z (30 10 40)".to_string(), + }, + // POINT M (30 10 300) + WkbTestCase { + dimension: Dimension::Xym, + wkb_bytes: vec![ + 0x01, 0xd1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x72, 0x40, + ], + wkt_string: "POINT M (30 10 300)".to_string(), + }, + // POINT ZM (30 10 40 300) + WkbTestCase { + dimension: Dimension::Xyzm, + wkb_bytes: vec![ + 0x01, 0xb9, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, + ], + wkt_string: "POINT ZM (30 10 40 300)".to_string(), + }, + // POINT (30 10) (big endian) + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![ + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + ], + wkt_string: "POINT (30 10)".to_string(), // WKT is endian-agnostic + }, + // LINESTRING EMPTY + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], + wkt_string: "LINESTRING EMPTY".to_string(), + }, + // LINESTRING (30 10, 10 30, 40 40) + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![ + 0x01, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x44, 0x40, + ], + wkt_string: "LINESTRING (30 10, 10 30, 40 40)".to_string(), + }, + // LINESTRING Z (30 10 40, 10 30 40, 40 40 80) + WkbTestCase { + dimension: Dimension::Xyz, + wkb_bytes: vec![ + 0x01, 0xea, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x54, 0x40 + ], + wkt_string: "LINESTRING Z (30 10 40, 10 30 40, 40 40 80)".to_string(), + }, + // LINESTRING M (30 10 300, 10 30 300, 40 40 1600) + WkbTestCase { + dimension: Dimension::Xym, + wkb_bytes: vec![ + 0x01, 0xd2, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x72, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x99, 0x40, + ], + wkt_string: "LINESTRING M (30 10 300, 10 30 300, 40 40 1600)".to_string(), + }, + // LINESTRING ZM (30 10 40 300, 10 30 40 300, 40 40 80 1600) + WkbTestCase { + dimension: Dimension::Xyzm, + wkb_bytes: vec![ + 0x01, 0xba, 0x0b, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x99, 0x40, + ], + wkt_string: "LINESTRING ZM (30 10 40 300, 10 30 40 300, 40 40 80 1600)".to_string(), + }, + // LINESTRING (30 10, 10 30, 40 40) (big endian) + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![ + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x40, 0x3e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x44, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, + ], + wkt_string: "LINESTRING (30 10, 10 30, 40 40)".to_string(), + }, + // POLYGON EMPTY + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], + wkt_string: "POLYGON EMPTY".to_string(), + }, + // POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)) + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![ + 0x01, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x40, + ], + wkt_string: "POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))".to_string(), + }, + // POLYGON Z ((30 10 40, 40 40 80, 20 40 60, 10 20 30, 30 10 40)) + WkbTestCase { + dimension: Dimension::Xyz, + wkb_bytes: vec![ + 0x01, 0xeb, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x40, + ], + wkt_string: "POLYGON Z ((30 10 40, 40 40 80, 20 40 60, 10 20 30, 30 10 40))".to_string(), + }, + // POLYGON M ((30 10 300, 40 40 1600, 20 40 800, 10 20 200, 30 10 300)) + WkbTestCase { + dimension: Dimension::Xym, + wkb_bytes: vec![ + 0x01, 0xd3, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x69, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x72, 0x40, + ], + wkt_string: "POLYGON M ((30 10 300, 40 40 1600, 20 40 800, 10 20 200, 30 10 300))".to_string(), + }, + // POLYGON ZM ((30 10 40 300, 40 40 80 1600, 20 40 60 800, 10 20 30 200, 30 + // 10 40 300)) + WkbTestCase { + dimension: Dimension::Xyzm, + wkb_bytes: vec![ + 0x01, 0xbb, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x54, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x89, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x72, 0x40, + ], + wkt_string: "POLYGON ZM ((30 10 40 300, 40 40 80 1600, 20 40 60 800, 10 20 30 200, 30 10 40 300))".to_string(), + }, + // MULTIPOINT EMPTY + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], + wkt_string: "MULTIPOINT EMPTY".to_string(), + }, + // MULTIPOINT ((30 10)) + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![ + 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, + ], + wkt_string: "MULTIPOINT ((30 10))".to_string(), + }, + // MULTIPOINT Z ((30 10 40)) + WkbTestCase { + dimension: Dimension::Xyz, + wkb_bytes: vec![ + 0x01, 0xec, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xe9, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, + ], + wkt_string: "MULTIPOINT Z ((30 10 40))".to_string(), + }, + // MULTIPOINT M ((30 10 300)) + WkbTestCase { + dimension: Dimension::Xym, + wkb_bytes: vec![ + 0x01, 0xd4, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xd1, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, + ], + wkt_string: "MULTIPOINT M ((30 10 300))".to_string(), + }, + // MULTIPOINT ZM ((30 10 40 300)) + WkbTestCase { + dimension: Dimension::Xyzm, + wkb_bytes: vec![ + 0x01, 0xbc, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xb9, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, + ], + wkt_string: "MULTIPOINT ZM ((30 10 40 300))".to_string(), + }, + // MULTILINESTRING EMPTY + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], + wkt_string: "MULTILINESTRING EMPTY".to_string(), + }, + // MULTILINESTRING ((30 10, 10 30, 40 40)) + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![ + 0x01, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, + 0x40, + ], + wkt_string: "MULTILINESTRING ((30 10, 10 30, 40 40))".to_string(), + }, + // MULTILINESTRING Z ((30 10 40, 10 30 40, 40 40 80)) + WkbTestCase { + dimension: Dimension::Xyz, + wkb_bytes: vec![ + 0x01, 0xed, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xea, 0x03, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x40, + ], + wkt_string: "MULTILINESTRING Z ((30 10 40, 10 30 40, 40 40 80))".to_string(), + }, + // MULTILINESTRING M ((30 10 300, 10 30 300, 40 40 1600)) + WkbTestCase { + dimension: Dimension::Xym, + wkb_bytes: vec![ + 0x01, 0xd5, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xd2, 0x07, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x72, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x40, + ], + wkt_string: "MULTILINESTRING M ((30 10 300, 10 30 300, 40 40 1600))".to_string(), + }, + // MULTILINESTRING ZM ((30 10 40 300, 10 30 40 300, 40 40 80 1600)) + WkbTestCase { + dimension: Dimension::Xyzm, + wkb_bytes: vec![ + 0x01, 0xbd, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xba, 0x0b, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x72, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x40 + ], + wkt_string: "MULTILINESTRING ZM ((30 10 40 300, 10 30 40 300, 40 40 80 1600))".to_string(), + }, + // MULTIPOLYGON EMPTY + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], + wkt_string: "MULTIPOLYGON EMPTY".to_string(), + }, + // MULTIPOLYGON (((30 10, 40 40, 20 40, 10 20, 30 10))) + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![ + 0x01, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, + ], + wkt_string: "MULTIPOLYGON (((30 10, 40 40, 20 40, 10 20, 30 10)))".to_string(), + }, + // MULTIPOLYGON Z (((30 10 40, 40 40 80, 20 40 60, 10 20 30, 30 10 40))) + WkbTestCase { + dimension: Dimension::Xyz, + wkb_bytes: vec![ + 0x01, 0xee, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xeb, 0x03, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x54, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, + ], + wkt_string: "MULTIPOLYGON Z (((30 10 40, 40 40 80, 20 40 60, 10 20 30, 30 10 40)))".to_string(), + }, + // MULTIPOLYGON M (((30 10 300, 40 40 1600, 20 40 800, 10 20 200, 30 10 300))) + WkbTestCase { + dimension: Dimension::Xym, + wkb_bytes: vec![ + 0x01, 0xd6, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xd3, 0x07, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x99, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x89, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, + ], + wkt_string: "MULTIPOLYGON M (((30 10 300, 40 40 1600, 20 40 800, 10 20 200, 30 10 300)))".to_string(), + }, + // MULTIPOLYGON ZM (((30 10 40 300, 40 40 80 1600, 20 40 60 800, 10 20 30 200, 30 + // 10 40 300))) + WkbTestCase { + dimension: Dimension::Xyzm, + wkb_bytes: vec![ + 0x01, 0xbe, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xbb, 0x0b, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0x72, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, + ], + wkt_string: "MULTIPOLYGON ZM (((30 10 40 300, 40 40 80 1600, 20 40 60 800, 10 20 30 200, 30 10 40 300)))".to_string(), + }, + // GEOMETRYCOLLECTION EMPTY + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], + wkt_string: "GEOMETRYCOLLECTION EMPTY".to_string(), + }, + // GEOMETRYCOLLECTION (POINT (30 10)) + WkbTestCase { + dimension: Dimension::Xy, + wkb_bytes: vec![ + 0x01, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, + ], + wkt_string: "GEOMETRYCOLLECTION (POINT (30 10))".to_string(), + }, + // GEOMETRYCOLLECTION Z (POINT Z (30 10 40)) + WkbTestCase { + dimension: Dimension::Xyz, + wkb_bytes: vec![ + 0x01, 0xef, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xe9, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, + ], + wkt_string: "GEOMETRYCOLLECTION Z (POINT Z (30 10 40))".to_string(), + }, + // GEOMETRYCOLLECTION M (POINT M (30 10 300)) + WkbTestCase { + dimension: Dimension::Xym, + wkb_bytes: vec![ + 0x01, 0xd7, 0x07, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xd1, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, + ], + wkt_string: "GEOMETRYCOLLECTION M (POINT M (30 10 300))".to_string(), + }, + // GEOMETRYCOLLECTION ZM (POINT ZM (30 10 40 300)) + WkbTestCase { + dimension: Dimension::Xyzm, + wkb_bytes: vec![ + 0x01, 0xbf, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xb9, 0x0b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x72, 0x40, + ], + wkt_string: "GEOMETRYCOLLECTION ZM (POINT ZM (30 10 40 300))".to_string(), + }, + ] + } + + #[test] + fn test_using_comprehensive_cases() { + let factory = GEOSWkbFactory::new(); + let test_cases = get_wkb_test_cases(); + for test_case in test_cases { + let wkb = read_wkb(&test_case.wkb_bytes).unwrap(); + let geos_geom = factory.create(&wkb).unwrap(); + let wkt_from_geos = geos_geom.to_wkt().unwrap(); + assert_eq!( + wkt_from_geos, test_case.wkt_string, + "Failed for test case {}", + test_case.wkt_string + ); + } + } +} diff --git a/c/sedona-tg/benches/parse-wkb.rs b/c/sedona-tg/benches/parse-wkb.rs index 9632afec..79a920d9 100644 --- a/c/sedona-tg/benches/parse-wkb.rs +++ b/c/sedona-tg/benches/parse-wkb.rs @@ -27,14 +27,18 @@ fn criterion_benchmark(c: &mut Criterion) { wkb::writer::write_geometry( &mut large_geom_wkb_big_endian, &large_geom, - wkb::Endianness::BigEndian, + &wkb::writer::WriteOptions { + endianness: wkb::Endianness::BigEndian, + }, ) .unwrap(); let mut large_geom_wkb_little_endian = Vec::new(); wkb::writer::write_geometry( &mut large_geom_wkb_little_endian, &large_geom, - wkb::Endianness::LittleEndian, + &wkb::writer::WriteOptions { + endianness: wkb::Endianness::LittleEndian, + }, ) .unwrap(); diff --git a/rust/geo-generic-alg/Cargo.toml b/rust/geo-generic-alg/Cargo.toml index 0a776d3d..6e569972 100644 --- a/rust/geo-generic-alg/Cargo.toml +++ b/rust/geo-generic-alg/Cargo.toml @@ -49,11 +49,9 @@ pretty_env_logger = "0.4" rand = { workspace = true } rand_distr = "0.4.3" geo = { workspace = true } +wkb = { workspace = true } wkt = { workspace = true } -# For writing WKB geometry for benchmarks -geos = { workspace = true, features = ["geo"] } - [[bench]] name = "area" harness = false diff --git a/rust/geo-generic-alg/benches/area.rs b/rust/geo-generic-alg/benches/area.rs index 47beb2cb..32644f25 100644 --- a/rust/geo-generic-alg/benches/area.rs +++ b/rust/geo-generic-alg/benches/area.rs @@ -3,11 +3,11 @@ use geo_generic_alg::Area; use geo_generic_alg::Polygon; use geo_traits::to_geo::ToGeoGeometry; -#[path = "utils/wkb.rs"] -mod wkb; +#[path = "utils/wkb_util.rs"] +mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { - c.bench_function("area_f32", |bencher| { + c.bench_function("area_generic_f32", |bencher| { let norway = geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); @@ -16,7 +16,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); }); - c.bench_function("area", |bencher| { + c.bench_function("area_generic", |bencher| { let norway = geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); @@ -25,13 +25,31 @@ fn criterion_benchmark(c: &mut Criterion) { }); }); + c.bench_function("area_geo_f32", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + + bencher.iter(|| { + criterion::black_box(geo::Area::signed_area(criterion::black_box(&polygon))); + }); + }); + + c.bench_function("area_geo", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + + bencher.iter(|| { + criterion::black_box(geo::Area::signed_area(criterion::black_box(&polygon))); + }); + }); + c.bench_function("area_wkb", |bencher| { let norway = geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); - let wkb_bytes = wkb::geo_to_wkb(&polygon); + let wkb_bytes = wkb_util::geo_to_wkb(polygon); bencher.iter(|| { - let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let wkb_geom = wkb::reader::read_wkb(&wkb_bytes).unwrap(); criterion::black_box(wkb_geom.signed_area()); }); }); @@ -39,10 +57,10 @@ fn criterion_benchmark(c: &mut Criterion) { c.bench_function("area_wkb_convert", |bencher| { let norway = geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); - let wkb_bytes = wkb::geo_to_wkb(&polygon); + let wkb_bytes = wkb_util::geo_to_wkb(polygon); bencher.iter(|| { - let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let wkb_geom = wkb::reader::read_wkb(&wkb_bytes).unwrap(); let geom = wkb_geom.to_geometry(); criterion::black_box(geom.signed_area()); }); diff --git a/rust/geo-generic-alg/benches/centroid.rs b/rust/geo-generic-alg/benches/centroid.rs index 085358c0..bf4c4ac6 100644 --- a/rust/geo-generic-alg/benches/centroid.rs +++ b/rust/geo-generic-alg/benches/centroid.rs @@ -3,11 +3,11 @@ use geo_generic_alg::Centroid; use geo_generic_alg::Polygon; use geo_traits::to_geo::ToGeoGeometry; -#[path = "utils/wkb.rs"] -mod wkb; +#[path = "utils/wkb_util.rs"] +mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { - c.bench_function("centroid_f32", |bencher| { + c.bench_function("centroid_generic_f32", |bencher| { let norway = geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); @@ -16,7 +16,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); }); - c.bench_function("centroid", |bencher| { + c.bench_function("centroid_generic", |bencher| { let norway = geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); @@ -25,13 +25,31 @@ fn criterion_benchmark(c: &mut Criterion) { }); }); + c.bench_function("centroid_geo_f32", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + + bencher.iter(|| { + criterion::black_box(geo::Centroid::centroid(criterion::black_box(&polygon))); + }); + }); + + c.bench_function("centroid_geo", |bencher| { + let norway = geo_test_fixtures::norway_main::(); + let polygon = Polygon::new(norway, vec![]); + + bencher.iter(|| { + criterion::black_box(geo::Centroid::centroid(criterion::black_box(&polygon))); + }); + }); + c.bench_function("centroid_wkb", |bencher| { let norway = geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); - let wkb_bytes = wkb::geo_to_wkb(&polygon); + let wkb_bytes = wkb_util::geo_to_wkb(polygon); bencher.iter(|| { - let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let wkb_geom = wkb::reader::read_wkb(&wkb_bytes).unwrap(); criterion::black_box(wkb_geom.centroid()); }); }); @@ -39,10 +57,10 @@ fn criterion_benchmark(c: &mut Criterion) { c.bench_function("centroid_wkb_convert", |bencher| { let norway = geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); - let wkb_bytes = wkb::geo_to_wkb(&polygon); + let wkb_bytes = wkb_util::geo_to_wkb(polygon); bencher.iter(|| { - let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let wkb_geom = wkb::reader::read_wkb(&wkb_bytes).unwrap(); let geom = wkb_geom.to_geometry(); criterion::black_box(geom.centroid()); }); diff --git a/rust/geo-generic-alg/benches/distance.rs b/rust/geo-generic-alg/benches/distance.rs index dceec952..2b252969 100644 --- a/rust/geo-generic-alg/benches/distance.rs +++ b/rust/geo-generic-alg/benches/distance.rs @@ -1,9 +1,10 @@ use criterion::{criterion_group, criterion_main, Criterion}; -use geo_generic_alg::algorithm::line_measures::{Distance, DistanceExt, Euclidean}; +use geo::{Distance as GeoDistance, Euclidean}; +use geo_generic_alg::algorithm::line_measures::DistanceExt; use geo_generic_alg::{coord, LineString, MultiPolygon, Point, Polygon}; -#[path = "utils/wkb.rs"] -mod wkb; +#[path = "utils/wkb_util.rs"] +mod wkb_util; // Helper function to create complex polygons with many vertices for stress testing fn create_complex_polygon( @@ -108,12 +109,12 @@ fn criterion_benchmark(c: &mut Criterion) { c.bench_function("distance_wkb_point_to_point", |bencher| { let p1 = Point::new(0.0, 0.0); let p2 = Point::new(100.0, 100.0); - let wkb_bytes1 = wkb::geo_to_wkb(p1); - let wkb_bytes2 = wkb::geo_to_wkb(p2); + let wkb_bytes1 = wkb_util::geo_to_wkb(p1); + let wkb_bytes2 = wkb_util::geo_to_wkb(p2); bencher.iter(|| { - let wkb_geom1 = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes1).unwrap(); - let wkb_geom2 = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes2).unwrap(); + let wkb_geom1 = wkb::reader::read_wkb(&wkb_bytes1).unwrap(); + let wkb_geom2 = wkb::reader::read_wkb(&wkb_bytes2).unwrap(); criterion::black_box(wkb_geom1.distance_ext(&wkb_geom2)); }); }); @@ -125,12 +126,12 @@ fn criterion_benchmark(c: &mut Criterion) { coord!(x: 200.0, y: 200.0), coord!(x: 300.0, y: 300.0), ]); - let wkb_bytes1 = wkb::geo_to_wkb(&ls1); - let wkb_bytes2 = wkb::geo_to_wkb(&ls2); + let wkb_bytes1 = wkb_util::geo_to_wkb(ls1); + let wkb_bytes2 = wkb_util::geo_to_wkb(ls2); bencher.iter(|| { - let wkb_geom1 = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes1).unwrap(); - let wkb_geom2 = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes2).unwrap(); + let wkb_geom1 = wkb::reader::read_wkb(&wkb_bytes1).unwrap(); + let wkb_geom2 = wkb::reader::read_wkb(&wkb_bytes2).unwrap(); criterion::black_box(wkb_geom1.distance_ext(&wkb_geom2)); }); }); @@ -187,7 +188,7 @@ fn criterion_benchmark(c: &mut Criterion) { bencher.iter(|| { criterion::black_box( - Euclidean.distance(criterion::black_box(&ls1), criterion::black_box(&ls2)), + geo::Euclidean.distance(criterion::black_box(&ls1), criterion::black_box(&ls2)), ); }); }); diff --git a/rust/geo-generic-alg/benches/intersection.rs b/rust/geo-generic-alg/benches/intersection.rs index 9bb13b22..5fc396de 100644 --- a/rust/geo-generic-alg/benches/intersection.rs +++ b/rust/geo-generic-alg/benches/intersection.rs @@ -4,8 +4,8 @@ use geo_generic_alg::{intersects::Intersects, Centroid}; use geo_traits::to_geo::ToGeoGeometry; use geo_types::Geometry; -#[path = "utils/wkb.rs"] -mod wkb; +#[path = "utils/wkb_util.rs"] +mod wkb_util; fn multi_polygon_intersection(c: &mut Criterion) { let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); @@ -32,6 +32,26 @@ fn multi_polygon_intersection(c: &mut Criterion) { assert_eq!(non_intersects, 27782); }); }); + + c.bench_function("MultiPolygon intersects geo", |bencher| { + bencher.iter(|| { + let mut intersects = 0; + let mut non_intersects = 0; + + for a in &plot_geoms { + for b in &zone_geoms { + if criterion::black_box(geo::Intersects::intersects(b, a)) { + intersects += 1; + } else { + non_intersects += 1; + } + } + } + + assert_eq!(intersects, 974); + assert_eq!(non_intersects, 27782); + }); + }); } fn multi_polygon_intersection_wkb(c: &mut Criterion) { @@ -41,11 +61,11 @@ fn multi_polygon_intersection_wkb(c: &mut Criterion) { // Convert intersected polygons to WKB let mut plot_polygon_wkbs = Vec::new(); let mut zone_polygon_wkbs = Vec::new(); - for plot_polygon in &plot_polygons { - plot_polygon_wkbs.push(wkb::geo_to_wkb(plot_polygon)); + for plot_polygon in plot_polygons { + plot_polygon_wkbs.push(wkb_util::geo_to_wkb(plot_polygon)); } - for zone_polygon in &zone_polygons { - zone_polygon_wkbs.push(wkb::geo_to_wkb(zone_polygon)); + for zone_polygon in zone_polygons { + zone_polygon_wkbs.push(wkb_util::geo_to_wkb(zone_polygon)); } c.bench_function("MultiPolygon intersects wkb", |bencher| { @@ -55,8 +75,8 @@ fn multi_polygon_intersection_wkb(c: &mut Criterion) { for a in &plot_polygon_wkbs { for b in &zone_polygon_wkbs { - let a_geom = geo_generic_tests::wkb::reader::read_wkb(a).unwrap(); // Skip padding - let b_geom = geo_generic_tests::wkb::reader::read_wkb(b).unwrap(); // Skip padding + let a_geom = wkb::reader::read_wkb(a).unwrap(); // Skip padding + let b_geom = wkb::reader::read_wkb(b).unwrap(); // Skip padding if criterion::black_box(b_geom.intersects(&a_geom)) { intersects += 1; } else { @@ -78,14 +98,14 @@ fn multi_polygon_intersection_wkb_aligned(c: &mut Criterion) { // Convert intersected polygons to WKB let mut plot_polygon_wkbs = Vec::new(); let mut zone_polygon_wkbs = Vec::new(); - for plot_polygon in &plot_polygons { + for plot_polygon in plot_polygons { let mut wkb = vec![0, 0, 0]; // Add 3-byte padding - wkb.extend_from_slice(&wkb::geo_to_wkb(plot_polygon)); + wkb.extend_from_slice(&wkb_util::geo_to_wkb(plot_polygon)); plot_polygon_wkbs.push(wkb); } - for zone_polygon in &zone_polygons { + for zone_polygon in zone_polygons { let mut wkb = vec![0, 0, 0]; // Add 3-byte padding - wkb.extend_from_slice(&wkb::geo_to_wkb(zone_polygon)); + wkb.extend_from_slice(&wkb_util::geo_to_wkb(zone_polygon)); zone_polygon_wkbs.push(wkb); } @@ -96,8 +116,8 @@ fn multi_polygon_intersection_wkb_aligned(c: &mut Criterion) { for a in &plot_polygon_wkbs { for b in &zone_polygon_wkbs { - let a_geom = geo_generic_tests::wkb::reader::read_wkb(&a[3..]).unwrap(); // Skip padding - let b_geom = geo_generic_tests::wkb::reader::read_wkb(&b[3..]).unwrap(); // Skip padding + let a_geom = wkb::reader::read_wkb(&a[3..]).unwrap(); // Skip padding + let b_geom = wkb::reader::read_wkb(&b[3..]).unwrap(); // Skip padding if criterion::black_box(b_geom.intersects(&a_geom)) { intersects += 1; } else { @@ -119,11 +139,11 @@ fn multi_polygon_intersection_wkb_conv(c: &mut Criterion) { // Convert intersected polygons to WKB let mut plot_polygon_wkbs = Vec::new(); let mut zone_polygon_wkbs = Vec::new(); - for plot_polygon in &plot_polygons { - plot_polygon_wkbs.push(wkb::geo_to_wkb(plot_polygon)); + for plot_polygon in plot_polygons { + plot_polygon_wkbs.push(wkb_util::geo_to_wkb(plot_polygon)); } - for zone_polygon in &zone_polygons { - zone_polygon_wkbs.push(wkb::geo_to_wkb(zone_polygon)); + for zone_polygon in zone_polygons { + zone_polygon_wkbs.push(wkb_util::geo_to_wkb(zone_polygon)); } c.bench_function("MultiPolygon intersects wkb conv", |bencher| { @@ -133,8 +153,8 @@ fn multi_polygon_intersection_wkb_conv(c: &mut Criterion) { for a in &plot_polygon_wkbs { for b in &zone_polygon_wkbs { - let a_geom = geo_generic_tests::wkb::reader::read_wkb(a).unwrap(); - let b_geom = geo_generic_tests::wkb::reader::read_wkb(b).unwrap(); + let a_geom = wkb::reader::read_wkb(a).unwrap(); + let b_geom = wkb::reader::read_wkb(b).unwrap(); let a_geom = a_geom.to_geometry(); let b_geom = b_geom.to_geometry(); if criterion::black_box(b_geom.intersects(&a_geom)) { @@ -172,6 +192,16 @@ fn point_polygon_intersection(c: &mut Criterion) { } }); }); + + c.bench_function("Point polygon intersects geo", |bencher| { + bencher.iter(|| { + for a in &plot_geoms { + for b in &zone_geoms { + criterion::black_box(geo::Intersects::intersects(b, a)); + } + } + }); + }); } fn point_polygon_intersection_wkb(c: &mut Criterion) { @@ -181,20 +211,20 @@ fn point_polygon_intersection_wkb(c: &mut Criterion) { // Convert intersected polygons to WKB let mut plot_centroid_wkbs = Vec::new(); let mut zone_polygon_wkbs = Vec::new(); - for plot_polygon in &plot_polygons { + for plot_polygon in plot_polygons { let centroid = plot_polygon.centroid().unwrap(); - plot_centroid_wkbs.push(wkb::geo_to_wkb(centroid)); + plot_centroid_wkbs.push(wkb_util::geo_to_wkb(centroid)); } - for zone_polygon in &zone_polygons { - zone_polygon_wkbs.push(wkb::geo_to_wkb(zone_polygon)); + for zone_polygon in zone_polygons { + zone_polygon_wkbs.push(wkb_util::geo_to_wkb(zone_polygon)); } c.bench_function("Point polygon intersects wkb", |bencher| { bencher.iter(|| { for a in &plot_centroid_wkbs { for b in &zone_polygon_wkbs { - let a_geom = geo_generic_tests::wkb::reader::read_wkb(a).unwrap(); - let b_geom = geo_generic_tests::wkb::reader::read_wkb(b).unwrap(); + let a_geom = wkb::reader::read_wkb(a).unwrap(); + let b_geom = wkb::reader::read_wkb(b).unwrap(); criterion::black_box(b_geom.intersects(&a_geom)); } } @@ -209,20 +239,20 @@ fn point_polygon_intersection_wkb_conv(c: &mut Criterion) { // Convert intersected polygons to WKB let mut plot_centroid_wkbs = Vec::new(); let mut zone_polygon_wkbs = Vec::new(); - for plot_polygon in &plot_polygons { + for plot_polygon in plot_polygons { let centroid = plot_polygon.centroid().unwrap(); - plot_centroid_wkbs.push(wkb::geo_to_wkb(centroid)); + plot_centroid_wkbs.push(wkb_util::geo_to_wkb(centroid)); } - for zone_polygon in &zone_polygons { - zone_polygon_wkbs.push(wkb::geo_to_wkb(zone_polygon)); + for zone_polygon in zone_polygons { + zone_polygon_wkbs.push(wkb_util::geo_to_wkb(zone_polygon)); } c.bench_function("Point polygon intersects wkb conv", |bencher| { bencher.iter(|| { for a in &plot_centroid_wkbs { for b in &zone_polygon_wkbs { - let a_geom = geo_generic_tests::wkb::reader::read_wkb(a).unwrap(); - let b_geom = geo_generic_tests::wkb::reader::read_wkb(b).unwrap(); + let a_geom = wkb::reader::read_wkb(a).unwrap(); + let b_geom = wkb::reader::read_wkb(b).unwrap(); let a_geom = a_geom.to_geometry(); let b_geom = b_geom.to_geometry(); criterion::black_box(b_geom.intersects(&a_geom)); @@ -299,7 +329,7 @@ fn point_rect_intersection(c: &mut Criterion) { } fn point_triangle_intersection(c: &mut Criterion) { - use geo_generic_alg::algorithm::{Centroid, TriangulateEarcut}; + use geo::algorithm::TriangulateEarcut; use geo_generic_alg::{Point, Triangle}; let plot_centroids: Vec = geo_test_fixtures::nl_plots_wgs84() .iter() diff --git a/rust/geo-generic-alg/benches/length.rs b/rust/geo-generic-alg/benches/length.rs index 292777b1..57db91d1 100644 --- a/rust/geo-generic-alg/benches/length.rs +++ b/rust/geo-generic-alg/benches/length.rs @@ -2,8 +2,8 @@ use criterion::{criterion_group, criterion_main, Criterion}; use geo_generic_alg::algorithm::line_measures::{Euclidean, LengthMeasurableExt}; use geo_traits::to_geo::ToGeoGeometry; -#[path = "utils/wkb.rs"] -mod wkb; +#[path = "utils/wkb_util.rs"] +mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { c.bench_function("length_f32", |bencher| { @@ -24,20 +24,20 @@ fn criterion_benchmark(c: &mut Criterion) { c.bench_function("length_wkb", |bencher| { let linestring = geo_test_fixtures::norway_main::(); - let wkb_bytes = wkb::geo_to_wkb(&linestring); + let wkb_bytes = wkb_util::geo_to_wkb(linestring); bencher.iter(|| { - let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let wkb_geom = wkb::reader::read_wkb(&wkb_bytes).unwrap(); criterion::black_box(wkb_geom.length_ext(&Euclidean)); }); }); c.bench_function("length_wkb_convert", |bencher| { let linestring = geo_test_fixtures::norway_main::(); - let wkb_bytes = wkb::geo_to_wkb(&linestring); + let wkb_bytes = wkb_util::geo_to_wkb(linestring); bencher.iter(|| { - let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let wkb_geom = wkb::reader::read_wkb(&wkb_bytes).unwrap(); let geom = wkb_geom.to_geometry(); criterion::black_box(geom.length_ext(&Euclidean)); }); diff --git a/rust/geo-generic-alg/benches/perimeter.rs b/rust/geo-generic-alg/benches/perimeter.rs index 895ae4cb..70ef8cfb 100644 --- a/rust/geo-generic-alg/benches/perimeter.rs +++ b/rust/geo-generic-alg/benches/perimeter.rs @@ -3,8 +3,8 @@ use geo_generic_alg::algorithm::line_measures::{Euclidean, LengthMeasurableExt}; use geo_generic_alg::Polygon; use geo_traits::to_geo::ToGeoGeometry; -#[path = "utils/wkb.rs"] -mod wkb; +#[path = "utils/wkb_util.rs"] +mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { c.bench_function("perimeter_f32", |bencher| { @@ -28,10 +28,10 @@ fn criterion_benchmark(c: &mut Criterion) { c.bench_function("perimeter_wkb", |bencher| { let norway = geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); - let wkb_bytes = wkb::geo_to_wkb(&polygon); + let wkb_bytes = wkb_util::geo_to_wkb(polygon); bencher.iter(|| { - let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let wkb_geom = wkb::reader::read_wkb(&wkb_bytes).unwrap(); criterion::black_box(wkb_geom.perimeter_ext(&Euclidean)); }); }); @@ -39,10 +39,10 @@ fn criterion_benchmark(c: &mut Criterion) { c.bench_function("perimeter_wkb_convert", |bencher| { let norway = geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); - let wkb_bytes = wkb::geo_to_wkb(&polygon); + let wkb_bytes = wkb_util::geo_to_wkb(polygon); bencher.iter(|| { - let wkb_geom = geo_generic_tests::wkb::reader::read_wkb(&wkb_bytes).unwrap(); + let wkb_geom = wkb::reader::read_wkb(&wkb_bytes).unwrap(); let geom = wkb_geom.to_geometry(); criterion::black_box(geom.perimeter_ext(&Euclidean)); }); diff --git a/rust/geo-generic-alg/benches/utils/wkb.rs b/rust/geo-generic-alg/benches/utils/wkb.rs deleted file mode 100644 index 60342db8..00000000 --- a/rust/geo-generic-alg/benches/utils/wkb.rs +++ /dev/null @@ -1,14 +0,0 @@ -use geos::WKBWriter; - -pub fn geo_to_wkb(geo: G) -> Vec -where - G: TryInto, -{ - let geos_geom: geos::Geometry = match geo.try_into() { - Ok(geos_geom) => geos_geom, - Err(_) => panic!("Failed to convert to geos::Geometry"), - }; - - let mut wkb_writer = WKBWriter::new().unwrap(); - wkb_writer.write_wkb(&geos_geom).unwrap().into() -} diff --git a/rust/geo-generic-alg/benches/utils/wkb_util.rs b/rust/geo-generic-alg/benches/utils/wkb_util.rs new file mode 100644 index 00000000..f35a23d6 --- /dev/null +++ b/rust/geo-generic-alg/benches/utils/wkb_util.rs @@ -0,0 +1,9 @@ +pub fn geo_to_wkb(geo: G) -> Vec +where + G: Into, +{ + let geom = geo.into(); + let mut out: Vec = vec![]; + wkb::writer::write_geometry(&mut out, &geom, &wkb::writer::WriteOptions::default()).unwrap(); + out +} diff --git a/rust/sedona-adbc/Cargo.toml b/rust/sedona-adbc/Cargo.toml index 7a557a79..f7796b20 100644 --- a/rust/sedona-adbc/Cargo.toml +++ b/rust/sedona-adbc/Cargo.toml @@ -29,6 +29,7 @@ result_large_err = "allow" [dependencies] adbc_core = { workspace = true } +adbc_ffi = { workspace = true } arrow-array = { workspace = true } arrow-schema = { workspace = true } datafusion = { workspace = true } diff --git a/rust/sedona-adbc/src/database.rs b/rust/sedona-adbc/src/database.rs index e8697da7..248d51c0 100644 --- a/rust/sedona-adbc/src/database.rs +++ b/rust/sedona-adbc/src/database.rs @@ -51,12 +51,12 @@ impl Optionable for SedonaDatabase { impl Database for SedonaDatabase { type ConnectionType = SedonaConnection; - fn new_connection(&mut self) -> Result { + fn new_connection(&self) -> Result { self.new_connection_with_opts([]) } fn new_connection_with_opts( - &mut self, + &self, opts: impl IntoIterator, ) -> Result { SedonaConnection::try_new(opts) diff --git a/rust/sedona-adbc/src/lib.rs b/rust/sedona-adbc/src/lib.rs index 7e7da284..ae88f480 100644 --- a/rust/sedona-adbc/src/lib.rs +++ b/rust/sedona-adbc/src/lib.rs @@ -21,7 +21,6 @@ pub mod database; pub mod driver; pub mod statement; -use adbc_core::error::{Error, Status}; use driver::SedonaDriver; -adbc_core::export_driver!(AdbcSedonadbDriverInit, SedonaDriver); +adbc_ffi::export_driver!(AdbcSedonadbDriverInit, SedonaDriver); diff --git a/rust/sedona-geo/src/st_intersection_aggr.rs b/rust/sedona-geo/src/st_intersection_aggr.rs index 446290f8..c133c996 100644 --- a/rust/sedona-geo/src/st_intersection_aggr.rs +++ b/rust/sedona-geo/src/st_intersection_aggr.rs @@ -31,9 +31,9 @@ use sedona_schema::{ datatypes::{SedonaType, WKB_GEOMETRY}, matchers::ArgMatcher, }; -use wkb::reader::Wkb; use wkb::writer::write_geometry; use wkb::Endianness; +use wkb::{reader::Wkb, writer::WriteOptions}; /// ST_Intersection_Aggr() implementation pub fn st_intersection_aggr_impl() -> SedonaAccumulatorRef { @@ -133,7 +133,13 @@ impl IntersectionAccumulator { fn geometry_to_wkb(&self, geom: &geo::Geometry) -> Option> { let mut wkb_bytes = Vec::new(); - match write_geometry(&mut wkb_bytes, geom, Endianness::LittleEndian) { + match write_geometry( + &mut wkb_bytes, + geom, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) { Ok(_) => Some(wkb_bytes), Err(_) => None, } diff --git a/rust/sedona-geo/src/st_union_aggr.rs b/rust/sedona-geo/src/st_union_aggr.rs index 1260de58..7e5b1850 100644 --- a/rust/sedona-geo/src/st_union_aggr.rs +++ b/rust/sedona-geo/src/st_union_aggr.rs @@ -31,9 +31,9 @@ use sedona_schema::{ datatypes::{SedonaType, WKB_GEOMETRY}, matchers::ArgMatcher, }; -use wkb::reader::Wkb; use wkb::writer::write_geometry; use wkb::Endianness; +use wkb::{reader::Wkb, writer::WriteOptions}; /// ST_Union_Aggr() implementation pub fn st_union_aggr_impl() -> SedonaAccumulatorRef { @@ -127,7 +127,13 @@ impl UnionAccumulator { fn geometry_to_wkb(&self, geom: &geo::Geometry) -> Option> { let mut wkb_bytes = Vec::new(); - match write_geometry(&mut wkb_bytes, geom, Endianness::LittleEndian) { + match write_geometry( + &mut wkb_bytes, + geom, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) { Ok(_) => Some(wkb_bytes), Err(_) => None, } diff --git a/rust/sedona-geo/src/to_geo.rs b/rust/sedona-geo/src/to_geo.rs index 7f24252c..e27e0b45 100644 --- a/rust/sedona-geo/src/to_geo.rs +++ b/rust/sedona-geo/src/to_geo.rs @@ -129,11 +129,6 @@ mod tests { let err = item_to_geometry(unsupported).unwrap_err(); assert!(err.message().starts_with("geo kernel implementation")); - let unsupported = - Wkt::from_str("GEOMETRYCOLLECTION (GEOMETRYCOLLECTION(POINT (1 2)))").unwrap(); - let err = item_to_geometry(unsupported).unwrap_err(); - assert!(err.message().starts_with("geo kernel implementation")); - let unsupported = Wkt::from_str("GEOMETRYCOLLECTION (POINT EMPTY)").unwrap(); let err = item_to_geometry(unsupported).unwrap_err(); assert!(err.message().starts_with("geo kernel implementation")); @@ -148,7 +143,8 @@ mod tests { "MULTIPOINT (1 2, 3 4)", "MULTILINESTRING ((1 2, 3 4))", "MULTIPOLYGON (((0 0, 1 0, 0 1, 0 0)))", - "GEOMETRYCOLLECTION(POINT (1 2))" + "GEOMETRYCOLLECTION(POINT (1 2))", + "GEOMETRYCOLLECTION (GEOMETRYCOLLECTION(POINT (1 2)))" )] wkt_value: &str, ) { @@ -166,6 +162,7 @@ mod tests { Some("MULTILINESTRING ((1 2, 3 4))"), Some("MULTIPOLYGON (((0 0, 1 0, 0 1, 0 0)))"), Some("GEOMETRYCOLLECTION(POINT (1 2))"), + Some("GEOMETRYCOLLECTION (GEOMETRYCOLLECTION(POINT (1 2)))"), None, ]; let args = vec![ColumnarValue::Array(create_array_storage( diff --git a/rust/sedona-geometry/src/bounds.rs b/rust/sedona-geometry/src/bounds.rs index 0f50040b..e918d448 100644 --- a/rust/sedona-geometry/src/bounds.rs +++ b/rust/sedona-geometry/src/bounds.rs @@ -223,6 +223,7 @@ mod test { use super::*; use rstest::rstest; use std::{iter::zip, str::FromStr}; + use wkb::{writer::WriteOptions, Endianness}; use wkt::Wkt; pub fn wkt_bounds_xy(wkt_value: &str) -> Result { @@ -441,7 +442,14 @@ mod test { fn test_wkb_bounds_xy() { let wkt: Wkt = Wkt::from_str("POINT (0 1)").unwrap(); let mut out = Vec::new(); - wkb::writer::write_geometry(&mut out, &wkt, wkb::Endianness::LittleEndian).unwrap(); + wkb::writer::write_geometry( + &mut out, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); assert_eq!( wkb_bounds_xy(&out).unwrap(), BoundingBox::xy((0, 0), (1, 1)) diff --git a/rust/sedona-geometry/src/is_empty.rs b/rust/sedona-geometry/src/is_empty.rs index ad3f7d50..444b3d9f 100644 --- a/rust/sedona-geometry/src/is_empty.rs +++ b/rust/sedona-geometry/src/is_empty.rs @@ -51,13 +51,21 @@ mod tests { use super::*; use std::str::FromStr; use wkb::reader::read_wkb; - use wkb::writer::write_geometry; + use wkb::writer::{write_geometry, WriteOptions}; + use wkb::Endianness; use wkt::Wkt; fn create_wkb_bytes_from_wkt(wkt_str: &str) -> Vec { let wkt: Wkt = Wkt::from_str(wkt_str).unwrap(); let mut wkb_bytes = vec![]; - write_geometry(&mut wkb_bytes, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb_bytes, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); wkb_bytes } diff --git a/rust/sedona-geometry/src/wkb_factory.rs b/rust/sedona-geometry/src/wkb_factory.rs index efa9f09f..000788f0 100644 --- a/rust/sedona-geometry/src/wkb_factory.rs +++ b/rust/sedona-geometry/src/wkb_factory.rs @@ -469,7 +469,8 @@ fn count_to_u32(count: usize) -> Result { mod test { use std::str::FromStr; use wkb::reader::read_wkb; - use wkb::writer::write_geometry; + use wkb::writer::{write_geometry, WriteOptions}; + use wkb::Endianness; use wkt::Wkt; use super::*; @@ -478,7 +479,14 @@ mod test { fn test_wkb_point() { let wkt: Wkt = Wkt::from_str("POINT (0 1)").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); assert_eq!(wkb_point((0.0, 1.0)).unwrap(), wkb); } @@ -533,12 +541,26 @@ mod test { fn test_wkb_linestring() { let wkt: Wkt = Wkt::from_str("LINESTRING EMPTY").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); assert_eq!(wkb_linestring([].into_iter()).unwrap(), wkb); let wkt: Wkt = Wkt::from_str("LINESTRING (0 1, 2 3)").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); assert_eq!( wkb_linestring([(0.0, 1.0), (2.0, 3.0)].into_iter()).unwrap(), wkb @@ -584,12 +606,26 @@ mod test { fn test_wkb_multilinestring() { let wkt: Wkt = Wkt::from_str("MULTILINESTRING EMPTY").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); assert_eq!(wkb_multilinestring([].into_iter()).unwrap(), wkb); let wkt: Wkt = Wkt::from_str("MULTILINESTRING ((0 0, 1 1, 2 2), (3 3, 4 4))").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); let linestrings = vec![ vec![(0.0, 0.0), (1.0, 1.0), (2.0, 2.0)], @@ -603,12 +639,26 @@ mod test { fn test_wkb_polygon() { let wkt: Wkt = Wkt::from_str("POLYGON EMPTY").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); assert_eq!(wkb_polygon([].into_iter()).unwrap(), wkb); let wkt: Wkt = Wkt::from_str("POLYGON ((0 0, 1 0, 0 1, 0 0))").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); assert_eq!( wkb_polygon([(0.0, 0.0), (1.0, 0.0), (0.0, 1.0), (0.0, 0.0)].into_iter()).unwrap(), wkb @@ -697,13 +747,27 @@ mod test { fn test_wkb_multipolygon() { let wkt: Wkt = Wkt::from_str("MULTIPOLYGON EMPTY").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); assert_eq!(wkb_multipolygon([].into_iter()).unwrap(), wkb); let wkt: Wkt = Wkt::from_str("MULTIPOLYGON (((0 0, 1 0, 0 1, 0 0)), ((2 2, 3 2, 2 3, 2 2)))").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); let polygons = vec![ vec![(0.0, 0.0), (1.0, 0.0), (0.0, 1.0), (0.0, 0.0)], @@ -717,12 +781,26 @@ mod test { fn test_wkb_multipoint() { let wkt: Wkt = Wkt::from_str("MULTIPOINT EMPTY").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); assert_eq!(wkb_multipoint([].into_iter()).unwrap(), wkb); let wkt: Wkt = Wkt::from_str("MULTIPOINT ((0 0), (1 1))").unwrap(); let mut wkb = vec![]; - write_geometry(&mut wkb, &wkt, wkb::Endianness::LittleEndian).unwrap(); + write_geometry( + &mut wkb, + &wkt, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); let points = vec![(0.0, 0.0), (1.0, 1.0)]; assert_eq!(wkb_multipoint(points.into_iter()).unwrap(), wkb); diff --git a/rust/sedona-spatial-join/Cargo.toml b/rust/sedona-spatial-join/Cargo.toml index 54c48514..2cf6c146 100644 --- a/rust/sedona-spatial-join/Cargo.toml +++ b/rust/sedona-spatial-join/Cargo.toml @@ -43,6 +43,7 @@ datafusion-execution = { workspace = true } datafusion-common-runtime = { workspace = true } futures = { workspace = true } parking_lot = { workspace = true } +geo = { workspace = true } geo-generic-alg = { path = "../geo-generic-alg" } geo-traits = { workspace = true, features = ["geo-types"] } geo-traits-ext = { path = "../geo-traits-ext" } @@ -54,6 +55,7 @@ sedona-geo = { path = "../sedona-geo" } sedona-geometry = { path = "../sedona-geometry" } sedona-schema = { path = "../sedona-schema" } sedona-tg = { path = "../../c/sedona-tg" } +sedona-geos = { path = "../../c/sedona-geos" } wkb = { workspace = true } geo-index = { workspace = true } geos = { workspace = true } @@ -65,5 +67,4 @@ rstest = { workspace = true } sedona-testing = { path = "../sedona-testing" } wkt = { workspace = true } tokio = { workspace = true, features = ["macros"] } -sedona-geos = { path = "../../c/sedona-geos" } rand = { workspace = true } diff --git a/rust/sedona-spatial-join/src/refine/geo.rs b/rust/sedona-spatial-join/src/refine/geo.rs index 3b555e74..c227eb06 100644 --- a/rust/sedona-spatial-join/src/refine/geo.rs +++ b/rust/sedona-spatial-join/src/refine/geo.rs @@ -17,9 +17,8 @@ use std::sync::{Arc, OnceLock}; use datafusion_common::Result; -use geo_generic_alg::{ - line_measures::DistanceExt, Contains, Distance, Euclidean, Intersects, Relate, Within, -}; +use geo::{Contains, Relate, Within}; +use geo_generic_alg::{line_measures::DistanceExt, Intersects}; use sedona_common::{sedona_internal_err, ExecutionMode, SpatialJoinOptions}; use sedona_expr::statistics::GeoStatistics; use sedona_geo::to_geo::item_to_geometry; @@ -136,7 +135,7 @@ impl GeoRefiner { Ok(geom) => geom, Err(_) => return Ok(Vec::new()), }; - let probe_geom = geo_generic_alg::PreparedGeometry::from(probe_geom); + let probe_geom = geo::PreparedGeometry::from(probe_geom); for index_result in index_query_results { if self.evaluator.evaluate_prepare_probe( @@ -204,7 +203,7 @@ trait GeoPredicateEvaluator: Send + Sync { fn evaluate_prepare_probe( &self, build: &Wkb, - probe: &geo_generic_alg::PreparedGeometry<'static, geo_types::Geometry>, + probe: &geo::PreparedGeometry<'static, geo_types::Geometry>, distance: Option, ) -> Result; } @@ -237,7 +236,7 @@ impl GeoPredicateEvaluator for GeoIntersects { fn evaluate_prepare_probe( &self, build: &Wkb, - probe: &geo_generic_alg::PreparedGeometry<'static, geo_types::Geometry>, + probe: &geo::PreparedGeometry<'static, geo_types::Geometry>, _distance: Option, ) -> Result { let build_geom = match item_to_geometry(build) { @@ -266,7 +265,7 @@ impl GeoPredicateEvaluator for GeoContains { fn evaluate_prepare_probe( &self, build: &Wkb, - probe: &geo_generic_alg::PreparedGeometry<'static, geo_types::Geometry>, + probe: &geo::PreparedGeometry<'static, geo_types::Geometry>, _distance: Option, ) -> Result { let build_geom = match item_to_geometry(build) { @@ -295,7 +294,7 @@ impl GeoPredicateEvaluator for GeoWithin { fn evaluate_prepare_probe( &self, build: &Wkb, - probe: &geo_generic_alg::PreparedGeometry<'static, geo_types::Geometry>, + probe: &geo::PreparedGeometry<'static, geo_types::Geometry>, _distance: Option, ) -> Result { let build_geom = match item_to_geometry(build) { @@ -320,18 +319,13 @@ impl GeoPredicateEvaluator for GeoDistance { fn evaluate_prepare_probe( &self, build: &Wkb, - probe: &geo_generic_alg::PreparedGeometry<'static, geo_types::Geometry>, + probe: &geo::PreparedGeometry<'static, geo_types::Geometry>, distance: Option, ) -> Result { let Some(distance) = distance else { return Ok(false); }; - let build_geom = match item_to_geometry(build) { - Ok(geom) => geom, - Err(_) => return Ok(false), - }; - let euc = Euclidean; - let dist = euc.distance(&build_geom, probe.geometry()); + let dist = build.distance_ext(probe.geometry()); Ok(dist <= distance) } } @@ -358,7 +352,7 @@ macro_rules! impl_relate_evaluator { fn evaluate_prepare_probe( &self, build: &Wkb, - probe: &geo_generic_alg::PreparedGeometry<'static, geo_types::Geometry>, + probe: &geo::PreparedGeometry<'static, geo_types::Geometry>, _distance: Option, ) -> Result { let build_geom = match item_to_geometry(build) { diff --git a/rust/sedona-spatial-join/src/refine/geos.rs b/rust/sedona-spatial-join/src/refine/geos.rs index b6570b70..cc598739 100644 --- a/rust/sedona-spatial-join/src/refine/geos.rs +++ b/rust/sedona-spatial-join/src/refine/geos.rs @@ -24,7 +24,9 @@ use geos::{Geom, PreparedGeometry}; use parking_lot::Mutex; use sedona_common::{sedona_internal_err, ExecutionMode, SpatialJoinOptions}; use sedona_expr::statistics::GeoStatistics; -use wkb::reader::{to_geos::GEOSWkbFactory, Wkb}; +// use wkb::reader::{to_geos::GEOSWkbFactory, Wkb}; +use sedona_geos::wkb_to_geos::GEOSWkbFactory; +use wkb::reader::Wkb; use crate::{ index::IndexQueryResult, diff --git a/rust/sedona-testing/src/create.rs b/rust/sedona-testing/src/create.rs index fd5410ac..9d785d69 100644 --- a/rust/sedona-testing/src/create.rs +++ b/rust/sedona-testing/src/create.rs @@ -20,6 +20,7 @@ use arrow_array::{ArrayRef, BinaryArray, BinaryViewArray}; use datafusion_common::ScalarValue; use datafusion_expr::ColumnarValue; use sedona_schema::datatypes::SedonaType; +use wkb::{writer::WriteOptions, Endianness}; use wkt::Wkt; /// Create a [`ColumnarValue`] array from a sequence of WKT literals @@ -86,7 +87,14 @@ where pub fn make_wkb(wkt_value: &str) -> Vec { let geom = Wkt::::from_str(wkt_value).unwrap(); let mut out: Vec = vec![]; - wkb::writer::write_geometry(&mut out, &geom, Default::default()).unwrap(); + wkb::writer::write_geometry( + &mut out, + &geom, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); out } diff --git a/rust/sedona-testing/src/datagen.rs b/rust/sedona-testing/src/datagen.rs index 4fb73c21..44818603 100644 --- a/rust/sedona-testing/src/datagen.rs +++ b/rust/sedona-testing/src/datagen.rs @@ -40,6 +40,8 @@ use sedona_geometry::types::GeometryTypeId; use sedona_schema::datatypes::{SedonaType, WKB_GEOMETRY}; use std::f64::consts::PI; use std::sync::Arc; +use wkb::writer::WriteOptions; +use wkb::Endianness; /// Builder for generating test data partitions with random geometries. /// @@ -502,7 +504,14 @@ fn generate_random_wkb(rng: &mut R, options: &RandomGeometryOption // Convert geometry to WKB let mut out: Vec = vec![]; - wkb::writer::write_geometry(&mut out, &geometry, Default::default()).unwrap(); + wkb::writer::write_geometry( + &mut out, + &geometry, + &WriteOptions { + endianness: Endianness::LittleEndian, + }, + ) + .unwrap(); out } From 3ff22e88215128ac6af829f8ae32753ebd409054 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Tue, 30 Sep 2025 11:38:09 +0800 Subject: [PATCH 09/17] Clean up --- Cargo.lock | 2 +- Cargo.toml | 3 +-- rust/sedona-spatial-join/src/refine/geos.rs | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 405305e6..1762854e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6457,7 +6457,7 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "wkb" version = "0.9.1" -source = "git+https://github.com/Kontinuation/wkb?branch=expose-more-apis#6bf1a6bbe489f83f633f69cbef6a11ecce844381" +source = "git+https://github.com/Kontinuation/wkb?branch=expose-more-apis#4ac8980161aa8502154bfabf4012d7d5b6ac91ba" dependencies = [ "byteorder", "geo-traits", diff --git a/Cargo.toml b/Cargo.toml index 28e09b27..b9190f26 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -130,7 +130,6 @@ datafusion-ffi = { git = "https://github.com/paleolimbot/datafusion.git", branch datafusion-physical-expr = { git = "https://github.com/paleolimbot/datafusion.git", branch = "local-49-with-patch", package = "datafusion-physical-expr" } datafusion-physical-plan = { git = "https://github.com/paleolimbot/datafusion.git", branch = "local-49-with-patch", package = "datafusion-physical-plan" } +# TODO: remove them once changes we made to geo-index and wkb crates are merged to upstream and released geo-index = { git = "https://github.com/Kontinuation/geo-index.git", branch = "geo-0.31.0" } -# geo-index = { path = "/Users/bopeng/workspace/github/geo-index" } wkb = { git = "https://github.com/Kontinuation/wkb", branch = "expose-more-apis" } -# wkb = { path = "/Users/bopeng/workspace/github/wkb.worktrees/main" } diff --git a/rust/sedona-spatial-join/src/refine/geos.rs b/rust/sedona-spatial-join/src/refine/geos.rs index cc598739..9b4bc298 100644 --- a/rust/sedona-spatial-join/src/refine/geos.rs +++ b/rust/sedona-spatial-join/src/refine/geos.rs @@ -24,7 +24,6 @@ use geos::{Geom, PreparedGeometry}; use parking_lot::Mutex; use sedona_common::{sedona_internal_err, ExecutionMode, SpatialJoinOptions}; use sedona_expr::statistics::GeoStatistics; -// use wkb::reader::{to_geos::GEOSWkbFactory, Wkb}; use sedona_geos::wkb_to_geos::GEOSWkbFactory; use wkb::reader::Wkb; From 3d2bd178024f738c0b1e091b90a1356f9e634530 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Tue, 30 Sep 2025 11:57:41 +0800 Subject: [PATCH 10/17] Add Apache license headers to Rust source files - Applied Apache license headers to 63 Rust source files in geo-generic-alg and geo-traits-ext crates - Added license_ignore.txt to exclude .wkt test fixture files from license checks - Fixes RAT (Release Audit Tool) violations for packaging workflow --- Cargo.toml | 2 +- c/sedona-geos/benches/wkb_to_geos.rs | 16 ++++++++++++++++ c/sedona-geos/src/wkb_to_geos.rs | 16 ++++++++++++++++ dev/release/rat_exclude_files.txt | 1 + rust/geo-generic-alg/benches/area.rs | 16 ++++++++++++++++ rust/geo-generic-alg/benches/centroid.rs | 16 ++++++++++++++++ rust/geo-generic-alg/benches/distance.rs | 16 ++++++++++++++++ rust/geo-generic-alg/benches/intersection.rs | 16 ++++++++++++++++ rust/geo-generic-alg/benches/length.rs | 16 ++++++++++++++++ rust/geo-generic-alg/benches/perimeter.rs | 16 ++++++++++++++++ rust/geo-generic-alg/benches/utils/wkb_util.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/affine_ops.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/area.rs | 16 ++++++++++++++++ .../src/algorithm/bounding_rect.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/centroid.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/convert.rs | 16 ++++++++++++++++ .../src/algorithm/convert_angle_unit.rs | 16 ++++++++++++++++ .../src/algorithm/coordinate_position.rs | 16 ++++++++++++++++ .../geo-generic-alg/src/algorithm/coords_iter.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/dimensions.rs | 16 ++++++++++++++++ .../src/algorithm/euclidean_length.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/extremes.rs | 16 ++++++++++++++++ .../src/algorithm/intersects/collections.rs | 16 ++++++++++++++++ .../src/algorithm/intersects/coordinate.rs | 16 ++++++++++++++++ .../src/algorithm/intersects/line.rs | 16 ++++++++++++++++ .../src/algorithm/intersects/line_string.rs | 16 ++++++++++++++++ .../src/algorithm/intersects/mod.rs | 16 ++++++++++++++++ .../src/algorithm/intersects/point.rs | 16 ++++++++++++++++ .../src/algorithm/intersects/polygon.rs | 16 ++++++++++++++++ .../src/algorithm/intersects/rect.rs | 16 ++++++++++++++++ .../src/algorithm/intersects/triangle.rs | 16 ++++++++++++++++ .../geo-generic-alg/src/algorithm/kernels/mod.rs | 16 ++++++++++++++++ .../src/algorithm/kernels/robust.rs | 16 ++++++++++++++++ .../src/algorithm/kernels/simple.rs | 16 ++++++++++++++++ .../src/algorithm/line_measures/distance.rs | 16 ++++++++++++++++ .../src/algorithm/line_measures/length.rs | 16 ++++++++++++++++ .../metric_spaces/euclidean/distance.rs | 16 ++++++++++++++++ .../line_measures/metric_spaces/euclidean/mod.rs | 16 ++++++++++++++++ .../metric_spaces/euclidean/utils.rs | 16 ++++++++++++++++ .../algorithm/line_measures/metric_spaces/mod.rs | 16 ++++++++++++++++ .../src/algorithm/line_measures/mod.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/map_coords.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/mod.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/rotate.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/scale.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/simplify.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/skew.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/algorithm/translate.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/geometry.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/lib.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/types.rs | 16 ++++++++++++++++ rust/geo-generic-alg/src/utils.rs | 16 ++++++++++++++++ rust/geo-test-fixtures/src/lib.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/coord.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/geometry.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/geometry_collection.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/lib.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/line.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/line_string.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/multi_line_string.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/multi_point.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/multi_polygon.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/point.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/polygon.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/rect.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/triangle.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/type_tag.rs | 16 ++++++++++++++++ rust/geo-traits-ext/src/wkb_ext.rs | 16 ++++++++++++++++ 68 files changed, 1058 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index b9190f26..3646c2ae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -98,7 +98,7 @@ geo = "0.31.0" geo-index = { version = "0.3.1" } -wkb = { version = "0.9.1" } +wkb = "0.9.1" wkt = "0.14.0" parking_lot = "0.12" diff --git a/c/sedona-geos/benches/wkb_to_geos.rs b/c/sedona-geos/benches/wkb_to_geos.rs index f295922c..57ec528c 100644 --- a/c/sedona-geos/benches/wkb_to_geos.rs +++ b/c/sedona-geos/benches/wkb_to_geos.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use criterion::{criterion_group, criterion_main}; use geo::{LineString, Point}; use sedona_geos::wkb_to_geos::GEOSWkbFactory; diff --git a/c/sedona-geos/src/wkb_to_geos.rs b/c/sedona-geos/src/wkb_to_geos.rs index dfd5f91e..b2fc9606 100644 --- a/c/sedona-geos/src/wkb_to_geos.rs +++ b/c/sedona-geos/src/wkb_to_geos.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use std::cell::RefCell; use byteorder::{BigEndian, ByteOrder, LittleEndian}; diff --git a/dev/release/rat_exclude_files.txt b/dev/release/rat_exclude_files.txt index ab4302c9..8a9410ef 100644 --- a/dev/release/rat_exclude_files.txt +++ b/dev/release/rat_exclude_files.txt @@ -18,3 +18,4 @@ r/sedonadb/DESCRIPTION r/sedonadb/NAMESPACE r/sedonadb/src/sedonadb-win.def submodules/geoarrow-data/* +rust/geo-test-fixtures/fixtures/*.wkt diff --git a/rust/geo-generic-alg/benches/area.rs b/rust/geo-generic-alg/benches/area.rs index 32644f25..dbf20100 100644 --- a/rust/geo-generic-alg/benches/area.rs +++ b/rust/geo-generic-alg/benches/area.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use criterion::{criterion_group, criterion_main, Criterion}; use geo_generic_alg::Area; use geo_generic_alg::Polygon; diff --git a/rust/geo-generic-alg/benches/centroid.rs b/rust/geo-generic-alg/benches/centroid.rs index bf4c4ac6..e297f466 100644 --- a/rust/geo-generic-alg/benches/centroid.rs +++ b/rust/geo-generic-alg/benches/centroid.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use criterion::{criterion_group, criterion_main, Criterion}; use geo_generic_alg::Centroid; use geo_generic_alg::Polygon; diff --git a/rust/geo-generic-alg/benches/distance.rs b/rust/geo-generic-alg/benches/distance.rs index 2b252969..f8612e01 100644 --- a/rust/geo-generic-alg/benches/distance.rs +++ b/rust/geo-generic-alg/benches/distance.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use criterion::{criterion_group, criterion_main, Criterion}; use geo::{Distance as GeoDistance, Euclidean}; use geo_generic_alg::algorithm::line_measures::DistanceExt; diff --git a/rust/geo-generic-alg/benches/intersection.rs b/rust/geo-generic-alg/benches/intersection.rs index 5fc396de..2a868c5b 100644 --- a/rust/geo-generic-alg/benches/intersection.rs +++ b/rust/geo-generic-alg/benches/intersection.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use criterion::{criterion_group, criterion_main, Criterion}; use geo_generic_alg::MultiPolygon; use geo_generic_alg::{intersects::Intersects, Centroid}; diff --git a/rust/geo-generic-alg/benches/length.rs b/rust/geo-generic-alg/benches/length.rs index 57db91d1..57c73b9c 100644 --- a/rust/geo-generic-alg/benches/length.rs +++ b/rust/geo-generic-alg/benches/length.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use criterion::{criterion_group, criterion_main, Criterion}; use geo_generic_alg::algorithm::line_measures::{Euclidean, LengthMeasurableExt}; use geo_traits::to_geo::ToGeoGeometry; diff --git a/rust/geo-generic-alg/benches/perimeter.rs b/rust/geo-generic-alg/benches/perimeter.rs index 70ef8cfb..f679f0dc 100644 --- a/rust/geo-generic-alg/benches/perimeter.rs +++ b/rust/geo-generic-alg/benches/perimeter.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use criterion::{criterion_group, criterion_main, Criterion}; use geo_generic_alg::algorithm::line_measures::{Euclidean, LengthMeasurableExt}; use geo_generic_alg::Polygon; diff --git a/rust/geo-generic-alg/benches/utils/wkb_util.rs b/rust/geo-generic-alg/benches/utils/wkb_util.rs index f35a23d6..b76a9403 100644 --- a/rust/geo-generic-alg/benches/utils/wkb_util.rs +++ b/rust/geo-generic-alg/benches/utils/wkb_util.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. pub fn geo_to_wkb(geo: G) -> Vec where G: Into, diff --git a/rust/geo-generic-alg/src/algorithm/affine_ops.rs b/rust/geo-generic-alg/src/algorithm/affine_ops.rs index 31b31dcd..2b2e0a58 100644 --- a/rust/geo-generic-alg/src/algorithm/affine_ops.rs +++ b/rust/geo-generic-alg/src/algorithm/affine_ops.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use num_traits::ToPrimitive; use crate::{Coord, CoordFloat, CoordNum, MapCoords, MapCoordsInPlace}; diff --git a/rust/geo-generic-alg/src/algorithm/area.rs b/rust/geo-generic-alg/src/algorithm/area.rs index d0e75f27..20a1fa03 100644 --- a/rust/geo-generic-alg/src/algorithm/area.rs +++ b/rust/geo-generic-alg/src/algorithm/area.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use geo_traits_ext::*; use crate::{CoordFloat, CoordNum}; diff --git a/rust/geo-generic-alg/src/algorithm/bounding_rect.rs b/rust/geo-generic-alg/src/algorithm/bounding_rect.rs index 0ae3493f..a3060229 100644 --- a/rust/geo-generic-alg/src/algorithm/bounding_rect.rs +++ b/rust/geo-generic-alg/src/algorithm/bounding_rect.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::utils::{partial_max, partial_min}; use crate::{coord, geometry::*, CoordNum}; use core::borrow::Borrow; diff --git a/rust/geo-generic-alg/src/algorithm/centroid.rs b/rust/geo-generic-alg/src/algorithm/centroid.rs index df63b7c4..70202d7f 100644 --- a/rust/geo-generic-alg/src/algorithm/centroid.rs +++ b/rust/geo-generic-alg/src/algorithm/centroid.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use core::borrow::Borrow; use std::cmp::Ordering; diff --git a/rust/geo-generic-alg/src/algorithm/convert.rs b/rust/geo-generic-alg/src/algorithm/convert.rs index 130d7408..90af4934 100644 --- a/rust/geo-generic-alg/src/algorithm/convert.rs +++ b/rust/geo-generic-alg/src/algorithm/convert.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::{Coord, CoordNum, MapCoords}; /// Convert (infalliby) the type of a geometry’s coordinate value. diff --git a/rust/geo-generic-alg/src/algorithm/convert_angle_unit.rs b/rust/geo-generic-alg/src/algorithm/convert_angle_unit.rs index cbaa3dd1..9f871fec 100644 --- a/rust/geo-generic-alg/src/algorithm/convert_angle_unit.rs +++ b/rust/geo-generic-alg/src/algorithm/convert_angle_unit.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use geo_types::Coord; use geo_types::CoordFloat; diff --git a/rust/geo-generic-alg/src/algorithm/coordinate_position.rs b/rust/geo-generic-alg/src/algorithm/coordinate_position.rs index b15e6f60..64d4fce9 100644 --- a/rust/geo-generic-alg/src/algorithm/coordinate_position.rs +++ b/rust/geo-generic-alg/src/algorithm/coordinate_position.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use core::borrow::Borrow; use std::cmp::Ordering; diff --git a/rust/geo-generic-alg/src/algorithm/coords_iter.rs b/rust/geo-generic-alg/src/algorithm/coords_iter.rs index 1dce8af1..5c81b0e5 100644 --- a/rust/geo-generic-alg/src/algorithm/coords_iter.rs +++ b/rust/geo-generic-alg/src/algorithm/coords_iter.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use std::borrow::Borrow; use std::option; use std::slice; diff --git a/rust/geo-generic-alg/src/algorithm/dimensions.rs b/rust/geo-generic-alg/src/algorithm/dimensions.rs index 986e6be6..ed6ee303 100644 --- a/rust/geo-generic-alg/src/algorithm/dimensions.rs +++ b/rust/geo-generic-alg/src/algorithm/dimensions.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use core::borrow::Borrow; use geo_traits_ext::*; diff --git a/rust/geo-generic-alg/src/algorithm/euclidean_length.rs b/rust/geo-generic-alg/src/algorithm/euclidean_length.rs index 52c8e6a7..bb0acf3b 100644 --- a/rust/geo-generic-alg/src/algorithm/euclidean_length.rs +++ b/rust/geo-generic-alg/src/algorithm/euclidean_length.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use core::borrow::Borrow; use std::iter::Sum; diff --git a/rust/geo-generic-alg/src/algorithm/extremes.rs b/rust/geo-generic-alg/src/algorithm/extremes.rs index a4438512..7403fbd8 100644 --- a/rust/geo-generic-alg/src/algorithm/extremes.rs +++ b/rust/geo-generic-alg/src/algorithm/extremes.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::CoordsIter; use crate::{Coord, CoordNum}; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/collections.rs b/rust/geo-generic-alg/src/algorithm/intersects/collections.rs index 26103e8b..4abef485 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/collections.rs +++ b/rust/geo-generic-alg/src/algorithm/intersects/collections.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use core::borrow::Borrow; use geo_traits_ext::*; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs b/rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs index d00d0c6e..e32fc101 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs +++ b/rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use geo_traits_ext::{CoordTag, CoordTraitExt, PointTag, PointTraitExt}; use super::IntersectsTrait; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/line.rs b/rust/geo-generic-alg/src/algorithm/intersects/line.rs index f8f50c37..116add9e 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/line.rs +++ b/rust/geo-generic-alg/src/algorithm/intersects/line.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use geo_traits_ext::*; use super::{point_in_rect, IntersectsTrait}; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/line_string.rs b/rust/geo-generic-alg/src/algorithm/intersects/line_string.rs index af8bd612..4f72fc4c 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/line_string.rs +++ b/rust/geo-generic-alg/src/algorithm/intersects/line_string.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use geo_traits_ext::*; use super::{has_disjoint_bboxes, IntersectsTrait}; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/mod.rs b/rust/geo-generic-alg/src/algorithm/intersects/mod.rs index f33147b5..0e4fec4f 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/mod.rs +++ b/rust/geo-generic-alg/src/algorithm/intersects/mod.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use geo_traits_ext::GeoTraitExtWithTypeTag; use crate::BoundingRect; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/point.rs b/rust/geo-generic-alg/src/algorithm/intersects/point.rs index 164390e3..8834ad07 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/point.rs +++ b/rust/geo-generic-alg/src/algorithm/intersects/point.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use geo_traits_ext::*; use super::IntersectsTrait; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/polygon.rs b/rust/geo-generic-alg/src/algorithm/intersects/polygon.rs index fb37d71a..b990927a 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/polygon.rs +++ b/rust/geo-generic-alg/src/algorithm/intersects/polygon.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use super::{has_disjoint_bboxes, IntersectsTrait}; use crate::coordinate_position::CoordPos; use crate::CoordinatePosition; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/rect.rs b/rust/geo-generic-alg/src/algorithm/intersects/rect.rs index 0969afbb..f7a70925 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/rect.rs +++ b/rust/geo-generic-alg/src/algorithm/intersects/rect.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use geo_traits::CoordTrait; use geo_traits_ext::*; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/triangle.rs b/rust/geo-generic-alg/src/algorithm/intersects/triangle.rs index 0ede78b2..69d948a9 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/triangle.rs +++ b/rust/geo-generic-alg/src/algorithm/intersects/triangle.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use super::IntersectsTrait; use crate::*; use geo_traits_ext::*; diff --git a/rust/geo-generic-alg/src/algorithm/kernels/mod.rs b/rust/geo-generic-alg/src/algorithm/kernels/mod.rs index 2940b65a..c6ab0453 100644 --- a/rust/geo-generic-alg/src/algorithm/kernels/mod.rs +++ b/rust/geo-generic-alg/src/algorithm/kernels/mod.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use num_traits::Zero; use crate::{coord, Coord, CoordNum}; diff --git a/rust/geo-generic-alg/src/algorithm/kernels/robust.rs b/rust/geo-generic-alg/src/algorithm/kernels/robust.rs index b41df55a..f77f9dc5 100644 --- a/rust/geo-generic-alg/src/algorithm/kernels/robust.rs +++ b/rust/geo-generic-alg/src/algorithm/kernels/robust.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use super::{CoordNum, Kernel, Orientation}; use crate::Coord; diff --git a/rust/geo-generic-alg/src/algorithm/kernels/simple.rs b/rust/geo-generic-alg/src/algorithm/kernels/simple.rs index 9bb75ed8..4c297426 100644 --- a/rust/geo-generic-alg/src/algorithm/kernels/simple.rs +++ b/rust/geo-generic-alg/src/algorithm/kernels/simple.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use super::Kernel; use crate::CoordNum; diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs b/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs index ec7c1f66..3be861c1 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. /// Calculate the minimum distance between two geometries. pub trait Distance { /// Note that not all implementations support all geometry combinations, but at least `Point` to `Point` diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/length.rs b/rust/geo-generic-alg/src/algorithm/line_measures/length.rs index f8a9c47f..a19a13d3 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/length.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/length.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use super::Distance; use crate::{CoordFloat, Point}; use geo_traits::{CoordTrait, PolygonTrait}; diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs index 816d99e7..a2136b07 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::{CoordFloat, GeoFloat, Point}; use num_traits::{Bounded, Float}; use std::borrow::Borrow; diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs index 65fa0e6f..091c24fb 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. mod distance; mod utils; pub use distance::DistanceExt; diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs index 6ec25393..4493fe80 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::algorithm::Intersects; use crate::coordinate_position::{coord_pos_relative_to_ring, CoordPos}; use crate::geometry::*; diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs index 9d7d208d..c935da8c 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. pub mod euclidean; pub use euclidean::DistanceExt; pub use euclidean::Euclidean; diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/mod.rs b/rust/geo-generic-alg/src/algorithm/line_measures/mod.rs index 92095d0d..c098604d 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/mod.rs +++ b/rust/geo-generic-alg/src/algorithm/line_measures/mod.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. mod distance; pub use distance::{Distance, DistanceExt}; diff --git a/rust/geo-generic-alg/src/algorithm/map_coords.rs b/rust/geo-generic-alg/src/algorithm/map_coords.rs index 3cb7feff..31928f0c 100644 --- a/rust/geo-generic-alg/src/algorithm/map_coords.rs +++ b/rust/geo-generic-alg/src/algorithm/map_coords.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. pub(crate) use crate::geometry::*; pub(crate) use crate::CoordNum; diff --git a/rust/geo-generic-alg/src/algorithm/mod.rs b/rust/geo-generic-alg/src/algorithm/mod.rs index b4fbece4..e208a98f 100644 --- a/rust/geo-generic-alg/src/algorithm/mod.rs +++ b/rust/geo-generic-alg/src/algorithm/mod.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. /// Kernels to compute various predicates pub mod kernels; pub use kernels::{Kernel, Orientation}; diff --git a/rust/geo-generic-alg/src/algorithm/rotate.rs b/rust/geo-generic-alg/src/algorithm/rotate.rs index 4a624e30..3348183e 100644 --- a/rust/geo-generic-alg/src/algorithm/rotate.rs +++ b/rust/geo-generic-alg/src/algorithm/rotate.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::algorithm::affine_ops::AffineOpsMut; use crate::algorithm::{AffineOps, AffineTransform, BoundingRect, Centroid}; use crate::geometry::*; diff --git a/rust/geo-generic-alg/src/algorithm/scale.rs b/rust/geo-generic-alg/src/algorithm/scale.rs index 04ee494e..2792d3e7 100644 --- a/rust/geo-generic-alg/src/algorithm/scale.rs +++ b/rust/geo-generic-alg/src/algorithm/scale.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::algorithm::affine_ops::AffineOpsMut; use crate::{AffineOps, AffineTransform, BoundingRect, Coord, CoordFloat, CoordNum, Rect}; diff --git a/rust/geo-generic-alg/src/algorithm/simplify.rs b/rust/geo-generic-alg/src/algorithm/simplify.rs index 9ef81e2d..e2b0aa97 100644 --- a/rust/geo-generic-alg/src/algorithm/simplify.rs +++ b/rust/geo-generic-alg/src/algorithm/simplify.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::geometry::{Coord, Line, LineString, MultiLineString, MultiPolygon, Polygon}; use crate::{DistanceExt, GeoFloat}; use geo_traits_ext::*; diff --git a/rust/geo-generic-alg/src/algorithm/skew.rs b/rust/geo-generic-alg/src/algorithm/skew.rs index a94b1542..25c66e8b 100644 --- a/rust/geo-generic-alg/src/algorithm/skew.rs +++ b/rust/geo-generic-alg/src/algorithm/skew.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::algorithm::affine_ops::AffineOpsMut; use crate::{AffineOps, AffineTransform, BoundingRect, Coord, CoordFloat, CoordNum, Rect}; diff --git a/rust/geo-generic-alg/src/algorithm/translate.rs b/rust/geo-generic-alg/src/algorithm/translate.rs index 6580f46c..11ce9050 100644 --- a/rust/geo-generic-alg/src/algorithm/translate.rs +++ b/rust/geo-generic-alg/src/algorithm/translate.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::algorithm::affine_ops::AffineOpsMut; use crate::{AffineOps, AffineTransform, CoordNum}; diff --git a/rust/geo-generic-alg/src/geometry.rs b/rust/geo-generic-alg/src/geometry.rs index a9dd8eb2..b9a97e53 100644 --- a/rust/geo-generic-alg/src/geometry.rs +++ b/rust/geo-generic-alg/src/geometry.rs @@ -1,2 +1,18 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. //! This module makes all geometry types available pub use geo_types::geometry::*; diff --git a/rust/geo-generic-alg/src/lib.rs b/rust/geo-generic-alg/src/lib.rs index e25a6ef7..c4968ad8 100644 --- a/rust/geo-generic-alg/src/lib.rs +++ b/rust/geo-generic-alg/src/lib.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. #[cfg(feature = "use-serde")] #[macro_use] extern crate serde; diff --git a/rust/geo-generic-alg/src/types.rs b/rust/geo-generic-alg/src/types.rs index affda72a..26fe59e4 100644 --- a/rust/geo-generic-alg/src/types.rs +++ b/rust/geo-generic-alg/src/types.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use crate::{GeoFloat, Point}; /// The result of trying to find the closest spot on an object to a point. diff --git a/rust/geo-generic-alg/src/utils.rs b/rust/geo-generic-alg/src/utils.rs index 5cb60732..c15bcfa6 100644 --- a/rust/geo-generic-alg/src/utils.rs +++ b/rust/geo-generic-alg/src/utils.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. //! Internal utility functions, types, and data structures. // The Rust standard library has `max` for `Ord`, but not for `PartialOrd` diff --git a/rust/geo-test-fixtures/src/lib.rs b/rust/geo-test-fixtures/src/lib.rs index 5cb1f256..62ff2c9b 100644 --- a/rust/geo-test-fixtures/src/lib.rs +++ b/rust/geo-test-fixtures/src/lib.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use std::{path::PathBuf, str::FromStr}; use geo_types::{LineString, MultiPolygon, Point, Polygon}; diff --git a/rust/geo-traits-ext/src/coord.rs b/rust/geo-traits-ext/src/coord.rs index 8175ff2a..2a1922da 100644 --- a/rust/geo-traits-ext/src/coord.rs +++ b/rust/geo-traits-ext/src/coord.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. //! Extend CoordTrait traits for the `geo-traits` crate use geo_traits::{CoordTrait, UnimplementedCoord}; diff --git a/rust/geo-traits-ext/src/geometry.rs b/rust/geo-traits-ext/src/geometry.rs index 6bc52a5c..d8fb3548 100644 --- a/rust/geo-traits-ext/src/geometry.rs +++ b/rust/geo-traits-ext/src/geometry.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend GeometryTrait traits for the `geo-traits` crate use core::{borrow::Borrow, panic}; diff --git a/rust/geo-traits-ext/src/geometry_collection.rs b/rust/geo-traits-ext/src/geometry_collection.rs index d0559fca..582e2e75 100644 --- a/rust/geo-traits-ext/src/geometry_collection.rs +++ b/rust/geo-traits-ext/src/geometry_collection.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend GeometryCollectionTrait traits for the `geo-traits` crate use geo_traits::{GeometryCollectionTrait, GeometryTrait, UnimplementedGeometryCollection}; diff --git a/rust/geo-traits-ext/src/lib.rs b/rust/geo-traits-ext/src/lib.rs index 3d3b942e..12729e79 100644 --- a/rust/geo-traits-ext/src/lib.rs +++ b/rust/geo-traits-ext/src/lib.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. //! Extended traits for the `geo-traits` crate //! //! This crate extends the `geo-traits` crate with additional traits and diff --git a/rust/geo-traits-ext/src/line.rs b/rust/geo-traits-ext/src/line.rs index 77dc0af6..1ad57361 100644 --- a/rust/geo-traits-ext/src/line.rs +++ b/rust/geo-traits-ext/src/line.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend LineTrait traits for the `geo-traits` crate use geo_traits::{GeometryTrait, LineTrait, UnimplementedLine}; diff --git a/rust/geo-traits-ext/src/line_string.rs b/rust/geo-traits-ext/src/line_string.rs index 756a8577..0d5a70bf 100644 --- a/rust/geo-traits-ext/src/line_string.rs +++ b/rust/geo-traits-ext/src/line_string.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend LineStringTrait traits for the `geo-traits` crate use geo_traits::{GeometryTrait, LineStringTrait, UnimplementedLineString}; diff --git a/rust/geo-traits-ext/src/multi_line_string.rs b/rust/geo-traits-ext/src/multi_line_string.rs index 8918fd99..1b673fa4 100644 --- a/rust/geo-traits-ext/src/multi_line_string.rs +++ b/rust/geo-traits-ext/src/multi_line_string.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend MultiLineStringTrait traits for the `geo-traits` crate use geo_traits::{GeometryTrait, MultiLineStringTrait, UnimplementedMultiLineString}; diff --git a/rust/geo-traits-ext/src/multi_point.rs b/rust/geo-traits-ext/src/multi_point.rs index e7d24099..425f7991 100644 --- a/rust/geo-traits-ext/src/multi_point.rs +++ b/rust/geo-traits-ext/src/multi_point.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend MultiPointTrait traits for the `geo-traits` crate use geo_traits::{GeometryTrait, MultiPointTrait, UnimplementedMultiPoint}; diff --git a/rust/geo-traits-ext/src/multi_polygon.rs b/rust/geo-traits-ext/src/multi_polygon.rs index 3a1cfd71..cb9cfed2 100644 --- a/rust/geo-traits-ext/src/multi_polygon.rs +++ b/rust/geo-traits-ext/src/multi_polygon.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend MultiPolygonTrait traits for the `geo-traits` crate use geo_traits::{GeometryTrait, MultiPolygonTrait, UnimplementedMultiPolygon}; diff --git a/rust/geo-traits-ext/src/point.rs b/rust/geo-traits-ext/src/point.rs index bafcf164..30d23cc1 100644 --- a/rust/geo-traits-ext/src/point.rs +++ b/rust/geo-traits-ext/src/point.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend PointTrait traits for the `geo-traits` crate use geo_traits::{CoordTrait, GeometryTrait, PointTrait, UnimplementedPoint}; diff --git a/rust/geo-traits-ext/src/polygon.rs b/rust/geo-traits-ext/src/polygon.rs index 335a2574..f34eaacc 100644 --- a/rust/geo-traits-ext/src/polygon.rs +++ b/rust/geo-traits-ext/src/polygon.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend PolygonTrait traits for the `geo-traits` crate use geo_traits::{GeometryTrait, PolygonTrait, UnimplementedPolygon}; diff --git a/rust/geo-traits-ext/src/rect.rs b/rust/geo-traits-ext/src/rect.rs index 88e1781d..2124ce00 100644 --- a/rust/geo-traits-ext/src/rect.rs +++ b/rust/geo-traits-ext/src/rect.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend RectTrait traits for the `geo-traits` crate use geo_traits::{CoordTrait, GeometryTrait, RectTrait, UnimplementedRect}; diff --git a/rust/geo-traits-ext/src/triangle.rs b/rust/geo-traits-ext/src/triangle.rs index 76478775..c12b8986 100644 --- a/rust/geo-traits-ext/src/triangle.rs +++ b/rust/geo-traits-ext/src/triangle.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Extend TriangleTrait traits for the `geo-traits` crate use geo_traits::{GeometryTrait, TriangleTrait, UnimplementedTriangle}; diff --git a/rust/geo-traits-ext/src/type_tag.rs b/rust/geo-traits-ext/src/type_tag.rs index 07b84538..9ec9c792 100644 --- a/rust/geo-traits-ext/src/type_tag.rs +++ b/rust/geo-traits-ext/src/type_tag.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // Geometry type tags for dispatching algorithm traits to the corresponding implementation pub trait GeoTypeTag {} diff --git a/rust/geo-traits-ext/src/wkb_ext.rs b/rust/geo-traits-ext/src/wkb_ext.rs index 33693156..df0f5443 100644 --- a/rust/geo-traits-ext/src/wkb_ext.rs +++ b/rust/geo-traits-ext/src/wkb_ext.rs @@ -1,3 +1,19 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. use std::marker::PhantomData; use crate::*; From 3cf139e3d43ac34ccc327a189cbd29a1236beb17 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Tue, 30 Sep 2025 16:22:35 +0800 Subject: [PATCH 11/17] Fix geo overlay tests --- Cargo.lock | 1 + rust/sedona-geo/src/to_geo.rs | 6 ++++-- rust/sedona-testing/Cargo.toml | 3 ++- rust/sedona-testing/src/compare.rs | 34 +++++++++++++++++++++++++++--- 4 files changed, 38 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1762854e..6e86406c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5180,6 +5180,7 @@ dependencies = [ "datafusion-common", "datafusion-expr", "datafusion-physical-expr", + "geo", "geo-traits", "geo-types", "parquet", diff --git a/rust/sedona-geo/src/to_geo.rs b/rust/sedona-geo/src/to_geo.rs index e27e0b45..a4401125 100644 --- a/rust/sedona-geo/src/to_geo.rs +++ b/rust/sedona-geo/src/to_geo.rs @@ -69,8 +69,10 @@ pub fn item_to_geometry(geo: impl GeometryTrait) -> Result { } // GeometryCollection causes issues because it has a recursive definition and won't work -// with cargo run --release. Thus, we need our own version of this that limits the -// recursion supported in a GeometryCollection. +// with cargo run --release. Thus, we need our own version of this that works around this +// problem by processing GeometryCollection using a free function instead of relying +// on trait resolver. +// See also https://github.com/geoarrow/geoarrow-rs/pull/956. fn to_geometry(item: impl GeometryTrait) -> Option { match item.as_type() { Point(geom) => geom.try_to_point().map(Geometry::Point), diff --git a/rust/sedona-testing/Cargo.toml b/rust/sedona-testing/Cargo.toml index c7e07836..641d8c1e 100644 --- a/rust/sedona-testing/Cargo.toml +++ b/rust/sedona-testing/Cargo.toml @@ -42,7 +42,7 @@ criterion = { workspace = true, optional = true } datafusion-common = { workspace = true } datafusion-expr = { workspace = true } datafusion-physical-expr = { workspace = true } -geo-traits = { workspace = true } +geo-traits = { workspace = true, features = ["geo-types"] } geo-types = { workspace = true } parquet = { workspace = true, features = ["arrow", "snap", "zstd"] } rand = { workspace = true } @@ -52,3 +52,4 @@ sedona-expr = { path = "../sedona-expr" } sedona-schema = { path = "../sedona-schema" } wkb = { workspace = true } wkt = { workspace = true } +geo = { workspace = true } diff --git a/rust/sedona-testing/src/compare.rs b/rust/sedona-testing/src/compare.rs index dac27896..3e2025f4 100644 --- a/rust/sedona-testing/src/compare.rs +++ b/rust/sedona-testing/src/compare.rs @@ -23,7 +23,10 @@ use datafusion_common::{ ScalarValue, }; use datafusion_expr::ColumnarValue; +use geo::Relate; +use geo_traits::to_geo::ToGeoGeometry; use sedona_schema::datatypes::{SedonaType, WKB_GEOMETRY}; +use wkb::reader::Dimension; use crate::create::create_scalar; @@ -104,7 +107,9 @@ pub fn assert_array_equal(actual: &ArrayRef, expected: &ArrayRef) { /// Panics if the values' are not equal, generating reasonable failure messages for geometry /// arrays where the default failure message would otherwise be uninformative. pub fn assert_scalar_equal_wkb_geometry(actual: &ScalarValue, expected_wkt: Option<&str>) { - assert_scalar_equal(actual, &create_scalar(expected_wkt, &WKB_GEOMETRY)); + let expected = create_scalar(expected_wkt, &WKB_GEOMETRY); + assert_eq!(actual.data_type(), DataType::Binary); + assert_wkb_scalar_equal(actual, &expected); } /// Assert two [`ScalarValue`]s are equal @@ -205,9 +210,32 @@ fn assert_wkb_value_equal( ) } (Some(actual_wkb), Some(expected_wkb)) => { + // Quick test: if the binary of the WKB is the same, they are equal if actual_wkb != expected_wkb { - let (actual_wkt, expected_wkt) = (format_wkb(actual_wkb), format_wkb(expected_wkb)); - panic!("{actual_label} != {expected_label}\n{actual_label}:\n {actual_wkt}\n{expected_label}:\n {expected_wkt}") + // Binary of the WKB are not the same, but geometries could be topologically the same. + let expected = wkb::reader::read_wkb(expected_wkb); + let actual = wkb::reader::read_wkb(actual_wkb); + let is_equals = match (expected, actual) { + (Ok(expected_geom), Ok(actual_geom)) => { + if expected_geom.dimension() == Dimension::Xy + && actual_geom.dimension() == Dimension::Xy + { + let expected_geom = expected_geom.to_geometry(); + let actual_geom = actual_geom.to_geometry(); + expected_geom.relate(&actual_geom).is_equal_topo() + } else { + // geo crate does not support 3D/4D geometry operations, so we fall back to using the result + // of byte-wise comparison + false + } + } + _ => false, + }; + if !is_equals { + let (actual_wkt, expected_wkt) = + (format_wkb(actual_wkb), format_wkb(expected_wkb)); + panic!("{actual_label} != {expected_label}\n{actual_label}:\n {actual_wkt}\n{expected_label}:\n {expected_wkt}") + } } } } From 706d36387514e6efd70be11399525d80d0ddc185 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Tue, 30 Sep 2025 23:57:08 +0800 Subject: [PATCH 12/17] Switch git repo of forked dependencies --- Cargo.lock | 4 ++-- Cargo.toml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6e86406c..c2c8a131 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2646,7 +2646,7 @@ dependencies = [ [[package]] name = "geo-index" version = "0.3.1" -source = "git+https://github.com/Kontinuation/geo-index.git?branch=geo-0.31.0#bb50e17c9bf921e147de72e826d4d924c4c298cf" +source = "git+https://github.com/wherobots/geo-index.git?branch=geo-0.31.0#bb50e17c9bf921e147de72e826d4d924c4c298cf" dependencies = [ "bytemuck", "float_next_after", @@ -6458,7 +6458,7 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "wkb" version = "0.9.1" -source = "git+https://github.com/Kontinuation/wkb?branch=expose-more-apis#4ac8980161aa8502154bfabf4012d7d5b6ac91ba" +source = "git+https://github.com/georust/wkb.git?rev=130eb0c2b343bc9299aeafba6d34c2a6e53f3b6a#130eb0c2b343bc9299aeafba6d34c2a6e53f3b6a" dependencies = [ "byteorder", "geo-traits", diff --git a/Cargo.toml b/Cargo.toml index 3646c2ae..b2d0abfe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -131,5 +131,5 @@ datafusion-physical-expr = { git = "https://github.com/paleolimbot/datafusion.gi datafusion-physical-plan = { git = "https://github.com/paleolimbot/datafusion.git", branch = "local-49-with-patch", package = "datafusion-physical-plan" } # TODO: remove them once changes we made to geo-index and wkb crates are merged to upstream and released -geo-index = { git = "https://github.com/Kontinuation/geo-index.git", branch = "geo-0.31.0" } -wkb = { git = "https://github.com/Kontinuation/wkb", branch = "expose-more-apis" } +geo-index = { git = "https://github.com/wherobots/geo-index.git", branch = "geo-0.31.0" } +wkb = { git = "https://github.com/georust/wkb.git", rev = "130eb0c2b343bc9299aeafba6d34c2a6e53f3b6a" } From 35a04691534d0748f2042253134e31a87431d6cd Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Wed, 1 Oct 2025 08:04:28 +0800 Subject: [PATCH 13/17] Switch from geo to geo-types for dev dependency sedona-geos --- Cargo.lock | 2 +- c/sedona-geos/Cargo.toml | 2 +- c/sedona-geos/benches/wkb_to_geos.rs | 2 +- c/sedona-geos/src/wkb_to_geos.rs | 26 +++++++++++++------------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c2c8a131..44f91a38 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5056,8 +5056,8 @@ dependencies = [ "criterion", "datafusion-common", "datafusion-expr", - "geo", "geo-traits", + "geo-types", "geos", "rstest", "sedona", diff --git a/c/sedona-geos/Cargo.toml b/c/sedona-geos/Cargo.toml index 33bc07c6..d92f076f 100644 --- a/c/sedona-geos/Cargo.toml +++ b/c/sedona-geos/Cargo.toml @@ -31,7 +31,7 @@ criterion = { workspace = true } sedona = { path = "../../rust/sedona" } sedona-testing = { path = "../../rust/sedona-testing", features = ["criterion"] } rstest = { workspace = true } -geo = { workspace = true } +geo-types = { workspace = true } [dependencies] arrow-schema = { workspace = true } diff --git a/c/sedona-geos/benches/wkb_to_geos.rs b/c/sedona-geos/benches/wkb_to_geos.rs index 57ec528c..cd2b9dbb 100644 --- a/c/sedona-geos/benches/wkb_to_geos.rs +++ b/c/sedona-geos/benches/wkb_to_geos.rs @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. use criterion::{criterion_group, criterion_main}; -use geo::{LineString, Point}; +use geo_types::{LineString, Point}; use sedona_geos::wkb_to_geos::GEOSWkbFactory; use wkb::Endianness; diff --git a/c/sedona-geos/src/wkb_to_geos.rs b/c/sedona-geos/src/wkb_to_geos.rs index b2fc9606..9bd83507 100644 --- a/c/sedona-geos/src/wkb_to_geos.rs +++ b/c/sedona-geos/src/wkb_to_geos.rs @@ -288,7 +288,7 @@ fn save_f64_to_scratch(scratch: &mut Vec, buf: &[u8], num_ord #[cfg(test)] mod test { use super::*; - use geo::{ + use geo_types::{ line_string, point, polygon, Geometry, GeometryCollection, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon, }; @@ -483,7 +483,7 @@ mod test { let mut buf = Vec::new(); write_line_string( &mut buf, - &geo::LineString::new(vec![]), + &LineString::new(vec![]), &WriteOptions { endianness: Endianness::LittleEndian, }, @@ -528,7 +528,7 @@ mod test { let mut buf = Vec::new(); write_multi_point( &mut buf, - &geo::MultiPoint::new(vec![]), + &MultiPoint::new(vec![]), &WriteOptions { endianness: Endianness::LittleEndian, }, @@ -555,7 +555,7 @@ mod test { let mut buf = Vec::new(); write_multi_line_string( &mut buf, - &geo::MultiLineString::new(vec![]), + &MultiLineString::new(vec![]), &WriteOptions { endianness: Endianness::LittleEndian, }, @@ -582,7 +582,7 @@ mod test { let mut buf = Vec::new(); write_multi_polygon( &mut buf, - &geo::MultiPolygon::new(vec![]), + &MultiPolygon::new(vec![]), &WriteOptions { endianness: Endianness::LittleEndian, }, @@ -609,7 +609,7 @@ mod test { let mut buf = Vec::new(); write_geometry_collection( &mut buf, - &geo::GeometryCollection::new_from(vec![]), + &GeometryCollection::new_from(vec![]), &WriteOptions { endianness: Endianness::LittleEndian, }, @@ -625,17 +625,17 @@ mod test { #[test] fn test_nested_geometry_collection() { // Create a geometry collection containing other geometry collections - let inner_gc1 = geo::GeometryCollection::new_from(vec![ + let inner_gc1 = GeometryCollection::new_from(vec![ Geometry::Point(point_2d()), Geometry::LineString(linestring_2d()), ]); - let inner_gc2 = geo::GeometryCollection::new_from(vec![ + let inner_gc2 = GeometryCollection::new_from(vec![ Geometry::Polygon(polygon_2d()), Geometry::MultiPoint(multi_point_2d()), ]); - let outer_gc = geo::GeometryCollection::new_from(vec![ + let outer_gc = GeometryCollection::new_from(vec![ Geometry::GeometryCollection(inner_gc1), Geometry::GeometryCollection(inner_gc2), Geometry::MultiLineString(multi_line_string_2d()), @@ -650,7 +650,7 @@ mod test { #[test] fn test_coordinate_precision() { // Test with high precision coordinates - let high_precision_point = geo::Point::new(123.456789012345, -98.765432109876); + let high_precision_point = Point::new(123.456789012345, -98.765432109876); let geo_geom = Geometry::Point(high_precision_point); test_geometry_conversion(&geo_geom, Endianness::LittleEndian); @@ -660,7 +660,7 @@ mod test { #[test] fn test_large_coordinates() { // Test with very large coordinate values - let large_point = geo::Point::new(1e10, -1e10); + let large_point = Point::new(1e10, -1e10); let geo_geom = Geometry::Point(large_point); test_geometry_conversion(&geo_geom, Endianness::LittleEndian); @@ -670,7 +670,7 @@ mod test { #[test] fn test_negative_coordinates() { // Test with negative coordinates - let negative_point = geo::Point::new(-180.0, -90.0); + let negative_point = Point::new(-180.0, -90.0); let geo_geom = Geometry::Point(negative_point); test_geometry_conversion(&geo_geom, Endianness::LittleEndian); @@ -680,7 +680,7 @@ mod test { #[test] fn test_zero_coordinates() { // Test with zero coordinates - let zero_point = geo::Point::new(0.0, 0.0); + let zero_point = Point::new(0.0, 0.0); let geo_geom = Geometry::Point(zero_point); test_geometry_conversion(&geo_geom, Endianness::LittleEndian); From f02cb772bec153c95dddd6d959ced82249dd8f78 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Wed, 1 Oct 2025 08:36:14 +0800 Subject: [PATCH 14/17] Add sedona- prefix to geo-traits-ext, geo-generic-alg and geo-test-fixtures --- Cargo.lock | 94 +++++++++---------- Cargo.toml | 6 +- dev/release/rat_exclude_files.txt | 2 +- .../Cargo.toml | 6 +- .../README.md | 0 .../benches/area.rs | 16 ++-- .../benches/centroid.rs | 16 ++-- .../benches/distance.rs | 10 +- .../benches/intersection.rs | 54 +++++------ .../benches/length.rs | 10 +- .../benches/perimeter.rs | 12 +-- .../benches/utils/wkb_util.rs | 0 .../src/algorithm/affine_ops.rs | 14 +-- .../src/algorithm/area.rs | 6 +- .../src/algorithm/bounding_rect.rs | 6 +- .../src/algorithm/centroid.rs | 54 +++++------ .../src/algorithm/convert.rs | 4 +- .../src/algorithm/convert_angle_unit.rs | 0 .../src/algorithm/coordinate_position.rs | 6 +- .../src/algorithm/coords_iter.rs | 12 +-- .../src/algorithm/dimensions.rs | 12 +-- .../src/algorithm/euclidean_length.rs | 6 +- .../src/algorithm/extremes.rs | 4 +- .../src/algorithm/intersects/collections.rs | 2 +- .../src/algorithm/intersects/coordinate.rs | 2 +- .../src/algorithm/intersects/line.rs | 2 +- .../src/algorithm/intersects/line_string.rs | 2 +- .../src/algorithm/intersects/mod.rs | 6 +- .../src/algorithm/intersects/point.rs | 2 +- .../src/algorithm/intersects/polygon.rs | 2 +- .../src/algorithm/intersects/rect.rs | 2 +- .../src/algorithm/intersects/triangle.rs | 2 +- .../src/algorithm/kernels/mod.rs | 0 .../src/algorithm/kernels/robust.rs | 0 .../src/algorithm/kernels/simple.rs | 0 .../src/algorithm/line_measures/distance.rs | 0 .../src/algorithm/line_measures/length.rs | 4 +- .../metric_spaces/euclidean/distance.rs | 64 ++++++++----- .../metric_spaces/euclidean/mod.rs | 4 +- .../metric_spaces/euclidean/utils.rs | 4 +- .../line_measures/metric_spaces/mod.rs | 0 .../src/algorithm/line_measures/mod.rs | 0 .../src/algorithm/map_coords.rs | 18 ++-- .../src/algorithm/mod.rs | 0 .../src/algorithm/rotate.rs | 8 +- .../src/algorithm/scale.rs | 12 +-- .../src/algorithm/simplify.rs | 10 +- .../src/algorithm/skew.rs | 12 +-- .../src/algorithm/translate.rs | 4 +- .../src/geometry.rs | 0 .../src/lib.rs | 0 .../src/types.rs | 0 .../src/utils.rs | 0 .../Cargo.toml | 2 +- .../README.md | 0 .../fixtures/east_baton_rouge.wkt | 0 .../fixtures/issue-894/inpa.wkt | 0 .../fixtures/issue-894/inpb.wkt | 0 .../fixtures/issue-894/inpc.wkt | 0 .../fixtures/louisiana.wkt | 2 +- .../fixtures/nl_plots.wkt | 0 .../fixtures/nl_plots_epsg_28992.wkt | 2 +- .../fixtures/nl_zones.wkt | 0 .../fixtures/norway_concave_hull.wkt | 0 .../fixtures/norway_convex_hull.wkt | 2 +- .../fixtures/norway_main.wkt | 2 +- .../fixtures/norway_nonconvex_hull.wkt | 2 +- .../fixtures/poly1.wkt | 2 +- .../fixtures/poly1_hull.wkt | 2 +- .../fixtures/poly2.wkt | 2 +- .../fixtures/poly2_hull.wkt | 2 +- .../fixtures/poly_in_ring.wkt | 2 +- .../fixtures/ring.wkt | 2 +- .../fixtures/shell.wkt | 2 +- .../fixtures/vw_orig.wkt | 2 +- .../fixtures/vw_simplified.wkt | 2 +- .../pp_points.py | 0 .../src/lib.rs | 0 .../Cargo.toml | 2 +- .../README.md | 0 .../src/coord.rs | 0 .../src/geometry.rs | 0 .../src/geometry_collection.rs | 0 .../src/lib.rs | 0 .../src/line.rs | 0 .../src/line_string.rs | 0 .../src/multi_line_string.rs | 0 .../src/multi_point.rs | 0 .../src/multi_polygon.rs | 0 .../src/point.rs | 0 .../src/polygon.rs | 0 .../src/rect.rs | 0 .../src/triangle.rs | 0 .../src/type_tag.rs | 0 .../src/wkb_ext.rs | 0 rust/sedona-geo/Cargo.toml | 2 +- rust/sedona-geo/src/centroid.rs | 4 +- rust/sedona-geo/src/st_area.rs | 2 +- rust/sedona-geo/src/st_centroid.rs | 2 +- rust/sedona-geo/src/st_distance.rs | 2 +- rust/sedona-geo/src/st_dwithin.rs | 2 +- rust/sedona-geo/src/st_intersects.rs | 2 +- rust/sedona-geo/src/st_length.rs | 2 +- rust/sedona-geo/src/st_perimeter.rs | 2 +- rust/sedona-spatial-join/Cargo.toml | 4 +- rust/sedona-spatial-join/src/index.rs | 2 +- .../src/operand_evaluator.rs | 2 +- rust/sedona-spatial-join/src/refine/geo.rs | 2 +- 108 files changed, 294 insertions(+), 280 deletions(-) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/Cargo.toml (92%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/README.md (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/benches/area.rs (84%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/benches/centroid.rs (84%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/benches/distance.rs (98%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/benches/intersection.rs (87%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/benches/length.rs (84%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/benches/perimeter.rs (85%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/benches/utils/wkb_util.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/affine_ops.rs (98%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/area.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/bounding_rect.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/centroid.rs (96%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/convert.rs (94%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/convert_angle_unit.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/coordinate_position.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/coords_iter.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/dimensions.rs (98%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/euclidean_length.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/extremes.rs (97%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/intersects/collections.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/intersects/coordinate.rs (94%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/intersects/line.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/intersects/line_string.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/intersects/mod.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/intersects/point.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/intersects/polygon.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/intersects/rect.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/intersects/triangle.rs (98%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/kernels/mod.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/kernels/robust.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/kernels/simple.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/line_measures/distance.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/line_measures/length.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs (97%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs (97%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/line_measures/metric_spaces/mod.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/line_measures/mod.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/map_coords.rs (98%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/mod.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/rotate.rs (99%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/scale.rs (94%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/simplify.rs (98%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/skew.rs (96%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/algorithm/translate.rs (98%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/geometry.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/lib.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/types.rs (100%) rename rust/{geo-generic-alg => sedona-geo-generic-alg}/src/utils.rs (100%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/Cargo.toml (96%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/README.md (100%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/east_baton_rouge.wkt (100%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/issue-894/inpa.wkt (100%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/issue-894/inpb.wkt (100%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/issue-894/inpc.wkt (100%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/louisiana.wkt (99%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/nl_plots.wkt (100%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/nl_plots_epsg_28992.wkt (99%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/nl_zones.wkt (100%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/norway_concave_hull.wkt (100%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/norway_convex_hull.wkt (98%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/norway_main.wkt (99%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/norway_nonconvex_hull.wkt (95%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/poly1.wkt (98%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/poly1_hull.wkt (99%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/poly2.wkt (99%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/poly2_hull.wkt (99%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/poly_in_ring.wkt (98%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/ring.wkt (98%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/shell.wkt (97%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/vw_orig.wkt (99%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/fixtures/vw_simplified.wkt (99%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/pp_points.py (100%) rename rust/{geo-test-fixtures => sedona-geo-test-fixtures}/src/lib.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/Cargo.toml (97%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/README.md (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/coord.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/geometry.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/geometry_collection.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/lib.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/line.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/line_string.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/multi_line_string.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/multi_point.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/multi_polygon.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/point.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/polygon.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/rect.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/triangle.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/type_tag.rs (100%) rename rust/{geo-traits-ext => sedona-geo-traits-ext}/src/wkb_ext.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 44f91a38..95092f3d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2618,31 +2618,6 @@ dependencies = [ "spade", ] -[[package]] -name = "geo-generic-alg" -version = "0.2.0" -dependencies = [ - "approx", - "criterion", - "float_next_after", - "geo", - "geo-test-fixtures", - "geo-traits", - "geo-traits-ext", - "geo-types", - "i_overlay", - "log", - "num-traits", - "pretty_env_logger", - "rand 0.8.5", - "rand_distr", - "robust", - "rstar", - "serde", - "wkb", - "wkt 0.14.0", -] - [[package]] name = "geo-index" version = "0.3.1" @@ -2659,14 +2634,6 @@ dependencies = [ "wkt 0.14.0", ] -[[package]] -name = "geo-test-fixtures" -version = "0.2.0" -dependencies = [ - "geo-types", - "wkt 0.14.0", -] - [[package]] name = "geo-traits" version = "0.3.0" @@ -2676,17 +2643,6 @@ dependencies = [ "geo-types", ] -[[package]] -name = "geo-traits-ext" -version = "0.2.0" -dependencies = [ - "byteorder", - "geo-traits", - "geo-types", - "num-traits", - "wkb", -] - [[package]] name = "geo-types" version = "0.7.17" @@ -4962,12 +4918,12 @@ dependencies = [ "datafusion-common", "datafusion-expr", "geo", - "geo-generic-alg", "geo-traits", "geo-types", "rstest", "sedona-expr", "sedona-functions", + "sedona-geo-generic-alg", "sedona-geometry", "sedona-schema", "sedona-testing", @@ -4975,6 +4931,50 @@ dependencies = [ "wkt 0.14.0", ] +[[package]] +name = "sedona-geo-generic-alg" +version = "0.2.0" +dependencies = [ + "approx", + "criterion", + "float_next_after", + "geo", + "geo-traits", + "geo-types", + "i_overlay", + "log", + "num-traits", + "pretty_env_logger", + "rand 0.8.5", + "rand_distr", + "robust", + "rstar", + "sedona-geo-test-fixtures", + "sedona-geo-traits-ext", + "serde", + "wkb", + "wkt 0.14.0", +] + +[[package]] +name = "sedona-geo-test-fixtures" +version = "0.2.0" +dependencies = [ + "geo-types", + "wkt 0.14.0", +] + +[[package]] +name = "sedona-geo-traits-ext" +version = "0.2.0" +dependencies = [ + "byteorder", + "geo-traits", + "geo-types", + "num-traits", + "wkb", +] + [[package]] name = "sedona-geoarrow-c" version = "0.2.0" @@ -5146,10 +5146,8 @@ dependencies = [ "float_next_after", "futures", "geo", - "geo-generic-alg", "geo-index", "geo-traits", - "geo-traits-ext", "geo-types", "geos", "parking_lot", @@ -5159,6 +5157,8 @@ dependencies = [ "sedona-expr", "sedona-functions", "sedona-geo", + "sedona-geo-generic-alg", + "sedona-geo-traits-ext", "sedona-geometry", "sedona-geos", "sedona-schema", diff --git a/Cargo.toml b/Cargo.toml index b2d0abfe..58389a63 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,9 +22,9 @@ members = [ "c/sedona-s2geography", "c/sedona-tg", "r/sedonadb/src/rust", - "rust/geo-traits-ext", - "rust/geo-generic-alg", - "rust/geo-test-fixtures", + "rust/sedona-geo-traits-ext", + "rust/sedona-geo-generic-alg", + "rust/sedona-geo-test-fixtures", "rust/sedona-adbc", "rust/sedona-expr", "rust/sedona-functions", diff --git a/dev/release/rat_exclude_files.txt b/dev/release/rat_exclude_files.txt index 8a9410ef..8dd58fbf 100644 --- a/dev/release/rat_exclude_files.txt +++ b/dev/release/rat_exclude_files.txt @@ -18,4 +18,4 @@ r/sedonadb/DESCRIPTION r/sedonadb/NAMESPACE r/sedonadb/src/sedonadb-win.def submodules/geoarrow-data/* -rust/geo-test-fixtures/fixtures/*.wkt +rust/sedona-geo-test-fixtures/fixtures/*.wkt diff --git a/rust/geo-generic-alg/Cargo.toml b/rust/sedona-geo-generic-alg/Cargo.toml similarity index 92% rename from rust/geo-generic-alg/Cargo.toml rename to rust/sedona-geo-generic-alg/Cargo.toml index 6e569972..06b46f4c 100644 --- a/rust/geo-generic-alg/Cargo.toml +++ b/rust/sedona-geo-generic-alg/Cargo.toml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. [package] -name = "geo-generic-alg" +name = "sedona-geo-generic-alg" version.workspace = true homepage.workspace = true repository.workspace = true @@ -33,7 +33,7 @@ multithreading = ["i_overlay/allow_multithreading", "geo-types/multithreading"] float_next_after = { workspace = true } geo-traits = { workspace = true } geo-types = { workspace = true, features = ["approx", "use-rstar_0_12"] } -geo-traits-ext = { path = "../geo-traits-ext" } +sedona-geo-traits-ext = { path = "../sedona-geo-traits-ext" } log = "0.4.11" num-traits = { workspace = true } robust = "1.1.0" @@ -42,7 +42,7 @@ serde = { workspace = true, features = ["derive"], optional = true } i_overlay = { version = "4.0.0, < 4.1.0", default-features = false } [dev-dependencies] -geo-test-fixtures = { path = "../geo-test-fixtures" } +sedona-geo-test-fixtures = { path = "../sedona-geo-test-fixtures" } approx = { workspace = true } criterion = { workspace = true } pretty_env_logger = "0.4" diff --git a/rust/geo-generic-alg/README.md b/rust/sedona-geo-generic-alg/README.md similarity index 100% rename from rust/geo-generic-alg/README.md rename to rust/sedona-geo-generic-alg/README.md diff --git a/rust/geo-generic-alg/benches/area.rs b/rust/sedona-geo-generic-alg/benches/area.rs similarity index 84% rename from rust/geo-generic-alg/benches/area.rs rename to rust/sedona-geo-generic-alg/benches/area.rs index dbf20100..ed02a517 100644 --- a/rust/geo-generic-alg/benches/area.rs +++ b/rust/sedona-geo-generic-alg/benches/area.rs @@ -15,16 +15,16 @@ // specific language governing permissions and limitations // under the License. use criterion::{criterion_group, criterion_main, Criterion}; -use geo_generic_alg::Area; -use geo_generic_alg::Polygon; use geo_traits::to_geo::ToGeoGeometry; +use sedona_geo_generic_alg::Area; +use sedona_geo_generic_alg::Polygon; #[path = "utils/wkb_util.rs"] mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { c.bench_function("area_generic_f32", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -33,7 +33,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("area_generic", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -42,7 +42,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("area_geo_f32", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -51,7 +51,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("area_geo", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -60,7 +60,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("area_wkb", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); @@ -71,7 +71,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("area_wkb_convert", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); diff --git a/rust/geo-generic-alg/benches/centroid.rs b/rust/sedona-geo-generic-alg/benches/centroid.rs similarity index 84% rename from rust/geo-generic-alg/benches/centroid.rs rename to rust/sedona-geo-generic-alg/benches/centroid.rs index e297f466..629b2226 100644 --- a/rust/geo-generic-alg/benches/centroid.rs +++ b/rust/sedona-geo-generic-alg/benches/centroid.rs @@ -15,16 +15,16 @@ // specific language governing permissions and limitations // under the License. use criterion::{criterion_group, criterion_main, Criterion}; -use geo_generic_alg::Centroid; -use geo_generic_alg::Polygon; use geo_traits::to_geo::ToGeoGeometry; +use sedona_geo_generic_alg::Centroid; +use sedona_geo_generic_alg::Polygon; #[path = "utils/wkb_util.rs"] mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { c.bench_function("centroid_generic_f32", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -33,7 +33,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("centroid_generic", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -42,7 +42,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("centroid_geo_f32", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -51,7 +51,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("centroid_geo", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -60,7 +60,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("centroid_wkb", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); @@ -71,7 +71,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("centroid_wkb_convert", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); diff --git a/rust/geo-generic-alg/benches/distance.rs b/rust/sedona-geo-generic-alg/benches/distance.rs similarity index 98% rename from rust/geo-generic-alg/benches/distance.rs rename to rust/sedona-geo-generic-alg/benches/distance.rs index f8612e01..fcda33e9 100644 --- a/rust/geo-generic-alg/benches/distance.rs +++ b/rust/sedona-geo-generic-alg/benches/distance.rs @@ -16,8 +16,8 @@ // under the License. use criterion::{criterion_group, criterion_main, Criterion}; use geo::{Distance as GeoDistance, Euclidean}; -use geo_generic_alg::algorithm::line_measures::DistanceExt; -use geo_generic_alg::{coord, LineString, MultiPolygon, Point, Polygon}; +use sedona_geo_generic_alg::algorithm::line_measures::DistanceExt; +use sedona_geo_generic_alg::{coord, LineString, MultiPolygon, Point, Polygon}; #[path = "utils/wkb_util.rs"] mod wkb_util; @@ -79,7 +79,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("distance_linestring_to_linestring", |bencher| { - let ls1 = geo_test_fixtures::norway_main::(); + let ls1 = sedona_geo_test_fixtures::norway_main::(); let ls2 = LineString::from(vec![ coord!(x: 100.0, y: 100.0), coord!(x: 200.0, y: 200.0), @@ -136,7 +136,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("distance_wkb_linestring_to_linestring", |bencher| { - let ls1 = geo_test_fixtures::norway_main::(); + let ls1 = sedona_geo_test_fixtures::norway_main::(); let ls2 = LineString::from(vec![ coord!(x: 100.0, y: 100.0), coord!(x: 200.0, y: 200.0), @@ -195,7 +195,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("distance_concrete_linestring_to_linestring", |bencher| { - let ls1 = geo_test_fixtures::norway_main::(); + let ls1 = sedona_geo_test_fixtures::norway_main::(); let ls2 = LineString::from(vec![ coord!(x: 100.0, y: 100.0), coord!(x: 200.0, y: 200.0), diff --git a/rust/geo-generic-alg/benches/intersection.rs b/rust/sedona-geo-generic-alg/benches/intersection.rs similarity index 87% rename from rust/geo-generic-alg/benches/intersection.rs rename to rust/sedona-geo-generic-alg/benches/intersection.rs index 2a868c5b..1d4de009 100644 --- a/rust/geo-generic-alg/benches/intersection.rs +++ b/rust/sedona-geo-generic-alg/benches/intersection.rs @@ -15,17 +15,17 @@ // specific language governing permissions and limitations // under the License. use criterion::{criterion_group, criterion_main, Criterion}; -use geo_generic_alg::MultiPolygon; -use geo_generic_alg::{intersects::Intersects, Centroid}; use geo_traits::to_geo::ToGeoGeometry; use geo_types::Geometry; +use sedona_geo_generic_alg::MultiPolygon; +use sedona_geo_generic_alg::{intersects::Intersects, Centroid}; #[path = "utils/wkb_util.rs"] mod wkb_util; fn multi_polygon_intersection(c: &mut Criterion) { - let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); let plot_geoms: Vec = plot_polygons.into_iter().map(|p| p.into()).collect(); let zone_geoms: Vec = zone_polygons.into_iter().map(|p| p.into()).collect(); @@ -71,8 +71,8 @@ fn multi_polygon_intersection(c: &mut Criterion) { } fn multi_polygon_intersection_wkb(c: &mut Criterion) { - let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); // Convert intersected polygons to WKB let mut plot_polygon_wkbs = Vec::new(); @@ -108,8 +108,8 @@ fn multi_polygon_intersection_wkb(c: &mut Criterion) { } fn multi_polygon_intersection_wkb_aligned(c: &mut Criterion) { - let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); // Convert intersected polygons to WKB let mut plot_polygon_wkbs = Vec::new(); @@ -149,8 +149,8 @@ fn multi_polygon_intersection_wkb_aligned(c: &mut Criterion) { } fn multi_polygon_intersection_wkb_conv(c: &mut Criterion) { - let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); // Convert intersected polygons to WKB let mut plot_polygon_wkbs = Vec::new(); @@ -188,8 +188,8 @@ fn multi_polygon_intersection_wkb_conv(c: &mut Criterion) { } fn point_polygon_intersection(c: &mut Criterion) { - let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); let plot_geoms: Vec = plot_polygons .into_iter() .map(|p| { @@ -221,8 +221,8 @@ fn point_polygon_intersection(c: &mut Criterion) { } fn point_polygon_intersection_wkb(c: &mut Criterion) { - let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); // Convert intersected polygons to WKB let mut plot_centroid_wkbs = Vec::new(); @@ -249,8 +249,8 @@ fn point_polygon_intersection_wkb(c: &mut Criterion) { } fn point_polygon_intersection_wkb_conv(c: &mut Criterion) { - let plot_polygons: MultiPolygon = geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); // Convert intersected polygons to WKB let mut plot_centroid_wkbs = Vec::new(); @@ -279,13 +279,13 @@ fn point_polygon_intersection_wkb_conv(c: &mut Criterion) { } fn rect_intersection(c: &mut Criterion) { - use geo_generic_alg::algorithm::BoundingRect; - use geo_generic_alg::Rect; - let plot_bbox: Vec = geo_test_fixtures::nl_plots_wgs84() + use sedona_geo_generic_alg::algorithm::BoundingRect; + use sedona_geo_generic_alg::Rect; + let plot_bbox: Vec = sedona_geo_test_fixtures::nl_plots_wgs84() .iter() .map(|plot| plot.bounding_rect().unwrap()) .collect(); - let zone_bbox: Vec = geo_test_fixtures::nl_zones() + let zone_bbox: Vec = sedona_geo_test_fixtures::nl_zones() .iter() .map(|plot| plot.bounding_rect().unwrap()) .collect(); @@ -312,13 +312,13 @@ fn rect_intersection(c: &mut Criterion) { } fn point_rect_intersection(c: &mut Criterion) { - use geo_generic_alg::algorithm::{BoundingRect, Centroid}; - use geo_generic_alg::geometry::{Point, Rect}; - let plot_centroids: Vec = geo_test_fixtures::nl_plots_wgs84() + use sedona_geo_generic_alg::algorithm::{BoundingRect, Centroid}; + use sedona_geo_generic_alg::geometry::{Point, Rect}; + let plot_centroids: Vec = sedona_geo_test_fixtures::nl_plots_wgs84() .iter() .map(|plot| plot.centroid().unwrap()) .collect(); - let zone_bbox: Vec = geo_test_fixtures::nl_zones() + let zone_bbox: Vec = sedona_geo_test_fixtures::nl_zones() .iter() .map(|plot| plot.bounding_rect().unwrap()) .collect(); @@ -346,12 +346,12 @@ fn point_rect_intersection(c: &mut Criterion) { fn point_triangle_intersection(c: &mut Criterion) { use geo::algorithm::TriangulateEarcut; - use geo_generic_alg::{Point, Triangle}; - let plot_centroids: Vec = geo_test_fixtures::nl_plots_wgs84() + use sedona_geo_generic_alg::{Point, Triangle}; + let plot_centroids: Vec = sedona_geo_test_fixtures::nl_plots_wgs84() .iter() .map(|plot| plot.centroid().unwrap()) .collect(); - let zone_triangles: Vec = geo_test_fixtures::nl_zones() + let zone_triangles: Vec = sedona_geo_test_fixtures::nl_zones() .iter() .flat_map(|plot| plot.earcut_triangles_iter()) .collect(); diff --git a/rust/geo-generic-alg/benches/length.rs b/rust/sedona-geo-generic-alg/benches/length.rs similarity index 84% rename from rust/geo-generic-alg/benches/length.rs rename to rust/sedona-geo-generic-alg/benches/length.rs index 57c73b9c..4f780e73 100644 --- a/rust/geo-generic-alg/benches/length.rs +++ b/rust/sedona-geo-generic-alg/benches/length.rs @@ -15,15 +15,15 @@ // specific language governing permissions and limitations // under the License. use criterion::{criterion_group, criterion_main, Criterion}; -use geo_generic_alg::algorithm::line_measures::{Euclidean, LengthMeasurableExt}; use geo_traits::to_geo::ToGeoGeometry; +use sedona_geo_generic_alg::algorithm::line_measures::{Euclidean, LengthMeasurableExt}; #[path = "utils/wkb_util.rs"] mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { c.bench_function("length_f32", |bencher| { - let linestring = geo_test_fixtures::norway_main::(); + let linestring = sedona_geo_test_fixtures::norway_main::(); bencher.iter(|| { criterion::black_box(criterion::black_box(&linestring).length_ext(&Euclidean)); @@ -31,7 +31,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("length", |bencher| { - let linestring = geo_test_fixtures::norway_main::(); + let linestring = sedona_geo_test_fixtures::norway_main::(); bencher.iter(|| { criterion::black_box(criterion::black_box(&linestring).length_ext(&Euclidean)); @@ -39,7 +39,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("length_wkb", |bencher| { - let linestring = geo_test_fixtures::norway_main::(); + let linestring = sedona_geo_test_fixtures::norway_main::(); let wkb_bytes = wkb_util::geo_to_wkb(linestring); bencher.iter(|| { @@ -49,7 +49,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("length_wkb_convert", |bencher| { - let linestring = geo_test_fixtures::norway_main::(); + let linestring = sedona_geo_test_fixtures::norway_main::(); let wkb_bytes = wkb_util::geo_to_wkb(linestring); bencher.iter(|| { diff --git a/rust/geo-generic-alg/benches/perimeter.rs b/rust/sedona-geo-generic-alg/benches/perimeter.rs similarity index 85% rename from rust/geo-generic-alg/benches/perimeter.rs rename to rust/sedona-geo-generic-alg/benches/perimeter.rs index f679f0dc..6c9a1cad 100644 --- a/rust/geo-generic-alg/benches/perimeter.rs +++ b/rust/sedona-geo-generic-alg/benches/perimeter.rs @@ -15,16 +15,16 @@ // specific language governing permissions and limitations // under the License. use criterion::{criterion_group, criterion_main, Criterion}; -use geo_generic_alg::algorithm::line_measures::{Euclidean, LengthMeasurableExt}; -use geo_generic_alg::Polygon; use geo_traits::to_geo::ToGeoGeometry; +use sedona_geo_generic_alg::algorithm::line_measures::{Euclidean, LengthMeasurableExt}; +use sedona_geo_generic_alg::Polygon; #[path = "utils/wkb_util.rs"] mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { c.bench_function("perimeter_f32", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -33,7 +33,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("perimeter", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -42,7 +42,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("perimeter_wkb", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); @@ -53,7 +53,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("perimeter_wkb_convert", |bencher| { - let norway = geo_test_fixtures::norway_main::(); + let norway = sedona_geo_test_fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); diff --git a/rust/geo-generic-alg/benches/utils/wkb_util.rs b/rust/sedona-geo-generic-alg/benches/utils/wkb_util.rs similarity index 100% rename from rust/geo-generic-alg/benches/utils/wkb_util.rs rename to rust/sedona-geo-generic-alg/benches/utils/wkb_util.rs diff --git a/rust/geo-generic-alg/src/algorithm/affine_ops.rs b/rust/sedona-geo-generic-alg/src/algorithm/affine_ops.rs similarity index 98% rename from rust/geo-generic-alg/src/algorithm/affine_ops.rs rename to rust/sedona-geo-generic-alg/src/algorithm/affine_ops.rs index 2b2e0a58..6ca937a6 100644 --- a/rust/geo-generic-alg/src/algorithm/affine_ops.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/affine_ops.rs @@ -34,8 +34,8 @@ use std::{fmt, ops::Mul, ops::Neg}; /// # Examples /// ## Build up transforms by beginning with a constructor, then chaining mutation operations /// ``` -/// use geo_generic_alg::{AffineOps, AffineTransform}; -/// use geo_generic_alg::{point, line_string, BoundingRect}; +/// use sedona_geo_generic_alg::{AffineOps, AffineTransform}; +/// use sedona_geo_generic_alg::{point, line_string, BoundingRect}; /// use approx::assert_relative_eq; /// /// let line_string = line_string![(x: 0.0, y: 0.0),(x: 1.0, y: 1.0)]; @@ -124,8 +124,8 @@ impl> AffineOpsMut for M { /// # Examples /// ## Build up transforms by beginning with a constructor, then chaining mutation operations /// ``` -/// use geo_generic_alg::{AffineOps, AffineTransform}; -/// use geo_generic_alg::{point, line_string, BoundingRect}; +/// use sedona_geo_generic_alg::{AffineOps, AffineTransform}; +/// use sedona_geo_generic_alg::{point, line_string, BoundingRect}; /// use approx::assert_relative_eq; /// /// let line_string = line_string![(x: 0.0, y: 0.0),(x: 1.0, y: 1.0)]; @@ -142,7 +142,7 @@ impl> AffineOpsMut for M { /// /// ## Create affine transform manually, and access elements using getter methods /// ``` -/// use geo_generic_alg::AffineTransform; +/// use sedona_geo_generic_alg::AffineTransform; /// /// let transform = AffineTransform::new(10.0, 0.0, 400_000.0, 0.0, -10.0, 500_000.0); /// @@ -214,7 +214,7 @@ impl AffineTransform { /// /// This is a **cumulative** operation; the new transform is *added* to the existing transform. /// ``` - /// use geo_generic_alg::AffineTransform; + /// use sedona_geo_generic_alg::AffineTransform; /// let mut transform = AffineTransform::identity(); /// /// // create two transforms that cancel each other @@ -258,7 +258,7 @@ impl AffineTransform { /// that is, whether it's application will be a a no-op. /// /// ``` - /// use geo_generic_alg::AffineTransform; + /// use sedona_geo_generic_alg::AffineTransform; /// let mut transform = AffineTransform::identity(); /// assert!(transform.is_identity()); /// diff --git a/rust/geo-generic-alg/src/algorithm/area.rs b/rust/sedona-geo-generic-alg/src/algorithm/area.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/area.rs rename to rust/sedona-geo-generic-alg/src/algorithm/area.rs index 20a1fa03..6e0f14bc 100644 --- a/rust/geo-generic-alg/src/algorithm/area.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/area.rs @@ -14,7 +14,7 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use crate::{CoordFloat, CoordNum}; use core::borrow::Borrow; @@ -64,8 +64,8 @@ pub(crate) fn twice_signed_ring_area> /// # Examples /// /// ``` -/// use geo_generic_alg::polygon; -/// use geo_generic_alg::Area; +/// use sedona_geo_generic_alg::polygon; +/// use sedona_geo_generic_alg::Area; /// /// let mut polygon = polygon![ /// (x: 0., y: 0.), diff --git a/rust/geo-generic-alg/src/algorithm/bounding_rect.rs b/rust/sedona-geo-generic-alg/src/algorithm/bounding_rect.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/bounding_rect.rs rename to rust/sedona-geo-generic-alg/src/algorithm/bounding_rect.rs index a3060229..ede5c84d 100644 --- a/rust/geo-generic-alg/src/algorithm/bounding_rect.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/bounding_rect.rs @@ -17,8 +17,8 @@ use crate::utils::{partial_max, partial_min}; use crate::{coord, geometry::*, CoordNum}; use core::borrow::Borrow; -use geo_traits_ext::*; use geo_types::private_utils::get_bounding_rect; +use sedona_geo_traits_ext::*; /// Calculation of the bounding rectangle of a geometry. pub trait BoundingRect { @@ -29,8 +29,8 @@ pub trait BoundingRect { /// # Examples /// /// ``` - /// use geo_generic_alg::BoundingRect; - /// use geo_generic_alg::line_string; + /// use sedona_geo_generic_alg::BoundingRect; + /// use sedona_geo_generic_alg::line_string; /// /// let line_string = line_string![ /// (x: 40.02f64, y: 116.34), diff --git a/rust/geo-generic-alg/src/algorithm/centroid.rs b/rust/sedona-geo-generic-alg/src/algorithm/centroid.rs similarity index 96% rename from rust/geo-generic-alg/src/algorithm/centroid.rs rename to rust/sedona-geo-generic-alg/src/algorithm/centroid.rs index 70202d7f..45f5d63d 100644 --- a/rust/geo-generic-alg/src/algorithm/centroid.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/centroid.rs @@ -17,7 +17,7 @@ use core::borrow::Borrow; use std::cmp::Ordering; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use crate::area::{get_linestring_area, Area}; use crate::dimensions::{Dimensions, Dimensions::*, HasDimensions}; @@ -36,8 +36,8 @@ use crate::GeoFloat; /// # Examples /// /// ``` -/// use geo_generic_alg::Centroid; -/// use geo_generic_alg::{point, polygon}; +/// use sedona_geo_generic_alg::Centroid; +/// use sedona_geo_generic_alg::{point, polygon}; /// /// // rhombus shaped polygon /// let polygon = polygon![ @@ -61,8 +61,8 @@ pub trait Centroid { /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{line_string, point}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{line_string, point}; /// /// let line_string = line_string![ /// (x: 40.02f64, y: 116.34), @@ -106,8 +106,8 @@ where /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{Line, point}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{Line, point}; /// /// let line = Line::new( /// point!(x: 1.0f64, y: 3.0), @@ -141,8 +141,8 @@ where /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{line_string, point}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{line_string, point}; /// /// let line_string = line_string![ /// (x: 1.0f32, y: 1.0), @@ -176,8 +176,8 @@ where /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{MultiLineString, line_string, point}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{MultiLineString, line_string, point}; /// /// let multi_line_string = MultiLineString::new(vec![ /// // centroid: (2.5, 2.5) @@ -211,8 +211,8 @@ where /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{polygon, point}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{polygon, point}; /// /// let polygon = polygon![ /// (x: 0.0f32, y: 0.0), @@ -246,8 +246,8 @@ where /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{MultiPolygon, polygon, point}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{MultiPolygon, polygon, point}; /// /// let multi_polygon = MultiPolygon::new(vec![ /// // centroid (1.0, 0.5) @@ -291,8 +291,8 @@ where /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{Rect, point}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{Rect, point}; /// /// let rect = Rect::new( /// point!(x: 0.0f32, y: 0.0), @@ -321,8 +321,8 @@ where /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{Triangle, coord, point}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{Triangle, coord, point}; /// /// let triangle = Triangle::new( /// coord!(x: 0.0f32, y: -1.0), @@ -356,8 +356,8 @@ where /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::point; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::point; /// /// let point = point!(x: 1.0f32, y: 2.0); /// @@ -384,8 +384,8 @@ where /// # Example /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{MultiPoint, Point}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{MultiPoint, Point}; /// /// let empty: Vec = Vec::new(); /// let empty_multi_points: MultiPoint<_> = empty.into(); @@ -413,8 +413,8 @@ where /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{Geometry, Rect, point}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{Geometry, Rect, point}; /// /// let rect = Rect::new( /// point!(x: 0.0f32, y: 0.0), @@ -472,8 +472,8 @@ where /// # Examples /// /// ``` - /// use geo_generic_alg::Centroid; - /// use geo_generic_alg::{Geometry, GeometryCollection, Rect, Triangle, point, coord}; + /// use sedona_geo_generic_alg::Centroid; + /// use sedona_geo_generic_alg::{Geometry, GeometryCollection, Rect, Triangle, point, coord}; /// /// let rect_geometry = Geometry::from(Rect::new( /// point!(x: 0.0f32, y: 0.0), diff --git a/rust/geo-generic-alg/src/algorithm/convert.rs b/rust/sedona-geo-generic-alg/src/algorithm/convert.rs similarity index 94% rename from rust/geo-generic-alg/src/algorithm/convert.rs rename to rust/sedona-geo-generic-alg/src/algorithm/convert.rs index 90af4934..d6385f6c 100644 --- a/rust/geo-generic-alg/src/algorithm/convert.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/convert.rs @@ -21,7 +21,7 @@ use crate::{Coord, CoordNum, MapCoords}; /// # Examples /// /// ```rust -/// use geo_generic_alg::{Convert, LineString, line_string}; +/// use sedona_geo_generic_alg::{Convert, LineString, line_string}; /// /// let line_string_32: LineString = line_string![ /// (x: 5., y: 10.), @@ -57,7 +57,7 @@ where /// # Examples /// /// ```rust -/// use geo_generic_alg::{TryConvert, LineString, line_string}; +/// use sedona_geo_generic_alg::{TryConvert, LineString, line_string}; /// /// let line_string_64: LineString = line_string![ /// (x: 5, y: 10), diff --git a/rust/geo-generic-alg/src/algorithm/convert_angle_unit.rs b/rust/sedona-geo-generic-alg/src/algorithm/convert_angle_unit.rs similarity index 100% rename from rust/geo-generic-alg/src/algorithm/convert_angle_unit.rs rename to rust/sedona-geo-generic-alg/src/algorithm/convert_angle_unit.rs diff --git a/rust/geo-generic-alg/src/algorithm/coordinate_position.rs b/rust/sedona-geo-generic-alg/src/algorithm/coordinate_position.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/coordinate_position.rs rename to rust/sedona-geo-generic-alg/src/algorithm/coordinate_position.rs index 64d4fce9..15211ccb 100644 --- a/rust/geo-generic-alg/src/algorithm/coordinate_position.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/coordinate_position.rs @@ -22,7 +22,7 @@ use crate::intersects::{point_in_rect, value_in_between}; use crate::kernels::*; use crate::GeoNum; use crate::{BoundingRect, HasDimensions, Intersects}; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; /// The position of a `Coord` relative to a `Geometry` #[derive(PartialEq, Eq, Clone, Copy, Debug)] @@ -37,8 +37,8 @@ pub enum CoordPos { /// # Examples /// /// ```rust -/// use geo_generic_alg::{polygon, coord}; -/// use geo_generic_alg::coordinate_position::{CoordinatePosition, CoordPos}; +/// use sedona_geo_generic_alg::{polygon, coord}; +/// use sedona_geo_generic_alg::coordinate_position::{CoordinatePosition, CoordPos}; /// /// let square_poly = polygon![(x: 0.0, y: 0.0), (x: 2.0, y: 0.0), (x: 2.0, y: 2.0), (x: 0.0, y: 2.0), (x: 0.0, y: 0.0)]; /// diff --git a/rust/geo-generic-alg/src/algorithm/coords_iter.rs b/rust/sedona-geo-generic-alg/src/algorithm/coords_iter.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/coords_iter.rs rename to rust/sedona-geo-generic-alg/src/algorithm/coords_iter.rs index 5c81b0e5..2d4b14b9 100644 --- a/rust/geo-generic-alg/src/algorithm/coords_iter.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/coords_iter.rs @@ -19,7 +19,7 @@ use std::option; use std::slice; use geo_traits::*; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use crate::geometry::*; use crate::{coord, CoordNum}; @@ -43,7 +43,7 @@ pub trait CoordsIter { /// # Examples /// /// ``` - /// use geo_generic_alg::coords_iter::CoordsIter; + /// use sedona_geo_generic_alg::coords_iter::CoordsIter; /// /// let multi_point = geo::MultiPoint::new(vec![ /// geo::point!(x: -10., y: 0.), @@ -64,8 +64,8 @@ pub trait CoordsIter { /// # Examples /// /// ``` - /// use geo_generic_alg::coords_iter::CoordsIter; - /// use geo_generic_alg::line_string; + /// use sedona_geo_generic_alg::coords_iter::CoordsIter; + /// use sedona_geo_generic_alg::line_string; /// /// let ls = line_string![ /// (x: 1., y: 2.), @@ -82,8 +82,8 @@ pub trait CoordsIter { /// # Examples /// /// ``` - /// use geo_generic_alg::coords_iter::CoordsIter; - /// use geo_generic_alg::polygon; + /// use sedona_geo_generic_alg::coords_iter::CoordsIter; + /// use sedona_geo_generic_alg::polygon; /// /// // a diamond shape /// let polygon = polygon![ diff --git a/rust/geo-generic-alg/src/algorithm/dimensions.rs b/rust/sedona-geo-generic-alg/src/algorithm/dimensions.rs similarity index 98% rename from rust/geo-generic-alg/src/algorithm/dimensions.rs rename to rust/sedona-geo-generic-alg/src/algorithm/dimensions.rs index ed6ee303..bf3d8b4e 100644 --- a/rust/geo-generic-alg/src/algorithm/dimensions.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/dimensions.rs @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. use core::borrow::Borrow; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use crate::Orientation::Collinear; use crate::{CoordNum, GeoNum}; @@ -27,7 +27,7 @@ use crate::{CoordNum, GeoNum}; /// /// ``` /// use geo_types::{Point, Rect, line_string}; -/// use geo_generic_alg::dimensions::{HasDimensions, Dimensions}; +/// use sedona_geo_generic_alg::dimensions::{HasDimensions, Dimensions}; /// /// let point = Point::new(0.0, 5.0); /// let line_string = line_string![(x: 0.0, y: 0.0), (x: 5.0, y: 5.0), (x: 0.0, y: 5.0)]; @@ -60,7 +60,7 @@ pub trait HasDimensions { /// never be considered empty. /// ``` /// use geo_types::{Point, coord, LineString}; - /// use geo_generic_alg::HasDimensions; + /// use sedona_geo_generic_alg::HasDimensions; /// /// let line_string = LineString::new(vec![ /// coord! { x: 0., y: 0. }, @@ -85,7 +85,7 @@ pub trait HasDimensions { /// /// ``` /// use geo_types::{GeometryCollection, Rect, Point}; - /// use geo_generic_alg::dimensions::{Dimensions, HasDimensions}; + /// use sedona_geo_generic_alg::dimensions::{Dimensions, HasDimensions}; /// /// // normal rectangle /// let rect = Rect::new((0.0, 0.0), (10.0, 10.0)); @@ -119,7 +119,7 @@ pub trait HasDimensions { /// /// ``` /// use geo_types::{GeometryCollection, Rect, Point}; - /// use geo_generic_alg::dimensions::{Dimensions, HasDimensions}; + /// use sedona_geo_generic_alg::dimensions::{Dimensions, HasDimensions}; /// /// // a point has no boundary /// let point = Point::new(10.0, 10.0); @@ -323,7 +323,7 @@ where /// ``` /// use geo_types::line_string; - /// use geo_generic_alg::dimensions::{HasDimensions, Dimensions}; + /// use sedona_geo_generic_alg::dimensions::{HasDimensions, Dimensions}; /// /// let ls = line_string![(x: 0., y: 0.), (x: 0., y: 1.), (x: 1., y: 1.)]; /// assert_eq!(Dimensions::ZeroDimensional, ls.boundary_dimensions()); diff --git a/rust/geo-generic-alg/src/algorithm/euclidean_length.rs b/rust/sedona-geo-generic-alg/src/algorithm/euclidean_length.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/euclidean_length.rs rename to rust/sedona-geo-generic-alg/src/algorithm/euclidean_length.rs index bb0acf3b..6aa09a73 100644 --- a/rust/geo-generic-alg/src/algorithm/euclidean_length.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/euclidean_length.rs @@ -18,7 +18,7 @@ use core::borrow::Borrow; use std::iter::Sum; use crate::CoordFloat; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; /// Calculation of the length #[deprecated( @@ -31,8 +31,8 @@ pub trait EuclideanLength { /// # Examples /// /// ``` - /// use geo_generic_alg::EuclideanLength; - /// use geo_generic_alg::line_string; + /// use sedona_geo_generic_alg::EuclideanLength; + /// use sedona_geo_generic_alg::line_string; /// /// let line_string = line_string![ /// (x: 40.02f64, y: 116.34), diff --git a/rust/geo-generic-alg/src/algorithm/extremes.rs b/rust/sedona-geo-generic-alg/src/algorithm/extremes.rs similarity index 97% rename from rust/geo-generic-alg/src/algorithm/extremes.rs rename to rust/sedona-geo-generic-alg/src/algorithm/extremes.rs index 7403fbd8..a16272de 100644 --- a/rust/geo-generic-alg/src/algorithm/extremes.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/extremes.rs @@ -22,8 +22,8 @@ use crate::{Coord, CoordNum}; /// # Examples /// /// ``` -/// use geo_generic_alg::extremes::Extremes; -/// use geo_generic_alg::polygon; +/// use sedona_geo_generic_alg::extremes::Extremes; +/// use sedona_geo_generic_alg::polygon; /// /// // a diamond shape /// let polygon = polygon![ diff --git a/rust/geo-generic-alg/src/algorithm/intersects/collections.rs b/rust/sedona-geo-generic-alg/src/algorithm/intersects/collections.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/intersects/collections.rs rename to rust/sedona-geo-generic-alg/src/algorithm/intersects/collections.rs index 4abef485..da807285 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/collections.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/intersects/collections.rs @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. use core::borrow::Borrow; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use super::has_disjoint_bboxes; use super::IntersectsTrait; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs b/rust/sedona-geo-generic-alg/src/algorithm/intersects/coordinate.rs similarity index 94% rename from rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs rename to rust/sedona-geo-generic-alg/src/algorithm/intersects/coordinate.rs index e32fc101..29931ba3 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/coordinate.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/intersects/coordinate.rs @@ -14,7 +14,7 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. -use geo_traits_ext::{CoordTag, CoordTraitExt, PointTag, PointTraitExt}; +use sedona_geo_traits_ext::{CoordTag, CoordTraitExt, PointTag, PointTraitExt}; use super::IntersectsTrait; use crate::*; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/line.rs b/rust/sedona-geo-generic-alg/src/algorithm/intersects/line.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/intersects/line.rs rename to rust/sedona-geo-generic-alg/src/algorithm/intersects/line.rs index 116add9e..96f8762d 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/line.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/intersects/line.rs @@ -14,7 +14,7 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use super::{point_in_rect, IntersectsTrait}; use crate::*; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/line_string.rs b/rust/sedona-geo-generic-alg/src/algorithm/intersects/line_string.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/intersects/line_string.rs rename to rust/sedona-geo-generic-alg/src/algorithm/intersects/line_string.rs index 4f72fc4c..d291d86d 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/line_string.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/intersects/line_string.rs @@ -14,7 +14,7 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use super::{has_disjoint_bboxes, IntersectsTrait}; use crate::*; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/mod.rs b/rust/sedona-geo-generic-alg/src/algorithm/intersects/mod.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/intersects/mod.rs rename to rust/sedona-geo-generic-alg/src/algorithm/intersects/mod.rs index 0e4fec4f..aa5c41b4 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/mod.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/intersects/mod.rs @@ -14,7 +14,7 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. -use geo_traits_ext::GeoTraitExtWithTypeTag; +use sedona_geo_traits_ext::GeoTraitExtWithTypeTag; use crate::BoundingRect; use crate::*; @@ -33,8 +33,8 @@ use crate::*; /// # Examples /// /// ``` -/// use geo_generic_alg::Intersects; -/// use geo_generic_alg::line_string; +/// use sedona_geo_generic_alg::Intersects; +/// use sedona_geo_generic_alg::line_string; /// /// let line_string_a = line_string![ /// (x: 3., y: 2.), diff --git a/rust/geo-generic-alg/src/algorithm/intersects/point.rs b/rust/sedona-geo-generic-alg/src/algorithm/intersects/point.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/intersects/point.rs rename to rust/sedona-geo-generic-alg/src/algorithm/intersects/point.rs index 8834ad07..4fec2da5 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/point.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/intersects/point.rs @@ -14,7 +14,7 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use super::IntersectsTrait; use crate::*; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/polygon.rs b/rust/sedona-geo-generic-alg/src/algorithm/intersects/polygon.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/intersects/polygon.rs rename to rust/sedona-geo-generic-alg/src/algorithm/intersects/polygon.rs index b990927a..01142c9f 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/polygon.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/intersects/polygon.rs @@ -18,7 +18,7 @@ use super::{has_disjoint_bboxes, IntersectsTrait}; use crate::coordinate_position::CoordPos; use crate::CoordinatePosition; use crate::GeoNum; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; impl IntersectsTrait for LHS where diff --git a/rust/geo-generic-alg/src/algorithm/intersects/rect.rs b/rust/sedona-geo-generic-alg/src/algorithm/intersects/rect.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/intersects/rect.rs rename to rust/sedona-geo-generic-alg/src/algorithm/intersects/rect.rs index f7a70925..a588c3e8 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/rect.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/intersects/rect.rs @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. use geo_traits::CoordTrait; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use super::IntersectsTrait; use crate::*; diff --git a/rust/geo-generic-alg/src/algorithm/intersects/triangle.rs b/rust/sedona-geo-generic-alg/src/algorithm/intersects/triangle.rs similarity index 98% rename from rust/geo-generic-alg/src/algorithm/intersects/triangle.rs rename to rust/sedona-geo-generic-alg/src/algorithm/intersects/triangle.rs index 69d948a9..33d8c233 100644 --- a/rust/geo-generic-alg/src/algorithm/intersects/triangle.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/intersects/triangle.rs @@ -16,7 +16,7 @@ // under the License. use super::IntersectsTrait; use crate::*; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; impl IntersectsTrait for LHS where diff --git a/rust/geo-generic-alg/src/algorithm/kernels/mod.rs b/rust/sedona-geo-generic-alg/src/algorithm/kernels/mod.rs similarity index 100% rename from rust/geo-generic-alg/src/algorithm/kernels/mod.rs rename to rust/sedona-geo-generic-alg/src/algorithm/kernels/mod.rs diff --git a/rust/geo-generic-alg/src/algorithm/kernels/robust.rs b/rust/sedona-geo-generic-alg/src/algorithm/kernels/robust.rs similarity index 100% rename from rust/geo-generic-alg/src/algorithm/kernels/robust.rs rename to rust/sedona-geo-generic-alg/src/algorithm/kernels/robust.rs diff --git a/rust/geo-generic-alg/src/algorithm/kernels/simple.rs b/rust/sedona-geo-generic-alg/src/algorithm/kernels/simple.rs similarity index 100% rename from rust/geo-generic-alg/src/algorithm/kernels/simple.rs rename to rust/sedona-geo-generic-alg/src/algorithm/kernels/simple.rs diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/distance.rs b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/distance.rs similarity index 100% rename from rust/geo-generic-alg/src/algorithm/line_measures/distance.rs rename to rust/sedona-geo-generic-alg/src/algorithm/line_measures/distance.rs diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/length.rs b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/length.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/line_measures/length.rs rename to rust/sedona-geo-generic-alg/src/algorithm/line_measures/length.rs index a19a13d3..1b511a4f 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/length.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/length.rs @@ -17,7 +17,7 @@ use super::Distance; use crate::{CoordFloat, Point}; use geo_traits::{CoordTrait, PolygonTrait}; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use std::borrow::Borrow; /// Extension trait that enables the modern Length and Perimeter API for WKB and other generic geometry types. @@ -27,7 +27,7 @@ use std::borrow::Borrow; /// /// # Examples /// ``` -/// use geo_generic_alg::algorithm::line_measures::{LengthMeasurableExt, Euclidean}; +/// use sedona_geo_generic_alg::algorithm::line_measures::{LengthMeasurableExt, Euclidean}; /// use geo_types::{LineString, coord}; /// let ls = LineString::new(vec![ /// coord! { x: 0., y: 0. }, diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs similarity index 97% rename from rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs rename to rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs index a2136b07..7cea9e00 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs @@ -36,7 +36,7 @@ use super::utils::{ // │ Generic Trait Distance Extension │ // └──────────────────────────────────────────────────────────┘ -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; /// Extension trait for generic geometry types to calculate distances directly /// using Euclidean metric space without conversion overhead @@ -929,25 +929,31 @@ macro_rules! impl_distance_geometry_to_type { min_distance } else { match self.as_type_ext() { - geo_traits_ext::GeometryTypeExt::Point(g) => g.generic_distance_trait(rhs), - geo_traits_ext::GeometryTypeExt::Line(g) => g.generic_distance_trait(rhs), - geo_traits_ext::GeometryTypeExt::LineString(g) => { + sedona_geo_traits_ext::GeometryTypeExt::Point(g) => { g.generic_distance_trait(rhs) } - geo_traits_ext::GeometryTypeExt::Polygon(g) => { + sedona_geo_traits_ext::GeometryTypeExt::Line(g) => { g.generic_distance_trait(rhs) } - geo_traits_ext::GeometryTypeExt::MultiPoint(g) => { + sedona_geo_traits_ext::GeometryTypeExt::LineString(g) => { g.generic_distance_trait(rhs) } - geo_traits_ext::GeometryTypeExt::MultiLineString(g) => { + sedona_geo_traits_ext::GeometryTypeExt::Polygon(g) => { g.generic_distance_trait(rhs) } - geo_traits_ext::GeometryTypeExt::MultiPolygon(g) => { + sedona_geo_traits_ext::GeometryTypeExt::MultiPoint(g) => { g.generic_distance_trait(rhs) } - geo_traits_ext::GeometryTypeExt::Rect(g) => g.generic_distance_trait(rhs), - geo_traits_ext::GeometryTypeExt::Triangle(g) => { + sedona_geo_traits_ext::GeometryTypeExt::MultiLineString(g) => { + g.generic_distance_trait(rhs) + } + sedona_geo_traits_ext::GeometryTypeExt::MultiPolygon(g) => { + g.generic_distance_trait(rhs) + } + sedona_geo_traits_ext::GeometryTypeExt::Rect(g) => { + g.generic_distance_trait(rhs) + } + sedona_geo_traits_ext::GeometryTypeExt::Triangle(g) => { g.generic_distance_trait(rhs) } } @@ -1061,17 +1067,25 @@ where min_distance } else { match self.as_type_ext() { - geo_traits_ext::GeometryTypeExt::Point(g) => g.generic_distance_trait(rhs), - geo_traits_ext::GeometryTypeExt::Line(g) => g.generic_distance_trait(rhs), - geo_traits_ext::GeometryTypeExt::LineString(g) => g.generic_distance_trait(rhs), - geo_traits_ext::GeometryTypeExt::Polygon(g) => g.generic_distance_trait(rhs), - geo_traits_ext::GeometryTypeExt::MultiPoint(g) => g.generic_distance_trait(rhs), - geo_traits_ext::GeometryTypeExt::MultiLineString(g) => { + sedona_geo_traits_ext::GeometryTypeExt::Point(g) => g.generic_distance_trait(rhs), + sedona_geo_traits_ext::GeometryTypeExt::Line(g) => g.generic_distance_trait(rhs), + sedona_geo_traits_ext::GeometryTypeExt::LineString(g) => { + g.generic_distance_trait(rhs) + } + sedona_geo_traits_ext::GeometryTypeExt::Polygon(g) => g.generic_distance_trait(rhs), + sedona_geo_traits_ext::GeometryTypeExt::MultiPoint(g) => { + g.generic_distance_trait(rhs) + } + sedona_geo_traits_ext::GeometryTypeExt::MultiLineString(g) => { + g.generic_distance_trait(rhs) + } + sedona_geo_traits_ext::GeometryTypeExt::MultiPolygon(g) => { + g.generic_distance_trait(rhs) + } + sedona_geo_traits_ext::GeometryTypeExt::Rect(g) => g.generic_distance_trait(rhs), + sedona_geo_traits_ext::GeometryTypeExt::Triangle(g) => { g.generic_distance_trait(rhs) } - geo_traits_ext::GeometryTypeExt::MultiPolygon(g) => g.generic_distance_trait(rhs), - geo_traits_ext::GeometryTypeExt::Rect(g) => g.generic_distance_trait(rhs), - geo_traits_ext::GeometryTypeExt::Triangle(g) => g.generic_distance_trait(rhs), } } } @@ -1778,7 +1792,7 @@ mod tests { } #[test] fn test_large_polygon_distance() { - let ls = geo_test_fixtures::norway_main::(); + let ls = sedona_geo_test_fixtures::norway_main::(); let poly1 = Polygon::new(ls, vec![]); let vec2 = vec![ (4.921875, 66.33750501996518), @@ -1804,9 +1818,9 @@ mod tests { // A polygon inside another polygon's ring; they're disjoint in the DE-9IM sense: // FF2FF1212 fn test_poly_in_ring() { - let shell = geo_test_fixtures::shell::(); - let ring = geo_test_fixtures::ring::(); - let poly_in_ring = geo_test_fixtures::poly_in_ring::(); + let shell = sedona_geo_test_fixtures::shell::(); + let ring = sedona_geo_test_fixtures::ring::(); + let poly_in_ring = sedona_geo_test_fixtures::poly_in_ring::(); // inside is "inside" outside's ring, but they are disjoint let outside = Polygon::new(shell, vec![ring]); let inside = Polygon::new(poly_in_ring, vec![]); @@ -1825,8 +1839,8 @@ mod tests { #[test] // two ring LineStrings; one encloses the other but they neither touch nor intersect fn test_linestring_distance() { - let ring = geo_test_fixtures::ring::(); - let poly_in_ring = geo_test_fixtures::poly_in_ring::(); + let ring = sedona_geo_test_fixtures::ring::(); + let poly_in_ring = sedona_geo_test_fixtures::poly_in_ring::(); // Test original implementation let distance = Euclidean.distance(&ring, &poly_in_ring); diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs similarity index 97% rename from rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs rename to rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs index 091c24fb..0c1656f7 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/mod.rs @@ -65,8 +65,8 @@ impl Distance, Point> for Euclidean { /// /// # Example /// ``` - /// use geo_generic_alg::{Euclidean, Distance}; - /// use geo_generic_alg::Point; + /// use sedona_geo_generic_alg::{Euclidean, Distance}; + /// use sedona_geo_generic_alg::Point; /// // web mercator /// let new_york_city = Point::new(-8238310.24, 4942194.78); /// // web mercator diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs rename to rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs index 4493fe80..6c79ef8f 100644 --- a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/utils.rs @@ -19,10 +19,10 @@ use crate::coordinate_position::{coord_pos_relative_to_ring, CoordPos}; use crate::geometry::*; use crate::{CoordFloat, GeoFloat, GeoNum}; use geo_traits::{CoordTrait, LineStringTrait}; -use geo_traits_ext::{ +use num_traits::{Bounded, Float}; +use sedona_geo_traits_ext::{ LineStringTraitExt, LineTraitExt, PointTraitExt, PolygonTraitExt, TriangleTraitExt, }; -use num_traits::{Bounded, Float}; // ┌────────────────────────────────────────────────────────────┐ // │ Helper functions for generic distance calculations │ diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs similarity index 100% rename from rust/geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs rename to rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/mod.rs diff --git a/rust/geo-generic-alg/src/algorithm/line_measures/mod.rs b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/mod.rs similarity index 100% rename from rust/geo-generic-alg/src/algorithm/line_measures/mod.rs rename to rust/sedona-geo-generic-alg/src/algorithm/line_measures/mod.rs diff --git a/rust/geo-generic-alg/src/algorithm/map_coords.rs b/rust/sedona-geo-generic-alg/src/algorithm/map_coords.rs similarity index 98% rename from rust/geo-generic-alg/src/algorithm/map_coords.rs rename to rust/sedona-geo-generic-alg/src/algorithm/map_coords.rs index 31928f0c..b70c53b1 100644 --- a/rust/geo-generic-alg/src/algorithm/map_coords.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/map_coords.rs @@ -18,7 +18,7 @@ pub(crate) use crate::geometry::*; pub(crate) use crate::CoordNum; use core::borrow::Borrow; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; use Coord; /// Map a function over all the coordinates in an object, returning a new one @@ -30,8 +30,8 @@ pub trait MapCoords { /// # Examples /// /// ``` - /// use geo_generic_alg::MapCoords; - /// use geo_generic_alg::{Coord, Point}; + /// use sedona_geo_generic_alg::MapCoords; + /// use sedona_geo_generic_alg::{Coord, Point}; /// use approx::assert_relative_eq; /// /// let p1 = Point::new(10., 20.); @@ -73,8 +73,8 @@ pub trait MapCoords { /// /// ``` /// use approx::assert_relative_eq; - /// use geo_generic_alg::MapCoords; - /// use geo_generic_alg::{Coord, Point}; + /// use sedona_geo_generic_alg::MapCoords; + /// use sedona_geo_generic_alg::{Coord, Point}; /// /// let p1 = Point::new(10., 20.); /// let p2 = p1 @@ -99,8 +99,8 @@ pub trait MapCoordsInPlace { /// # Examples /// /// ``` - /// use geo_generic_alg::MapCoordsInPlace; - /// use geo_generic_alg::{Coord, Point}; + /// use sedona_geo_generic_alg::MapCoordsInPlace; + /// use sedona_geo_generic_alg::{Coord, Point}; /// use approx::assert_relative_eq; /// /// let mut p = Point::new(10., 20.); @@ -120,8 +120,8 @@ pub trait MapCoordsInPlace { /// # Examples /// /// ``` - /// use geo_generic_alg::MapCoordsInPlace; - /// use geo_generic_alg::Coord; + /// use sedona_geo_generic_alg::MapCoordsInPlace; + /// use sedona_geo_generic_alg::Coord; /// /// let mut p1 = geo::point!{x: 10u32, y: 20u32}; /// diff --git a/rust/geo-generic-alg/src/algorithm/mod.rs b/rust/sedona-geo-generic-alg/src/algorithm/mod.rs similarity index 100% rename from rust/geo-generic-alg/src/algorithm/mod.rs rename to rust/sedona-geo-generic-alg/src/algorithm/mod.rs diff --git a/rust/geo-generic-alg/src/algorithm/rotate.rs b/rust/sedona-geo-generic-alg/src/algorithm/rotate.rs similarity index 99% rename from rust/geo-generic-alg/src/algorithm/rotate.rs rename to rust/sedona-geo-generic-alg/src/algorithm/rotate.rs index 3348183e..9906b0bf 100644 --- a/rust/geo-generic-alg/src/algorithm/rotate.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/rotate.rs @@ -40,8 +40,8 @@ pub trait Rotate { /// # Examples /// /// ``` - /// use geo_generic_alg::Rotate; - /// use geo_generic_alg::line_string; + /// use sedona_geo_generic_alg::Rotate; + /// use sedona_geo_generic_alg::line_string; /// use approx::assert_relative_eq; /// /// let line_string = line_string![ @@ -78,8 +78,8 @@ pub trait Rotate { /// # Examples /// /// ``` - /// use geo_generic_alg::Rotate; - /// use geo_generic_alg::{line_string, point}; + /// use sedona_geo_generic_alg::Rotate; + /// use sedona_geo_generic_alg::{line_string, point}; /// /// let ls = line_string![ /// (x: 0.0, y: 0.0), diff --git a/rust/geo-generic-alg/src/algorithm/scale.rs b/rust/sedona-geo-generic-alg/src/algorithm/scale.rs similarity index 94% rename from rust/geo-generic-alg/src/algorithm/scale.rs rename to rust/sedona-geo-generic-alg/src/algorithm/scale.rs index 2792d3e7..a9389722 100644 --- a/rust/geo-generic-alg/src/algorithm/scale.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/scale.rs @@ -34,8 +34,8 @@ pub trait Scale { /// # Examples /// /// ``` - /// use geo_generic_alg::Scale; - /// use geo_generic_alg::{LineString, line_string}; + /// use sedona_geo_generic_alg::Scale; + /// use sedona_geo_generic_alg::{LineString, line_string}; /// /// let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)]; /// @@ -55,8 +55,8 @@ pub trait Scale { /// # Examples /// /// ``` - /// use geo_generic_alg::Scale; - /// use geo_generic_alg::{LineString, line_string}; + /// use sedona_geo_generic_alg::Scale; + /// use sedona_geo_generic_alg::{LineString, line_string}; /// /// let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)]; /// @@ -79,8 +79,8 @@ pub trait Scale { /// # Examples /// /// ``` - /// use geo_generic_alg::Scale; - /// use geo_generic_alg::{LineString, line_string, Coord}; + /// use sedona_geo_generic_alg::Scale; + /// use sedona_geo_generic_alg::{LineString, line_string, Coord}; /// /// let ls: LineString = line_string![(x: 0., y: 0.), (x: 10., y: 10.)]; /// diff --git a/rust/geo-generic-alg/src/algorithm/simplify.rs b/rust/sedona-geo-generic-alg/src/algorithm/simplify.rs similarity index 98% rename from rust/geo-generic-alg/src/algorithm/simplify.rs rename to rust/sedona-geo-generic-alg/src/algorithm/simplify.rs index e2b0aa97..52439901 100644 --- a/rust/geo-generic-alg/src/algorithm/simplify.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/simplify.rs @@ -16,7 +16,7 @@ // under the License. use crate::geometry::{Coord, Line, LineString, MultiLineString, MultiPolygon, Polygon}; use crate::{DistanceExt, GeoFloat}; -use geo_traits_ext::*; +use sedona_geo_traits_ext::*; const LINE_STRING_INITIAL_MIN: usize = 2; const POLYGON_INITIAL_MIN: usize = 4; @@ -188,8 +188,8 @@ pub trait Simplify { /// # Examples /// /// ``` - /// use geo_generic_alg::Simplify; - /// use geo_generic_alg::line_string; + /// use sedona_geo_generic_alg::Simplify; + /// use sedona_geo_generic_alg::line_string; /// /// let line_string = line_string![ /// (x: 0.0, y: 0.0), @@ -233,8 +233,8 @@ pub trait SimplifyIdx { /// # Examples /// /// ``` - /// use geo_generic_alg::SimplifyIdx; - /// use geo_generic_alg::line_string; + /// use sedona_geo_generic_alg::SimplifyIdx; + /// use sedona_geo_generic_alg::line_string; /// /// let line_string = line_string![ /// (x: 0.0, y: 0.0), diff --git a/rust/geo-generic-alg/src/algorithm/skew.rs b/rust/sedona-geo-generic-alg/src/algorithm/skew.rs similarity index 96% rename from rust/geo-generic-alg/src/algorithm/skew.rs rename to rust/sedona-geo-generic-alg/src/algorithm/skew.rs index 25c66e8b..d7881608 100644 --- a/rust/geo-generic-alg/src/algorithm/skew.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/skew.rs @@ -36,8 +36,8 @@ pub trait Skew { /// # Examples /// /// ``` - /// use geo_generic_alg::Skew; - /// use geo_generic_alg::{Polygon, polygon}; + /// use sedona_geo_generic_alg::Skew; + /// use sedona_geo_generic_alg::{Polygon, polygon}; /// /// let square: Polygon = polygon![ /// (x: 0., y: 0.), @@ -64,8 +64,8 @@ pub trait Skew { /// # Examples /// /// ``` - /// use geo_generic_alg::Skew; - /// use geo_generic_alg::{Polygon, polygon}; + /// use sedona_geo_generic_alg::Skew; + /// use sedona_geo_generic_alg::{Polygon, polygon}; /// /// let square: Polygon = polygon![ /// (x: 0., y: 0.), @@ -97,8 +97,8 @@ pub trait Skew { /// # Examples /// /// ``` - /// use geo_generic_alg::Skew; - /// use geo_generic_alg::{Polygon, polygon, point}; + /// use sedona_geo_generic_alg::Skew; + /// use sedona_geo_generic_alg::{Polygon, polygon, point}; /// /// let square: Polygon = polygon![ /// (x: 0., y: 0.), diff --git a/rust/geo-generic-alg/src/algorithm/translate.rs b/rust/sedona-geo-generic-alg/src/algorithm/translate.rs similarity index 98% rename from rust/geo-generic-alg/src/algorithm/translate.rs rename to rust/sedona-geo-generic-alg/src/algorithm/translate.rs index 11ce9050..9d56aab2 100644 --- a/rust/geo-generic-alg/src/algorithm/translate.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/translate.rs @@ -33,8 +33,8 @@ pub trait Translate { /// # Examples /// /// ``` - /// use geo_generic_alg::Translate; - /// use geo_generic_alg::line_string; + /// use sedona_geo_generic_alg::Translate; + /// use sedona_geo_generic_alg::line_string; /// /// let ls = line_string![ /// (x: 0.0, y: 0.0), diff --git a/rust/geo-generic-alg/src/geometry.rs b/rust/sedona-geo-generic-alg/src/geometry.rs similarity index 100% rename from rust/geo-generic-alg/src/geometry.rs rename to rust/sedona-geo-generic-alg/src/geometry.rs diff --git a/rust/geo-generic-alg/src/lib.rs b/rust/sedona-geo-generic-alg/src/lib.rs similarity index 100% rename from rust/geo-generic-alg/src/lib.rs rename to rust/sedona-geo-generic-alg/src/lib.rs diff --git a/rust/geo-generic-alg/src/types.rs b/rust/sedona-geo-generic-alg/src/types.rs similarity index 100% rename from rust/geo-generic-alg/src/types.rs rename to rust/sedona-geo-generic-alg/src/types.rs diff --git a/rust/geo-generic-alg/src/utils.rs b/rust/sedona-geo-generic-alg/src/utils.rs similarity index 100% rename from rust/geo-generic-alg/src/utils.rs rename to rust/sedona-geo-generic-alg/src/utils.rs diff --git a/rust/geo-test-fixtures/Cargo.toml b/rust/sedona-geo-test-fixtures/Cargo.toml similarity index 96% rename from rust/geo-test-fixtures/Cargo.toml rename to rust/sedona-geo-test-fixtures/Cargo.toml index d309769c..b39e2270 100644 --- a/rust/geo-test-fixtures/Cargo.toml +++ b/rust/sedona-geo-test-fixtures/Cargo.toml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. [package] -name = "geo-test-fixtures" +name = "sedona-geo-test-fixtures" version.workspace = true homepage.workspace = true repository.workspace = true diff --git a/rust/geo-test-fixtures/README.md b/rust/sedona-geo-test-fixtures/README.md similarity index 100% rename from rust/geo-test-fixtures/README.md rename to rust/sedona-geo-test-fixtures/README.md diff --git a/rust/geo-test-fixtures/fixtures/east_baton_rouge.wkt b/rust/sedona-geo-test-fixtures/fixtures/east_baton_rouge.wkt similarity index 100% rename from rust/geo-test-fixtures/fixtures/east_baton_rouge.wkt rename to rust/sedona-geo-test-fixtures/fixtures/east_baton_rouge.wkt diff --git a/rust/geo-test-fixtures/fixtures/issue-894/inpa.wkt b/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpa.wkt similarity index 100% rename from rust/geo-test-fixtures/fixtures/issue-894/inpa.wkt rename to rust/sedona-geo-test-fixtures/fixtures/issue-894/inpa.wkt diff --git a/rust/geo-test-fixtures/fixtures/issue-894/inpb.wkt b/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpb.wkt similarity index 100% rename from rust/geo-test-fixtures/fixtures/issue-894/inpb.wkt rename to rust/sedona-geo-test-fixtures/fixtures/issue-894/inpb.wkt diff --git a/rust/geo-test-fixtures/fixtures/issue-894/inpc.wkt b/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpc.wkt similarity index 100% rename from rust/geo-test-fixtures/fixtures/issue-894/inpc.wkt rename to rust/sedona-geo-test-fixtures/fixtures/issue-894/inpc.wkt diff --git a/rust/geo-test-fixtures/fixtures/louisiana.wkt b/rust/sedona-geo-test-fixtures/fixtures/louisiana.wkt similarity index 99% rename from rust/geo-test-fixtures/fixtures/louisiana.wkt rename to rust/sedona-geo-test-fixtures/fixtures/louisiana.wkt index 57c3c760..159adb47 100644 --- a/rust/geo-test-fixtures/fixtures/louisiana.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/louisiana.wkt @@ -1 +1 @@ -LINESTRING(-94.043147 32.69303,-94.043147 32.693031,-94.042947 32.767991,-94.043027 32.776863,-94.042938 32.780558,-94.042829 32.785277,-94.042747 32.786973,-94.043026 32.797476,-94.042785 32.871486,-94.043025 32.880446,-94.042886 32.880965,-94.042886 32.881089,-94.042859 32.892771,-94.042885 32.898911,-94.043092 32.910021,-94.043067 32.937903,-94.043088 32.955592,-94.042964 33.019219,-94.041444 33.019188,-94.035839 33.019145,-94.027983 33.019139,-94.024475 33.019207,-93.814553 33.019372,-93.80493 33.019347,-93.531499 33.018643,-93.524916 33.018637,-93.520994 33.018616,-93.520971 33.018616,-93.490893 33.018442,-93.49052 33.018442,-93.489506 33.018443,-93.467042 33.018611,-93.377134 33.018234,-93.340353 33.018337,-93.308398 33.018179,-93.308181 33.018156,-93.238607 33.017992,-93.197402 33.017951,-93.154351 33.017856,-93.101443 33.01774,-93.100981 33.017786,-93.081428 33.017928,-93.073167 33.017898,-93.070686 33.017792,-92.988708 33.017298,-92.971137 33.017192,-92.946553 33.016807,-92.86751 33.016062,-92.854167 33.016132,-92.844286 33.01607,-92.844073 33.016034,-92.830798 33.015661,-92.733197 33.014347,-92.724994 33.014351,-92.724743 33.014347,-92.723553 33.014328,-92.715884 33.014398,-92.711289 33.014307,-92.503776 33.012161,-92.501383 33.01216,-92.469762 33.01201,-92.37029 33.010717,-92.362865 33.010628,-92.335893 33.010349,-92.292664 33.010103,-92.222825 33.00908,-92.069105 33.008163,-91.951958 33.007428,-91.950001 33.00752,-91.62667 33.006639,-91.617615 33.006717,-91.609001 33.006556,-91.579802 33.006518,-91.579639 33.006472,-91.572326 33.006908,-91.559494 33.00684,-91.46037 33.006246,-91.435782 33.006099,-91.425466 33.006016,-91.376016 33.005794,-91.333011 33.005529,-91.329767 33.005421,-91.326396 33.005376,-91.325037 33.005364,-91.322506 33.005341,-91.312016 33.005262,-91.284398 33.005007,-91.265018 33.005084,-91.166073 33.004106,-91.201842 32.961212,-91.214027 32.93032,-91.212837 32.922104,-91.208263 32.915354,-91.196785 32.906784,-91.175405 32.899998,-91.159975 32.899879,-91.145076 32.905494,-91.134041 32.917676,-91.132115 32.923122,-91.130947 32.963815,-91.138585 32.971352,-91.134414 32.980533,-91.125107 32.984669,-91.106581 32.988938,-91.094265 32.984371,-91.086802 32.976266,-91.063974 32.924113,-91.063809 32.903709,-91.070602 32.888659,-91.086683 32.873392,-91.105631 32.858396,-91.116091 32.855641,-91.127886 32.855059,-91.145002 32.84287,-91.158336 32.822304,-91.161669 32.812465,-91.164397 32.785821,-91.165328 32.751301,-91.163389 32.747009,-91.154461 32.742339,-91.123152 32.742798,-91.077176 32.732534,-91.060766 32.727494,-91.054481 32.722259,-91.057043 32.712576,-91.063946 32.702926,-91.076061 32.693751,-91.098762 32.685291,-91.118258 32.674075,-91.152081 32.641508,-91.153821 32.631282,-91.151318 32.615919,-91.146204 32.604144,-91.141148 32.597209,-91.127912 32.586493,-91.119854 32.584795,-91.104111 32.584657,-91.096774 32.576652,-91.090771 32.563978,-91.090611 32.562705,-91.089436 32.553306,-91.093741 32.549128,-91.097878 32.544752,-91.116708 32.500139,-91.116008 32.48314,-91.108808 32.47204,-91.095308 32.458741,-91.070207 32.445141,-91.052907 32.438442,-91.029606 32.433542,-90.99408 32.403862,-91.004506 32.368144,-91.003506 32.362145,-91.000106 32.357695,-90.986672 32.35176,-90.912363 32.339454,-90.901511 32.337864,-90.898588 32.329094,-90.905173 32.315497,-91.004557 32.215381,-91.006306 32.22415,-91.021507 32.236149,-91.039007 32.242349,-91.046507 32.241149,-91.122602 32.216929,-91.133587 32.213432,-91.158026 32.201956,-91.164171 32.196888,-91.171046 32.176526,-91.174552 32.154978,-91.171702 32.14425,-91.165452 32.13429,-91.162822 32.132694,-91.131403 32.126213,-91.067004 32.132144,-91.057487 32.135515,-91.052342 32.137337,-91.046615 32.138768,-91.040531 32.137337,-91.034447 32.134832,-91.030152 32.129821,-91.026931 32.123737,-91.027125 32.120434,-91.027535 32.113431,-91.027946 32.112722,-91.034707 32.101053,-91.128009 31.985857,-91.248144 31.869848,-91.293413 31.86016,-91.326914 31.854961,-91.338414 31.851261,-91.345714 31.842861,-91.359514 31.799362,-91.363714 31.780363,-91.365614 31.760763,-91.365084 31.752743,-91.369375 31.746903,-91.379935 31.733013,-91.397915 31.709364,-91.400115 31.688164,-91.398059 31.655922,-91.404668 31.637898,-91.42209 31.63129,-91.441315 31.63129,-91.45273 31.63129,-91.464746 31.628886,-91.474959 31.621677,-91.477963 31.610863,-91.477963 31.604855,-91.477963 31.598247,-91.477362 31.592239,-91.470754 31.58563,-91.458679 31.583226,-91.44862 31.583032,-91.437711 31.580824,-91.425094 31.57782,-91.415482 31.567006,-91.416683 31.561599,-91.422691 31.55439,-91.437616 31.546166,-91.450017 31.539666,-91.479718 31.530366,-91.511217 31.532612,-91.51581 31.530894,-91.52292 31.519841,-91.51513 31.449206,-91.510356 31.438928,-91.505301 31.432945,-91.500406 31.419008,-91.505093 31.400933,-91.513795 31.386875,-91.525386 31.378904,-91.541242 31.35675,-91.539904 31.337336,-91.531201 31.326625,-91.51982 31.311228,-91.508858 31.291644,-91.515614 31.27821,-91.522397 31.273423,-91.547588 31.264444,-91.574493 31.261289,-91.59849 31.205485,-91.599965 31.192318,-91.604197 31.154545,-91.577373 31.078179,-91.56415 31.06683,-91.561283 31.060906,-91.559907 31.054119,-91.562468 31.043213,-91.571695 31.029782,-91.58467 31.020185,-91.636942 30.999416,-91.625118 30.999167,-91.538727 30.999388,-91.425749 30.999007,-91.423621 30.998984,-91.224839 30.999183,-91.224068 30.999183,-91.176209 30.999144,-91.17614 30.999144,-91.108291 30.99888,-91.108114 30.998857,-91.080814 30.998909,-91.06827 30.99892,-91.060217 30.998935,-90.826027 30.99936,-90.825829 30.99936,-90.783745 30.999447,-90.779858 30.999457,-90.775981 30.999491,-90.769333 30.999374,-90.758775 30.999583,-90.734552 30.999222,-90.734473 30.999214,-90.651193 30.99951,-90.648721 30.999486,-90.588676 30.99965,-90.587373 30.999604,-90.584448 30.999698,-90.583518 30.999698,-90.567195 30.999733,-90.547615 30.999723,-90.486749 30.999693,-90.485876 30.99974,-90.477284 30.999717,-90.475928 30.99974,-90.474094 30.999798,-90.442479 30.999722,-90.441725 30.999729,-90.437351 30.99973,-90.426849 30.999776,-90.422117 30.99981,-90.369371 31.000335,-90.347241 31.000359,-90.34723 31.000359,-90.346007 31.000363,-90.259555 31.000657,-90.164676 31.00098,-90.164278 31.001025,-90.131395 31.000924,-90.128406 31.001047,-90.050706 31.001215,-90.029574 31.00119,-90.022185 31.001302,-90.005332 31.001364,-89.97543 31.001692,-89.972802 31.001392,-89.927161 31.001437,-89.923119 31.001446,-89.897516 31.001913,-89.892708 31.001759,-89.856862 31.002075,-89.835908 31.002059,-89.835542 31.002059,-89.824617 31.00206,-89.816429 31.002084,-89.752642 31.001853,-89.732504 31.004831,-89.728147 31.002431,-89.728148 31.0023,-89.728382 30.971141,-89.744789 30.918933,-89.756543 30.900431,-89.770931 30.899432,-89.77341 30.897693,-89.789863 30.851527,-89.826175 30.736594,-89.842596 30.666038,-89.842585 30.666005,-89.823384 30.608535,-89.806843 30.572039,-89.76057 30.515761,-89.732577 30.492502,-89.724614 30.491902,-89.69058 30.458773,-89.68341 30.451793,-89.629941 30.339449,-89.629877 30.321017,-89.640694 30.301313,-89.643575 30.293099,-89.64344 30.287682,-89.607655 30.217096,-89.580754 30.186197,-89.572654 30.180897,-89.524504 30.180753,-89.531213 30.177099,-89.537493 30.171745,-89.555013 30.170798,-89.562825 30.168667,-89.56827 30.163932,-89.572093 30.160362,-89.587062 30.150648,-89.595021 30.149891,-89.598027 30.152409,-89.617542 30.156422,-89.62288 30.152368,-89.625053 30.150717,-89.640989 30.138612,-89.64455 30.134108,-89.650467 30.126625,-89.656986 30.118381,-89.658594 30.117364,-89.668164 30.111311,-89.668638 30.111011,-89.669157 30.110683,-89.669182 30.110667,-89.672881 30.11049,-89.674124 30.11043,-89.674633 30.110406,-89.674956 30.110212,-89.675762 30.109728,-89.676117 30.109515,-89.678156 30.10829,-89.678163 30.108286,-89.678293 30.107746,-89.678457 30.107059,-89.678499 30.106886,-89.679655 30.102067,-89.679823 30.101367,-89.679838 30.101304,-89.680042 30.100452,-89.68035 30.099171,-89.680485 30.098605,-89.681265 30.095355,-89.681906 30.092682,-89.682057 30.092052,-89.682181 30.091536,-89.682181 30.091531,-89.682277 30.090565,-89.68228 30.090531,-89.682331 30.090015,-89.682371 30.089607,-89.682393 30.089391,-89.682409 30.089225,-89.682691 30.086365,-89.683051 30.082718,-89.683168 30.08153,-89.683712 30.076018,-89.697556 30.070842,-89.698461 30.070504,-89.698496 30.070491,-89.698909 30.070451,-89.699144 30.070428,-89.699629 30.070381,-89.711848 30.069194,-89.712942 30.069088,-89.713003 30.069061,-89.714085 30.068582,-89.714827 30.068253,-89.715494 30.067958,-89.715884 30.067785,-89.716237 30.067628,-89.716425 30.067545,-89.71675 30.067402,-89.716887 30.067341,-89.721992 30.06508,-89.724433 30.063999,-89.72633 30.063158,-89.727453 30.062661,-89.728026 30.061841,-89.72957 30.059628,-89.72968 30.05947,-89.72979 30.059314,-89.729911 30.059139,-89.73099 30.057594,-89.730999 30.057581,-89.731208 30.054558,-89.731428 30.051377,-89.731452 30.05104,-89.731545 30.049694,-89.731545 30.049691,-89.731544 30.04969,-89.7163 30.02811,-89.7163 30.028106,-89.716301 30.028088,-89.716328 30.027415,-89.716336 30.02723,-89.716358 30.026686,-89.716377 30.026222,-89.724649 30.022454,-89.724669 30.022453,-89.72576 30.022403,-89.733323 30.022054,-89.734361 30.022884,-89.739028 30.026618,-89.739574 30.027055,-89.740886 30.028104,-89.745827 30.032056,-89.746313 30.032445,-89.746505 30.032599,-89.746506 30.0326,-89.757138 30.03865,-89.763216 30.042108,-89.782534 30.045372,-89.78463 30.045253,-89.813684 30.043605,-89.818561 30.043328,-89.829762 30.033275,-89.830442 30.032664,-89.832213 30.031075,-89.832965 30.0304,-89.833794 30.029656,-89.834644 30.028893,-89.835202 30.028393,-89.839926 30.024153,-89.839933 30.024146,-89.840963 30.022995,-89.841739 30.022127,-89.854533 30.007821,-89.857558 30.004439,-89.852312 29.97765,-89.844202 29.955645,-89.8385 29.945816,-89.829023 29.939228,-89.81803 29.934145,-89.804463 29.932588,-89.775459 29.937416,-89.748492 29.945831,-89.727933 29.95878,-89.719067 29.953699,-89.71291 29.946349,-89.736311 29.936263,-89.742727 29.935894,-89.746273 29.928221,-89.742479 29.90817,-89.711158 29.879287,-89.692004 29.868722,-89.671555 29.867535,-89.660568 29.862909,-89.638016 29.864065,-89.613159 29.87216,-89.598129 29.881409,-89.591194 29.897018,-89.592346 29.917253,-89.583099 29.931705,-89.583099 29.945581,-89.574997 29.959455,-89.574425 29.983738,-89.58136 29.994722,-89.571533 29.999926,-89.551292 30.005709,-89.501587 30.034037,-89.494064 30.040972,-89.494637 30.0508,-89.499275 30.058893,-89.493484 30.072191,-89.481926 30.079128,-89.458946 30.06345,-89.444618 30.060959,-89.429047 30.05224,-89.418465 30.049747,-89.372375 30.054729,-89.368637 30.047256,-89.372375 30.036671,-89.381096 30.030441,-89.393555 30.029818,-89.41597 30.020477,-89.422813 30.015495,-89.432785 30.008022,-89.433411 29.991205,-89.432785 29.978752,-89.40538 29.965672,-89.393555 29.966295,-89.379227 29.963804,-89.378601 29.919588,-89.368019 29.911491,-89.331894 29.91585,-89.315453 29.923208,-89.283562 29.97332,-89.273315 29.99382,-89.250534 30.002361,-89.243706 29.997236,-89.249969 29.975597,-89.218071 29.97275,-89.22377 29.961929,-89.231178 29.925484,-89.244843 29.93004,-89.263062 29.929472,-89.280144 29.924915,-89.318306 29.898149,-89.322289 29.887333,-89.311462 29.881636,-89.289253 29.880499,-89.272179 29.886763,-89.241425 29.88961,-89.236298 29.886763,-89.236298 29.877081,-89.254517 29.864552,-89.269897 29.859997,-89.294952 29.857149,-89.317726 29.850885,-89.363289 29.84576,-89.383789 29.838928,-89.383217 29.830385,-89.372971 29.82526,-89.345634 29.820135,-89.342781 29.798496,-89.33197 29.790524,-89.318306 29.788815,-89.293251 29.803053,-89.277298 29.807608,-89.277298 29.799635,-89.284134 29.795649,-89.284706 29.770021,-89.269325 29.760912,-89.271034 29.756355,-89.305199 29.756926,-89.316025 29.760912,-89.325134 29.772301,-89.337662 29.779135,-89.354179 29.781412,-89.367271 29.775148,-89.386063 29.788815,-89.394608 29.784828,-89.399162 29.770592,-89.414536 29.752371,-89.428207 29.74155,-89.42421 29.697638,-89.44812 29.703316,-89.471992 29.718597,-89.486961 29.72592,-89.506065 29.731651,-89.530258 29.74375,-89.540131 29.74375,-89.560181 29.735472,-89.572922 29.746616,-89.598068 29.74757,-89.634048 29.752981,-89.651237 29.749479,-89.649651 29.719872,-89.644562 29.710957,-89.618446 29.700768,-89.59903 29.704908,-89.592979 29.702042,-89.599663 29.690262,-89.596802 29.684212,-89.573883 29.674025,-89.55732 29.670204,-89.53376 29.670204,-89.487915 29.630405,-89.485367 29.624357,-89.486709 29.621003,-89.486931 29.620447,-89.504738 29.631508,-89.523018 29.639427,-89.535202 29.648567,-89.583336 29.652834,-89.608925 29.657707,-89.621109 29.657101,-89.62355 29.662584,-89.632698 29.671724,-89.644272 29.675381,-89.64975 29.672941,-89.641228 29.647961,-89.641228 29.635773,-89.647324 29.625414,-89.657677 29.624195,-89.674736 29.626633,-89.684486 29.624804,-89.688141 29.615055,-89.684486 29.602867,-89.671082 29.588243,-89.668648 29.580322,-89.684486 29.563263,-89.684486 29.551073,-89.681092 29.534487,-89.69623 29.525004,-89.699698 29.523423,-89.700845 29.520785,-89.700501 29.515967,-89.693877 29.508559,-89.665813 29.49002,-89.644039 29.492343,-89.63533 29.489294,-89.617558 29.468298,-89.596533 29.456303,-89.592474 29.449822,-89.589536 29.437662,-89.577096 29.433692,-89.574635 29.435734,-89.574653 29.4411,-89.548686 29.465723,-89.528429 29.454702,-89.53215 29.434567,-89.531943 29.425679,-89.518368 29.40023,-89.508551 29.386168,-89.505038 29.38604,-89.487308 29.393346,-89.484354 29.397471,-89.482318 29.406222,-89.47714 29.411241,-89.470142 29.401471,-89.457303 29.393148,-89.42238 29.390628,-89.380001 29.391785,-89.373109 29.387175,-89.355528 29.381569,-89.340304 29.381412,-89.336589 29.378228,-89.347615 29.365,-89.350694 29.349544,-89.32317 29.343982,-89.303766 29.357455,-89.283028 29.356467,-89.272543 29.351195,-89.2653 29.345352,-89.257852 29.336872,-89.253545 29.322802,-89.24087 29.310081,-89.224192 29.313792,-89.223444 29.318066,-89.219734 29.324412,-89.204703 29.338674,-89.200389 29.344418,-89.200599 29.347672,-89.189354 29.345061,-89.179547 29.339608,-89.177351 29.33521,-89.178221 29.32697,-89.165015 29.303039,-89.157593 29.296691,-89.140275 29.291085,-89.134337 29.27934,-89.136979 29.275239,-89.129688 29.265632,-89.100106 29.25022,-89.096173 29.24293,-89.095544 29.238028,-89.098389 29.232963,-89.105833 29.231608,-89.106244 29.215912,-89.10065 29.206314,-89.090724 29.199992,-89.068265 29.204166,-89.067371 29.208636,-89.029103 29.220956,-89.02185 29.218162,-89.015192 29.211561,-89.000674 29.180091,-89.00529 29.164949,-89.013254 29.16328,-89.018344 29.165046,-89.024269 29.170043,-89.043919 29.162528,-89.047233 29.157833,-89.03873 29.14238,-89.032004 29.144747,-89.024149 29.137298,-89.023942 29.1337,-89.026031 29.130126,-89.051953 29.106554,-89.055475 29.084167,-89.062335 29.070234,-89.09126 29.066931,-89.098068 29.067984,-89.105009 29.073641,-89.121542 29.069074,-89.143453 29.047591,-89.156339 29.028782,-89.162 29.01586,-89.162326 29.011713,-89.164788 29.008703,-89.16985 29.008703,-89.175732 29.012123,-89.186061 29.017993,-89.18215 29.025486,-89.189893 29.032635,-89.197871 29.029701,-89.202563 29.031603,-89.211144 29.040813,-89.216101 29.056371,-89.215531 29.06141,-89.217201 29.067275,-89.225865 29.07866,-89.23631 29.084605,-89.254726 29.083261,-89.257283 29.081086,-89.256869 29.0738,-89.25364 29.064954,-89.259354 29.058358,-89.283215 29.053325,-89.29109 29.053097,-89.304888 29.046379,-89.315389 29.039081,-89.318102 29.035342,-89.315182 29.032662,-89.32485 29.013805,-89.335228 29.015003,-89.338249 29.012935,-89.383814 28.947434,-89.41148 28.925011,-89.419865 28.929709,-89.412388 28.957504,-89.408157 28.965341,-89.398104 28.977016,-89.382106 28.981525,-89.375049 28.985368,-89.334735 29.040335,-89.339828 29.052221,-89.354798 29.072543,-89.374522 29.084174,-89.405654 29.086936,-89.411154 29.105838,-89.409371 29.127855,-89.417718 29.13869,-89.428965 29.14451,-89.432932 29.149023,-89.447472 29.178576,-89.455829 29.190991,-89.47231 29.20755,-89.482844 29.215053,-89.5366 29.236212,-89.606651 29.252023,-89.671781 29.289028,-89.697258 29.296679,-89.726162 29.304026,-89.782149 29.311132,-89.819859 29.310241,-89.850305 29.311768,-89.855109 29.334997,-89.853699 29.34064,-89.847124 29.349186,-89.835 29.359043,-89.820824 29.377486,-89.816916 29.384385,-89.816155 29.393518,-89.816916 29.398845,-89.819199 29.404173,-89.822243 29.4095,-89.826049 29.415589,-89.835392 29.418538,-89.843553 29.421677,-89.845075 29.434615,-89.836773 29.45404,-89.833659 29.456686,-89.833659 29.459731,-89.832898 29.463536,-89.833659 29.467341,-89.83442 29.470386,-89.840509 29.47343,-89.849642 29.477996,-89.86258 29.476474,-89.876224 29.472168,-89.902179 29.460011,-89.918999 29.444254,-89.932598 29.429288,-89.95543 29.428527,-89.96195 29.432874,-89.964563 29.434615,-89.972934 29.443748,-89.991961 29.463536,-90.01251 29.462775,-90.018598 29.45212,-90.022404 29.444509,-90.029466 29.432015,-90.032298 29.427005,-90.031536 29.412545,-90.033295 29.393274,-90.029468 29.388136,-90.029614 29.386658,-90.029967 29.383087,-90.030761 29.375043,-90.030764 29.375008,-90.030855 29.374876,-90.033604 29.370851,-90.035415 29.368201,-90.036374 29.363661,-90.032842 29.348624,-90.031815 29.344251,-90.034275 29.322661,-90.028536 29.307083,-90.013778 29.30271,-90.009678 29.294785,-90.016288 29.284257,-90.019517 29.282213,-90.032088 29.280027,-90.043293 29.282487,-90.057094 29.281331,-90.061057 29.276748,-90.059691 29.272648,-90.060511 29.267729,-90.070622 29.262537,-90.086747 29.259257,-90.091119 29.261443,-90.097678 29.26199,-90.101231 29.259804,-90.096038 29.240673,-90.073355 29.227282,-90.073355 29.210611,-90.070622 29.208698,-90.06361 29.209474,-90.04291 29.211765,-90.019772 29.231903,-90.005718 29.240627,-89.969981 29.255753,-89.965667 29.259126,-89.959509 29.267677,-89.951175 29.266124,-89.949925 29.263154,-89.950756 29.260801,-89.95646 29.253744,-90.022029 29.216065,-90.058512 29.183687,-90.079276 29.16997,-90.088684 29.162574,-90.104162 29.150407,-90.174273 29.105301,-90.223587 29.085075,-90.231984 29.08773,-90.245283 29.085824,-90.343293 29.057062,-90.348768 29.057817,-90.349891 29.063681,-90.325514 29.075138,-90.304129 29.077332,-90.29293 29.078761,-90.282983 29.082326,-90.26629 29.089421,-90.258145 29.091627,-90.253141 29.093772,-90.249806 29.100919,-90.250044 29.108067,-90.243849 29.11045,-90.234235 29.110268,-90.234405 29.128824,-90.243435 29.136311,-90.248629 29.13837,-90.26901 29.139242,-90.280516 29.142521,-90.27832 29.150691,-90.297 29.171317,-90.302846 29.175098,-90.302948 29.187948,-90.300885 29.196171,-90.293183 29.199789,-90.2828 29.192545,-90.275851 29.193668,-90.271251 29.204639,-90.286621 29.225694,-90.300304 29.231241,-90.311663 29.237954,-90.311523 29.256374,-90.316093 29.264777,-90.332796 29.276956,-90.367166 29.274128,-90.368154 29.270736,-90.367012 29.264956,-90.372565 29.258923,-90.387924 29.252786,-90.383857 29.235606,-90.399465 29.201046,-90.408578 29.196421,-90.409416 29.196135,-90.432912 29.188132,-90.435907 29.188449,-90.443954 29.19583,-90.472489 29.192688,-90.473273 29.195224,-90.468773 29.198469,-90.467233 29.202549,-90.485786 29.209843,-90.494928 29.216713,-90.490987 29.220883,-90.46832 29.227532,-90.465764 29.242951,-90.462866 29.249809,-90.450674 29.263739,-90.452186 29.26625,-90.472779 29.272556,-90.495299 29.287277,-90.510555 29.290925,-90.517277 29.282719,-90.526216 29.276492,-90.552005 29.278512,-90.565436 29.285111,-90.582525 29.276037,-90.589724 29.248521,-90.58847 29.245863,-90.583924 29.242886,-90.576506 29.243986,-90.565378 29.242475,-90.544547 29.230683,-90.543245 29.227843,-90.544311 29.224292,-90.556501 29.219913,-90.55739 29.207881,-90.560889 29.204261,-90.575277 29.206827,-90.618413 29.20329,-90.624161 29.210366,-90.62742 29.211004,-90.633819 29.209128,-90.640223 29.196554,-90.645612 29.175867,-90.645169 29.172958,-90.640863 29.171261,-90.636973 29.164572,-90.647042 29.12858,-90.677724 29.118742,-90.691109 29.121722,-90.700893 29.12147,-90.718035 29.116611,-90.731239 29.122886,-90.764189 29.113374,-90.773458 29.100133,-90.799444 29.087377,-90.802053 29.083322,-90.803699 29.063709,-90.79872 29.054841,-90.781981 29.049431,-90.765188 29.049403,-90.750092 29.053247,-90.7253 29.066616,-90.709105 29.064305,-90.70535 29.062679,-90.702102 29.060275,-90.692205 29.059607,-90.683645 29.060944,-90.676958 29.063619,-90.665589 29.06723,-90.652348 29.069237,-90.644189 29.07151,-90.641247 29.072313,-90.63924 29.072848,-90.637623 29.072084,-90.636033 29.069792,-90.637495 29.066608,-90.648058 29.062649,-90.730899 29.042259,-90.755677 29.038997,-90.79768 29.039741,-90.811473 29.03658,-90.839345 29.039167,-90.842762 29.042947,-90.844849 29.048721,-90.841226 29.054266,-90.844593 29.06728,-90.862757 29.094863,-90.867766 29.095434,-90.877583 29.104891,-90.885351 29.117016,-90.898215 29.131342,-90.925797 29.153116,-90.941877 29.162373,-90.948091 29.174104,-90.961278 29.180817,-90.981458 29.171211,-91.000096 29.169481,-91.023955 29.174784,-91.031786 29.182188,-91.05863 29.181734,-91.094015 29.187711,-91.11476 29.207918,-91.129141 29.215863,-91.199647 29.221287,-91.219032 29.226051,-91.278792 29.247776,-91.302677 29.265958,-91.334885 29.298775,-91.33275 29.305816,-91.309314 29.305698,-91.299054 29.309017,-91.291821 29.311357,-91.29042 29.313062,-91.279742 29.326058,-91.276647 29.329825,-91.276187 29.332783,-91.274308 29.344878,-91.270582 29.355415,-91.270053 29.356912,-91.26994 29.357231,-91.266589 29.361218,-91.265479 29.361767,-91.251546 29.368659,-91.251232 29.368814,-91.249517 29.369662,-91.249109 29.369864,-91.245558 29.37058,-91.238515 29.371999,-91.235348 29.370638,-91.222377 29.360703,-91.207299 29.360703,-91.197465 29.369882,-91.200087 29.38955,-91.218463 29.407235,-91.215976 29.412505,-91.214284 29.416089,-91.211999 29.420931,-91.2151 29.427542,-91.217448 29.432549,-91.218067 29.433193,-91.219242 29.434418,-91.221166 29.436421,-91.24164 29.441021,-91.251319 29.444483,-91.258226 29.446954,-91.259537 29.458001,-91.259844 29.460582,-91.259988 29.461803,-91.260024 29.462102,-91.261588 29.464954,-91.265649 29.472362,-91.2813 29.481547,-91.294325 29.476894,-91.335742 29.485886,-91.343567 29.492593,-91.34588 29.504538,-91.356625 29.515191,-91.402214 29.511914,-91.420449 29.515745,-91.42713 29.520215,-91.432337 29.53283,-91.439941 29.540434,-91.447345 29.544749,-91.468748 29.544299,-91.517274 29.52974,-91.531021 29.531543,-91.531471 29.535374,-91.52584 29.545946,-91.525523 29.551904,-91.529217 29.558598,-91.537445 29.565888,-91.541974 29.594353,-91.553537 29.632766,-91.560908 29.63735,-91.570589 29.638312,-91.581843 29.637165,-91.600179 29.631156,-91.625114 29.626195,-91.643832 29.630625,-91.648941 29.633635,-91.648657 29.636713,-91.646478 29.639427,-91.643198 29.640274,-91.637344 29.647217,-91.627286 29.662132,-91.625114 29.671679,-91.626826 29.684753,-91.623829 29.69924,-91.618479 29.710816,-91.61809 29.720694,-91.621512 29.735429,-91.632829 29.742576,-91.667128 29.745822,-91.710935 29.738993,-91.737253 29.74937,-91.752259 29.748264,-91.783674 29.740689,-91.830499 29.718918,-91.845962 29.708763,-91.85864 29.703121,-91.866516 29.70715,-91.88075 29.710839,-91.880999 29.713338,-91.878331 29.716087,-91.875637 29.722316,-91.87557 29.722471,-91.87557 29.728043,-91.878355 29.735007,-91.879748 29.742668,-91.878355 29.751025,-91.874761 29.760083,-91.859151 29.783331,-91.854677 29.807436,-91.869998 29.828328,-91.889118 29.836023,-91.90689 29.83094,-91.915989 29.815654,-91.919143 29.815379,-91.940723 29.817008,-91.96123 29.810221,-91.970443 29.80431,-91.978381 29.799217,-91.983871 29.794516,-92.035666 29.781662,-92.056398 29.772313,-92.107486 29.744429,-92.144431 29.716418,-92.149349 29.697052,-92.134347 29.669516,-92.132804 29.660462,-92.111787 29.62177,-92.093419 29.618694,-92.06564 29.619967,-92.04767 29.624527,-92.02532 29.625647,-92.01627 29.618741,-92.000371 29.613143,-92.000003 29.613013,-91.965031 29.608019,-91.939903 29.610291,-91.935024 29.612239,-91.929567 29.61884,-91.922825 29.633173,-91.898996 29.63701,-91.896763 29.634618,-91.882318 29.62977,-91.866113 29.631583,-91.863018 29.633739,-91.841294 29.62962,-91.838981 29.624475,-91.840921 29.619913,-91.838297 29.616041,-91.821693 29.606049,-91.803831 29.599562,-91.784976 29.595204,-91.7785 29.58922,-91.774805 29.582113,-91.774686 29.576387,-91.74632 29.574337,-91.719102 29.565568,-91.715642 29.565844,-91.712002 29.56474,-91.709205 29.561012,-91.711654 29.55427,-91.733956 29.539504,-91.747058 29.535144,-91.765448 29.520844,-91.771927 29.504871,-91.772529 29.499016,-91.770069 29.493812,-91.770516 29.488953,-91.782387 29.482882,-91.789119 29.482081,-91.800121 29.486828,-91.803448 29.486851,-91.814609 29.482061,-91.821576 29.473925,-91.8385 29.478874,-91.848665 29.484144,-91.852598 29.494984,-91.862324 29.502393,-91.878746 29.502937,-91.886815 29.505577,-91.906175 29.518052,-91.915322 29.518513,-91.947007 29.53316,-91.969312 29.536893,-91.985726 29.547708,-92.02681 29.566805,-92.035462 29.57864,-92.041168 29.581648,-92.046316 29.584362,-92.066533 29.583842,-92.105923 29.586335,-92.158624 29.581616,-92.21259 29.562479,-92.25186 29.539354,-92.280392 29.533434,-92.309357 29.533026,-92.347236 29.539394,-92.402165 29.551269,-92.473585 29.561081,-92.558602 29.569935,-92.61627 29.578729,-92.617725 29.579092,-92.653651 29.588065,-92.744126 29.617608,-92.871232 29.670028,-92.940455 29.701033,-92.974305 29.71398,-93.065354 29.740966,-93.088182 29.749125,-93.17693 29.770487,-93.226934 29.777519,-93.267456 29.778113,-93.295573 29.775071,-93.342104 29.763402,-93.344993 29.759618,-93.347331 29.759046,-93.372029 29.763049,-93.438973 29.768949,-93.475252 29.769242,-93.538462 29.763299,-93.590786 29.755649,-93.635304 29.752806,-93.68364 29.747153,-93.741948 29.736343,-93.766048 29.7295,-93.79925 29.71526,-93.818995 29.704076,-93.837971 29.690619,-93.892246 29.765241,-93.89847 29.771577,-93.890679 29.843159,-93.840799 29.914423,-93.789431 29.987812,-93.75663 30.014163,-93.752038 30.016403,-93.722481 30.050898,-93.721589 30.051939,-93.712101 30.067346,-93.695684 30.135729,-93.695252 30.1476,-93.712008 30.194304,-93.716223 30.244318,-93.720575 30.295961,-93.723586 30.294951,-93.735896 30.29944,-93.765822 30.333318,-93.757654 30.390423,-93.751437 30.396288,-93.741701 30.403007,-93.702665 30.429947,-93.698302 30.438657,-93.697828 30.443838,-93.710117 30.5064,-93.740045 30.538765,-93.727844 30.57407,-93.578395 30.802047,-93.563292 30.818503,-93.558672 30.868829,-93.558617 30.869424,-93.55497 30.876685,-93.554576 30.87747,-93.530936 30.924534,-93.540354 31.008135,-93.527644 31.074509,-93.531744 31.180817,-93.535097 31.185614,-93.548931 31.186601,-93.55254 31.185605,-93.552649 31.185575,-93.579215 31.167422,-93.588503 31.165581,-93.598828 31.174679,-93.599705 31.176456,-93.602315 31.181742,-93.607243 31.204806,-93.608158 31.227835,-93.614402 31.260869,-93.620829 31.271299,-93.644407 31.27711,-93.671676 31.299586,-93.640805 31.372546,-93.670182 31.387184,-93.695866 31.409392,-93.729613 31.487922,-93.798087 31.534044,-93.818582 31.554826,-93.834923 31.58621,-93.834924 31.586211,-93.82629 31.614903,-93.817059 31.671694,-93.812477 31.715246,-93.840029 31.800596,-93.878225 31.844276,-93.889193 31.856819,-93.92029 31.888651,-93.932135 31.893672,-93.975377 31.92366,-94.01563 31.979856,-94.04272 31.999265,-94.0427 32.056012,-94.042337 32.119914,-94.042681 32.137956,-94.042591 32.158097,-94.042539 32.166826,-94.042566 32.166894,-94.042621 32.196005,-94.042662 32.218146,-94.042732 32.26962,-94.042733 32.269696,-94.042739 32.363559,-94.042763 32.373332,-94.042901 32.392283,-94.042923 32.399918,-94.042899 32.400659,-94.042986 32.435507,-94.042908 32.439891,-94.042903 32.470386,-94.042875 32.471348,-94.042902 32.472906,-94.042995 32.478004,-94.042955 32.480261,-94.043072 32.4843,-94.043089 32.486561,-94.042911 32.492852,-94.042885 32.505145,-94.043081 32.513613,-94.043142 32.559502,-94.043083 32.564261,-94.042919 32.610142,-94.042929 32.61826,-94.042926 32.622015,-94.042824 32.640305,-94.04278 32.643466,-94.042913 32.655127,-94.043147 32.69303) \ No newline at end of file +LINESTRING(-94.043147 32.69303,-94.043147 32.693031,-94.042947 32.767991,-94.043027 32.776863,-94.042938 32.780558,-94.042829 32.785277,-94.042747 32.786973,-94.043026 32.797476,-94.042785 32.871486,-94.043025 32.880446,-94.042886 32.880965,-94.042886 32.881089,-94.042859 32.892771,-94.042885 32.898911,-94.043092 32.910021,-94.043067 32.937903,-94.043088 32.955592,-94.042964 33.019219,-94.041444 33.019188,-94.035839 33.019145,-94.027983 33.019139,-94.024475 33.019207,-93.814553 33.019372,-93.80493 33.019347,-93.531499 33.018643,-93.524916 33.018637,-93.520994 33.018616,-93.520971 33.018616,-93.490893 33.018442,-93.49052 33.018442,-93.489506 33.018443,-93.467042 33.018611,-93.377134 33.018234,-93.340353 33.018337,-93.308398 33.018179,-93.308181 33.018156,-93.238607 33.017992,-93.197402 33.017951,-93.154351 33.017856,-93.101443 33.01774,-93.100981 33.017786,-93.081428 33.017928,-93.073167 33.017898,-93.070686 33.017792,-92.988708 33.017298,-92.971137 33.017192,-92.946553 33.016807,-92.86751 33.016062,-92.854167 33.016132,-92.844286 33.01607,-92.844073 33.016034,-92.830798 33.015661,-92.733197 33.014347,-92.724994 33.014351,-92.724743 33.014347,-92.723553 33.014328,-92.715884 33.014398,-92.711289 33.014307,-92.503776 33.012161,-92.501383 33.01216,-92.469762 33.01201,-92.37029 33.010717,-92.362865 33.010628,-92.335893 33.010349,-92.292664 33.010103,-92.222825 33.00908,-92.069105 33.008163,-91.951958 33.007428,-91.950001 33.00752,-91.62667 33.006639,-91.617615 33.006717,-91.609001 33.006556,-91.579802 33.006518,-91.579639 33.006472,-91.572326 33.006908,-91.559494 33.00684,-91.46037 33.006246,-91.435782 33.006099,-91.425466 33.006016,-91.376016 33.005794,-91.333011 33.005529,-91.329767 33.005421,-91.326396 33.005376,-91.325037 33.005364,-91.322506 33.005341,-91.312016 33.005262,-91.284398 33.005007,-91.265018 33.005084,-91.166073 33.004106,-91.201842 32.961212,-91.214027 32.93032,-91.212837 32.922104,-91.208263 32.915354,-91.196785 32.906784,-91.175405 32.899998,-91.159975 32.899879,-91.145076 32.905494,-91.134041 32.917676,-91.132115 32.923122,-91.130947 32.963815,-91.138585 32.971352,-91.134414 32.980533,-91.125107 32.984669,-91.106581 32.988938,-91.094265 32.984371,-91.086802 32.976266,-91.063974 32.924113,-91.063809 32.903709,-91.070602 32.888659,-91.086683 32.873392,-91.105631 32.858396,-91.116091 32.855641,-91.127886 32.855059,-91.145002 32.84287,-91.158336 32.822304,-91.161669 32.812465,-91.164397 32.785821,-91.165328 32.751301,-91.163389 32.747009,-91.154461 32.742339,-91.123152 32.742798,-91.077176 32.732534,-91.060766 32.727494,-91.054481 32.722259,-91.057043 32.712576,-91.063946 32.702926,-91.076061 32.693751,-91.098762 32.685291,-91.118258 32.674075,-91.152081 32.641508,-91.153821 32.631282,-91.151318 32.615919,-91.146204 32.604144,-91.141148 32.597209,-91.127912 32.586493,-91.119854 32.584795,-91.104111 32.584657,-91.096774 32.576652,-91.090771 32.563978,-91.090611 32.562705,-91.089436 32.553306,-91.093741 32.549128,-91.097878 32.544752,-91.116708 32.500139,-91.116008 32.48314,-91.108808 32.47204,-91.095308 32.458741,-91.070207 32.445141,-91.052907 32.438442,-91.029606 32.433542,-90.99408 32.403862,-91.004506 32.368144,-91.003506 32.362145,-91.000106 32.357695,-90.986672 32.35176,-90.912363 32.339454,-90.901511 32.337864,-90.898588 32.329094,-90.905173 32.315497,-91.004557 32.215381,-91.006306 32.22415,-91.021507 32.236149,-91.039007 32.242349,-91.046507 32.241149,-91.122602 32.216929,-91.133587 32.213432,-91.158026 32.201956,-91.164171 32.196888,-91.171046 32.176526,-91.174552 32.154978,-91.171702 32.14425,-91.165452 32.13429,-91.162822 32.132694,-91.131403 32.126213,-91.067004 32.132144,-91.057487 32.135515,-91.052342 32.137337,-91.046615 32.138768,-91.040531 32.137337,-91.034447 32.134832,-91.030152 32.129821,-91.026931 32.123737,-91.027125 32.120434,-91.027535 32.113431,-91.027946 32.112722,-91.034707 32.101053,-91.128009 31.985857,-91.248144 31.869848,-91.293413 31.86016,-91.326914 31.854961,-91.338414 31.851261,-91.345714 31.842861,-91.359514 31.799362,-91.363714 31.780363,-91.365614 31.760763,-91.365084 31.752743,-91.369375 31.746903,-91.379935 31.733013,-91.397915 31.709364,-91.400115 31.688164,-91.398059 31.655922,-91.404668 31.637898,-91.42209 31.63129,-91.441315 31.63129,-91.45273 31.63129,-91.464746 31.628886,-91.474959 31.621677,-91.477963 31.610863,-91.477963 31.604855,-91.477963 31.598247,-91.477362 31.592239,-91.470754 31.58563,-91.458679 31.583226,-91.44862 31.583032,-91.437711 31.580824,-91.425094 31.57782,-91.415482 31.567006,-91.416683 31.561599,-91.422691 31.55439,-91.437616 31.546166,-91.450017 31.539666,-91.479718 31.530366,-91.511217 31.532612,-91.51581 31.530894,-91.52292 31.519841,-91.51513 31.449206,-91.510356 31.438928,-91.505301 31.432945,-91.500406 31.419008,-91.505093 31.400933,-91.513795 31.386875,-91.525386 31.378904,-91.541242 31.35675,-91.539904 31.337336,-91.531201 31.326625,-91.51982 31.311228,-91.508858 31.291644,-91.515614 31.27821,-91.522397 31.273423,-91.547588 31.264444,-91.574493 31.261289,-91.59849 31.205485,-91.599965 31.192318,-91.604197 31.154545,-91.577373 31.078179,-91.56415 31.06683,-91.561283 31.060906,-91.559907 31.054119,-91.562468 31.043213,-91.571695 31.029782,-91.58467 31.020185,-91.636942 30.999416,-91.625118 30.999167,-91.538727 30.999388,-91.425749 30.999007,-91.423621 30.998984,-91.224839 30.999183,-91.224068 30.999183,-91.176209 30.999144,-91.17614 30.999144,-91.108291 30.99888,-91.108114 30.998857,-91.080814 30.998909,-91.06827 30.99892,-91.060217 30.998935,-90.826027 30.99936,-90.825829 30.99936,-90.783745 30.999447,-90.779858 30.999457,-90.775981 30.999491,-90.769333 30.999374,-90.758775 30.999583,-90.734552 30.999222,-90.734473 30.999214,-90.651193 30.99951,-90.648721 30.999486,-90.588676 30.99965,-90.587373 30.999604,-90.584448 30.999698,-90.583518 30.999698,-90.567195 30.999733,-90.547615 30.999723,-90.486749 30.999693,-90.485876 30.99974,-90.477284 30.999717,-90.475928 30.99974,-90.474094 30.999798,-90.442479 30.999722,-90.441725 30.999729,-90.437351 30.99973,-90.426849 30.999776,-90.422117 30.99981,-90.369371 31.000335,-90.347241 31.000359,-90.34723 31.000359,-90.346007 31.000363,-90.259555 31.000657,-90.164676 31.00098,-90.164278 31.001025,-90.131395 31.000924,-90.128406 31.001047,-90.050706 31.001215,-90.029574 31.00119,-90.022185 31.001302,-90.005332 31.001364,-89.97543 31.001692,-89.972802 31.001392,-89.927161 31.001437,-89.923119 31.001446,-89.897516 31.001913,-89.892708 31.001759,-89.856862 31.002075,-89.835908 31.002059,-89.835542 31.002059,-89.824617 31.00206,-89.816429 31.002084,-89.752642 31.001853,-89.732504 31.004831,-89.728147 31.002431,-89.728148 31.0023,-89.728382 30.971141,-89.744789 30.918933,-89.756543 30.900431,-89.770931 30.899432,-89.77341 30.897693,-89.789863 30.851527,-89.826175 30.736594,-89.842596 30.666038,-89.842585 30.666005,-89.823384 30.608535,-89.806843 30.572039,-89.76057 30.515761,-89.732577 30.492502,-89.724614 30.491902,-89.69058 30.458773,-89.68341 30.451793,-89.629941 30.339449,-89.629877 30.321017,-89.640694 30.301313,-89.643575 30.293099,-89.64344 30.287682,-89.607655 30.217096,-89.580754 30.186197,-89.572654 30.180897,-89.524504 30.180753,-89.531213 30.177099,-89.537493 30.171745,-89.555013 30.170798,-89.562825 30.168667,-89.56827 30.163932,-89.572093 30.160362,-89.587062 30.150648,-89.595021 30.149891,-89.598027 30.152409,-89.617542 30.156422,-89.62288 30.152368,-89.625053 30.150717,-89.640989 30.138612,-89.64455 30.134108,-89.650467 30.126625,-89.656986 30.118381,-89.658594 30.117364,-89.668164 30.111311,-89.668638 30.111011,-89.669157 30.110683,-89.669182 30.110667,-89.672881 30.11049,-89.674124 30.11043,-89.674633 30.110406,-89.674956 30.110212,-89.675762 30.109728,-89.676117 30.109515,-89.678156 30.10829,-89.678163 30.108286,-89.678293 30.107746,-89.678457 30.107059,-89.678499 30.106886,-89.679655 30.102067,-89.679823 30.101367,-89.679838 30.101304,-89.680042 30.100452,-89.68035 30.099171,-89.680485 30.098605,-89.681265 30.095355,-89.681906 30.092682,-89.682057 30.092052,-89.682181 30.091536,-89.682181 30.091531,-89.682277 30.090565,-89.68228 30.090531,-89.682331 30.090015,-89.682371 30.089607,-89.682393 30.089391,-89.682409 30.089225,-89.682691 30.086365,-89.683051 30.082718,-89.683168 30.08153,-89.683712 30.076018,-89.697556 30.070842,-89.698461 30.070504,-89.698496 30.070491,-89.698909 30.070451,-89.699144 30.070428,-89.699629 30.070381,-89.711848 30.069194,-89.712942 30.069088,-89.713003 30.069061,-89.714085 30.068582,-89.714827 30.068253,-89.715494 30.067958,-89.715884 30.067785,-89.716237 30.067628,-89.716425 30.067545,-89.71675 30.067402,-89.716887 30.067341,-89.721992 30.06508,-89.724433 30.063999,-89.72633 30.063158,-89.727453 30.062661,-89.728026 30.061841,-89.72957 30.059628,-89.72968 30.05947,-89.72979 30.059314,-89.729911 30.059139,-89.73099 30.057594,-89.730999 30.057581,-89.731208 30.054558,-89.731428 30.051377,-89.731452 30.05104,-89.731545 30.049694,-89.731545 30.049691,-89.731544 30.04969,-89.7163 30.02811,-89.7163 30.028106,-89.716301 30.028088,-89.716328 30.027415,-89.716336 30.02723,-89.716358 30.026686,-89.716377 30.026222,-89.724649 30.022454,-89.724669 30.022453,-89.72576 30.022403,-89.733323 30.022054,-89.734361 30.022884,-89.739028 30.026618,-89.739574 30.027055,-89.740886 30.028104,-89.745827 30.032056,-89.746313 30.032445,-89.746505 30.032599,-89.746506 30.0326,-89.757138 30.03865,-89.763216 30.042108,-89.782534 30.045372,-89.78463 30.045253,-89.813684 30.043605,-89.818561 30.043328,-89.829762 30.033275,-89.830442 30.032664,-89.832213 30.031075,-89.832965 30.0304,-89.833794 30.029656,-89.834644 30.028893,-89.835202 30.028393,-89.839926 30.024153,-89.839933 30.024146,-89.840963 30.022995,-89.841739 30.022127,-89.854533 30.007821,-89.857558 30.004439,-89.852312 29.97765,-89.844202 29.955645,-89.8385 29.945816,-89.829023 29.939228,-89.81803 29.934145,-89.804463 29.932588,-89.775459 29.937416,-89.748492 29.945831,-89.727933 29.95878,-89.719067 29.953699,-89.71291 29.946349,-89.736311 29.936263,-89.742727 29.935894,-89.746273 29.928221,-89.742479 29.90817,-89.711158 29.879287,-89.692004 29.868722,-89.671555 29.867535,-89.660568 29.862909,-89.638016 29.864065,-89.613159 29.87216,-89.598129 29.881409,-89.591194 29.897018,-89.592346 29.917253,-89.583099 29.931705,-89.583099 29.945581,-89.574997 29.959455,-89.574425 29.983738,-89.58136 29.994722,-89.571533 29.999926,-89.551292 30.005709,-89.501587 30.034037,-89.494064 30.040972,-89.494637 30.0508,-89.499275 30.058893,-89.493484 30.072191,-89.481926 30.079128,-89.458946 30.06345,-89.444618 30.060959,-89.429047 30.05224,-89.418465 30.049747,-89.372375 30.054729,-89.368637 30.047256,-89.372375 30.036671,-89.381096 30.030441,-89.393555 30.029818,-89.41597 30.020477,-89.422813 30.015495,-89.432785 30.008022,-89.433411 29.991205,-89.432785 29.978752,-89.40538 29.965672,-89.393555 29.966295,-89.379227 29.963804,-89.378601 29.919588,-89.368019 29.911491,-89.331894 29.91585,-89.315453 29.923208,-89.283562 29.97332,-89.273315 29.99382,-89.250534 30.002361,-89.243706 29.997236,-89.249969 29.975597,-89.218071 29.97275,-89.22377 29.961929,-89.231178 29.925484,-89.244843 29.93004,-89.263062 29.929472,-89.280144 29.924915,-89.318306 29.898149,-89.322289 29.887333,-89.311462 29.881636,-89.289253 29.880499,-89.272179 29.886763,-89.241425 29.88961,-89.236298 29.886763,-89.236298 29.877081,-89.254517 29.864552,-89.269897 29.859997,-89.294952 29.857149,-89.317726 29.850885,-89.363289 29.84576,-89.383789 29.838928,-89.383217 29.830385,-89.372971 29.82526,-89.345634 29.820135,-89.342781 29.798496,-89.33197 29.790524,-89.318306 29.788815,-89.293251 29.803053,-89.277298 29.807608,-89.277298 29.799635,-89.284134 29.795649,-89.284706 29.770021,-89.269325 29.760912,-89.271034 29.756355,-89.305199 29.756926,-89.316025 29.760912,-89.325134 29.772301,-89.337662 29.779135,-89.354179 29.781412,-89.367271 29.775148,-89.386063 29.788815,-89.394608 29.784828,-89.399162 29.770592,-89.414536 29.752371,-89.428207 29.74155,-89.42421 29.697638,-89.44812 29.703316,-89.471992 29.718597,-89.486961 29.72592,-89.506065 29.731651,-89.530258 29.74375,-89.540131 29.74375,-89.560181 29.735472,-89.572922 29.746616,-89.598068 29.74757,-89.634048 29.752981,-89.651237 29.749479,-89.649651 29.719872,-89.644562 29.710957,-89.618446 29.700768,-89.59903 29.704908,-89.592979 29.702042,-89.599663 29.690262,-89.596802 29.684212,-89.573883 29.674025,-89.55732 29.670204,-89.53376 29.670204,-89.487915 29.630405,-89.485367 29.624357,-89.486709 29.621003,-89.486931 29.620447,-89.504738 29.631508,-89.523018 29.639427,-89.535202 29.648567,-89.583336 29.652834,-89.608925 29.657707,-89.621109 29.657101,-89.62355 29.662584,-89.632698 29.671724,-89.644272 29.675381,-89.64975 29.672941,-89.641228 29.647961,-89.641228 29.635773,-89.647324 29.625414,-89.657677 29.624195,-89.674736 29.626633,-89.684486 29.624804,-89.688141 29.615055,-89.684486 29.602867,-89.671082 29.588243,-89.668648 29.580322,-89.684486 29.563263,-89.684486 29.551073,-89.681092 29.534487,-89.69623 29.525004,-89.699698 29.523423,-89.700845 29.520785,-89.700501 29.515967,-89.693877 29.508559,-89.665813 29.49002,-89.644039 29.492343,-89.63533 29.489294,-89.617558 29.468298,-89.596533 29.456303,-89.592474 29.449822,-89.589536 29.437662,-89.577096 29.433692,-89.574635 29.435734,-89.574653 29.4411,-89.548686 29.465723,-89.528429 29.454702,-89.53215 29.434567,-89.531943 29.425679,-89.518368 29.40023,-89.508551 29.386168,-89.505038 29.38604,-89.487308 29.393346,-89.484354 29.397471,-89.482318 29.406222,-89.47714 29.411241,-89.470142 29.401471,-89.457303 29.393148,-89.42238 29.390628,-89.380001 29.391785,-89.373109 29.387175,-89.355528 29.381569,-89.340304 29.381412,-89.336589 29.378228,-89.347615 29.365,-89.350694 29.349544,-89.32317 29.343982,-89.303766 29.357455,-89.283028 29.356467,-89.272543 29.351195,-89.2653 29.345352,-89.257852 29.336872,-89.253545 29.322802,-89.24087 29.310081,-89.224192 29.313792,-89.223444 29.318066,-89.219734 29.324412,-89.204703 29.338674,-89.200389 29.344418,-89.200599 29.347672,-89.189354 29.345061,-89.179547 29.339608,-89.177351 29.33521,-89.178221 29.32697,-89.165015 29.303039,-89.157593 29.296691,-89.140275 29.291085,-89.134337 29.27934,-89.136979 29.275239,-89.129688 29.265632,-89.100106 29.25022,-89.096173 29.24293,-89.095544 29.238028,-89.098389 29.232963,-89.105833 29.231608,-89.106244 29.215912,-89.10065 29.206314,-89.090724 29.199992,-89.068265 29.204166,-89.067371 29.208636,-89.029103 29.220956,-89.02185 29.218162,-89.015192 29.211561,-89.000674 29.180091,-89.00529 29.164949,-89.013254 29.16328,-89.018344 29.165046,-89.024269 29.170043,-89.043919 29.162528,-89.047233 29.157833,-89.03873 29.14238,-89.032004 29.144747,-89.024149 29.137298,-89.023942 29.1337,-89.026031 29.130126,-89.051953 29.106554,-89.055475 29.084167,-89.062335 29.070234,-89.09126 29.066931,-89.098068 29.067984,-89.105009 29.073641,-89.121542 29.069074,-89.143453 29.047591,-89.156339 29.028782,-89.162 29.01586,-89.162326 29.011713,-89.164788 29.008703,-89.16985 29.008703,-89.175732 29.012123,-89.186061 29.017993,-89.18215 29.025486,-89.189893 29.032635,-89.197871 29.029701,-89.202563 29.031603,-89.211144 29.040813,-89.216101 29.056371,-89.215531 29.06141,-89.217201 29.067275,-89.225865 29.07866,-89.23631 29.084605,-89.254726 29.083261,-89.257283 29.081086,-89.256869 29.0738,-89.25364 29.064954,-89.259354 29.058358,-89.283215 29.053325,-89.29109 29.053097,-89.304888 29.046379,-89.315389 29.039081,-89.318102 29.035342,-89.315182 29.032662,-89.32485 29.013805,-89.335228 29.015003,-89.338249 29.012935,-89.383814 28.947434,-89.41148 28.925011,-89.419865 28.929709,-89.412388 28.957504,-89.408157 28.965341,-89.398104 28.977016,-89.382106 28.981525,-89.375049 28.985368,-89.334735 29.040335,-89.339828 29.052221,-89.354798 29.072543,-89.374522 29.084174,-89.405654 29.086936,-89.411154 29.105838,-89.409371 29.127855,-89.417718 29.13869,-89.428965 29.14451,-89.432932 29.149023,-89.447472 29.178576,-89.455829 29.190991,-89.47231 29.20755,-89.482844 29.215053,-89.5366 29.236212,-89.606651 29.252023,-89.671781 29.289028,-89.697258 29.296679,-89.726162 29.304026,-89.782149 29.311132,-89.819859 29.310241,-89.850305 29.311768,-89.855109 29.334997,-89.853699 29.34064,-89.847124 29.349186,-89.835 29.359043,-89.820824 29.377486,-89.816916 29.384385,-89.816155 29.393518,-89.816916 29.398845,-89.819199 29.404173,-89.822243 29.4095,-89.826049 29.415589,-89.835392 29.418538,-89.843553 29.421677,-89.845075 29.434615,-89.836773 29.45404,-89.833659 29.456686,-89.833659 29.459731,-89.832898 29.463536,-89.833659 29.467341,-89.83442 29.470386,-89.840509 29.47343,-89.849642 29.477996,-89.86258 29.476474,-89.876224 29.472168,-89.902179 29.460011,-89.918999 29.444254,-89.932598 29.429288,-89.95543 29.428527,-89.96195 29.432874,-89.964563 29.434615,-89.972934 29.443748,-89.991961 29.463536,-90.01251 29.462775,-90.018598 29.45212,-90.022404 29.444509,-90.029466 29.432015,-90.032298 29.427005,-90.031536 29.412545,-90.033295 29.393274,-90.029468 29.388136,-90.029614 29.386658,-90.029967 29.383087,-90.030761 29.375043,-90.030764 29.375008,-90.030855 29.374876,-90.033604 29.370851,-90.035415 29.368201,-90.036374 29.363661,-90.032842 29.348624,-90.031815 29.344251,-90.034275 29.322661,-90.028536 29.307083,-90.013778 29.30271,-90.009678 29.294785,-90.016288 29.284257,-90.019517 29.282213,-90.032088 29.280027,-90.043293 29.282487,-90.057094 29.281331,-90.061057 29.276748,-90.059691 29.272648,-90.060511 29.267729,-90.070622 29.262537,-90.086747 29.259257,-90.091119 29.261443,-90.097678 29.26199,-90.101231 29.259804,-90.096038 29.240673,-90.073355 29.227282,-90.073355 29.210611,-90.070622 29.208698,-90.06361 29.209474,-90.04291 29.211765,-90.019772 29.231903,-90.005718 29.240627,-89.969981 29.255753,-89.965667 29.259126,-89.959509 29.267677,-89.951175 29.266124,-89.949925 29.263154,-89.950756 29.260801,-89.95646 29.253744,-90.022029 29.216065,-90.058512 29.183687,-90.079276 29.16997,-90.088684 29.162574,-90.104162 29.150407,-90.174273 29.105301,-90.223587 29.085075,-90.231984 29.08773,-90.245283 29.085824,-90.343293 29.057062,-90.348768 29.057817,-90.349891 29.063681,-90.325514 29.075138,-90.304129 29.077332,-90.29293 29.078761,-90.282983 29.082326,-90.26629 29.089421,-90.258145 29.091627,-90.253141 29.093772,-90.249806 29.100919,-90.250044 29.108067,-90.243849 29.11045,-90.234235 29.110268,-90.234405 29.128824,-90.243435 29.136311,-90.248629 29.13837,-90.26901 29.139242,-90.280516 29.142521,-90.27832 29.150691,-90.297 29.171317,-90.302846 29.175098,-90.302948 29.187948,-90.300885 29.196171,-90.293183 29.199789,-90.2828 29.192545,-90.275851 29.193668,-90.271251 29.204639,-90.286621 29.225694,-90.300304 29.231241,-90.311663 29.237954,-90.311523 29.256374,-90.316093 29.264777,-90.332796 29.276956,-90.367166 29.274128,-90.368154 29.270736,-90.367012 29.264956,-90.372565 29.258923,-90.387924 29.252786,-90.383857 29.235606,-90.399465 29.201046,-90.408578 29.196421,-90.409416 29.196135,-90.432912 29.188132,-90.435907 29.188449,-90.443954 29.19583,-90.472489 29.192688,-90.473273 29.195224,-90.468773 29.198469,-90.467233 29.202549,-90.485786 29.209843,-90.494928 29.216713,-90.490987 29.220883,-90.46832 29.227532,-90.465764 29.242951,-90.462866 29.249809,-90.450674 29.263739,-90.452186 29.26625,-90.472779 29.272556,-90.495299 29.287277,-90.510555 29.290925,-90.517277 29.282719,-90.526216 29.276492,-90.552005 29.278512,-90.565436 29.285111,-90.582525 29.276037,-90.589724 29.248521,-90.58847 29.245863,-90.583924 29.242886,-90.576506 29.243986,-90.565378 29.242475,-90.544547 29.230683,-90.543245 29.227843,-90.544311 29.224292,-90.556501 29.219913,-90.55739 29.207881,-90.560889 29.204261,-90.575277 29.206827,-90.618413 29.20329,-90.624161 29.210366,-90.62742 29.211004,-90.633819 29.209128,-90.640223 29.196554,-90.645612 29.175867,-90.645169 29.172958,-90.640863 29.171261,-90.636973 29.164572,-90.647042 29.12858,-90.677724 29.118742,-90.691109 29.121722,-90.700893 29.12147,-90.718035 29.116611,-90.731239 29.122886,-90.764189 29.113374,-90.773458 29.100133,-90.799444 29.087377,-90.802053 29.083322,-90.803699 29.063709,-90.79872 29.054841,-90.781981 29.049431,-90.765188 29.049403,-90.750092 29.053247,-90.7253 29.066616,-90.709105 29.064305,-90.70535 29.062679,-90.702102 29.060275,-90.692205 29.059607,-90.683645 29.060944,-90.676958 29.063619,-90.665589 29.06723,-90.652348 29.069237,-90.644189 29.07151,-90.641247 29.072313,-90.63924 29.072848,-90.637623 29.072084,-90.636033 29.069792,-90.637495 29.066608,-90.648058 29.062649,-90.730899 29.042259,-90.755677 29.038997,-90.79768 29.039741,-90.811473 29.03658,-90.839345 29.039167,-90.842762 29.042947,-90.844849 29.048721,-90.841226 29.054266,-90.844593 29.06728,-90.862757 29.094863,-90.867766 29.095434,-90.877583 29.104891,-90.885351 29.117016,-90.898215 29.131342,-90.925797 29.153116,-90.941877 29.162373,-90.948091 29.174104,-90.961278 29.180817,-90.981458 29.171211,-91.000096 29.169481,-91.023955 29.174784,-91.031786 29.182188,-91.05863 29.181734,-91.094015 29.187711,-91.11476 29.207918,-91.129141 29.215863,-91.199647 29.221287,-91.219032 29.226051,-91.278792 29.247776,-91.302677 29.265958,-91.334885 29.298775,-91.33275 29.305816,-91.309314 29.305698,-91.299054 29.309017,-91.291821 29.311357,-91.29042 29.313062,-91.279742 29.326058,-91.276647 29.329825,-91.276187 29.332783,-91.274308 29.344878,-91.270582 29.355415,-91.270053 29.356912,-91.26994 29.357231,-91.266589 29.361218,-91.265479 29.361767,-91.251546 29.368659,-91.251232 29.368814,-91.249517 29.369662,-91.249109 29.369864,-91.245558 29.37058,-91.238515 29.371999,-91.235348 29.370638,-91.222377 29.360703,-91.207299 29.360703,-91.197465 29.369882,-91.200087 29.38955,-91.218463 29.407235,-91.215976 29.412505,-91.214284 29.416089,-91.211999 29.420931,-91.2151 29.427542,-91.217448 29.432549,-91.218067 29.433193,-91.219242 29.434418,-91.221166 29.436421,-91.24164 29.441021,-91.251319 29.444483,-91.258226 29.446954,-91.259537 29.458001,-91.259844 29.460582,-91.259988 29.461803,-91.260024 29.462102,-91.261588 29.464954,-91.265649 29.472362,-91.2813 29.481547,-91.294325 29.476894,-91.335742 29.485886,-91.343567 29.492593,-91.34588 29.504538,-91.356625 29.515191,-91.402214 29.511914,-91.420449 29.515745,-91.42713 29.520215,-91.432337 29.53283,-91.439941 29.540434,-91.447345 29.544749,-91.468748 29.544299,-91.517274 29.52974,-91.531021 29.531543,-91.531471 29.535374,-91.52584 29.545946,-91.525523 29.551904,-91.529217 29.558598,-91.537445 29.565888,-91.541974 29.594353,-91.553537 29.632766,-91.560908 29.63735,-91.570589 29.638312,-91.581843 29.637165,-91.600179 29.631156,-91.625114 29.626195,-91.643832 29.630625,-91.648941 29.633635,-91.648657 29.636713,-91.646478 29.639427,-91.643198 29.640274,-91.637344 29.647217,-91.627286 29.662132,-91.625114 29.671679,-91.626826 29.684753,-91.623829 29.69924,-91.618479 29.710816,-91.61809 29.720694,-91.621512 29.735429,-91.632829 29.742576,-91.667128 29.745822,-91.710935 29.738993,-91.737253 29.74937,-91.752259 29.748264,-91.783674 29.740689,-91.830499 29.718918,-91.845962 29.708763,-91.85864 29.703121,-91.866516 29.70715,-91.88075 29.710839,-91.880999 29.713338,-91.878331 29.716087,-91.875637 29.722316,-91.87557 29.722471,-91.87557 29.728043,-91.878355 29.735007,-91.879748 29.742668,-91.878355 29.751025,-91.874761 29.760083,-91.859151 29.783331,-91.854677 29.807436,-91.869998 29.828328,-91.889118 29.836023,-91.90689 29.83094,-91.915989 29.815654,-91.919143 29.815379,-91.940723 29.817008,-91.96123 29.810221,-91.970443 29.80431,-91.978381 29.799217,-91.983871 29.794516,-92.035666 29.781662,-92.056398 29.772313,-92.107486 29.744429,-92.144431 29.716418,-92.149349 29.697052,-92.134347 29.669516,-92.132804 29.660462,-92.111787 29.62177,-92.093419 29.618694,-92.06564 29.619967,-92.04767 29.624527,-92.02532 29.625647,-92.01627 29.618741,-92.000371 29.613143,-92.000003 29.613013,-91.965031 29.608019,-91.939903 29.610291,-91.935024 29.612239,-91.929567 29.61884,-91.922825 29.633173,-91.898996 29.63701,-91.896763 29.634618,-91.882318 29.62977,-91.866113 29.631583,-91.863018 29.633739,-91.841294 29.62962,-91.838981 29.624475,-91.840921 29.619913,-91.838297 29.616041,-91.821693 29.606049,-91.803831 29.599562,-91.784976 29.595204,-91.7785 29.58922,-91.774805 29.582113,-91.774686 29.576387,-91.74632 29.574337,-91.719102 29.565568,-91.715642 29.565844,-91.712002 29.56474,-91.709205 29.561012,-91.711654 29.55427,-91.733956 29.539504,-91.747058 29.535144,-91.765448 29.520844,-91.771927 29.504871,-91.772529 29.499016,-91.770069 29.493812,-91.770516 29.488953,-91.782387 29.482882,-91.789119 29.482081,-91.800121 29.486828,-91.803448 29.486851,-91.814609 29.482061,-91.821576 29.473925,-91.8385 29.478874,-91.848665 29.484144,-91.852598 29.494984,-91.862324 29.502393,-91.878746 29.502937,-91.886815 29.505577,-91.906175 29.518052,-91.915322 29.518513,-91.947007 29.53316,-91.969312 29.536893,-91.985726 29.547708,-92.02681 29.566805,-92.035462 29.57864,-92.041168 29.581648,-92.046316 29.584362,-92.066533 29.583842,-92.105923 29.586335,-92.158624 29.581616,-92.21259 29.562479,-92.25186 29.539354,-92.280392 29.533434,-92.309357 29.533026,-92.347236 29.539394,-92.402165 29.551269,-92.473585 29.561081,-92.558602 29.569935,-92.61627 29.578729,-92.617725 29.579092,-92.653651 29.588065,-92.744126 29.617608,-92.871232 29.670028,-92.940455 29.701033,-92.974305 29.71398,-93.065354 29.740966,-93.088182 29.749125,-93.17693 29.770487,-93.226934 29.777519,-93.267456 29.778113,-93.295573 29.775071,-93.342104 29.763402,-93.344993 29.759618,-93.347331 29.759046,-93.372029 29.763049,-93.438973 29.768949,-93.475252 29.769242,-93.538462 29.763299,-93.590786 29.755649,-93.635304 29.752806,-93.68364 29.747153,-93.741948 29.736343,-93.766048 29.7295,-93.79925 29.71526,-93.818995 29.704076,-93.837971 29.690619,-93.892246 29.765241,-93.89847 29.771577,-93.890679 29.843159,-93.840799 29.914423,-93.789431 29.987812,-93.75663 30.014163,-93.752038 30.016403,-93.722481 30.050898,-93.721589 30.051939,-93.712101 30.067346,-93.695684 30.135729,-93.695252 30.1476,-93.712008 30.194304,-93.716223 30.244318,-93.720575 30.295961,-93.723586 30.294951,-93.735896 30.29944,-93.765822 30.333318,-93.757654 30.390423,-93.751437 30.396288,-93.741701 30.403007,-93.702665 30.429947,-93.698302 30.438657,-93.697828 30.443838,-93.710117 30.5064,-93.740045 30.538765,-93.727844 30.57407,-93.578395 30.802047,-93.563292 30.818503,-93.558672 30.868829,-93.558617 30.869424,-93.55497 30.876685,-93.554576 30.87747,-93.530936 30.924534,-93.540354 31.008135,-93.527644 31.074509,-93.531744 31.180817,-93.535097 31.185614,-93.548931 31.186601,-93.55254 31.185605,-93.552649 31.185575,-93.579215 31.167422,-93.588503 31.165581,-93.598828 31.174679,-93.599705 31.176456,-93.602315 31.181742,-93.607243 31.204806,-93.608158 31.227835,-93.614402 31.260869,-93.620829 31.271299,-93.644407 31.27711,-93.671676 31.299586,-93.640805 31.372546,-93.670182 31.387184,-93.695866 31.409392,-93.729613 31.487922,-93.798087 31.534044,-93.818582 31.554826,-93.834923 31.58621,-93.834924 31.586211,-93.82629 31.614903,-93.817059 31.671694,-93.812477 31.715246,-93.840029 31.800596,-93.878225 31.844276,-93.889193 31.856819,-93.92029 31.888651,-93.932135 31.893672,-93.975377 31.92366,-94.01563 31.979856,-94.04272 31.999265,-94.0427 32.056012,-94.042337 32.119914,-94.042681 32.137956,-94.042591 32.158097,-94.042539 32.166826,-94.042566 32.166894,-94.042621 32.196005,-94.042662 32.218146,-94.042732 32.26962,-94.042733 32.269696,-94.042739 32.363559,-94.042763 32.373332,-94.042901 32.392283,-94.042923 32.399918,-94.042899 32.400659,-94.042986 32.435507,-94.042908 32.439891,-94.042903 32.470386,-94.042875 32.471348,-94.042902 32.472906,-94.042995 32.478004,-94.042955 32.480261,-94.043072 32.4843,-94.043089 32.486561,-94.042911 32.492852,-94.042885 32.505145,-94.043081 32.513613,-94.043142 32.559502,-94.043083 32.564261,-94.042919 32.610142,-94.042929 32.61826,-94.042926 32.622015,-94.042824 32.640305,-94.04278 32.643466,-94.042913 32.655127,-94.043147 32.69303) diff --git a/rust/geo-test-fixtures/fixtures/nl_plots.wkt b/rust/sedona-geo-test-fixtures/fixtures/nl_plots.wkt similarity index 100% rename from rust/geo-test-fixtures/fixtures/nl_plots.wkt rename to rust/sedona-geo-test-fixtures/fixtures/nl_plots.wkt diff --git a/rust/geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt b/rust/sedona-geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt similarity index 99% rename from rust/geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt rename to rust/sedona-geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt index 79409ad4..277c8c7f 100644 --- a/rust/geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt @@ -1 +1 @@ -MULTIPOLYGON(((165810.88331013816 481105.4135319523,165805.03924028226 481087.31955796864,165827.0243031839 481080.140574016,165835.492344386 481077.4156058137,165841.32134709298 481095.4945620494,165810.88331013816 481105.4135319523)),((165841.32134709298 481095.4945620494,165847.1513999863 481113.57252679195,165816.684352003 481123.520548419,165810.88331013816 481105.4135319523,165841.32134709298 481095.4945620494)),((165816.684352003 481123.520548419,165847.1513999863 481113.57252679195,165854.20752218604 481135.45653249667,165823.73143364282 481145.3844633131,165816.684352003 481123.520548419)),((165833.25349588718 481161.17546683183,165834.20445387694 481160.8674610125,165842.05346714336 481158.3225058388,165847.36754182985 481174.9205297333,165851.94157576005 481189.0094869923,165843.1235316795 481191.85549232556,165837.11053207144 481173.1655096956,165833.25349588718 481161.17546683183)),((165837.1465972164 481232.7994343237,165832.3686351562 481234.366448736,165830.64859399022 481234.9194398026,165827.27456949902 481224.218452369,165823.10456946667 481211.45945178793,165829.60356585556 481209.3654743581,165837.1465972164 481232.7994343237)),((165837.1465972164 481232.7994343237,165838.33361808676 481236.48543613846,165827.8525865298 481239.8724551546,165826.6675734102 481236.20047952776,165830.64859399022 481234.9194398026,165832.3686351562 481234.366448736,165837.1465972164 481232.7994343237)),((165851.94157576005 481189.0094869923,165847.36754182985 481174.9205297333,165842.05346714336 481158.3225058388,165850.60753492877 481155.55046525295,165856.1815873062 481173.1014900736,165857.05258033366 481175.793547097,165859.00158758258 481181.6654534509,165860.50362192755 481186.2464934498,165851.94157576005 481189.0094869923)),((165854.44664577578 481227.21249125793,165846.93358080686 481203.7654415951,165854.2025963923 481201.4225106706,165855.32264947437 481205.11148452404,165858.10862015767 481213.5774607407,165861.72971818765 481224.8815075602,165859.98968400923 481225.4384499416,165854.44664577578 481227.21249125793)),((165838.33361808676 481236.48543613846,165838.56360882698 481237.1954718372,165840.09366832077 481236.7153893235,165848.1937031559 481261.8054207434,165793.46357298896 481279.5453289056,165785.32353432756 481254.3953284019,165786.98351243007 481253.8653332394,165786.7535148305 481253.1554111886,165797.33956570356 481249.73437673337,165798.77555773532 481249.27043149626,165804.22552325492 481247.50836312154,165812.5765474452 481244.8093578957,165820.9275807907 481242.11036678863,165826.3776279051 481240.34943564463,165827.8525865298 481239.8724551546,165838.33361808676 481236.48543613846)),((165866.8946775674 481227.2614635345,165855.62366086923 481230.8854573256,165854.44664577578 481227.21249125793,165859.98968400923 481225.4384499416,165861.72971818765 481224.8815075602,165865.69470760453 481223.61247728474,165866.63470314653 481226.45244678966,165866.8946775674 481227.2614635345)),((165834.9897973112 481314.85237311217,165843.37386738468 481340.70629521617,165834.53086462567 481343.55537642253,165826.1607530206 481317.7223063045,165834.9897973112 481314.85237311217)),((165843.37386738468 481340.70629521617,165834.9897973112 481314.85237311217,165843.82383160238 481311.9813540052,165852.23086611537 481337.8533663467,165843.37386738468 481340.70629521617)),((165826.1607530206 481317.7223063045,165817.33076423616 481320.5923644494,165809.32371226288 481323.19531513343,165809.09371874726 481322.4553506549,165807.4537167706 481322.99528463103,165799.3436366324 481297.8053805152,165854.04375129592 481280.1453590037,165862.18384853032 481305.2454062637,165860.56385632814 481305.7653391327,165860.79386263408 481306.4653622439,165852.74684928128 481309.0813951317,165843.82383160238 481311.9813540052,165834.9897973112 481314.85237311217,165826.1607530206 481317.7223063045)),((165856.84086455274 481321.967319789,165861.07293261477 481335.00531610136,165852.23086611537 481337.8533663467,165843.82383160238 481311.9813540052,165852.74684928128 481309.0813951317,165853.9738187968 481312.8804221144,165856.84086455274 481321.967319789)),((165827.9150598663 481472.76617049647,165832.06707809644 481458.72118103574,165834.7140592224 481449.70024741895,165834.85802961228 481449.74317757157,165836.22904270093 481445.12527897663,165844.7631001899 481447.63422229275,165839.82106861868 481464.42724634655,165836.6310674592 481475.3272369474,165827.9150598663 481472.76617049647)),((165845.2901032648 481477.87217160105,165836.6310674592 481475.3272369474,165839.82106861868 481464.42724634655,165844.7631001899 481447.63422229275,165853.2880852939 481450.14126894844,165851.9171189479 481454.76227839023,165852.06109124355 481454.8042076756,165849.44014112678 481463.8181797485,165845.2901032648 481477.87217160105)),((165859.0901429811 481451.847246296,165857.7221495504 481456.47827446036,165855.10815529912 481465.4872519917,165852.2621572328 481475.0532652427,165850.94713900573 481479.5352067781,165845.2901032648 481477.87217160105,165849.44014112678 481463.8181797485,165852.06109124355 481454.8042076756,165851.9171189479 481454.76227839023,165853.2880852939 481450.14126894844,165859.0901429811 481451.847246296)),((165859.0901429811 481451.847246296,165864.89212849856 481453.5532303068,165863.52718054497 481458.19227461156,165863.38416540896 481458.1492344596,165860.74618647926 481467.1472523947,165857.91919632955 481476.7151957553,165855.13816786418 481475.8981865053,165853.82416749134 481480.38124216447,165850.94713900573 481479.5352067781,165852.2621572328 481475.0532652427,165855.10815529912 481465.4872519917,165857.7221495504 481456.47827446036,165859.0901429811 481451.847246296)),((165845.2901032648 481477.87217160105,165850.94713900573 481479.5352067781,165853.82416749134 481480.38124216447,165864.26622637178 481483.4501794296,165851.18822609202 481527.8531666835,165823.56413966522 481519.7282063275,165825.61514416043 481512.7781425044,165827.14610558908 481507.58913941676,165828.6791265633 481502.39513447497,165830.20212846796 481497.23215074255,165830.97413562768 481494.6171360007,165831.73209434262 481492.0351359933,165833.24713194987 481486.86924293207,165834.77111099343 481481.66921192576,165836.6310674592 481475.3272369474,165845.2901032648 481477.87217160105)),((165730.21619993297 481708.4439375155,165742.92118772503 481665.2739500047,165786.68302267324 481516.58014388575,165856.23329322916 481537.0501121804,165799.76645236128 481728.91290228424,165730.21619993297 481708.4439375155),(165746.97817681843 481678.1249967319,165739.51720045673 481703.3929706164,165748.98228750372 481706.1839397019,165754.16228786216 481707.71197579463,165759.34330791573 481709.2399082823,165764.5213269664 481710.7669495632,165769.70131799649 481712.29489069746,165774.88035331282 481713.8219450789,165780.06040613883 481715.3498972343,165785.24938222612 481716.87998835195,165793.0064036057 481719.1679565437,165800.49241780592 481693.8509380728,165800.76337957833 481692.93493719323,165802.38537803394 481693.4000103697,165830.76330596063 481597.13106763444,165829.1522768488 481596.65610686253,165829.66733507172 481594.80413330207,165836.8522983434 481570.4530650798,165783.23205589326 481554.6271463925,165776.42312722164 481578.01311732817,165775.83611402218 481579.7920612626,165773.39511176312 481588.10706181667,165771.791149101 481593.5750843673,165770.18610154392 481599.0419924757,165768.58214810936 481604.5090147985,165766.97710735357 481609.97603531193,165765.37316096094 481615.44305877335,165763.76812530853 481620.9109705391,165761.39818000598 481628.9870259021,165759.00317022737 481637.1490350176,165757.3981507424 481642.6159476773,165755.7941550114 481648.0839757768,165754.18914232866 481653.55100084655,165752.58515606486 481659.0179174441,165750.98021860325 481664.4849438074,165749.3761709623 481669.95197266684,165746.97817681843 481678.1249967319)),((165764.62994572392 481000.72964452335,165770.60704551917 481019.56454185536,165757.8109932328 481023.6556331221,165749.7149720541 481026.265607322,165742.755978062 481028.52258053963,165738.16194859543 481014.2605593478,165736.62288285774 481009.4805378496,165764.5559616496 481000.51162832347,165764.62994572392 481000.72964452335)),((165780.9100788994 481051.4195472039,165753.04303926002 481060.4275618781,165750.7440165607 481053.2945383054,165746.13098868445 481038.97950592457,165773.96205107903 481030.0095373427,165780.9100788994 481051.4195472039)),((165764.39215046004 481095.6485469322,165768.84218902295 481109.45854900277,165752.09916741413 481114.8585235,165739.06214865297 481119.03948478634,165734.55407641333 481105.2304959504,165745.858077976 481101.5475506689,165752.5161283254 481099.4205502416,165764.39215046004 481095.6485469322)),((165739.06214865297 481119.03948478634,165752.09916741413 481114.8585235,165768.84218902295 481109.45854900277,165773.7592437802 481124.71645183617,165744.0691597118 481134.3254810618,165739.06214865297 481119.03948478634)),((165760.15524713008 481165.29146753036,165754.1621837003 481146.74349274713,165752.64022651344 481141.99243090645,165762.91820267861 481138.67746517947,165764.86823752327 481144.76151637506,165767.0322865295 481151.4134816525,165770.4322916698 481161.9774055011,165760.15524713008 481165.29146753036)),((165770.4322916698 481161.9774055011,165767.0322865295 481151.4134816525,165764.86823752327 481144.76151637506,165762.91820267861 481138.67746517947,165773.19626086665 481135.36252099246,165774.72427119376 481140.1124897321,165778.90532097794 481153.0484925419,165780.70934980048 481158.6634761236,165770.4322916698 481161.9774055011)),((165754.46226726277 481186.5204745377,165763.1913428137 481183.7123919793,165767.25433634454 481196.3463805137,165770.48439554079 481206.6294380334,165772.96339762883 481214.47740331833,165764.23735355845 481217.29337498534,165763.0663964398 481213.4674561492,165760.05733901297 481203.9214529135,165754.46226726277 481186.5204745377)),((165763.1913428137 481183.7123919793,165771.9203620799 481180.90343458427,165777.4883933551 481198.2974753085,165780.52041607565 481207.835417028,165781.69040843003 481211.6604477769,165772.96339762883 481214.47740331833,165770.48439554079 481206.6294380334,165767.25433634454 481196.3463805137,165763.1913428137 481183.7123919793)),((165767.94046532223 481255.0803727385,165762.39442858525 481256.88432944176,165760.70244359746 481257.4293949917,165758.18439427088 481249.7603739864,165757.21740785558 481246.7643741759,165754.35638811823 481237.780357234,165753.1123999269 481233.956395535,165760.36338960959 481231.6154014575,165767.94046532223 481255.0803727385)),((165767.94046532223 481255.0803727385,165769.13344454192 481258.7753833276,165757.8784395208 481262.4083133824,165756.68945809107 481258.72132523236,165760.70244359746 481257.4293949917,165762.39442858525 481256.88432944176,165767.94046532223 481255.0803727385)),((165752.72879604952 481450.6481872374,165753.01780734822 481449.7111945327,165754.03076075122 481446.2682207337,165756.9037671212 481436.61820636754,165759.5297725321 481427.5911792049,165760.87376458934 481423.0161490942,165766.68378131933 481424.7281545481,165765.33678659622 481429.30217518256,165765.1928150116 481429.2592470541,165762.5888224881 481438.28620799293,165758.38179191307 481452.3162255302,165752.72879604952 481450.6481872374)),((165758.38179191307 481452.3162255302,165762.5888224881 481438.28620799293,165765.1928150116 481429.2592470541,165765.33678659622 481429.30217518256,165766.68378131933 481424.7281545481,165775.2168089457 481427.24120325147,165772.145797014 481437.6892057502,165770.32284964234 481444.0061394648,165767.09185403027 481454.8851670778,165758.38179191307 481452.3162255302)),((165767.09185403027 481454.8851670778,165770.32284964234 481444.0061394648,165772.145797014 481437.6892057502,165775.2168089457 481427.24120325147,165783.75084868493 481429.75515904836,165782.39683007967 481434.32315151556,165782.5408714928 481434.36519018246,165779.88083834152 481443.37722162984,165775.75088814163 481457.4322048577,165767.09185403027 481454.8851670778)),((165759.97295779423 481542.59013106796,165751.349929424 481540.0420859427,165754.23096464516 481530.2160663096,165755.90595991243 481524.44010320725,165758.41391373967 481516.0321128274,165767.04893821903 481518.56806844496,165763.34993966614 481531.07709912147,165760.82300474338 481539.71614134696,165759.97295779423 481542.59013106796)),((165766.5320427976 481558.5590362891,165738.95195147427 481550.44109771407,165739.22793669422 481549.5020729691,165740.56592901776 481544.9660771371,165743.769969775 481545.91612452094,165768.14401146414 481553.08012593735,165766.5320427976 481558.5590362891)),((165770.3300088621 481545.6511190906,165768.14401146414 481553.08012593735,165743.769969775 481545.91612452094,165740.56592901776 481544.9660771371,165742.76593479898 481537.5050447366,165751.349929424 481540.0420859427,165759.97295779423 481542.59013106796,165770.3300088621 481545.6511190906)),((165770.3300088621 481545.6511190906,165759.97295779423 481542.59013106796,165760.82300474338 481539.71614134696,165763.34993966614 481531.07709912147,165767.04893821903 481518.56806844496,165777.35402061223 481521.5951332937,165770.3300088621 481545.6511190906)),((165759.94208684235 481081.8385492149,165764.39215046004 481095.6485469322,165752.5161283254 481099.4205502416,165745.858077976 481101.5475506689,165734.55407641333 481105.2304959504,165730.10002995466 481091.43053018703,165759.94208684235 481081.8385492149)),((165755.3420530924 481067.5615879822,165759.94208684235 481081.8385492149,165730.10002995466 481091.43053018703,165725.50401482623 481077.15149142453,165755.3420530924 481067.5615879822)),((165753.04303926002 481060.4275618781,165755.3420530924 481067.5615879822,165725.50401482623 481077.15149142453,165720.882987899 481062.85448954423,165750.7440165607 481053.2945383054,165753.04303926002 481060.4275618781)),((165746.13098868445 481038.97950592457,165750.7440165607 481053.2945383054,165720.882987899 481062.85448954423,165716.31991080538 481048.61158124864,165746.13098868445 481038.97950592457)),((165760.2829465038 480980.82661333535,165766.48497205196 481000.12763493793,165764.62994572392 481000.72964452335,165764.5559616496 481000.51162832347,165736.62288285774 481009.4805378496,165733.55590598722 480999.96057572326,165730.4898739962 480990.4396163693,165760.2829465038 480980.82661333535)),((165752.64022651344 481141.99243090645,165754.1621837003 481146.74349274713,165760.15524713008 481165.29146753036,165749.87821666626 481168.6054396765,165746.4742134789 481158.04341274337,165744.30618292658 481151.3924491705,165742.36219818195 481145.3064164967,165752.64022651344 481141.99243090645)),((165739.60024764334 481171.918429759,165733.6001518292 481153.37447009963,165732.07517469442 481148.62440939253,165742.36219818195 481145.3064164967,165744.30618292658 481151.3924491705,165746.4742134789 481158.04341274337,165749.87821666626 481168.6054396765,165739.60024764334 481171.918429759)),((165754.46226726277 481186.5204745377,165760.05733901297 481203.9214529135,165763.0663964398 481213.4674561492,165764.23735355845 481217.29337498534,165755.51036490736 481220.10935998964,165749.8103211655 481201.9753728406,165745.73224516274 481189.3294605534,165754.46226726277 481186.5204745377)),((165745.73224516274 481189.3294605534,165749.8103211655 481201.9753728406,165755.51036490736 481220.10935998964,165746.78331805518 481222.92536026856,165745.61234685374 481219.1003356426,165742.59732487198 481209.55544268835,165737.0032581936 481192.1373515939,165745.73224516274 481189.3294605534)),((165757.8784395208 481262.4083133824,165756.43242557545 481262.8753640524,165751.8144077858 481248.50834933895,165747.66039481142 481235.71740314807,165753.1123999269 481233.956395535,165754.35638811823 481237.780357234,165757.21740785558 481246.7643741759,165758.18439427088 481249.7603739864,165760.70244359746 481257.4293949917,165756.68945809107 481258.72132523236,165757.8784395208 481262.4083133824)),((165742.20737085477 481237.47841455427,165747.66039481142 481235.71740314807,165751.8144077858 481248.50834933895,165756.43242557545 481262.8753640524,165750.98140785462 481264.635368777,165746.36439863997 481250.2683613508,165742.20737085477 481237.47841455427)),((165733.85235512824 481240.17530463496,165742.20737085477 481237.47841455427,165746.36439863997 481250.2683613508,165750.98140785462 481264.635368777,165742.61838084552 481267.3353419938,165739.1253645554 481256.40639819385,165735.78637572107 481246.0963088247,165733.85235512824 481240.17530463496)),((165739.44771866192 481446.73115084914,165747.59369677713 481419.1052129124,165755.07273490838 481421.3081755765,165753.72872813584 481425.89221959456,165753.872770279 481425.93414616835,165751.21877611184 481434.9502114409,165748.3617320527 481444.60115392786,165751.15376605676 481445.4211310361,165750.1407438861 481448.8652179072,165749.84376477124 481449.7981879186,165739.44771866192 481446.73115084914)),((165755.07273490838 481421.3081755765,165760.87376458934 481423.0161490942,165759.5297725321 481427.5911792049,165756.9037671212 481436.61820636754,165754.03076075122 481446.2682207337,165753.01780734822 481449.7111945327,165752.72879604952 481450.6481872374,165749.84376477124 481449.7981879186,165750.1407438861 481448.8652179072,165751.15376605676 481445.4211310361,165748.3617320527 481444.60115392786,165751.21877611184 481434.9502114409,165753.872770279 481425.93414616835,165753.72872813584 481425.89221959456,165755.07273490838 481421.3081755765)),((165742.97691753737 481536.8301309427,165734.24586626413 481534.2861086722,165741.1428862153 481510.9591321961,165749.7788806756 481513.49606105307,165746.0828843547 481525.99109169544,165742.97691753737 481536.8301309427)),((165751.349929424 481540.0420859427,165742.76593479898 481537.5050447366,165742.97691753737 481536.8301309427,165746.0828843547 481525.99109169544,165749.7788806756 481513.49606105307,165758.41391373967 481516.0321128274,165755.90595991243 481524.44010320725,165754.23096464516 481530.2160663096,165751.349929424 481540.0420859427)),((165764.92303530494 481564.0260484118,165737.3379160775 481555.91300334374,165738.95195147427 481550.44109771407,165766.5320427976 481558.5590362891,165764.92303530494 481564.0260484118)),((165756.65861975378 481368.6482390871,165746.99361894192 481371.7652784169,165738.64354107963 481345.87521031464,165748.30754891026 481342.7652734014,165749.53056963885 481346.5632645032,165752.44162214728 481355.59022616025,165756.65861975378 481368.6482390871)),((165752.44162214728 481355.59022616025,165749.53056963885 481346.5632645032,165748.30754891026 481342.7652734014,165757.1655748783 481339.9142905514,165765.53763238693 481365.7842990672,165756.65861975378 481368.6482390871,165752.44162214728 481355.59022616025)),((165931.8740897101 481845.97389222414,165926.63909579924 481844.43286302045,165958.18401185697 481745.6750893561,165967.88499884465 481714.8050392654,165978.03495803892 481683.42508322693,165987.85492324663 481650.42518802424,165995.61388665624 481619.89523620025,166004.04382546115 481580.0652253856,166010.46478895945 481545.80430237454,166014.77372129864 481515.08432910295,166017.944697256 481484.37428252696,166020.5436071265 481447.925407236,166022.89455435504 481414.75537924014,166022.04348282522 481375.44443781814,166020.8944038609 481336.42545843904,166017.34331388713 481290.65451334784,166013.00322002955 481257.715565682,166007.23313360344 481221.6245515634,165999.8039932762 481185.89557452104,165992.08393542428 481153.505664375,165982.45284189627 481118.96567873587,165972.17376532574 481084.43462164776,165922.1182438914 480929.20882226096,165975.01141201917 480912.1598730747,166024.8938545033 481067.4346662247,166037.18297547125 481107.11472961167,166046.7030684515 481141.6757140136,166054.33414940542 481174.0956631055,166061.37422548773 481209.90462836804,166067.3343192893 481245.95563193766,166073.33447668666 481291.5845675772,166076.77359289434 481337.3455119879,166077.9346373195 481376.3654226637,166078.08471020023 481415.6754693985,166076.93381866926 481448.8553972129,166074.02386650007 481485.3043251416,166069.32390902136 481528.5953227781,166064.62495930243 481559.2152395635,166058.68402618731 481593.5952206984,166049.5850707105 481633.26420126244,166041.42513576322 481663.6941479141,166031.79418719656 481696.74509726476,166022.14521790974 481728.24511586566,166012.34424551582 481759.0840178028,165960.17927882302 481921.8258100093,165950.38024911226 481918.9487982852,165970.180244166 481857.2469406328,165931.8740897101 481845.97389222414)),((165891.6666154965 481136.02359245205,165834.14510546066 480957.56464399444,165903.14921352794 480935.321792724,165960.67176963005 481113.7816573767,165891.6666154965 481136.02359245205)),((165811.18078064197 481358.96532213397,165767.3103702741 481222.86038524355,165836.31353847278 481200.6194925535,165880.18498152556 481336.7233748839,165863.38789269142 481342.1373177792,165811.18078064197 481358.96532213397),(165784.58846067498 481223.87043900834,165778.02345562194 481225.98536036786,165785.55950023342 481249.4403665603,165786.7535148305 481253.1554111886,165786.98351243007 481253.8653332394,165785.32353432756 481254.3953284019,165793.46357298896 481279.5453289056,165848.1937031559 481261.8054207434,165840.09366832077 481236.7153893235,165838.56360882698 481237.1954718372,165838.33361808676 481236.48543613846,165837.1465972164 481232.7994343237,165829.60356585556 481209.3654743581,165823.10456946667 481211.45945178793,165817.6525229432 481213.2164879185,165812.20055093075 481214.97241758025,165803.84649189602 481217.6644071663,165795.49251017885 481220.3564110396,165790.040483603 481222.11336638086,165784.58846067498 481223.87043900834),(165799.3436366324 481297.8053805152,165807.4537167706 481322.99528463103,165809.09371874726 481322.4553506549,165809.32371226288 481323.19531513343,165817.67381487784 481348.9853649841,165825.6738182269 481346.4083368862,165834.53086462567 481343.55537642253,165843.37386738468 481340.70629521617,165852.23086611537 481337.8533663467,165861.07293261477 481335.00531610136,165869.11391915628 481332.4153192787,165860.79386263408 481306.4653622439,165860.56385632814 481305.7653391327,165862.18384853032 481305.2454062637,165854.04375129592 481280.1453590037,165799.3436366324 481297.8053805152)),((165890.8257503115 481219.568445799,165896.25174365405 481217.8234493365,165897.75379771486 481217.34054124047,165908.87381045165 481213.76548845315,165931.37404637353 481283.6954208855,165921.7149745366 481286.811464343,165912.9189682873 481289.6493829797,165904.0799201045 481292.50046260294,165895.26694583046 481295.34338203387,165886.31888588314 481298.2294122301,165878.3339113341 481300.80537398526,165878.1138858439 481300.1253995869,165876.44389041603 481300.6554533546,165854.33365392467 481232.05545480386,165855.82369299646 481231.57540042157,165855.62366086923 481230.8854573256,165866.8946775674 481227.2614635345,165868.29369451493 481226.81247772946,165873.70971056758 481225.07043869596,165882.26772553523 481222.31949046534,165890.8257503115 481219.568445799)),((165935.02397284005 481245.53548755957,165931.78590693325 481235.4624807737,165937.3279522924 481233.68351704546,165944.21996750988 481231.4705071231,165946.2929498066 481237.89247930876,165947.4609974654 481241.54953687976,165935.02397284005 481245.53548755957)),((165931.78590693325 481235.4624807737,165928.51389815565 481225.28548057156,165940.92392673437 481221.25650576956,165942.14792768657 481225.0515421137,165944.21996750988 481231.4705071231,165937.3279522924 481233.68351704546,165931.78590693325 481235.4624807737)),((165940.92392673437 481221.25650576956,165940.38089696498 481219.5725450003,165950.59394445625 481216.2815246088,165956.30395514896 481214.44053561985,165960.13897532108 481226.33549698483,165951.09199357682 481229.2654734652,165944.21996750988 481231.4705071231,165942.14792768657 481225.0515421137,165940.92392673437 481221.25650576956)),((165936.54584356796 481207.699518199,165938.6048992502 481214.10754797957,165939.7208855557 481217.54051367636,165927.31390358304 481221.5755064988,165924.12884127168 481211.6925502743,165929.67582654592 481209.9104735108,165936.54584356796 481207.699518199)),((165939.7208855557 481217.54051367636,165938.6048992502 481214.10754797957,165936.54584356796 481207.699518199,165943.42091453492 481205.48758226004,165952.46891637606 481202.5455774916,165956.30395514896 481214.44053561985,165950.59394445625 481216.2815246088,165940.38089696498 481219.5725450003,165939.7208855557 481217.54051367636)),((165928.88381791487 481183.8815045006,165932.12180322534 481193.94749854505,165919.70380637315 481197.9754764354,165916.45976908074 481187.9535376864,165921.9968088786 481186.08553448814,165928.88381791487 481183.8815045006)),((165928.88381791487 481183.8815045006,165935.77478973227 481181.6766027653,165944.79885145818 481178.7555598329,165948.63385924912 481190.6505113363,165942.92389217904 481192.4915092783,165932.71481026363 481195.78856254957,165932.12180322534 481193.94749854505,165928.88381791487 481183.8815045006)),((165925.6577841699 481173.8315612609,165926.81775358738 481177.45555016235,165928.88381791487 481183.8815045006,165921.9968088786 481186.08553448814,165916.45976908074 481187.9535376864,165913.1937729216 481177.86557317525,165925.6577841699 481173.8315612609)),((165921.24274012144 481160.08457912493,165923.31373494447 481166.50753767864,165924.47675393053 481170.1415464862,165911.99370911228 481174.1455892804,165908.7426881924 481164.09159663186,165914.34872256077 481162.2995081409,165921.24274012144 481160.08457912493)),((165925.0648026079 481171.97659024666,165924.47675393053 481170.1415464862,165923.31373494447 481166.50753767864,165921.24274012144 481160.08457912493,165928.1277549979 481157.87353403826,165937.12878032168 481154.9655552655,165940.9638250668 481166.8606115619,165935.2657636092 481168.7025348458,165925.0648026079 481171.97659024666)),((165908.7426881924 481164.09159663186,165905.50370686068 481154.0755739703,165917.98371786345 481150.0455835623,165919.17071490118 481153.6626206272,165921.24274012144 481160.08457912493,165914.34872256077 481162.2995081409,165908.7426881924 481164.09159663186)),((165937.12878032168 481154.9655552655,165928.1277549979 481157.87353403826,165921.24274012144 481160.08457912493,165919.17071490118 481153.6626206272,165917.98371786345 481150.0455835623,165916.79371812948 481146.3055934274,165918.07372073093 481144.83562240377,165932.37375480027 481140.215544091,165937.12878032168 481154.9655552655)),((165981.62270644 481566.05520726903,165982.7517157374 481562.23724365025,165985.8667134712 481551.73628236784,165991.4567438497 481553.39521309774,166000.28978018748 481555.8702663668,165996.0747680759 481570.2552233033,165990.2887963984 481568.5732643481,165981.62270644 481566.05520726903)),((165985.8667134712 481551.73628236784,165988.95169326712 481541.2192343411,165990.07469705105 481536.73523226037,166004.50474845723 481541.48531321733,166000.28978018748 481555.8702663668,165991.4567438497 481553.39521309774,165985.8667134712 481551.73628236784)),((165975.7046653689 481533.0052850057,165990.07469705105 481536.73523226037,165988.95169326712 481541.2192343411,165985.8667134712 481551.73628236784,165980.26768450555 481550.0752239369,165971.4586622845 481547.49222248094,165975.7046653689 481533.0052850057)),((165981.62270644 481566.05520726903,165967.25466094722 481561.8351702114,165971.4586622845 481547.49222248094,165980.26768450555 481550.0752239369,165985.8667134712 481551.73628236784,165982.7517157374 481562.23724365025,165981.62270644 481566.05520726903)),((165939.31052736257 481537.98322753777,165948.14258714658 481540.61517884233,165953.74756907398 481542.2762139906,165950.6586404207 481552.79416514596,165949.52764086245 481556.6282648508,165935.0645508778 481552.3851903837,165939.31052736257 481537.98322753777)),((165968.11566737344 481546.5032211833,165963.90465453628 481560.84526602336,165949.52764086245 481556.6282648508,165950.6586404207 481552.79416514596,165953.74756907398 481542.2762139906,165959.34662016534 481543.9352395898,165968.11566737344 481546.5032211833)),((165968.11566737344 481546.5032211833,165959.34662016534 481543.9352395898,165953.74756907398 481542.2762139906,165956.82960471738 481531.76726200926,165957.95361929305 481527.8292279403,165972.34463824946 481532.0372719382,165968.11566737344 481546.5032211833)),((165939.31052736257 481537.98322753777,165943.5445107696 481523.62018447777,165957.95361929305 481527.8292279403,165956.82960471738 481531.76726200926,165953.74756907398 481542.2762139906,165948.14258714658 481540.61517884233,165939.31052736257 481537.98322753777)),((165943.5445107696 481523.62018447777,165947.79850722943 481509.19020873844,165956.59254258088 481511.865261011,165962.1916013131 481513.50526350754,165959.10157256975 481524.011301254,165957.95361929305 481527.8292279403,165943.5445107696 481523.62018447777)),((165972.34463824946 481532.0372719382,165957.95361929305 481527.8292279403,165959.10157256975 481524.011301254,165962.1916013131 481513.50526350754,165967.79658568368 481515.1462869073,165976.5556365254 481517.7543160746,165972.34463824946 481532.0372719382)),((165976.5556365254 481517.7543160746,165967.79658568368 481515.1462869073,165962.1916013131 481513.50526350754,165965.2815927043 481502.9912167502,165966.3935615073 481499.1412791612,165980.7906309283 481503.33033460635,165976.5556365254 481517.7543160746)),((165951.99551549152 481494.95126221766,165966.3935615073 481499.1412791612,165965.2815927043 481502.9912167502,165962.1916013131 481513.50526350754,165956.59254258088 481511.865261011,165947.79850722943 481509.19020873844,165951.99551549152 481494.95126221766)),((165956.26151080034 481480.4822672796,165965.0625026999 481483.08525067125,165970.69252246595 481484.73534517415,165967.57958312554 481495.2263056233,165966.3935615073 481499.1412791612,165951.99551549152 481494.95126221766,165956.26151080034 481480.4822672796)),((165970.69252246595 481484.73534517415,165985.017608498 481488.9352678822,165980.7906309283 481503.33033460635,165966.3935615073 481499.1412791612,165967.57958312554 481495.2263056233,165970.69252246595 481484.73534517415)),((165985.017608498 481488.9352678822,165970.69252246595 481484.73534517415,165973.75455211758 481474.21033811977,165974.8974974293 481470.2332966167,165989.26357937 481474.4722649936,165985.017608498 481488.9352678822)),((165960.50445133742 481466.0903311382,165974.8974974293 481470.2332966167,165973.75455211758 481474.21033811977,165970.69252246595 481484.73534517415,165965.0625026999 481483.08525067125,165956.26151080034 481480.4822672796,165960.50445133742 481466.0903311382)),((165960.50445133742 481466.0903311382,165964.74948427 481451.6882785512,165973.51751495776 481454.29532028775,165979.1745332628 481455.9592810538,165976.05152430522 481466.4553314901,165974.8974974293 481470.2332966167,165960.50445133742 481466.0903311382)),((165989.26357937 481474.4722649936,165974.8974974293 481470.2332966167,165976.05152430522 481466.4553314901,165979.1745332628 481455.9592810538,165984.73649874856 481457.595332028,165993.45358051884 481460.20129447326,165989.26357937 481474.4722649936)),((165979.1745332628 481455.9592810538,165982.22851159697 481445.4223565114,165983.38548240822 481441.61335710034,165997.67452061403 481445.8253634295,165993.45358051884 481460.20129447326,165984.73649874856 481457.595332028,165979.1745332628 481455.9592810538)),((165964.74948427 481451.6882785512,165965.8944682684 481447.80536906695,165964.21943920254 481447.3353404566,165967.16940644267 481436.83333526517,165983.38548240822 481441.61335710034,165982.22851159697 481445.4223565114,165979.1745332628 481455.9592810538,165973.51751495776 481454.29532028775,165964.74948427 481451.6882785512)),((165931.78434320926 481457.6552447277,165935.97235709074 481443.2893136629,165941.40237306454 481444.85526083026,165947.03838439108 481446.5322673152,165943.89840851355 481457.0212904519,165942.7733832031 481460.8903412712,165931.78434320926 481457.6552447277)),((165961.39641423512 481450.78526691074,165957.19445905197 481465.1353463633,165942.7733832031 481460.8903412712,165943.89840851355 481457.0212904519,165947.03838439108 481446.5322673152,165952.60639016278 481448.19032571657,165961.39641423512 481450.78526691074)),((165967.16940644267 481436.83333526517,165964.21943920254 481447.3353404566,165962.54440981965 481446.8653124131,165961.39641423512 481450.78526691074,165952.60639016278 481448.19032571657,165947.03838439108 481446.5322673152,165950.09037083114 481436.00433123333,165951.29139067512 481432.15236295323,165967.16940644267 481436.83333526517)),((165935.97235709074 481443.2893136629,165940.17434220857 481428.87535132206,165951.29139067512 481432.15236295323,165950.09037083114 481436.00433123333,165947.03838439108 481446.5322673152,165941.40237306454 481444.85526083026,165935.97235709074 481443.2893136629)),((165947.79850722943 481509.19020873844,165943.5445107696 481523.62018447777,165939.31052736257 481537.98322753777,165935.0645508778 481552.3851903837,165949.52764086245 481556.6282648508,165963.90465453628 481560.84526602336,165968.11566737344 481546.5032211833,165972.34463824946 481532.0372719382,165975.7046653689 481533.0052850057,165971.4586622845 481547.49222248094,165967.25466094722 481561.8351702114,165981.62270644 481566.05520726903,165990.2887963984 481568.5732643481,165988.14081311575 481575.871190598,165925.78456217595 481557.5191725351,165951.19443893305 481471.1812507268,165929.6113786002 481464.82930264046,165931.78434320926 481457.6552447277,165942.7733832031 481460.8903412712,165957.19445905197 481465.1353463633,165961.39641423512 481450.78526691074,165962.54440981965 481446.8653124131,165964.21943920254 481447.3353404566,165965.8944682684 481447.80536906695,165964.74948427 481451.6882785512,165960.50445133742 481466.0903311382,165956.26151080034 481480.4822672796,165951.99551549152 481494.95126221766,165947.79850722943 481509.19020873844)),((165941.05912179363 481325.0553667046,165955.3011366293 481320.4854062049,165959.84321633418 481334.64037687157,165951.19216527854 481337.4754338825,165945.62013845862 481339.26544198627,165942.2591185958 481328.84044813446,165941.05912179363 481325.0553667046)),((165941.05912179363 481325.0553667046,165942.2591185958 481328.84044813446,165945.62013845862 481339.26544198627,165940.0661268979 481341.050378153,165934.73211844507 481342.753361227,165930.24406786144 481328.52543277247,165941.05912179363 481325.0553667046)),((165934.73211844507 481342.753361227,165940.0661268979 481341.050378153,165945.62013845862 481339.26544198627,165948.99422618406 481349.69436158845,165950.20422346052 481353.54544691474,165939.25420752895 481357.08540151204,165934.73211844507 481342.753361227)),((165962.87524257202 481338.1164342519,165966.16722080676 481348.3844067348,165950.20422346052 481353.54544691474,165948.99422618406 481349.69436158845,165945.62013845862 481339.26544198627,165951.19216527854 481337.4754338825,165959.84321633418 481334.64037687157,165961.14418771747 481338.6953912655,165962.87524257202 481338.1164342519)),((165966.16722080676 481348.3844067348,165962.87524257202 481338.1164342519,165964.64423360457 481337.52543432114,165963.3402144063 481333.4624012245,165971.93421949708 481330.74640247505,165977.48524113596 481328.96739244333,165980.85626413499 481339.39844098384,165982.07327767808 481343.2424288156,165966.16722080676 481348.3844067348)),((165991.720251199 481324.3384400168,165996.32429299227 481338.6354442758,165982.07327767808 481343.2424288156,165980.85626413499 481339.39844098384,165977.48524113596 481328.96739244333,165983.06424125226 481327.1794385015,165991.720251199 481324.3384400168)),((165987.1412406636 481310.11748955015,165991.720251199 481324.3384400168,165983.06424125226 481327.1794385015,165977.48524113596 481328.96739244333,165974.13820372755 481318.53639975237,165972.92219446276 481314.7565044081,165987.1412406636 481310.11748955015)),((165963.3402144063 481333.4624012245,165958.81514406268 481319.35842404625,165972.92219446276 481314.7565044081,165974.13820372755 481318.53639975237,165977.48524113596 481328.96739244333,165971.93421949708 481330.74640247505,165963.3402144063 481333.4624012245)),((165972.92219446276 481314.7565044081,165958.81514406268 481319.35842404625,165954.19315136166 481304.9514868698,165962.75612083622 481302.2305076738,165968.30917366338 481300.4094340397,165972.92219446276 481314.7565044081)),((165968.30917366338 481300.4094340397,165973.88217284554 481298.6655169666,165982.5412139683 481295.8305174183,165987.1412406636 481310.11748955015,165972.92219446276 481314.7565044081,165968.30917366338 481300.4094340397)),((165968.30917366338 481300.4094340397,165964.9601495697 481290.02650985704,165963.7271422241 481286.15745674213,165977.94914385804 481281.5714949763,165982.5412139683 481295.8305174183,165973.88217284554 481298.6655169666,165968.30917366338 481300.4094340397)),((165963.7271422241 481286.15745674213,165964.9601495697 481290.02650985704,165968.30917366338 481300.4094340397,165962.75612083622 481302.2305076738,165954.19315136166 481304.9514868698,165949.62211592981 481290.70544403687,165963.7271422241 481286.15745674213)),((165959.13904705815 481271.891451392,165962.4810715889 481282.33644102496,165963.7271422241 481286.15745674213,165949.62211592981 481290.70544403687,165945.03602160158 481276.4124190493,165953.5660289468 481273.6634235794,165959.13904705815 481271.891451392)),((165973.36409571537 481267.33151899016,165977.94914385804 481281.5714949763,165963.7271422241 481286.15745674213,165962.4810715889 481282.33644102496,165959.13904705815 481271.891451392,165964.71208475076 481270.1124758971,165973.36409571537 481267.33151899016)),((165968.77606675995 481253.0095394675,165970.30806429673 481257.7664775316,165973.36409571537 481267.33151899016,165964.71208475076 481270.1124758971,165959.13904705815 481271.891451392,165955.79304926845 481261.4484581901,165954.55201612142 481257.6254531015,165968.77606675995 481253.0095394675)),((165954.55201612142 481257.6254531015,165955.79304926845 481261.4484581901,165959.13904705815 481271.891451392,165953.5660289468 481273.6634235794,165945.03602160158 481276.4124190493,165941.9830346947 481266.89747067,165940.47400505433 481262.19544545864,165954.55201612142 481257.6254531015)),((165966.16722080676 481348.3844067348,165982.07327767808 481343.2424288156,165996.32429299227 481338.6354442758,165991.720251199 481324.3384400168,165987.1412406636 481310.11748955015,165982.5412139683 481295.8305174183,165977.94914385804 481281.5714949763,165973.36409571537 481267.33151899016,165970.30806429673 481257.7664775316,165968.77606675995 481253.0095394675,165973.53406971783 481251.476547989,166002.68035683886 481341.89440115006,165936.05519068605 481363.369405808,165923.01604604002 481322.9174133205,165949.18912624416 481314.4813888294,165934.61698036632 481269.27143408824,165941.9830346947 481266.89747067,165945.03602160158 481276.4124190493,165949.62211592981 481290.70544403687,165954.19315136166 481304.9514868698,165958.81514406268 481319.35842404625,165963.3402144063 481333.4624012245,165964.64423360457 481337.52543432114,165962.87524257202 481338.1164342519,165961.14418771747 481338.6953912655,165959.84321633418 481334.64037687157,165955.3011366293 481320.4854062049,165941.05912179363 481325.0553667046,165930.24406786144 481328.52543277247,165934.73211844507 481342.753361227,165939.25420752895 481357.08540151204,165950.20422346052 481353.54544691474,165966.16722080676 481348.3844067348)),((165895.13041732486 481533.24123828445,165910.45443059667 481537.7282090086,165918.892460091 481540.224162435,165922.71948440833 481541.33024989034,165920.67447837786 481548.2551416977,165893.09843377655 481540.1511493943,165895.13041732486 481533.24123828445)),((165896.64740066387 481528.08315691736,165896.65241750143 481528.06514321023,165920.4185142213 481535.0441892801,165924.24847192867 481536.1511745033,165922.71948440833 481541.33024989034,165918.892460091 481540.224162435,165910.45443059667 481537.7282090086,165895.13041732486 481533.24123828445,165896.64740066387 481528.08315691736)),((165896.65241750143 481528.06514321023,165898.16535466668 481522.9191811999,165898.17435241595 481522.8891597626,165921.94347844977 481529.86521559535,165925.7774623816 481530.9722108921,165924.24847192867 481536.1511745033,165920.4185142213 481535.0441892801,165896.65241750143 481528.06514321023)),((165899.69038288604 481517.7331913193,165899.69635646036 481517.7141783537,165923.4694707462 481524.6852433193,165927.30747869454 481525.7932500641,165925.7774623816 481530.9722108921,165921.94347844977 481529.86521559535,165898.17435241595 481522.8891597626,165899.69038288604 481517.7331913193)),((165901.21136076152 481512.5612122759,165901.218365878 481512.5381960822,165902.19538995755 481512.8091679609,165916.5504016183 481517.0312113604,165924.99546621574 481519.5052715604,165928.8364779695 481520.61317485454,165927.30747869454 481525.7932500641,165923.4694707462 481524.6852433193,165899.69635646036 481517.7141783537,165901.21136076152 481512.5612122759)),((165902.7343960123 481507.3852327769,165902.74037624605 481507.3632156981,165926.5204402043 481514.3261881598,165930.36547795995 481515.43421280093,165928.8364779695 481520.61317485454,165924.99546621574 481519.5052715604,165916.5504016183 481517.0312113604,165902.19538995755 481512.8091679609,165901.218365878 481512.5381960822,165902.7343960123 481507.3852327769)),((165904.25833845264 481502.20124477724,165904.2623919882 481502.18723446043,165905.24435118132 481502.44720268424,165928.0404683249 481509.1652303686,165931.89543563488 481510.25525337853,165930.36547795995 481515.43421280093,165926.5204402043 481514.3261881598,165902.74037624605 481507.3632156981,165904.25833845264 481502.20124477724)),((165914.80236954536 481498.40129218134,165920.4864416878 481500.0572347831,165923.36639387568 481500.89619632973,165933.76447955295 481503.92523969157,165931.89543563488 481510.25525337853,165928.0404683249 481509.1652303686,165905.24435118132 481502.44720268424,165904.2623919882 481502.18723446043,165906.11937296687 481495.87120313005,165914.80236954536 481498.40129218134)),((165933.76447955295 481503.92523969157,165923.36639387568 481500.89619632973,165923.65443714958 481499.88622205233,165924.6673896757 481496.43126609793,165927.45044080383 481497.24820778926,165932.95342380035 481478.61931950756,165933.09739250087 481478.6622525252,165933.3244254117 481477.8952557339,165934.4303817035 481474.0422937281,165941.84446005966 481476.2252570742,165933.76447955295 481503.92523969157)),((165928.61836432802 481472.3313100361,165934.4303817035 481474.0422937281,165933.3244254117 481477.8952557339,165933.09739250087 481478.6622525252,165932.95342380035 481478.61931950756,165927.45044080383 481497.24820778926,165924.6673896757 481496.43126609793,165923.65443714958 481499.88622205233,165923.36639387568 481500.89619632973,165920.4864416878 481500.0572347831,165920.77538404206 481499.0412540726,165921.78942337478 481495.5873013189,165927.29739742447 481476.94328597013,165928.61836432802 481472.3313100361)),((165928.61836432802 481472.3313100361,165927.29739742447 481476.94328597013,165921.78942337478 481495.5873013189,165920.77538404206 481499.0412540726,165920.4864416878 481500.0572347831,165914.80236954536 481498.40129218134,165919.0003527469 481484.2682437183,165921.6313492792 481475.26523400156,165921.4873803808 481475.22230131645,165921.71434346386 481474.4553038453,165922.81533845488 481470.62224457925,165928.61836432802 481472.3313100361)),((165914.80236954536 481498.40129218134,165906.11937296687 481495.87120313005,165909.38437225827 481484.88029707095,165911.20331499135 481478.59823054564,165914.2793231971 481468.1092675604,165922.81533845488 481470.62224457925,165921.71434346386 481474.4553038453,165921.4873803808 481475.22230131645,165921.6313492792 481475.26523400156,165919.0003527469 481484.2682437183,165914.80236954536 481498.40129218134)),((165906.11937296687 481495.87120313005,165897.47634055186 481493.30127379094,165901.6643087399 481479.175198381,165904.17528002078 481470.14120556315,165904.41532065 481470.21227725974,165904.6443266929 481469.44528353587,165905.76231058137 481465.6012429256,165914.2793231971 481468.1092675604,165911.20331499135 481478.59823054564,165909.38437225827 481484.88029707095,165906.11937296687 481495.87120313005)),((165897.47634055186 481493.30127379094,165891.82230733614 481491.62027832307,165893.12732160438 481487.17626645276,165895.98731684854 481477.5102808174,165898.60226602363 481468.5012153713,165899.950275644 481463.88929162023,165905.76231058137 481465.6012429256,165904.6443266929 481469.44528353587,165904.41532065 481470.21227725974,165904.17528002078 481470.14120556315,165901.6643087399 481479.175198381,165897.47634055186 481493.30127379094)),((165894.1482505075 481462.18126349826,165899.950275644 481463.88929162023,165898.60226602363 481468.5012153713,165895.98731684854 481477.5102808174,165893.12732160438 481487.17626645276,165891.82230733614 481491.62027832307,165888.9282799268 481490.7592738712,165890.23026762213 481486.32626971306,165887.46628168572 481485.51517682313,165892.9422399973 481466.8352261978,165892.79827060597 481466.7922943458,165894.1482505075 481462.18126349826)),((165888.9282799268 481490.7592738712,165878.61824088683 481487.69324565696,165886.72425100228 481459.99523461866,165894.1482505075 481462.18126349826,165892.79827060597 481466.7922943458,165892.9422399973 481466.8352261978,165887.46628168572 481485.51517682313,165890.23026762213 481486.32626971306,165888.9282799268 481490.7592738712)),((165856.23329322916 481537.0501121804,165881.64417191545 481450.71128487133,165929.6113786002 481464.82930264046,165951.19443893305 481471.1812507268,165925.78456217595 481557.5191725351,165856.23329322916 481537.0501121804),(165867.54927288933 481525.10522256023,165865.49131977314 481532.05914822913,165893.09843377655 481540.1511493943,165920.67447837786 481548.2551416977,165922.71948440833 481541.33024989034,165924.24847192867 481536.1511745033,165925.7774623816 481530.9722108921,165927.30747869454 481525.7932500641,165928.8364779695 481520.61317485454,165930.36547795995 481515.43421280093,165931.89543563488 481510.25525337853,165933.76447955295 481503.92523969157,165941.84446005966 481476.2252570742,165934.4303817035 481474.0422937281,165928.61836432802 481472.3313100361,165922.81533845488 481470.62224457925,165914.2793231971 481468.1092675604,165905.76231058137 481465.6012429256,165899.950275644 481463.88929162023,165894.1482505075 481462.18126349826,165886.72425100228 481459.99523461866,165878.61824088683 481487.69324565696,165876.74125623505 481494.0361689687,165875.20924209635 481499.2132491519,165873.67729294812 481504.3932228555,165872.1452832179 481509.57119418646,165870.61327667205 481514.749166038,165869.08127331096 481519.9271384061,165867.54927288933 481525.10522256023)),((165864.26622637178 481483.4501794296,165853.82416749134 481480.38124216447,165855.13816786418 481475.8981865053,165857.91919632955 481476.7151957553,165860.74618647926 481467.1472523947,165863.38416540896 481458.1492344596,165863.52718054497 481458.19227461156,165864.89212849856 481453.5532303068,165872.31417887198 481455.7352165087,165864.26622637178 481483.4501794296)),((165786.68302267324 481516.58014388575,165812.09292220575 481430.24218691647,165881.64417191545 481450.71128487133,165856.23329322916 481537.0501121804,165786.68302267324 481516.58014388575),(165798.00803197207 481504.65914855164,165795.9680335119 481511.61214057665,165823.56413966522 481519.7282063275,165851.18822609202 481527.8531666835,165864.26622637178 481483.4501794296,165872.31417887198 481455.7352165087,165864.89212849856 481453.5532303068,165859.0901429811 481451.847246296,165853.2880852939 481450.14126894844,165844.7631001899 481447.63422229275,165836.22904270093 481445.12527897663,165830.42703771713 481443.41921739513,165824.62502849937 481441.7132738949,165817.18399556502 481439.5251983774,165808.99602089508 481467.20522848406,165807.1290240118 481473.57022994,165805.60797486416 481478.7521396871,165804.0880216979 481483.9331622273,165802.56800132265 481489.1151865056,165801.0480544796 481494.29621007456,165799.53601079423 481499.45010300004,165798.00803197207 481504.65914855164)),((165866.8946775674 481227.2614635345,165866.63470314653 481226.45244678966,165865.69470760453 481223.61247728474,165861.72971818765 481224.8815075602,165858.10862015767 481213.5774607407,165855.32264947437 481205.11148452404,165854.2025963923 481201.4225106706,165859.62464855894 481199.67446122796,165860.78461601818 481203.3495048612,165863.5306689735 481211.82552133844,165866.60869701818 481221.50948498544,165868.17671572493 481221.01046857407,165868.8797176592 481223.22550298803,165867.311701787 481223.7235178127,165868.29369451493 481226.81247772946,165866.8946775674 481227.2614635345)),((165873.70971056758 481225.07043869596,165868.29369451493 481226.81247772946,165867.311701787 481223.7235178127,165868.8797176592 481223.22550298803,165868.17671572493 481221.01046857407,165866.60869701818 481221.50948498544,165863.5306689735 481211.82552133844,165860.78461601818 481203.3495048612,165859.62464855894 481199.67446122796,165865.04766110049 481197.9255297347,165866.20967289337 481201.5994664963,165868.9526537095 481210.0734764689,165873.70971056758 481225.07043869596)),((165882.26772553523 481222.31949046534,165873.70971056758 481225.07043869596,165868.9526537095 481210.0734764689,165866.20967289337 481201.5994664963,165865.04766110049 481197.9255297347,165873.60068580566 481195.1685472645,165877.02172582838 481205.785442737,165882.26772553523 481222.31949046534)),((165890.8257503115 481219.568445799,165882.26772553523 481222.31949046534,165877.02172582838 481205.785442737,165873.60068580566 481195.1685472645,165882.15365215074 481192.4114681889,165886.07474011733 481204.540549042,165890.8257503115 481219.568445799)),((165890.8257503115 481219.568445799,165886.07474011733 481204.540549042,165882.15365215074 481192.4114681889,165887.5766784854 481190.6635628014,165891.4977636454 481202.7885311759,165894.58876734154 481212.5644449591,165893.0167248861 481213.0614413691,165893.71779667106 481215.2814819412,165895.29079305512 481214.7844878564,165896.25174365405 481217.8234493365,165890.8257503115 481219.568445799)),((165896.25174365405 481217.8234493365,165895.29079305512 481214.7844878564,165893.71779667106 481215.2814819412,165893.0167248861 481213.0614413691,165894.58876734154 481212.5644449591,165891.4977636454 481202.7885311759,165887.5766784854 481190.6635628014,165892.9997111255 481188.9145507321,165894.19671993738 481192.5715478998,165896.91976828402 481201.0365170132,165899.76578669314 481210.19148501434,165900.4868094275 481212.4224744692,165896.5847507168 481213.6844948627,165897.75379771486 481217.34054124047,165896.25174365405 481217.8234493365)),((165907.70576258353 481210.1234609238,165902.2817912834 481211.8425247669,165900.4868094275 481212.4224744692,165899.76578669314 481210.19148501434,165896.91976828402 481201.0365170132,165894.19671993738 481192.5715478998,165892.9997111255 481188.9145507321,165900.16369288534 481186.6055023801,165907.70576258353 481210.1234609238)),((165907.70576258353 481210.1234609238,165908.87381045165 481213.76548845315,165897.75379771486 481217.34054124047,165896.5847507168 481213.6844948627,165900.4868094275 481212.4224744692,165902.2817912834 481211.8425247669,165907.70576258353 481210.1234609238)),((165880.18498152556 481336.7233748839,165836.31353847278 481200.6194925535,165905.31869812732 481178.3775641539,165934.61698036632 481269.27143408824,165949.18912624416 481314.4813888294,165923.01604604002 481322.9174133205,165880.18498152556 481336.7233748839),(165854.2025963923 481201.4225106706,165846.93358080686 481203.7654415951,165854.44664577578 481227.21249125793,165855.62366086923 481230.8854573256,165855.82369299646 481231.57540042157,165854.33365392467 481232.05545480386,165876.44389041603 481300.6554533546,165878.1138858439 481300.1253995869,165878.3339113341 481300.80537398526,165886.68397781134 481326.77534298535,165894.68699622378 481324.19342627533,165903.4679854846 481321.36145030503,165912.37800999396 481318.48738357215,165921.19804856065 481315.64239624795,165930.08209634136 481312.7774275843,165939.79406761308 481309.6453844185,165931.37404637353 481283.6954208855,165908.87381045165 481213.76548845315,165907.70576258353 481210.1234609238,165900.16369288534 481186.6055023801,165892.9997111255 481188.9145507321,165887.5766784854 481190.6635628014,165882.15365215074 481192.4114681889,165873.60068580566 481195.1685472645,165865.04766110049 481197.9255297347,165859.62464855894 481199.67446122796,165854.2025963923 481201.4225106706)),((165876.25758868846 481147.235518126,165886.28362180485 481143.98556564905,165896.2337106576 481174.71549742355,165886.18763645564 481177.9574857892,165881.60664909615 481163.8455611428,165876.25758868846 481147.235518126)),((165877.62665215324 481180.720548479,165876.1156383474 481176.1364793717,165874.2206071835 481170.222516107,165867.70355799777 481150.00851581164,165876.25758868846 481147.235518126,165881.60664909615 481163.8455611428,165886.18763645564 481177.9574857892,165877.62665215324 481180.720548479)),((165869.06465495183 481183.48351249145,165864.4985981491 481169.38354181446,165859.15056190282 481152.7805291889,165867.70355799777 481150.00851581164,165874.2206071835 481170.222516107,165876.1156383474 481176.1364793717,165877.62665215324 481180.720548479,165869.06465495183 481183.48351249145)),((165853.91450703648 481154.47847423767,165859.15056190282 481152.7805291889,165864.4985981491 481169.38354181446,165869.06465495183 481183.48351249145,165860.50362192755 481186.2464934498,165859.00158758258 481181.6654534509,165857.05258033366 481175.793547097,165856.1815873062 481173.1014900736,165850.60753492877 481155.55046525295,165853.77149161507 481154.5245568851,165853.91450703648 481154.47847423767)),((165924.52807736598 481843.81189789885,165956.08599516712 481745.01508612063,165965.7919827646 481714.12902105553,165975.93794683047 481682.76206980716,165985.7359202118 481649.83511083043,165993.46790969896 481619.4111303698,166001.88886370874 481579.6282719317,166008.29380160503 481545.4542077084,166012.5927007486 481514.79429283564,166015.75270217698 481484.19937875186,166018.35059922235 481447.76941500005,166020.69352027407 481414.70640413306,166019.8444648481 481375.4923786521,166018.69738716728 481336.5465047899,166015.15530439743 481290.8855103039,166010.82720700584 481258.03348857275,166005.06812188454 481222.01660339045,165997.66299492292 481186.39761198557,165989.9529152416 481154.0525668103,165980.3347990849 481119.55767611903,165970.06673855023 481085.06470021605,165920.02428878422 480929.8827890846,165922.1182438914 480929.20882226096,165972.17376532574 481084.43462164776,165982.45284189627 481118.96567873587,165992.08393542428 481153.505664375,165999.8039932762 481185.89557452104,166007.23313360344 481221.6245515634,166013.00322002955 481257.715565682,166017.34331388713 481290.65451334784,166020.8944038609 481336.42545843904,166022.04348282522 481375.44443781814,166022.89455435504 481414.75537924014,166020.5436071265 481447.925407236,166017.944697256 481484.37428252696,166014.77372129864 481515.08432910295,166010.46478895945 481545.80430237454,166004.04382546115 481580.0652253856,165995.61388665624 481619.89523620025,165987.85492324663 481650.42518802424,165978.03495803892 481683.42508322693,165967.88499884465 481714.8050392654,165958.18401185697 481745.6750893561,165926.63909579924 481844.43286302045,165924.52807736598 481843.81189789885)),((165619.34493397814 481753.9937822201,165621.25993950333 481746.4797864231,165726.6254969247 481332.95825022587,165742.17659175242 481381.20723075565,165811.18078064197 481358.96532213397,165863.38789269142 481342.1373177792,165880.18498152556 481336.7233748839,165923.01604604002 481322.9174133205,165936.05519068605 481363.369405808,166002.68035683886 481341.89440115006,165973.53406971783 481251.476547989,165994.94911866274 481244.573534503,165983.4440417146 481208.88056617026,165990.58306434262 481206.5796042553,165960.67176963005 481113.7816573767,165903.14921352794 480935.321792724,165920.02428878422 480929.8827890846,165970.06673855023 481085.06470021605,165980.3347990849 481119.55767611903,165989.9529152416 481154.0525668103,165997.66299492292 481186.39761198557,166005.06812188454 481222.01660339045,166010.82720700584 481258.03348857275,166015.15530439743 481290.8855103039,166018.69738716728 481336.5465047899,166019.8444648481 481375.4923786521,166020.69352027407 481414.70640413306,166018.35059922235 481447.76941500005,166015.75270217698 481484.19937875186,166012.5927007486 481514.79429283564,166008.29380160503 481545.4542077084,166001.88886370874 481579.6282719317,165993.46790969896 481619.4111303698,165985.7359202118 481649.83511083043,165975.93794683047 481682.76206980716,165965.7919827646 481714.12902105553,165956.08599516712 481745.01508612063,165924.52807736598 481843.81189789885,165853.94681607577 481823.0388199289,165677.60915791194 481771.1417838235,165619.34493397814 481753.9937822201),(165673.3708977106 481644.8049006763,165647.9609629814 481731.14381613344,165787.06153932825 481772.0818594473,165926.16303056382 481813.0209374773,165951.5729883572 481726.68209263764,165995.3347822398 481577.9882105603,165988.14081311575 481575.871190598,165990.2887963984 481568.5732643481,165996.0747680759 481570.2552233033,166000.28978018748 481555.8702663668,166004.50474845723 481541.48531321733,165990.07469705105 481536.73523226037,165975.7046653689 481533.0052850057,165972.34463824946 481532.0372719382,165976.5556365254 481517.7543160746,165980.7906309283 481503.33033460635,165985.017608498 481488.9352678822,165989.26357937 481474.4722649936,165993.45358051884 481460.20129447326,165997.67452061403 481445.8253634295,165983.38548240822 481441.61335710034,165967.16940644267 481436.83333526517,165951.29139067512 481432.15236295323,165940.17434220857 481428.87535132206,165935.97235709074 481443.2893136629,165931.78434320926 481457.6552447277,165929.6113786002 481464.82930264046,165881.64417191545 481450.71128487133,165812.09292220575 481430.24218691647,165742.54266873017 481409.7731823477,165717.13279208494 481496.11104573845,165673.3708977106 481644.8049006763)),((165944.21996750988 481231.4705071231,165951.09199357682 481229.2654734652,165960.13897532108 481226.33549698483,165963.05302768055 481235.37549498817,165960.19799728072 481236.29654102743,165962.03901342853 481242.00547000783,165964.4030222143 481249.38752608956,165961.2800567513 481250.39353844704,165958.91504699853 481243.0305077823,165957.41400492916 481238.35853659053,165947.4609974654 481241.54953687976,165946.2929498066 481237.89247930876,165944.21996750988 481231.4705071231)),((165964.89403841048 481241.0855376612,165967.25804585416 481248.46648246696,165964.41803350058 481249.3825525534,165964.4030222143 481249.38752608956,165962.03901342853 481242.00547000783,165960.19799728072 481236.29654102743,165963.05302768055 481235.37549498817,165964.89403841048 481241.0855376612)),((165799.76645236128 481728.91290228424,165856.23329322916 481537.0501121804,165925.78456217595 481557.5191725351,165882.02270928613 481706.2129920733,165869.31776905607 481749.3819606654,165799.76645236128 481728.91290228424),(165818.18347132907 481699.0759244936,165810.6795268119 481724.3238936018,165818.52953724368 481726.63391340274,165823.7105264967 481728.1579079759,165828.8165668759 481729.65993579174,165834.0725614319 481731.2069149638,165839.2525866725 481732.73092375806,165844.43165426826 481734.254935893,165849.6136502441 481735.7789599037,165854.79468637242 481737.3039886345,165864.21673524188 481740.07594691927,165871.61166309135 481714.8499591504,165873.5856655602 481708.1559845713,165875.19665619102 481702.68901061267,165876.80867300337 481697.2220394776,165878.42062517727 481691.7550687749,165880.0326493108 481686.2879875313,165881.64365188024 481680.82201724674,165883.25561466636 481675.3550482706,165885.81462477864 481666.6750804727,165862.71556835776 481659.87201639387,165858.18350495028 481662.28103755135,165857.22255387413 481661.9990944326,165860.42351585196 481651.13507619646,165887.98459628696 481659.2750171646,165890.5355846362 481650.59203018417,165892.1425944516 481645.1230506564,165893.74858513728 481639.6540694473,165895.3556020077 481634.18509106763,165896.961599746 481628.7161110021,165898.56855549413 481623.2471336177,165900.5446102156 481616.5211311452,165907.9205223746 481591.3661466478,165854.4933637975 481575.62010088266,165846.79339518113 481601.7910717138,165845.1543742347 481601.3041389397,165816.8084509125 481697.6910105642,165818.44844988626 481698.18494588154,165818.18347132907 481699.0759244936),(165913.7345330837 481561.835152511,165911.98453541263 481567.87514941185,165914.68449818296 481568.66519705893,165916.4345449143 481562.6352149766,165913.7345330837 481561.835152511)),((165948.95499848967 481246.2335059524,165936.5469794084 481250.24243752443,165935.02397284005 481245.53548755957,165947.4609974654 481241.54953687976,165948.95499848967 481246.2335059524)),((165947.4609974654 481241.54953687976,165957.41400492916 481238.35853659053,165958.91504699853 481243.0305077823,165948.95499848967 481246.2335059524,165947.4609974654 481241.54953687976)),((165905.31869812732 481178.3775641539,165891.6666154965 481136.02359245205,165960.67176963005 481113.7816573767,165990.58306434262 481206.5796042553,165983.4440417146 481208.88056617026,165994.94911866274 481244.573534503,165973.53406971783 481251.476547989,165968.77606675995 481253.0095394675,165954.55201612142 481257.6254531015,165940.47400505433 481262.19544545864,165941.9830346947 481266.89747067,165934.61698036632 481269.27143408824,165905.31869812732 481178.3775641539),(165905.50370686068 481154.0755739703,165908.7426881924 481164.09159663186,165911.99370911228 481174.1455892804,165924.47675393053 481170.1415464862,165925.0648026079 481171.97659024666,165925.6577841699 481173.8315612609,165913.1937729216 481177.86557317525,165916.45976908074 481187.9535376864,165919.70380637315 481197.9754764354,165932.12180322534 481193.94749854505,165932.71481026363 481195.78856254957,165933.3258276864 481197.68652243924,165920.90381222923 481201.6855597624,165924.12884127168 481211.6925502743,165927.31390358304 481221.5755064988,165939.7208855557 481217.54051367636,165940.38089696498 481219.5725450003,165940.92392673437 481221.25650576956,165928.51389815565 481225.28548057156,165931.78590693325 481235.4624807737,165935.02397284005 481245.53548755957,165936.5469794084 481250.24243752443,165948.95499848967 481246.2335059524,165958.91504699853 481243.0305077823,165961.2800567513 481250.39353844704,165964.4030222143 481249.38752608956,165964.41803350058 481249.3825525534,165967.25804585416 481248.46648246696,165964.89403841048 481241.0855376612,165968.73504042928 481239.8365646448,165963.9829787248 481225.09053244634,165960.15095575404 481213.20058163744,165956.3139019831 481201.2956022904,165952.48285594245 481189.4095544417,165948.64786753405 481177.50959311274,165944.81482477117 481165.61553636834,165940.9817653917 481153.7205927461,165936.22770472043 481138.9705800083,165932.37375480027 481140.215544091,165918.07372073093 481144.83562240377,165916.79371812948 481146.3055934274,165917.98371786345 481150.0455835623,165905.50370686068 481154.0755739703)),((165856.84086455274 481321.967319789,165853.9738187968 481312.8804221144,165852.74684928128 481309.0813951317,165860.79386263408 481306.4653622439,165869.11391915628 481332.4153192787,165861.07293261477 481335.00531610136,165856.84086455274 481321.967319789)),((165878.3339113341 481300.80537398526,165886.31888588314 481298.2294122301,165887.55189386752 481302.06239640043,165890.49793373534 481311.10642862413,165894.68699622378 481324.19342627533,165886.68397781134 481326.77534298535,165878.3339113341 481300.80537398526)),((165886.31888588314 481298.2294122301,165895.26694583046 481295.34338203387,165903.4679854846 481321.36145030503,165894.68699622378 481324.19342627533,165890.49793373534 481311.10642862413,165887.55189386752 481302.06239640043,165886.31888588314 481298.2294122301)),((165904.0799201045 481292.50046260294,165912.37800999396 481318.48738357215,165903.4679854846 481321.36145030503,165895.26694583046 481295.34338203387,165904.0799201045 481292.50046260294)),((165912.9189682873 481289.6493829797,165921.19804856065 481315.64239624795,165912.37800999396 481318.48738357215,165904.0799201045 481292.50046260294,165912.9189682873 481289.6493829797)),((165921.7149745366 481286.811464343,165922.95697104238 481290.6694003715,165925.87703315547 481299.68747166824,165930.08209634136 481312.7774275843,165921.19804856065 481315.64239624795,165912.9189682873 481289.6493829797,165921.7149745366 481286.811464343)),((165925.87703315547 481299.68747166824,165922.95697104238 481290.6694003715,165921.7149745366 481286.811464343,165931.37404637353 481283.6954208855,165939.79406761308 481309.6453844185,165930.08209634136 481312.7774275843,165925.87703315547 481299.68747166824)),((165859.39522142088 482267.4240714624,165864.58023530198 482251.2500981201,165870.91425172254 482253.2841598908,165879.3223348805 482255.98515759007,165880.66728750238 482251.79012318875,166036.17032815237 481766.6561312795,166046.02629930346 481735.6421578694,166055.72829030015 481703.96917686274,166065.4712408115 481670.5332167183,166073.85019402683 481639.2992494934,166083.20415541553 481598.5192454308,166089.29909334317 481563.24629943684,166094.11802925434 481531.8473813481,166098.9169394697 481487.64036907634,166101.8988601309 481450.2853709817,166103.08684389706 481416.0574241747,166102.93369437646 481375.9605096085,166101.7456417802 481336.0315043455,166098.21153095478 481289.0156036395,166092.06841256854 481242.295594639,166085.97631042093 481205.444609844,166078.7762296343 481168.82068623864,166070.93011676625 481135.4857379878,166061.18305531278 481100.10373740544,166048.71992073982 481059.8637894088,165962.33810554908 480790.9669277343,166126.4834736357 480738.2440844735,166284.86517634048 481326.3456167291,166308.26957530715 481457.38460489427,166313.80279147168 481573.28041882324,166138.78833844126 482338.71614736825,166081.8201098793 482362.2970864991,166078.87909140653 482354.8260973728,166065.03704142952 482350.38408176304,166067.1140423639 482343.91004357993,166047.4829979523 482337.61111607857,166046.74999094714 482339.89406430745,166011.74583306516 482328.6640402399,166011.13186545088 482330.5790858652,166004.40580526416 482313.8841250333,165995.45578310077 482311.04407232424,165986.90472601514 482308.30205776816,165982.0726736712 482294.6751175899,165979.4386831764 482292.11407342803,165976.74666644353 482289.497158236,165899.84941197015 482264.8940946159,165869.29827784642 482255.2771259079,165868.52726891052 482258.56606753974,165868.38028862118 482260.3340663107,165868.4712669673 482261.86314850824,165868.77225205908 482263.40203940653,165869.67226675144 482265.7321144773,165870.67225428545 482267.33307287534,165871.79227875813 482268.6280967436,165873.43232301722 482269.94106750196,165872.85431873804 482271.73604384495,165859.39522142088 482267.4240714624),(165940.77448270976 482218.33322843845,165944.22452076612 482227.1041601321,165950.84449544462 482224.5042468528,165947.40550719973 482215.704183836,165940.77448270976 482218.33322843845),(165988.2834341863 481993.02561051334,165987.16844019052 481996.4996890827,165988.64441476608 481996.9726212037,165987.372450483 482000.9536037061,165989.25942115605 482001.5556273442,165987.4364448771 482007.27065934683,165996.94850338978 482010.288634211,165999.36648882768 482002.6816601978,166004.11051088283 482004.19563692395,166006.53747695938 481996.633637221,166001.79845842728 481995.1046486911,166004.25946674342 481987.5016673862,165994.78641562958 481984.4296911814,165992.936448327 481990.13664986735,165991.03443861072 481989.5206833329,165989.74945852134 481993.497630687,165988.2834341863 481993.02561051334)),((165770.70677304774 480876.53069712035,165770.536768592 480876.0047152948,165773.1827870658 480875.57578046166,165775.54973754956 480875.19775313267,165805.11504480283 480966.92162979336,165834.14510546066 480957.56464399444,165891.6666154965 481136.02359245205,165905.31869812732 481178.3775641539,165836.31353847278 481200.6194925535,165822.6624279071 481158.26549094514,165814.0884203272 481161.02952517034,165811.68239555878 481148.67550719803,165823.73143364282 481145.3844633131,165854.20752218604 481135.45653249667,165847.1513999863 481113.57252679195,165841.32134709298 481095.4945620494,165835.492344386 481077.4156058137,165829.66525436094 481059.3465638337,165822.60918593645 481037.46259682236,165815.54912171973 481015.56861839304,165809.99907371998 480998.4285956074,165802.02399302027 480973.6876148568,165794.05297156327 480948.95566952834,165788.1319265725 480930.5877322591,165782.22086577112 480912.2487532343,165776.30278118345 480893.88973914855,165770.70677304774 480876.53069712035),(165833.25349588718 481161.17546683183,165832.3144548628 481161.5215512784,165836.15848971994 481173.47150982666,165837.11053207144 481173.1655096956,165843.1235316795 481191.85549232556,165851.94157576005 481189.0094869923,165860.50362192755 481186.2464934498,165869.06465495183 481183.48351249145,165877.62665215324 481180.720548479,165886.18763645564 481177.9574857892,165896.2337106576 481174.71549742355,165886.28362180485 481143.98556564905,165876.25758868846 481147.235518126,165867.70355799777 481150.00851581164,165859.15056190282 481152.7805291889,165853.91450703648 481154.47847423767,165852.19550400035 481148.7454882739,165850.19450258528 481142.07448384096,165849.5824694122 481140.03155528376,165849.43850588406 481140.07452058146,165852.05248622812 481148.7925723464,165853.77149161507 481154.5245568851,165850.60753492877 481155.55046525295,165842.05346714336 481158.3225058388,165834.20445387694 481160.8674610125,165833.25349588718 481161.17546683183)),((165960.17927882302 481921.8258100093,166012.34424551582 481759.0840178028,166022.14521790974 481728.24511586566,166031.79418719656 481696.74509726476,166041.42513576322 481663.6941479141,166049.5850707105 481633.26420126244,166058.68402618731 481593.5952206984,166064.62495930243 481559.2152395635,166069.32390902136 481528.5953227781,166074.02386650007 481485.3043251416,166076.93381866926 481448.8553972129,166078.08471020023 481415.6754693985,166077.9346373195 481376.3654226637,166076.77359289434 481337.3455119879,166073.33447668666 481291.5845675772,166067.3343192893 481245.95563193766,166061.37422548773 481209.90462836804,166054.33414940542 481174.0956631055,166046.7030684515 481141.6757140136,166037.18297547125 481107.11472961167,166024.8938545033 481067.4346662247,165975.01141201917 480912.1598730747,165908.78982323577 480706.0200216608,165932.4678412107 480697.9859559182,165962.33810554908 480790.9669277343,166048.71992073982 481059.8637894088,166061.18305531278 481100.10373740544,166070.93011676625 481135.4857379878,166078.7762296343 481168.82068623864,166085.97631042093 481205.444609844,166092.06841256854 481242.295594639,166098.21153095478 481289.0156036395,166101.7456417802 481336.0315043455,166102.93369437646 481375.9605096085,166103.08684389706 481416.0574241747,166101.8988601309 481450.2853709817,166098.9169394697 481487.64036907634,166094.11802925434 481531.8473813481,166089.29909334317 481563.24629943684,166083.20415541553 481598.5192454308,166073.85019402683 481639.2992494934,166065.4712408115 481670.5332167183,166055.72829030015 481703.96917686274,166046.02629930346 481735.6421578694,166036.17032815237 481766.6561312795,165880.66728750238 482251.79012318875,165879.3223348805 482255.98515759007,165870.91425172254 482253.2841598908,165864.58023530198 482251.2500981201,165859.39522142088 482267.4240714624,165850.33523032715 482264.5140551999,165960.17927882302 481921.8258100093)),((165893.09843377655 481540.1511493943,165865.49131977314 481532.05914822913,165867.54927288933 481525.10522256023,165879.0643191656 481528.5361596588,165891.77638575548 481532.2681751332,165895.13041732486 481533.24123828445,165893.09843377655 481540.1511493943)),((165869.08127331096 481519.9271384061,165880.59932803316 481523.3591982882,165893.3063660066 481527.08920379117,165896.64740066387 481528.08315691736,165895.13041732486 481533.24123828445,165891.77638575548 481532.2681751332,165879.0643191656 481528.5361596588,165867.54927288933 481525.10522256023,165869.08127331096 481519.9271384061)),((165869.08127331096 481519.9271384061,165870.61327667205 481514.749166038,165882.13434009094 481518.1822374329,165894.84434836917 481521.9311682699,165898.16535466668 481522.9191811999,165896.65241750143 481528.06514321023,165896.64740066387 481528.08315691736,165893.3063660066 481527.08920379117,165880.59932803316 481523.3591982882,165869.08127331096 481519.9271384061)),((165872.1452832179 481509.57119418646,165883.66833510826 481513.0041622153,165896.3713373239 481516.7511899681,165899.69038288604 481517.7331913193,165898.17435241595 481522.8891597626,165898.16535466668 481522.9191811999,165894.84434836917 481521.9311682699,165882.13434009094 481518.1822374329,165870.61327667205 481514.749166038,165872.1452832179 481509.57119418646)),((165872.1452832179 481509.57119418646,165873.67729294812 481504.3932228555,165885.20328536665 481507.8272022588,165897.90333968002 481511.55620259815,165901.21136076152 481512.5612122759,165899.69635646036 481517.7141783537,165899.69038288604 481517.7331913193,165896.3713373239 481516.7511899681,165883.66833510826 481513.0041622153,165872.1452832179 481509.57119418646)),((165875.20924209635 481499.2132491519,165886.73728430836 481502.6502407134,165899.42234036024 481506.3842186977,165902.7343960123 481507.3852327769,165901.218365878 481512.5381960822,165901.21136076152 481512.5612122759,165897.90333968002 481511.55620259815,165885.20328536665 481507.8272022588,165873.67729294812 481504.3932228555,165875.20924209635 481499.2132491519)),((165876.74125623505 481494.0361689687,165888.2723115794 481497.4721693098,165900.94134198249 481501.21323667804,165903.3433580554 481501.92918564315,165904.25833845264 481502.20124477724,165902.74037624605 481507.3632156981,165902.7343960123 481507.3852327769,165899.42234036024 481506.3842186977,165886.73728430836 481502.6502407134,165875.20924209635 481499.2132491519,165876.74125623505 481494.0361689687)),((165891.82230733614 481491.62027832307,165897.47634055186 481493.30127379094,165906.11937296687 481495.87120313005,165904.2623919882 481502.18723446043,165904.25833845264 481502.20124477724,165903.3433580554 481501.92918564315,165900.94134198249 481501.21323667804,165888.2723115794 481497.4721693098,165876.74125623505 481494.0361689687,165878.61824088683 481487.69324565696,165888.9282799268 481490.7592738712,165891.82230733614 481491.62027832307)),((165944.79885145818 481178.7555598329,165940.9638250668 481166.8606115619,165944.81482477117 481165.61553636834,165948.64786753405 481177.50959311274,165944.79885145818 481178.7555598329)),((165936.54584356796 481207.699518199,165929.67582654592 481209.9104735108,165924.12884127168 481211.6925502743,165920.90381222923 481201.6855597624,165933.3258276864 481197.68652243924,165934.48284759425 481201.28257951763,165936.54584356796 481207.699518199)),((165932.71481026363 481195.78856254957,165942.92389217904 481192.4915092783,165948.63385924912 481190.6505113363,165952.46891637606 481202.5455774916,165943.42091453492 481205.48758226004,165936.54584356796 481207.699518199,165934.48284759425 481201.28257951763,165933.3258276864 481197.68652243924,165932.71481026363 481195.78856254957)),((165928.88381791487 481183.8815045006,165926.81775358738 481177.45555016235,165925.6577841699 481173.8315612609,165925.0648026079 481171.97659024666,165935.2657636092 481168.7025348458,165940.9638250668 481166.8606115619,165944.79885145818 481178.7555598329,165935.77478973227 481181.6766027653,165928.88381791487 481183.8815045006)),((165960.13897532108 481226.33549698483,165956.30395514896 481214.44053561985,165960.15095575404 481213.20058163744,165963.9829787248 481225.09053244634,165960.13897532108 481226.33549698483)),((165956.30395514896 481214.44053561985,165952.46891637606 481202.5455774916,165956.3139019831 481201.2956022904,165960.15095575404 481213.20058163744,165956.30395514896 481214.44053561985)),((165952.48285594245 481189.4095544417,165956.3139019831 481201.2956022904,165952.46891637606 481202.5455774916,165948.63385924912 481190.6505113363,165952.48285594245 481189.4095544417)),((165944.79885145818 481178.7555598329,165948.64786753405 481177.50959311274,165952.48285594245 481189.4095544417,165948.63385924912 481190.6505113363,165944.79885145818 481178.7555598329)),((165940.9817653917 481153.7205927461,165944.81482477117 481165.61553636834,165940.9638250668 481166.8606115619,165937.12878032168 481154.9655552655,165940.9817653917 481153.7205927461)),((165940.9817653917 481153.7205927461,165937.12878032168 481154.9655552655,165932.37375480027 481140.215544091,165936.22770472043 481138.9705800083,165940.9817653917 481153.7205927461)),((165964.89403841048 481241.0855376612,165963.05302768055 481235.37549498817,165960.13897532108 481226.33549698483,165963.9829787248 481225.09053244634,165968.73504042928 481239.8365646448,165964.89403841048 481241.0855376612)),((165802.02399302027 480973.6876148568,165809.99907371998 480998.4285956074,165779.5610147902 481008.2696508966,165771.58796925325 480983.53361928085,165802.02399302027 480973.6876148568)),((165822.60918593645 481037.46259682236,165817.2181719826 481039.1916174552,165794.19015259045 481046.6316150005,165787.17005423043 481024.74455156905,165815.54912171973 481015.56861839304,165822.60918593645 481037.46259682236)),((165798.50226476917 481099.8185601817,165803.45727884932 481115.1415537492,165773.7592437802 481124.71645183617,165768.84218902295 481109.45854900277,165780.27220397923 481105.77951771766,165798.50226476917 481099.8185601817)),((165799.21918812083 481069.22953836713,165792.16316066612 481047.3965737889,165794.19015259045 481046.6316150005,165817.2181719826 481039.1916174552,165822.60918593645 481037.46259682236,165829.66525436094 481059.3465638337,165799.21918812083 481069.22953836713)),((165793.75132829722 481128.7324718677,165804.16329833507 481125.3754932473,165805.13332047366 481128.41556881135,165811.68239555878 481148.67550719803,165801.26337168008 481152.0354586903,165799.45834097321 481146.42046541837,165793.75132829722 481128.7324718677)),((165799.21918812083 481069.22953836713,165829.66525436094 481059.3465638337,165835.492344386 481077.4156058137,165827.0243031839 481080.140574016,165805.03924028226 481087.31955796864,165799.21918812083 481069.22953836713)),((165805.03924028226 481087.31955796864,165810.88331013816 481105.4135319523,165816.684352003 481123.520548419,165823.73143364282 481145.3844633131,165811.68239555878 481148.67550719803,165805.13332047366 481128.41556881135,165804.16329833507 481125.3754932473,165803.45727884932 481115.1415537492,165798.50226476917 481099.8185601817,165794.10724982165 481086.1055626836,165789.6861977294 481072.3145165163,165782.8121049136 481050.9255724577,165780.94908950687 481051.5405763582,165780.9100788994 481051.4195472039,165773.96205107903 481030.0095373427,165770.60704551917 481019.56454185536,165764.62994572392 481000.72964452335,165766.48497205196 481000.12763493793,165760.2829465038 480980.82661333535,165754.13286905934 480961.78963160724,165749.70980006928 480948.00763282424,165745.2717564758 480934.2646594566,165740.36473812314 480918.93471362256,165737.27473821864 480909.47467202117,165735.34367652657 480903.5747064268,165728.6406590719 480882.8817283568,165738.63867681925 480881.33275286073,165745.8437160834 480903.65674301836,165751.77780333883 480922.0406786393,165757.69286757722 480940.40366301994,165763.60686910295 480958.7646501255,165771.58796925325 480983.53361928085,165779.5610147902 481008.2696508966,165809.99907371998 480998.4285956074,165815.54912171973 481015.56861839304,165787.17005423043 481024.74455156905,165794.19015259045 481046.6316150005,165792.16316066612 481047.3965737889,165799.21918812083 481069.22953836713,165805.03924028226 481087.31955796864)),((165789.3793831147 481175.28645827976,165798.1083621269 481172.4784371293,165802.17141415383 481185.08041044057,165805.42044916144 481195.3554100336,165807.87149465547 481203.2124552643,165799.14445585056 481206.0284744372,165797.98348239536 481202.20045515895,165794.95742641244 481192.6604017623,165789.3793831147 481175.28645827976)),((165816.59847525915 481200.39645136514,165807.87149465547 481203.2124552643,165805.42044916144 481195.3554100336,165802.17141415383 481185.08041044057,165798.1083621269 481172.4784371293,165806.8374214708 481169.66943018365,165812.40746069382 481187.03046920174,165815.44652074503 481196.56544361706,165816.59847525915 481200.39645136514)),((165804.22552325492 481247.50836312154,165798.77555773532 481249.27043149626,165794.17451525794 481234.89239922474,165790.040483603 481222.11336638086,165795.49251017885 481220.3564110396,165796.72551110067 481224.17145823693,165799.6014908201 481233.142403265,165804.22552325492 481247.50836312154)),((165806.8374214708 481169.66943018365,165815.2434093422 481166.9654316354,165819.13143646508 481179.05043658486,165822.57751450696 481189.81243685796,165825.1135385119 481197.6484255169,165816.59847525915 481200.39645136514,165815.44652074503 481196.56544361706,165812.40746069382 481187.03046920174,165806.8374214708 481169.66943018365)),((165832.3144548628 481161.5215512784,165833.25349588718 481161.17546683183,165837.11053207144 481173.1655096956,165836.15848971994 481173.47150982666,165832.3144548628 481161.5215512784)),((165812.5765474452 481244.8093578957,165804.22552325492 481247.50836312154,165799.6014908201 481233.142403265,165796.72551110067 481224.17145823693,165795.49251017885 481220.3564110396,165803.84649189602 481217.6644071663,165809.0895179343 481233.8873874305,165812.5765474452 481244.8093578957)),((165812.5765474452 481244.8093578957,165809.0895179343 481233.8873874305,165803.84649189602 481217.6644071663,165812.20055093075 481214.97241758025,165813.447537585 481218.7784872005,165816.36456501708 481227.73640273476,165817.3325355461 481230.73542040045,165820.9275807907 481242.11036678863,165812.5765474452 481244.8093578957)),((165826.3776279051 481240.34943564463,165820.9275807907 481242.11036678863,165817.3325355461 481230.73542040045,165816.36456501708 481227.73640273476,165813.447537585 481218.7784872005,165812.20055093075 481214.97241758025,165817.6525229432 481213.2164879185,165818.91056491237 481217.01646362,165821.8195992788 481225.9774802488,165826.3776279051 481240.34943564463)),((165830.64859399022 481234.9194398026,165826.6675734102 481236.20047952776,165827.8525865298 481239.8724551546,165826.3776279051 481240.34943564463,165821.8195992788 481225.9774802488,165818.91056491237 481217.01646362,165817.6525229432 481213.2164879185,165823.10456946667 481211.45945178793,165827.27456949902 481224.218452369,165830.64859399022 481234.9194398026)),((165784.28590465026 481459.9431598627,165784.580929966 481459.00217660615,165785.5959004123 481455.5502011837,165788.38689940557 481456.3701971199,165793.87290232416 481437.7101881182,165794.01687317196 481437.75322834554,165795.3618555604 481433.1752054869,165802.763925968 481435.3552630413,165794.65391076147 481462.99320677517,165784.28590465026 481459.9431598627)),((165808.99602089508 481467.20522848406,165817.18399556502 481439.5251983774,165824.62502849937 481441.7132738949,165823.24797464852 481446.3232626617,165823.3920156111 481446.3651912605,165820.74502463543 481455.3992599747,165817.9330455101 481464.9632532137,165820.70304772386 481465.77721317613,165819.68900930948 481469.22918355267,165819.3730647613 481470.2552359135,165808.99602089508 481467.20522848406)),((165819.3730647613 481470.2552359135,165819.68900930948 481469.22918355267,165820.70304772386 481465.77721317613,165817.9330455101 481464.9632532137,165820.74502463543 481455.3992599747,165823.3920156111 481446.3651912605,165823.24797464852 481446.3232626617,165824.62502849937 481441.7132738949,165830.42703771713 481443.41921739513,165829.05303822085 481448.0332167751,165826.41504651489 481457.0631854822,165823.5790666665 481466.6232286844,165822.25705417473 481471.10315962805,165819.3730647613 481470.2552359135)),((165822.25705417473 481471.10315962805,165823.5790666665 481466.6232286844,165826.41504651489 481457.0631854822,165829.05303822085 481448.0332167751,165830.42703771713 481443.41921739513,165836.22904270093 481445.12527897663,165834.85802961228 481449.74317757157,165834.7140592224 481449.70024741895,165832.06707809644 481458.72118103574,165827.9150598663 481472.76617049647,165827.6230319796 481472.67918898124,165822.25705417473 481471.10315962805)),((165836.6310674592 481475.3272369474,165834.77111099343 481481.66921192576,165831.42309653418 481480.7601800219,165818.66706306094 481476.97414995317,165807.1290240118 481473.57022994,165808.99602089508 481467.20522848406,165819.3730647613 481470.2552359135,165822.25705417473 481471.10315962805,165827.6230319796 481472.67918898124,165827.9150598663 481472.76617049647,165836.6310674592 481475.3272369474)),((165702.08617533752 481203.37240525684,165707.698228188 481220.81630912225,165710.67626070618 481230.3733395914,165711.8762536899 481234.1892952708,165703.4442182028 481236.91032514203,165697.7431872291 481218.77539447945,165693.68317810545 481206.0753786871,165702.08617533752 481203.37240525684)),((165720.60230581425 481231.373342504,165711.8762536899 481234.1892952708,165710.67626070618 481230.3733395914,165707.698228188 481220.81630912225,165702.08617533752 481203.37240525684,165710.81519307548 481200.5633400208,165714.9112243282 481213.23540953355,165718.11326585078 481223.5293871783,165720.60230581425 481231.373342504)),((165714.91335148847 481272.22036780615,165707.31329987882 481248.74530289543,165714.59331353637 481246.3942909105,165715.8582840432 481250.2073845911,165722.21137888666 481269.8803100119,165720.5043766146 481270.4373732078,165714.91335148847 481272.22036780615)),((165727.38639761863 481272.2523536715,165716.10334139835 481275.895331588,165714.91335148847 481272.22036780615,165720.5043766146 481270.4373732078,165722.21137888666 481269.8803100119,165726.19135907304 481268.5822718183,165727.38639761863 481272.2523536715)),((165714.59331353637 481246.3942909105,165720.04529258763 481244.63435943174,165721.30132114777 481248.45032795117,165728.82339729104 481271.7892804257,165727.38639761863 481272.2523536715,165726.19135907304 481268.5822718183,165722.21137888666 481269.8803100119,165715.8582840432 481250.2073845911,165714.59331353637 481246.3942909105)),((165720.60230581425 481231.373342504,165718.11326585078 481223.5293871783,165714.9112243282 481213.23540953355,165710.81519307548 481200.5633400208,165719.54421835704 481197.7554028533,165725.1382394831 481215.1883834767,165728.14926428013 481224.7353711206,165729.32932247905 481228.5574072319,165720.60230581425 481231.373342504)),((165705.3020483263 481146.65442658326,165675.90201051926 481156.17036465387,165669.55094053983 481136.19542623137,165698.88103838265 481126.7204665121,165700.41401468738 481131.47843376535,165705.3020483263 481146.65442658326)),((165695.87495793874 481117.38646867196,165698.88103838265 481126.7204665121,165669.55094053983 481136.19542623137,165663.1508710861 481116.216385467,165692.44894243017 481106.7494406987,165695.87495793874 481117.38646867196)),((165692.44894243017 481106.7494406987,165663.1508710861 481116.216385467,165656.7638580151 481096.22948227986,165686.00988237115 481086.7584927733,165686.81593508384 481089.2614522431,165691.34494702617 481103.3244577809,165692.44894243017 481106.7494406987)),((165682.26786047127 481075.1414428623,165686.00988237115 481086.7584927733,165656.7638580151 481096.22948227986,165650.34775066923 481076.2404114006,165679.56785737386 481066.7585352824,165682.26786047127 481075.1414428623)),((165677.7228085178 481061.03045700997,165679.56785737386 481066.7585352824,165650.34775066923 481076.2404114006,165643.97375326228 481056.2404253602,165673.12279942227 481046.74945683393,165677.7228085178 481061.03045700997)),((165665.2167271966 481022.23148489284,165669.75774128851 481036.3195289759,165657.01070788447 481040.44147329027,165640.6076735651 481045.7844793601,165633.76962697253 481024.34352915717,165662.85469769547 481014.9065478738,165665.2167271966 481022.23148489284)),((165656.1386727924 480994.0735551053,165660.6777128998 481008.1525733653,165662.85469769547 481014.9065478738,165633.76962697253 481024.34352915717,165626.91556022537 481002.9364904099,165655.95464276624 480993.50259621587,165656.1386727924 480994.0735551053)),((165649.0525699072 480972.0895271607,165651.6006294285 480979.9945435866,165655.95464276624 480993.50259621587,165626.91556022537 481002.9364904099,165620.04149362512 480981.51150561386,165649.0525699072 480972.0895271607)),((165656.1386727924 480994.0735551053,165655.95464276624 480993.50259621587,165651.6006294285 480979.9945435866,165680.7376970608 480970.5815901459,165685.28873225473 480984.6725617586,165656.1386727924 480994.0735551053)),((165660.6777128998 481008.1525733653,165656.1386727924 480994.0735551053,165685.28873225473 480984.6725617586,165689.82074318492 480998.7515915497,165671.74072219664 481004.55650303455,165660.6777128998 481008.1525733653)),((165660.6777128998 481008.1525733653,165671.74072219664 481004.55650303455,165689.82074318492 480998.7515915497,165694.39581986226 481012.8314980565,165665.2167271966 481022.23148489284,165662.85469769547 481014.9065478738,165660.6777128998 481008.1525733653)),((165694.39581986226 481012.8314980565,165698.92286276966 481026.9135303987,165685.32080501522 481031.3154916907,165678.1797602082 481033.61855879077,165669.75774128851 481036.3195289759,165665.2167271966 481022.23148489284,165694.39581986226 481012.8314980565)),((165677.7228085178 481061.03045700997,165673.12279942227 481046.74945683393,165700.16085605856 481038.04550473945,165704.7448605624 481052.2855502074,165677.7228085178 481061.03045700997)),((165682.26786047127 481075.1414428623,165679.56785737386 481066.7585352824,165677.7228085178 481061.03045700997,165704.7448605624 481052.2855502074,165706.80189334918 481051.65246858,165711.3709330973 481065.73549467267,165694.0118988219 481071.4235043166,165682.26786047127 481075.1414428623)),((165682.26786047127 481075.1414428623,165694.0118988219 481071.4235043166,165711.3709330973 481065.73549467267,165715.89894905448 481079.7955159842,165686.81593508384 481089.2614522431,165686.00988237115 481086.7584927733,165682.26786047127 481075.1414428623)),((165686.81593508384 481089.2614522431,165715.89894905448 481079.7955159842,165720.4460383135 481093.8835105415,165706.03001425508 481098.5694844996,165691.34494702617 481103.3244577809,165686.81593508384 481089.2614522431)),((165692.44894243017 481106.7494406987,165691.34494702617 481103.3244577809,165706.03001425508 481098.5694844996,165720.4460383135 481093.8835105415,165724.99705833508 481107.97051686584,165710.78603248336 481112.59450324246,165695.87495793874 481117.38646867196,165692.44894243017 481106.7494406987)),((165724.99705833508 481107.97051686584,165729.54009859625 481122.04649532033,165711.89106420428 481127.78944391175,165700.41401468738 481131.47843376535,165698.88103838265 481126.7204665121,165695.87495793874 481117.38646867196,165710.78603248336 481112.59450324246,165724.99705833508 481107.97051686584)),((165734.4521396814 481137.24548951746,165705.3020483263 481146.65442658326,165700.41401468738 481131.47843376535,165711.89106420428 481127.78944391175,165729.54009859625 481122.04649532033,165734.4521396814 481137.24548951746)),((165738.16194859543 481014.2605593478,165742.755978062 481028.52258053963,165715.05491697186 481037.37150660635,165710.47685048796 481023.1045389031,165738.16194859543 481014.2605593478)),((165733.55590598722 480999.96057572326,165736.62288285774 481009.4805378496,165738.16194859543 481014.2605593478,165710.47685048796 481023.1045389031,165710.46285964557 481023.0475413903,165708.35282638256 481023.71555468504,165703.78783296674 481009.5996071852,165733.55590598722 480999.96057572326)),((165699.20177862456 480995.4046212557,165716.56078040772 480989.73153913725,165728.96582642768 480985.70758491463,165730.4898739962 480990.4396163693,165733.55590598722 480999.96057572326,165703.78783296674 481009.5996071852,165699.20177862456 480995.4046212557)),((165699.20177862456 480995.4046212557,165694.5887459312 480981.1235745071,165724.35281870016 480971.3875680756,165728.96582642768 480985.70758491463,165716.56078040772 480989.73153913725,165699.20177862456 480995.4046212557)),((165690.96304236684 481161.88443377306,165698.48310648455 481185.17838073144,165688.07310791782 481188.53536355897,165681.53306035264 481168.2743844818,165680.54303647086 481165.24541627563,165690.96304236684 481161.88443377306)),((165701.241071616 481158.56945126434,165703.20107209298 481164.64838160586,165708.76914462214 481181.860427097,165698.48310648455 481185.17838073144,165690.96304236684 481161.88443377306,165701.241071616 481158.56945126434)),((165711.51911494508 481155.254378882,165717.22517172978 481172.9383812277,165719.04618793767 481178.5463695621,165708.76914462214 481181.860427097,165703.20107209298 481164.64838160586,165701.241071616 481158.56945126434,165711.51911494508 481155.254378882)),((165721.79710368768 481151.9394390017,165723.74411552557 481158.02346741577,165725.91517520873 481164.6724258073,165729.32317666116 481175.2324445252,165719.04618793767 481178.5463695621,165717.22517172978 481172.9383812277,165711.51911494508 481155.254378882,165721.79710368768 481151.9394390017)),((165729.32317666116 481175.2324445252,165725.91517520873 481164.6724258073,165723.74411552557 481158.02346741577,165721.79710368768 481151.9394390017,165732.07517469442 481148.62440939253,165733.6001518292 481153.37447009963,165739.60024764334 481171.918429759,165729.32317666116 481175.2324445252)),((165744.0691597118 481134.3254810618,165734.4521396814 481137.24548951746,165729.54009859625 481122.04649532033,165724.99705833508 481107.97051686584,165720.4460383135 481093.8835105415,165715.89894905448 481079.7955159842,165711.3709330973 481065.73549467267,165706.80189334918 481051.65246858,165704.7448605624 481052.2855502074,165700.16085605856 481038.04550473945,165673.12279942227 481046.74945683393,165643.97375326228 481056.2404253602,165640.6076735651 481045.7844793601,165657.01070788447 481040.44147329027,165669.75774128851 481036.3195289759,165678.1797602082 481033.61855879077,165685.32080501522 481031.3154916907,165698.92286276966 481026.9135303987,165694.39581986226 481012.8314980565,165689.82074318492 480998.7515915497,165685.28873225473 480984.6725617586,165680.7376970608 480970.5815901459,165676.18266685502 480956.4655801002,165671.2726088129 480941.31761282677,165680.77863373855 480938.2345733982,165685.66868356994 480953.4786388692,165690.1106654938 480967.2975605761,165694.5887459312 480981.1235745071,165699.20177862456 480995.4046212557,165703.78783296674 481009.5996071852,165708.35282638256 481023.71555468504,165710.46285964557 481023.0475413903,165710.47685048796 481023.1045389031,165715.05491697186 481037.37150660635,165742.755978062 481028.52258053963,165749.7149720541 481026.265607322,165757.8109932328 481023.6556331221,165770.60704551917 481019.56454185536,165773.96205107903 481030.0095373427,165746.13098868445 481038.97950592457,165716.31991080538 481048.61158124864,165720.882987899 481062.85448954423,165725.50401482623 481077.15149142453,165730.10002995466 481091.43053018703,165734.55407641333 481105.2304959504,165739.06214865297 481119.03948478634,165744.0691597118 481134.3254810618)),((165601.6954647942 481546.6719394332,165603.2665091612 481557.8749336627,165605.13056301366 481571.1788902562,165606.29552746078 481579.4919302932,165603.93553425858 481579.8729459884,165601.81456528604 481580.6709376807,165600.84352435562 481581.3269791026,165599.85957510618 481582.0889164069,165597.87554561417 481582.77493841195,165596.68251470744 481583.4638832395,165593.01144504713 481547.03092506714,165601.6954647942 481546.6719394332)),((165613.28859894958 481577.5799795205,165608.9645699642 481578.9539187594,165606.29552746078 481579.4919302932,165605.13056301366 481571.1788902562,165603.2665091612 481557.8749336627,165601.6954647942 481546.6719394332,165608.92851025684 481546.3739382984,165610.40250501593 481556.91793163173,165612.08657528792 481568.9728984502,165613.28859894958 481577.5799795205)),((165620.21859594 481575.1679933951,165619.30361080015 481575.3409318947,165618.05659153924 481575.7699537777,165615.57457625074 481577.282924743,165613.28859894958 481577.5799795205,165612.08657528792 481568.9728984502,165610.40250501593 481556.91793163173,165608.92851025684 481546.3739382984,165616.15855676873 481546.07594130037,165617.5385718406 481555.9609400558,165619.04956229002 481566.7919658535,165620.21859594 481575.1679933951)),((165623.9376382452 481574.2589582951,165623.01662087196 481574.6369428262,165620.21859594 481575.1679933951,165619.04956229002 481566.7919658535,165617.5385718406 481555.9609400558,165616.15855676873 481546.07594130037,165630.81959485167 481545.47095438227,165630.21454977486 481547.5409433741,165628.09460247122 481555.2969364661,165625.4496212022 481564.38196237275,165623.9376382452 481574.2589582951)),((165628.31663550483 481572.72292747104,165628.04863887076 481572.71700972883,165627.295598274 481572.8799478917,165623.9376382452 481574.2589582951,165625.4496212022 481564.38196237275,165628.09460247122 481555.2969364661,165630.21454977486 481547.5409433741,165630.81959485167 481545.47095438227,165631.22455350097 481544.08903662313,165633.3745833264 481544.7169693225,165636.29257085733 481545.5699760255,165633.00861587102 481556.7359281843,165630.34462376888 481565.81200944126,165628.31663550483 481572.72292747104)),((165633.3856519854 481573.5369492708,165632.82463946828 481573.27093218954,165630.5476559399 481572.77791210177,165628.31663550483 481572.72292747104,165630.34462376888 481565.81200944126,165633.00861587102 481556.7359281843,165636.29257085733 481545.5699760255,165639.0665883725 481546.3799487256,165641.1875889794 481547.00003377564,165640.17763841612 481550.4559441469,165637.91261260203 481558.1710089705,165635.23962159565 481567.2429514656,165633.3856519854 481573.5369492708)),((165641.1875889794 481547.00003377564,165643.28964864177 481547.61395936704,165646.08260235947 481548.430986488,165642.7976639682 481559.6009356378,165640.13564119017 481568.67301044683,165638.23264531 481575.1569398359,165637.4426444891 481575.10194171686,165635.3536547517 481574.47091204784,165633.3856519854 481573.5369492708,165635.23962159565 481567.2429514656,165637.91261260203 481558.1710089705,165640.17763841612 481550.4559441469,165641.1875889794 481547.00003377564)),((165646.08260235947 481548.430986488,165648.85661667652 481549.24096469354,165650.96862176774 481549.85803041206,165649.958664692 481553.31405006663,165647.69163715083 481561.03400178667,165645.03063553 481570.10296081327,165643.2706992526 481576.0999714038,165639.91967184047 481575.27395426604,165638.23264531 481575.1569398359,165640.13564119017 481568.67301044683,165642.7976639682 481559.6009356378,165646.08260235947 481548.430986488)),((165650.96862176774 481549.85803041206,165653.05364497183 481550.467027788,165657.99464405555 481551.91099821345,165650.32766874752 481578.0449577952,165648.0466597634 481577.8079396033,165644.648671317 481576.43896047387,165643.2706992526 481576.0999714038,165645.03063553 481570.10296081327,165647.69163715083 481561.03400178667,165649.958664692 481553.31405006663,165650.96862176774 481549.85803041206)),((165597.10836855051 481501.71796845895,165598.75642536755 481513.5499901675,165600.78144138883 481528.0779719089,165601.90946393978 481536.1719631933,165601.79148220416 481536.1869529567,165600.50544929018 481536.5239913413,165598.6064298529 481537.42793941393,165597.56047163295 481538.20198303956,165595.37948262927 481538.55801897385,165594.34147427918 481538.8050224204,165592.372445522 481540.68994923134,165588.5163591032 481502.0869509593,165597.10836855051 481501.71796845895)),((165597.10836855051 481501.71796845895,165604.32943953897 481501.40702809585,165605.8934301998 481512.59698919836,165607.74949452898 481525.88001087715,165608.8854826356 481534.00595366396,165608.20447646998 481534.1490220308,165606.98346215248 481534.59201060794,165605.26547829775 481535.54897306906,165604.510497712 481535.8509906347,165601.90946393978 481536.1719631933,165600.78144138883 481528.0779719089,165598.75642536755 481513.5499901675,165597.10836855051 481501.71796845895)),((165615.8315313926 481531.766010167,165615.3114868945 481531.91298419517,165611.34546807274 481533.4889680317,165608.8854826356 481534.00595366396,165607.74949452898 481525.88001087715,165605.8934301998 481512.59698919836,165604.32943953897 481501.40702809585,165611.56142035974 481501.0960104723,165613.03043996624 481511.64299716364,165614.70650677482 481523.6830372915,165615.8315313926 481531.766010167)),((165622.75852275462 481529.29204706463,165620.85555015082 481529.8120057646,165618.75952816228 481531.2989910082,165616.7705169842 481531.50099598616,165615.8315313926 481531.766010167,165614.70650677482 481523.6830372915,165613.03043996624 481511.64299716364,165611.56142035974 481501.0960104723,165618.78644569792 481500.7859898448,165620.16649585604 481510.6900147568,165621.67753720444 481521.5330571065,165622.75852275462 481529.29204706463)),((165625.36251695952 481528.5799986202,165622.75852275462 481529.29204706463,165621.67753720444 481521.5330571065,165620.16649585604 481510.6900147568,165618.78644569792 481500.7859898448,165633.42851383932 481500.1560463788,165632.83250715226 481502.20502546395,165630.69952356882 481510.02007002296,165628.0715206423 481519.09099991864,165625.36251695952 481528.5799986202)),((165631.39255629783 481525.9149679285,165630.9685436477 481525.75995393127,165626.60055760553 481527.95702596626,165625.36251695952 481528.5799986202,165628.0715206423 481519.09099991864,165630.69952356882 481510.02007002296,165632.83250715226 481502.20502546395,165633.42851383932 481500.1560463788,165633.83247599567 481498.76400175615,165635.98251853054 481499.39505090343,165638.89950109937 481500.2520623487,165635.61351528965 481511.4580626708,165632.96656307607 481520.5230521847,165631.39255629783 481525.9149679285)),((165636.15255543543 481527.8090347562,165635.76454149632 481527.74900617154,165633.54852585605 481526.7010197023,165631.39255629783 481525.9149679285,165632.96656307607 481520.5230521847,165635.61351528965 481511.4580626708,165638.89950109937 481500.2520623487,165641.6435532639 481501.0580775339,165643.76354626822 481501.6800529023,165642.74956631157 481505.1340623208,165640.50856337114 481512.89001112076,165637.8615369034 481521.9539965238,165636.15255543543 481527.8090347562)),((165641.0645587276 481529.1800476667,165638.37758717962 481528.1529627594,165636.15255543543 481527.8090347562,165637.8615369034 481521.9539965238,165640.50856337114 481512.89001112076,165642.74956631157 481505.1340623208,165643.76354626822 481501.6800529023,165645.86452733708 481502.2970925542,165648.68557037693 481503.12608684925,165645.4025835435 481514.32307485805,165642.75657368667 481523.3860584972,165641.0645587276 481529.1800476667)),((165645.72461313903 481531.4160453151,165643.13460460407 481529.8150443105,165641.31457092945 481529.27504986216,165641.0645587276 481529.1800476667,165642.75657368667 481523.3860584972,165645.4025835435 481514.32307485805,165648.68557037693 481503.12608684925,165651.4875353038 481503.949033332,165653.5885826305 481504.5660764206,165652.57459638227 481508.0200838466,165650.2975556335 481515.7560342427,165647.65160788404 481524.81801406626,165645.72461313903 481531.4160453151)),((165594.43835523605 481468.28806687647,165600.1983606112 481464.6210421077,165612.83637232205 481459.5890219916,165620.33443431728 481482.60899424774,165617.41239246196 481483.43207033456,165615.567429844 481484.39298408286,165611.76339167368 481487.9240030302,165610.4653846653 481489.7019940075,165609.1804135772 481491.25203327456,165594.43835523605 481468.28806687647)),((165651.00263553346 481531.53602544207,165650.68361048083 481531.4800387959,165648.0476012429 481531.2610583079,165646.0606299827 481531.6230536444,165645.72461313903 481531.4160453151,165647.65160788404 481524.81801406626,165650.2975556335 481515.7560342427,165652.57459638227 481508.0200838466,165653.5885826305 481504.5660764206,165655.69957732878 481505.1860347452,165658.47258306312 481506.00002155197,165655.1925952362 481517.1879972574,165652.54664141696 481526.2489731121,165651.00263553346 481531.53602544207)),((165655.69661185972 481533.65705866605,165655.4066068051 481533.64397103206,165653.0226090003 481532.37297374895,165652.3046370842 481531.7630322554,165651.00263553346 481531.53602544207,165652.54664141696 481526.2489731121,165655.1925952362 481517.1879972574,165658.47258306312 481506.00002155197,165661.29362405348 481506.82802168775,165663.39460076226 481507.4450688031,165662.38060607156 481510.9000756058,165660.08660692768 481518.6210755559,165657.4416015454 481527.68104950315,165655.69661185972 481533.65705866605)),((165663.39460076226 481507.4450688031,165665.47860903255 481508.0580746425,165670.22964096483 481509.46604211105,165662.57364781812 481535.79004389286,165661.11068602707 481535.338044527,165660.1266268186 481534.8480261718,165658.27065199334 481533.7779970369,165655.69661185972 481533.65705866605,165657.4416015454 481527.68104950315,165660.08660692768 481518.6210755559,165662.38060607156 481510.9000756058,165663.39460076226 481507.4450688031)),((165609.1804135772 481491.25203327456,165606.64137371397 481493.6790316174,165604.2244188458 481495.22997775994,165602.0863669969 481495.8700489089,165597.89835535063 481496.7679685144,165593.188377013 481497.3100615866,165588.03632643542 481497.5650396594,165587.65731793118 481493.6549637098,165585.72233638985 481491.07004353654,165587.94934977996 481486.58998821466,165587.7653250545 481478.26604016084,165588.21129993236 481474.9870435183,165590.01334120362 481471.9130116907,165592.43131333546 481469.63706420065,165594.43835523605 481468.28806687647,165609.1804135772 481491.25203327456)),((165625.61842997943 481484.47602831735,165621.1104070053 481482.5680497702,165620.85143608338 481482.51608853386,165620.5864597661 481482.53009397513,165620.33443431728 481482.60899424774,165612.83637232205 481459.5890219916,165620.71241652773 481456.7870874901,165627.99739901253 481454.5000468303,165635.8624803692 481479.10100514797,165634.66750241435 481480.9960390412,165634.4774464169 481481.29904667084,165634.34248522227 481481.63110167166,165634.2674835271 481481.98108809546,165634.09446386903 481482.3830462035,165633.8515055482 481482.7470238606,165633.54647508613 481483.0610215058,165633.18948459928 481483.31504716893,165631.25648065427 481484.411062512,165629.91048233415 481484.59909278114,165627.1144806144 481484.76809059485,165626.603464249 481484.74106588034,165626.10146400786 481484.64307415194,165625.61842997943 481484.47602831735)),((165648.08653428173 481476.2990276144,165647.86148435998 481475.94605757366,165647.57353313183 481475.643020685,165647.2324787548 481475.39906175155,165646.85247903992 481475.2251152005,165646.44552518346 481475.1251011414,165646.02749005595 481475.10506207735,165643.58148713713 481475.28804590553,165642.12246694972 481475.65507555055,165638.07150308546 481477.1080192522,165636.6764993843 481477.95206626377,165636.23644210448 481478.47005359555,165635.8624803692 481479.10100514797,165627.99739901253 481454.5000468303,165636.2674338283 481452.2540818349,165643.30345424515 481450.68607193313,165649.01146646184 481450.635073883,165648.08653428173 481476.2990276144)),((165649.01146646184 481450.635073883,165661.20053165723 481452.01012863585,165669.51655038618 481453.89110264566,165660.14857230982 481485.5410656815,165654.23356992472 481483.0190674538,165653.72155860608 481482.7580494559,165653.2395243348 481482.4440232437,165652.79249916642 481482.08311920054,165652.38654961833 481481.6760179917,165652.02452553634 481481.2290678083,165648.08653428173 481476.2990276144,165649.01146646184 481450.635073883)),((165669.51655038618 481453.89110264566,165677.21057037477 481455.7971147626,165678.09361457388 481474.8440950918,165679.7696094002 481477.1761442125,165675.3816531761 481492.013062,165671.26163448754 481491.7910823835,165667.6125819265 481490.75711747725,165663.79056113077 481487.1331103664,165660.14857230982 481485.5410656815,165669.51655038618 481453.89110264566)),((165681.03342769816 481370.15520559694,165641.61332610715 481382.8551930367,165641.5133125544 481382.5352045473,165638.62327390848 481383.47516436345,165634.75324187803 481371.4851336322,165635.76328570157 481371.1652004403,165635.0433026686 481368.94515537814,165663.8433302382 481360.86520960403,165657.52328062925 481341.24516691454,165628.47320274284 481351.8552004529,165625.06317551967 481341.27521638497,165665.82326523197 481328.1352726176,165666.68328978316 481330.79522885894,165667.64327717246 481330.48520777485,165678.1333795042 481363.04516690416,165678.6834249223 481362.87523271586,165681.03342769816 481370.15520559694)),((165617.09714722337 481317.51421955513,165606.96301187953 481285.8701942276,165646.96914224676 481273.1072177767,165657.14321245725 481304.6542777951,165617.09714722337 481317.51421955513)),((165697.51917027353 481223.1333431713,165698.7212011478 481226.9583123765,165695.85917038817 481227.8583556615,165694.65720787522 481224.0323859261,165697.51917027353 481223.1333431713)),((165691.0211510048 481200.6953381686,165684.65409020818 481202.74839304714,165627.13258731828 481024.289515661,165607.1455695246 481030.731438868,165566.96323440745 480906.0715719191,165574.42528150935 480904.9875946103,165574.58128517252 480905.4695904154,165583.41331453214 480932.7785604291,165586.3243433018 480937.3354978831,165597.32340997134 480954.55349533306,165613.19249478946 480960.0385192044,165620.04149362512 480981.51150561386,165626.91556022537 481002.9364904099,165633.76962697253 481024.34352915717,165640.6076735651 481045.7844793601,165643.97375326228 481056.2404253602,165650.34775066923 481076.2404114006,165656.7638580151 481096.22948227986,165663.1508710861 481116.216385467,165669.55094053983 481136.19542623137,165675.90201051926 481156.17036465387,165680.54303647086 481165.24541627563,165681.53306035264 481168.2743844818,165688.07310791782 481188.53536355897,165691.87410709585 481200.42136204895,165691.16416331995 481200.64936207084,165688.9681318548 481194.1513498069,165688.82613778592 481194.19933092536,165691.0211510048 481200.6953381686)),((165394.9029742899 481052.66726315656,165391.35300913145 481055.2353273808,165419.3029016435 480960.14942550805,165522.93914092943 480915.56648424943,165552.40018022567 480908.1865915554,165566.96323440745 480906.0715719191,165607.1455695246 481030.731438868,165627.13258731828 481024.289515661,165684.65409020818 481202.74839304714,165690.637159789 481221.30839094444,165698.30625700488 481245.10234980984,165726.6254969247 481332.95825022587,165621.25993950333 481746.4797864231,165608.29683258527 481742.66481066804,165530.07598408076 481402.1821074725,165504.24280883875 481322.0651372312,165506.19878915494 481318.29511296586,165535.80903714304 481410.38904937153,165552.20405153732 481405.0530219699,165546.18801888666 481386.17912897764,165541.54601756966 481371.76508184953,165554.2629943963 481367.735124824,165562.40305383655 481365.1051199224,165574.37903995242 481361.12113882875,165564.77300100867 481331.25810891256,165509.9188188538 481314.44116910786,165465.68434751168 481121.8952823013,165427.8932166291 481135.29226641194,165401.2360271267 481050.67228847835,165394.9029742899 481052.66726315656),(165427.52394187503 480977.50537967804,165440.88706372227 481019.16937753715,165489.6121819983 481003.45438690356,165489.7661682667 481003.89342792385,165501.345250247 481038.8804116276,165549.2653961326 481023.05548012163,165537.74729069465 480988.0414772943,165536.48827910237 480984.2474703807,165550.1163297019 480979.8685207914,165551.204297186 480983.2904326845,165554.06332501216 480982.3815094123,165552.97231042304 480978.9504667289,165550.39932501575 480970.86152901244,165538.51629952638 480974.6894406412,165529.12722465204 480945.6495404934,165506.22314893643 480953.0694465758,165498.83109759056 480930.19554248103,165465.89800546746 480944.3154379804,165467.87100096743 480950.48842851777,165464.2350314395 480954.8794289921,165466.6010389317 480962.2814950371,165481.35811240494 480957.5234483394,165482.11709943743 480959.9004340465,165427.52394187503 480977.50537967804),(165584.85220088865 481409.5310950002,165586.09217947957 481413.3250766451,165588.95218029778 481412.39013984415,165587.7132266067 481408.5960484149,165584.85220088865 481409.5310950002),(165585.72233638985 481491.07004353654,165587.65731793118 481493.6549637098,165588.03632643542 481497.5650396594,165593.188377013 481497.3100615866,165597.89835535063 481496.7679685144,165602.0863669969 481495.8700489089,165604.2244188458 481495.22997775994,165606.64137371397 481493.6790316174,165609.1804135772 481491.25203327456,165610.4653846653 481489.7019940075,165611.76339167368 481487.9240030302,165615.567429844 481484.39298408286,165617.41239246196 481483.43207033456,165620.33443431728 481482.60899424774,165620.5864597661 481482.53009397513,165620.85143608338 481482.51608853386,165621.1104070053 481482.5680497702,165625.61842997943 481484.47602831735,165626.10146400786 481484.64307415194,165626.603464249 481484.74106588034,165627.1144806144 481484.76809059485,165629.91048233415 481484.59909278114,165631.25648065427 481484.411062512,165633.18948459928 481483.31504716893,165633.54647508613 481483.0610215058,165633.8515055482 481482.7470238606,165634.09446386903 481482.3830462035,165634.2674835271 481481.98108809546,165634.34248522227 481481.63110167166,165634.4774464169 481481.29904667084,165634.66750241435 481480.9960390412,165635.8624803692 481479.10100514797,165636.23644210448 481478.47005359555,165636.6764993843 481477.95206626377,165638.07150308546 481477.1080192522,165642.12246694972 481475.65507555055,165643.58148713713 481475.28804590553,165646.02749005595 481475.10506207735,165646.44552518346 481475.1251011414,165646.85247903992 481475.2251152005,165647.2324787548 481475.39906175155,165647.57353313183 481475.643020685,165647.86148435998 481475.94605757366,165648.08653428173 481476.2990276144,165652.02452553634 481481.2290678083,165652.38654961833 481481.6760179917,165652.79249916642 481482.08311920054,165653.2395243348 481482.4440232437,165653.72155860608 481482.7580494559,165654.23356992472 481483.0190674538,165660.14857230982 481485.5410656815,165663.79056113077 481487.1331103664,165667.6125819265 481490.75711747725,165671.26163448754 481491.7910823835,165675.3816531761 481492.013062,165679.7696094002 481477.1761442125,165678.09361457388 481474.8440950918,165677.21057037477 481455.7971147626,165669.51655038618 481453.89110264566,165661.20053165723 481452.01012863585,165649.01146646184 481450.635073883,165643.30345424515 481450.68607193313,165636.2674338283 481452.2540818349,165627.99739901253 481454.5000468303,165620.71241652773 481456.7870874901,165612.83637232205 481459.5890219916,165600.1983606112 481464.6210421077,165594.43835523605 481468.28806687647,165592.43131333546 481469.63706420065,165590.01334120362 481471.9130116907,165588.21129993236 481474.9870435183,165587.7653250545 481478.26604016084,165587.94934977996 481486.58998821466,165585.72233638985 481491.07004353654),(165588.5163591032 481502.0869509593,165592.372445522 481540.68994923134,165594.34147427918 481538.8050224204,165595.37948262927 481538.55801897385,165597.56047163295 481538.20198303956,165598.6064298529 481537.42793941393,165600.50544929018 481536.5239913413,165601.79148220416 481536.1869529567,165601.90946393978 481536.1719631933,165604.510497712 481535.8509906347,165605.26547829775 481535.54897306906,165606.98346215248 481534.59201060794,165608.20447646998 481534.1490220308,165608.8854826356 481534.00595366396,165611.34546807274 481533.4889680317,165615.3114868945 481531.91298419517,165615.8315313926 481531.766010167,165616.7705169842 481531.50099598616,165618.75952816228 481531.2989910082,165620.85555015082 481529.8120057646,165622.75852275462 481529.29204706463,165625.36251695952 481528.5799986202,165626.60055760553 481527.95702596626,165630.9685436477 481525.75995393127,165631.39255629783 481525.9149679285,165633.54852585605 481526.7010197023,165635.76454149632 481527.74900617154,165636.15255543543 481527.8090347562,165638.37758717962 481528.1529627594,165641.0645587276 481529.1800476667,165641.31457092945 481529.27504986216,165643.13460460407 481529.8150443105,165645.72461313903 481531.4160453151,165646.0606299827 481531.6230536444,165648.0476012429 481531.2610583079,165650.68361048083 481531.4800387959,165651.00263553346 481531.53602544207,165652.3046370842 481531.7630322554,165653.0226090003 481532.37297374895,165655.4066068051 481533.64397103206,165655.69661185972 481533.65705866605,165658.27065199334 481533.7779970369,165660.1266268186 481534.8480261718,165661.11068602707 481535.338044527,165662.57364781812 481535.79004389286,165670.22964096483 481509.46604211105,165665.47860903255 481508.0580746425,165663.39460076226 481507.4450688031,165661.29362405348 481506.82802168775,165658.47258306312 481506.00002155197,165655.69957732878 481505.1860347452,165653.5885826305 481504.5660764206,165651.4875353038 481503.949033332,165648.68557037693 481503.12608684925,165645.86452733708 481502.2970925542,165643.76354626822 481501.6800529023,165641.6435532639 481501.0580775339,165638.89950109937 481500.2520623487,165635.98251853054 481499.39505090343,165633.83247599567 481498.76400175615,165633.42851383932 481500.1560463788,165618.78644569792 481500.7859898448,165611.56142035974 481501.0960104723,165604.32943953897 481501.40702809585,165597.10836855051 481501.71796845895,165588.5163591032 481502.0869509593),(165593.01144504713 481547.03092506714,165596.68251470744 481583.4638832395,165597.87554561417 481582.77493841195,165599.85957510618 481582.0889164069,165600.84352435562 481581.3269791026,165601.81456528604 481580.6709376807,165603.93553425858 481579.8729459884,165606.29552746078 481579.4919302932,165608.9645699642 481578.9539187594,165613.28859894958 481577.5799795205,165615.57457625074 481577.282924743,165618.05659153924 481575.7699537777,165619.30361080015 481575.3409318947,165620.21859594 481575.1679933951,165623.01662087196 481574.6369428262,165623.9376382452 481574.2589582951,165627.295598274 481572.8799478917,165628.04863887076 481572.71700972883,165628.31663550483 481572.72292747104,165630.5476559399 481572.77791210177,165632.82463946828 481573.27093218954,165633.3856519854 481573.5369492708,165635.3536547517 481574.47091204784,165637.4426444891 481575.10194171686,165638.23264531 481575.1569398359,165639.91967184047 481575.27395426604,165643.2706992526 481576.0999714038,165644.648671317 481576.43896047387,165648.0466597634 481577.8079396033,165650.32766874752 481578.0449577952,165657.99464405555 481551.91099821345,165653.05364497183 481550.467027788,165650.96862176774 481549.85803041206,165648.85661667652 481549.24096469354,165646.08260235947 481548.430986488,165643.28964864177 481547.61395936704,165641.1875889794 481547.00003377564,165639.0665883725 481546.3799487256,165636.29257085733 481545.5699760255,165633.3745833264 481544.7169693225,165631.22455350097 481544.08903662313,165630.81959485167 481545.47095438227,165616.15855676873 481546.07594130037,165608.92851025684 481546.3739382984,165601.6954647942 481546.6719394332,165593.01144504713 481547.03092506714),(165597.5845531633 481592.7809603289,165601.46063956618 481624.22684115765,165602.4566080327 481626.1179109706,165603.4766237798 481624.7488834811,165603.94560087743 481624.40786518116,165605.9586501752 481623.6938694143,165608.3766218822 481622.2119098665,165609.59865615456 481622.0139273513,165610.50162004144 481622.1958936819,165610.90362644003 481622.2768680413,165612.98163506953 481622.0459009408,165615.42563522808 481620.3188860079,165616.78266352086 481620.37387635745,165617.541648888 481620.5498598102,165617.8856379771 481620.6299310871,165620.35871091337 481620.06290929666,165621.48069942274 481619.27690625296,165622.2996590703 481618.7028769826,165625.2756705811 481617.25394821167,165625.84766296556 481617.26296805777,165628.1157292097 481617.2968912284,165630.43568379804 481617.8349535341,165630.91172989132 481618.07486284024,165632.94469717392 481619.0998674647,165635.7647570934 481619.4059113776,165638.03776862158 481619.89692265476,165644.46871871245 481593.9039186575,165638.50767270915 481592.1769323115,165633.6376789234 481590.7659570493,165628.70063606824 481589.335927328,165628.16568494434 481591.1839845278,165613.63262675228 481591.94290989527,165606.4086137545 481592.319920889,165597.5845531633 481592.7809603289),(165606.96301187953 481285.8701942276,165617.09714722337 481317.51421955513,165657.14321245725 481304.6542777951,165646.96914224676 481273.1072177767,165606.96301187953 481285.8701942276),(165607.4216895084 481643.51492878806,165613.1327812483 481684.9217904698,165613.63977163073 481687.1918895534,165614.71079015185 481685.2448456506,165620.94879263086 481665.6538638274,165624.86279959895 481664.59682269074,165631.44275984986 481641.9439352179,165619.17873585294 481638.4528815434,165616.39472356904 481642.6609089703,165607.4216895084 481643.51492878806),(165625.06317551967 481341.27521638497,165628.47320274284 481351.8552004529,165657.52328062925 481341.24516691454,165663.8433302382 481360.86520960403,165635.0433026686 481368.94515537814,165635.76328570157 481371.1652004403,165634.75324187803 481371.4851336322,165638.62327390848 481383.47516436345,165641.5133125544 481382.5352045473,165641.61332610715 481382.8551930367,165681.03342769816 481370.15520559694,165678.6834249223 481362.87523271586,165678.1333795042 481363.04516690416,165667.64327717246 481330.48520777485,165666.68328978316 481330.79522885894,165665.82326523197 481328.1352726176,165625.06317551967 481341.27521638497)),((165853.91450703648 481154.47847423767,165853.77149161507 481154.5245568851,165852.05248622812 481148.7925723464,165849.43850588406 481140.07452058146,165849.5824694122 481140.03155528376,165850.19450258528 481142.07448384096,165852.19550400035 481148.7454882739,165853.91450703648 481154.47847423767)),((165690.637159789 481221.30839094444,165684.65409020818 481202.74839304714,165691.0211510048 481200.6953381686,165693.18418155596 481207.09636898787,165693.32617529767 481207.04838799126,165691.16416331995 481200.64936207084,165691.87410709585 481200.42136204895,165753.65927694863 481180.5064628724,165814.0884203272 481161.02952517034,165822.6624279071 481158.26549094514,165836.31353847278 481200.6194925535,165767.3103702741 481222.86038524355,165698.30625700488 481245.10234980984,165690.637159789 481221.30839094444),(165693.68317810545 481206.0753786871,165697.7431872291 481218.77539447945,165703.4442182028 481236.91032514203,165711.8762536899 481234.1892952708,165720.60230581425 481231.373342504,165729.32932247905 481228.5574072319,165738.05634936754 481225.7413761125,165746.78331805518 481222.92536026856,165755.51036490736 481220.10935998964,165764.23735355845 481217.29337498534,165772.96339762883 481214.47740331833,165781.69040843003 481211.6604477769,165790.41742727094 481208.8443977667,165799.14445585056 481206.0284744372,165807.87149465547 481203.2124552643,165816.59847525915 481200.39645136514,165825.1135385119 481197.6484255169,165822.57751450696 481189.81243685796,165819.13143646508 481179.05043658486,165820.13049025944 481178.728514202,165816.24341989227 481166.6435105667,165815.2434093422 481166.9654316354,165806.8374214708 481169.66943018365,165798.1083621269 481172.4784371293,165789.3793831147 481175.28645827976,165780.6493209348 481178.09549384686,165771.9203620799 481180.90343458427,165763.1913428137 481183.7123919793,165754.46226726277 481186.5204745377,165745.73224516274 481189.3294605534,165737.0032581936 481192.1373515939,165728.27421057862 481194.94637054345,165719.54421835704 481197.7554028533,165710.81519307548 481200.5633400208,165702.08617533752 481203.37240525684,165693.68317810545 481206.0753786871),(165694.65720787522 481224.0323859261,165695.85917038817 481227.8583556615,165698.7212011478 481226.9583123765,165697.51917027353 481223.1333431713,165694.65720787522 481224.0323859261)),((165737.3379160775 481555.91300334374,165735.73095426153 481561.36300590524,165734.12296457813 481566.8170122977,165732.5039211776 481572.30804616894,165731.722979526 481574.95398846315,165704.13282570825 481566.80807221646,165711.63384485795 481541.3200574355,165739.22793669422 481549.5020729691,165738.95195147427 481550.44109771407,165737.3379160775 481555.91300334374)),((165742.76593479898 481537.5050447366,165740.56592901776 481544.9660771371,165739.22793669422 481549.5020729691,165711.63384485795 481541.3200574355,165715.32678747826 481528.77303401113,165725.64985202887 481531.7811151973,165734.24586626413 481534.2861086722,165742.97691753737 481536.8301309427,165742.76593479898 481537.5050447366)),((165767.09185403027 481454.8851670778,165754.05186441253 481499.1701048759,165726.42579294113 481491.028104843,165739.44771866192 481446.73115084914,165749.84376477124 481449.7981879186,165752.72879604952 481450.6481872374,165758.38179191307 481452.3162255302,165767.09185403027 481454.8851670778)),((165791.7737026315 481328.7753049603,165783.7456507334 481331.359336259,165774.88861889107 481334.2092723015,165766.04762865734 481337.0552536876,165757.1655748783 481339.9142905514,165748.30754891026 481342.7652734014,165738.64354107963 481345.87521031464,165716.10334139835 481275.895331588,165727.38639761863 481272.2523536715,165728.82339729104 481271.7892804257,165734.2843600761 481270.0263800398,165742.61838084552 481267.3353419938,165750.98140785462 481264.635368777,165756.43242557545 481262.8753640524,165757.8784395208 481262.4083133824,165769.13344454192 481258.7753833276,165769.3634933841 481259.5253597224,165771.04348919258 481258.97537535493,165793.1736878639 481327.55535145255,165791.54366571992 481328.0852987592,165791.7737026315 481328.7753049603)),((165720.04529258763 481244.63435943174,165725.5073073317 481242.8703389998,165726.75330058602 481246.6902926032,165729.64336236584 481255.6653443158,165734.2843600761 481270.0263800398,165728.82339729104 481271.7892804257,165721.30132114777 481248.45032795117,165720.04529258763 481244.63435943174)),((165725.5073073317 481242.8703389998,165733.85235512824 481240.17530463496,165735.78637572107 481246.0963088247,165739.1253645554 481256.40639819385,165742.61838084552 481267.3353419938,165734.2843600761 481270.0263800398,165729.64336236584 481255.6653443158,165726.75330058602 481246.6902926032,165725.5073073317 481242.8703389998)),((165726.6254969247 481332.95825022587,165698.30625700488 481245.10234980984,165767.3103702741 481222.86038524355,165811.18078064197 481358.96532213397,165742.17659175242 481381.20723075565,165726.6254969247 481332.95825022587),(165714.59331353637 481246.3942909105,165707.31329987882 481248.74530289543,165714.91335148847 481272.22036780615,165716.10334139835 481275.895331588,165738.64354107963 481345.87521031464,165746.99361894192 481371.7652784169,165756.65861975378 481368.6482390871,165765.53763238693 481365.7842990672,165774.3697140342 481362.9352931985,165783.21470086896 481360.0823257834,165792.06672522734 481357.2272755572,165800.07373514827 481354.6453257462,165791.7737026315 481328.7753049603,165791.54366571992 481328.0852987592,165793.1736878639 481327.55535145255,165771.04348919258 481258.97537535493,165769.3634933841 481259.5253597224,165769.13344454192 481258.7753833276,165767.94046532223 481255.0803727385,165760.36338960959 481231.6154014575,165753.1123999269 481233.956395535,165747.66039481142 481235.71740314807,165742.20737085477 481237.47841455427,165733.85235512824 481240.17530463496,165725.5073073317 481242.8703389998,165720.04529258763 481244.63435943174,165714.59331353637 481246.3942909105)),((165728.27421057862 481194.94637054345,165737.0032581936 481192.1373515939,165742.59732487198 481209.55544268835,165745.61234685374 481219.1003356426,165746.78331805518 481222.92536026856,165738.05634936754 481225.7413761125,165735.57526303138 481217.8884169158,165732.34628696222 481207.6103914263,165728.27421057862 481194.94637054345)),((165719.54421835704 481197.7554028533,165728.27421057862 481194.94637054345,165732.34628696222 481207.6103914263,165735.57526303138 481217.8884169158,165738.05634936754 481225.7413761125,165729.32932247905 481228.5574072319,165728.14926428013 481224.7353711206,165725.1382394831 481215.1883834767,165719.54421835704 481197.7554028533)),((165717.13279208494 481496.11104573845,165742.54266873017 481409.7731823477,165812.09292220575 481430.24218691647,165786.68302267324 481516.58014388575,165717.13279208494 481496.11104573845),(165739.44771866192 481446.73115084914,165726.42579294113 481491.028104843,165754.05186441253 481499.1701048759,165781.5689765867 481507.33716742526,165794.65391076147 481462.99320677517,165802.763925968 481435.3552630413,165795.3618555604 481433.1752054869,165789.54184028375 481431.46125288424,165783.75084868493 481429.75515904836,165775.2168089457 481427.24120325147,165766.68378131933 481424.7281545481,165760.87376458934 481423.0161490942,165755.07273490838 481421.3081755765,165747.59369677713 481419.1052129124,165739.44771866192 481446.73115084914)),((165725.64985202887 481531.7811151973,165715.32678747826 481528.77303401113,165722.1637920794 481505.38503976824,165732.5078354939 481508.4231106378,165731.36181199265 481512.2791458858,165728.8128404287 481520.9150407567,165725.64985202887 481531.7811151973)),((165734.24586626413 481534.2861086722,165725.64985202887 481531.7811151973,165728.8128404287 481520.9150407567,165731.36181199265 481512.2791458858,165732.5078354939 481508.4231106378,165741.1428862153 481510.9591321961,165734.24586626413 481534.2861086722)),((165673.3708977106 481644.8049006763,165717.13279208494 481496.11104573845,165786.68302267324 481516.58014388575,165742.92118772503 481665.2739500047,165673.3708977106 481644.8049006763),(165689.5289023787 481616.43091684714,165682.66390541804 481639.6949511576,165693.02695096543 481642.74889270985,165701.65495568834 481645.29095071973,165710.28301998795 481647.8329127002,165718.91107302954 481650.3760023997,165727.5380969889 481652.91799232236,165737.844128147 481655.95499203826,165744.93108682157 481631.96596303635,165747.11110594447 481624.55796098587,165748.72110548115 481619.0870505108,165750.3331012124 481613.60902404686,165751.94207886027 481608.14100534626,165753.55408603878 481602.66097729624,165756.02206237818 481594.2760404996,165758.48305164994 481585.91000471317,165760.09602746696 481580.43009233876,165761.7070189946 481574.9550718272,165763.31704865114 481569.4850566739,165764.92303530494 481564.0260484118,165766.5320427976 481558.5590362891,165768.14401146414 481553.08012593735,165770.3300088621 481545.6511190906,165777.35402061223 481521.5951332937,165767.04893821903 481518.56806844496,165758.41391373967 481516.0321128274,165749.7788806756 481513.49606105307,165741.1428862153 481510.9591321961,165732.5078354939 481508.4231106378,165722.1637920794 481505.38503976824,165715.32678747826 481528.77303401113,165711.63384485795 481541.3200574355,165704.13282570825 481566.80807221646,165694.93587527092 481598.058018297,165689.5289023787 481616.43091684714)),((165749.87821666626 481168.6054396765,165760.15524713008 481165.29146753036,165770.4322916698 481161.9774055011,165780.70934980048 481158.6634761236,165790.9863538234 481155.3494567121,165801.26337168008 481152.0354586903,165811.68239555878 481148.67550719803,165814.0884203272 481161.02952517034,165753.65927694863 481180.5064628724,165691.87410709585 481200.42136204895,165688.07310791782 481188.53536355897,165698.48310648455 481185.17838073144,165708.76914462214 481181.860427097,165719.04618793767 481178.5463695621,165729.32317666116 481175.2324445252,165739.60024764334 481171.918429759,165749.87821666626 481168.6054396765)),((165804.16329833507 481125.3754932473,165793.75132829722 481128.7324718677,165783.4742649519 481132.0474867819,165773.19626086665 481135.36252099246,165762.91820267861 481138.67746517947,165752.64022651344 481141.99243090645,165742.36219818195 481145.3064164967,165732.07517469442 481148.62440939253,165721.79710368768 481151.9394390017,165711.51911494508 481155.254378882,165701.241071616 481158.56945126434,165690.96304236684 481161.88443377306,165680.54303647086 481165.24541627563,165675.90201051926 481156.17036465387,165705.3020483263 481146.65442658326,165734.4521396814 481137.24548951746,165744.0691597118 481134.3254810618,165773.7592437802 481124.71645183617,165803.45727884932 481115.1415537492,165804.16329833507 481125.3754932473)),((165815.2434093422 481166.9654316354,165816.24341989227 481166.6435105667,165820.13049025944 481178.728514202,165819.13143646508 481179.05043658486,165815.2434093422 481166.9654316354)),((165765.53763238693 481365.7842990672,165757.1655748783 481339.9142905514,165766.04762865734 481337.0552536876,165774.3697140342 481362.9352931985,165765.53763238693 481365.7842990672)),((165774.3697140342 481362.9352931985,165766.04762865734 481337.0552536876,165774.88861889107 481334.2092723015,165783.21470086896 481360.0823257834,165774.3697140342 481362.9352931985)),((165792.06672522734 481357.2272755572,165783.21470086896 481360.0823257834,165774.88861889107 481334.2092723015,165783.7456507334 481331.359336259,165784.97264818248 481335.1672473105,165787.86368516678 481344.1852849584,165792.06672522734 481357.2272755572)),((165787.86368516678 481344.1852849584,165784.97264818248 481335.1672473105,165783.7456507334 481331.359336259,165791.7737026315 481328.7753049603,165800.07373514827 481354.6453257462,165792.06672522734 481357.2272755572,165787.86368516678 481344.1852849584)),((165817.33076423616 481320.5923644494,165818.53473190608 481324.32034577214,165821.46778268923 481333.36931528937,165825.6738182269 481346.4083368862,165817.67381487784 481348.9853649841,165809.32371226288 481323.19531513343,165817.33076423616 481320.5923644494)),((165817.33076423616 481320.5923644494,165826.1607530206 481317.7223063045,165834.53086462567 481343.55537642253,165825.6738182269 481346.4083368862,165821.46778268923 481333.36931528937,165818.53473190608 481324.32034577214,165817.33076423616 481320.5923644494)),((165691.0211510048 481200.6953381686,165688.82613778592 481194.19933092536,165688.9681318548 481194.1513498069,165691.16416331995 481200.64936207084,165693.32617529767 481207.04838799126,165693.18418155596 481207.09636898787,165691.0211510048 481200.6953381686)),((165798.00803197207 481504.65914855164,165809.52610699498 481508.05810830294,165822.24111503712 481511.8021899461,165825.61514416043 481512.7781425044,165823.56413966522 481519.7282063275,165795.9680335119 481511.61214057665,165798.00803197207 481504.65914855164)),((165799.53601079423 481499.45010300004,165811.0490582101 481502.8772050506,165827.14610558908 481507.58913941676,165825.61514416043 481512.7781425044,165822.24111503712 481511.8021899461,165809.52610699498 481508.05810830294,165798.00803197207 481504.65914855164,165799.53601079423 481499.45010300004)),((165801.0480544796 481494.29621007456,165812.57303552347 481497.69619328826,165825.33510116214 481501.4762128732,165828.6791265633 481502.39513447497,165827.14610558908 481507.58913941676,165811.0490582101 481502.8772050506,165799.53601079423 481499.45010300004,165801.0480544796 481494.29621007456)),((165802.56800132265 481489.1151865056,165814.09605930385 481492.51618132205,165830.20212846796 481497.23215074255,165828.6791265633 481502.39513447497,165825.33510116214 481501.4762128732,165812.57303552347 481497.69619328826,165801.0480544796 481494.29621007456,165802.56800132265 481489.1151865056)),((165804.0880216979 481483.9331622273,165815.62004295533 481487.3351705922,165828.35112886416 481491.10723019537,165831.73209434262 481492.0351359933,165830.97413562768 481494.6171360007,165830.20212846796 481497.23215074255,165814.09605930385 481492.51618132205,165802.56800132265 481489.1151865056,165804.0880216979 481483.9331622273)),((165805.60797486416 481478.7521396871,165817.14307526563 481482.1541582829,165833.24713194987 481486.86924293207,165831.73209434262 481492.0351359933,165828.35112886416 481491.10723019537,165815.62004295533 481487.3351705922,165804.0880216979 481483.9331622273,165805.60797486416 481478.7521396871)),((165807.1290240118 481473.57022994,165818.66706306094 481476.97414995317,165831.42309653418 481480.7601800219,165834.77111099343 481481.66921192576,165833.24713194987 481486.86924293207,165817.14307526563 481482.1541582829,165805.60797486416 481478.7521396871,165807.1290240118 481473.57022994)),((165780.9100788994 481051.4195472039,165780.94908950687 481051.5405763582,165782.8121049136 481050.9255724577,165789.6861977294 481072.3145165163,165759.94208684235 481081.8385492149,165755.3420530924 481067.5615879822,165753.04303926002 481060.4275618781,165780.9100788994 481051.4195472039)),((165789.6861977294 481072.3145165163,165794.10724982165 481086.1055626836,165764.39215046004 481095.6485469322,165759.94208684235 481081.8385492149,165789.6861977294 481072.3145165163)),((165764.39215046004 481095.6485469322,165794.10724982165 481086.1055626836,165798.50226476917 481099.8185601817,165780.27220397923 481105.77951771766,165768.84218902295 481109.45854900277,165764.39215046004 481095.6485469322)),((165780.70934980048 481158.6634761236,165778.90532097794 481153.0484925419,165774.72427119376 481140.1124897321,165773.19626086665 481135.36252099246,165783.4742649519 481132.0474867819,165785.43027980113 481138.130446508,165787.59027662704 481144.78452594153,165790.9863538234 481155.3494567121,165780.70934980048 481158.6634761236)),((165790.9863538234 481155.3494567121,165787.59027662704 481144.78452594153,165785.43027980113 481138.130446508,165783.4742649519 481132.0474867819,165793.75132829722 481128.7324718677,165799.45834097321 481146.42046541837,165801.26337168008 481152.0354586903,165790.9863538234 481155.3494567121)),((165771.9203620799 481180.90343458427,165780.6493209348 481178.09549384686,165784.69838921897 481190.71845116117,165787.94644276387 481200.9894316278,165790.41742727094 481208.8443977667,165781.69040843003 481211.6604477769,165780.52041607565 481207.835417028,165777.4883933551 481198.2974753085,165771.9203620799 481180.90343458427)),((165780.6493209348 481178.09549384686,165789.3793831147 481175.28645827976,165794.95742641244 481192.6604017623,165797.98348239536 481202.20045515895,165799.14445585056 481206.0284744372,165790.41742727094 481208.8443977667,165787.94644276387 481200.9894316278,165784.69838921897 481190.71845116117,165780.6493209348 481178.09549384686)),((165785.55950023342 481249.4403665603,165778.02345562194 481225.98536036786,165784.58846067498 481223.87043900834,165785.88444177373 481227.66737380484,165788.72052130097 481236.65235585446,165792.13649313548 481247.3183605189,165790.44449281244 481247.86742136953,165785.55950023342 481249.4403665603)),((165785.55950023342 481249.4403665603,165790.44449281244 481247.86742136953,165792.13649313548 481247.3183605189,165796.1385307854 481246.02142821206,165797.33956570356 481249.73437673337,165786.7535148305 481253.1554111886,165785.55950023342 481249.4403665603)),((165790.040483603 481222.11336638086,165794.17451525794 481234.89239922474,165798.77555773532 481249.27043149626,165797.33956570356 481249.73437673337,165796.1385307854 481246.02142821206,165792.13649313548 481247.3183605189,165788.72052130097 481236.65235585446,165785.88444177373 481227.66737380484,165784.58846067498 481223.87043900834,165790.040483603 481222.11336638086)),((165775.75088814163 481457.4322048577,165779.88083834152 481443.37722162984,165782.5408714928 481434.36519018246,165782.39683007967 481434.32315151556,165783.75084868493 481429.75515904836,165789.54184028375 481431.46125288424,165788.19285334527 481436.0332602932,165781.70292275774 481458.1561794963,165781.4059229174 481459.0961572339,165775.75088814163 481457.4322048577)),((165781.4059229174 481459.0961572339,165781.70292275774 481458.1561794963,165788.19285334527 481436.0332602932,165789.54184028375 481431.46125288424,165795.3618555604 481433.1752054869,165794.01687317196 481437.75322834554,165793.87290232416 481437.7101881182,165788.38689940557 481456.3701971199,165785.5959004123 481455.5502011837,165784.580929966 481459.00217660615,165784.28590465026 481459.9431598627,165781.4059229174 481459.0961572339)),((165784.28590465026 481459.9431598627,165794.65391076147 481462.99320677517,165781.5689765867 481507.33716742526,165754.05186441253 481499.1701048759,165767.09185403027 481454.8851670778,165775.75088814163 481457.4322048577,165781.4059229174 481459.0961572339,165784.28590465026 481459.9431598627))) \ No newline at end of file +MULTIPOLYGON(((165810.88331013816 481105.4135319523,165805.03924028226 481087.31955796864,165827.0243031839 481080.140574016,165835.492344386 481077.4156058137,165841.32134709298 481095.4945620494,165810.88331013816 481105.4135319523)),((165841.32134709298 481095.4945620494,165847.1513999863 481113.57252679195,165816.684352003 481123.520548419,165810.88331013816 481105.4135319523,165841.32134709298 481095.4945620494)),((165816.684352003 481123.520548419,165847.1513999863 481113.57252679195,165854.20752218604 481135.45653249667,165823.73143364282 481145.3844633131,165816.684352003 481123.520548419)),((165833.25349588718 481161.17546683183,165834.20445387694 481160.8674610125,165842.05346714336 481158.3225058388,165847.36754182985 481174.9205297333,165851.94157576005 481189.0094869923,165843.1235316795 481191.85549232556,165837.11053207144 481173.1655096956,165833.25349588718 481161.17546683183)),((165837.1465972164 481232.7994343237,165832.3686351562 481234.366448736,165830.64859399022 481234.9194398026,165827.27456949902 481224.218452369,165823.10456946667 481211.45945178793,165829.60356585556 481209.3654743581,165837.1465972164 481232.7994343237)),((165837.1465972164 481232.7994343237,165838.33361808676 481236.48543613846,165827.8525865298 481239.8724551546,165826.6675734102 481236.20047952776,165830.64859399022 481234.9194398026,165832.3686351562 481234.366448736,165837.1465972164 481232.7994343237)),((165851.94157576005 481189.0094869923,165847.36754182985 481174.9205297333,165842.05346714336 481158.3225058388,165850.60753492877 481155.55046525295,165856.1815873062 481173.1014900736,165857.05258033366 481175.793547097,165859.00158758258 481181.6654534509,165860.50362192755 481186.2464934498,165851.94157576005 481189.0094869923)),((165854.44664577578 481227.21249125793,165846.93358080686 481203.7654415951,165854.2025963923 481201.4225106706,165855.32264947437 481205.11148452404,165858.10862015767 481213.5774607407,165861.72971818765 481224.8815075602,165859.98968400923 481225.4384499416,165854.44664577578 481227.21249125793)),((165838.33361808676 481236.48543613846,165838.56360882698 481237.1954718372,165840.09366832077 481236.7153893235,165848.1937031559 481261.8054207434,165793.46357298896 481279.5453289056,165785.32353432756 481254.3953284019,165786.98351243007 481253.8653332394,165786.7535148305 481253.1554111886,165797.33956570356 481249.73437673337,165798.77555773532 481249.27043149626,165804.22552325492 481247.50836312154,165812.5765474452 481244.8093578957,165820.9275807907 481242.11036678863,165826.3776279051 481240.34943564463,165827.8525865298 481239.8724551546,165838.33361808676 481236.48543613846)),((165866.8946775674 481227.2614635345,165855.62366086923 481230.8854573256,165854.44664577578 481227.21249125793,165859.98968400923 481225.4384499416,165861.72971818765 481224.8815075602,165865.69470760453 481223.61247728474,165866.63470314653 481226.45244678966,165866.8946775674 481227.2614635345)),((165834.9897973112 481314.85237311217,165843.37386738468 481340.70629521617,165834.53086462567 481343.55537642253,165826.1607530206 481317.7223063045,165834.9897973112 481314.85237311217)),((165843.37386738468 481340.70629521617,165834.9897973112 481314.85237311217,165843.82383160238 481311.9813540052,165852.23086611537 481337.8533663467,165843.37386738468 481340.70629521617)),((165826.1607530206 481317.7223063045,165817.33076423616 481320.5923644494,165809.32371226288 481323.19531513343,165809.09371874726 481322.4553506549,165807.4537167706 481322.99528463103,165799.3436366324 481297.8053805152,165854.04375129592 481280.1453590037,165862.18384853032 481305.2454062637,165860.56385632814 481305.7653391327,165860.79386263408 481306.4653622439,165852.74684928128 481309.0813951317,165843.82383160238 481311.9813540052,165834.9897973112 481314.85237311217,165826.1607530206 481317.7223063045)),((165856.84086455274 481321.967319789,165861.07293261477 481335.00531610136,165852.23086611537 481337.8533663467,165843.82383160238 481311.9813540052,165852.74684928128 481309.0813951317,165853.9738187968 481312.8804221144,165856.84086455274 481321.967319789)),((165827.9150598663 481472.76617049647,165832.06707809644 481458.72118103574,165834.7140592224 481449.70024741895,165834.85802961228 481449.74317757157,165836.22904270093 481445.12527897663,165844.7631001899 481447.63422229275,165839.82106861868 481464.42724634655,165836.6310674592 481475.3272369474,165827.9150598663 481472.76617049647)),((165845.2901032648 481477.87217160105,165836.6310674592 481475.3272369474,165839.82106861868 481464.42724634655,165844.7631001899 481447.63422229275,165853.2880852939 481450.14126894844,165851.9171189479 481454.76227839023,165852.06109124355 481454.8042076756,165849.44014112678 481463.8181797485,165845.2901032648 481477.87217160105)),((165859.0901429811 481451.847246296,165857.7221495504 481456.47827446036,165855.10815529912 481465.4872519917,165852.2621572328 481475.0532652427,165850.94713900573 481479.5352067781,165845.2901032648 481477.87217160105,165849.44014112678 481463.8181797485,165852.06109124355 481454.8042076756,165851.9171189479 481454.76227839023,165853.2880852939 481450.14126894844,165859.0901429811 481451.847246296)),((165859.0901429811 481451.847246296,165864.89212849856 481453.5532303068,165863.52718054497 481458.19227461156,165863.38416540896 481458.1492344596,165860.74618647926 481467.1472523947,165857.91919632955 481476.7151957553,165855.13816786418 481475.8981865053,165853.82416749134 481480.38124216447,165850.94713900573 481479.5352067781,165852.2621572328 481475.0532652427,165855.10815529912 481465.4872519917,165857.7221495504 481456.47827446036,165859.0901429811 481451.847246296)),((165845.2901032648 481477.87217160105,165850.94713900573 481479.5352067781,165853.82416749134 481480.38124216447,165864.26622637178 481483.4501794296,165851.18822609202 481527.8531666835,165823.56413966522 481519.7282063275,165825.61514416043 481512.7781425044,165827.14610558908 481507.58913941676,165828.6791265633 481502.39513447497,165830.20212846796 481497.23215074255,165830.97413562768 481494.6171360007,165831.73209434262 481492.0351359933,165833.24713194987 481486.86924293207,165834.77111099343 481481.66921192576,165836.6310674592 481475.3272369474,165845.2901032648 481477.87217160105)),((165730.21619993297 481708.4439375155,165742.92118772503 481665.2739500047,165786.68302267324 481516.58014388575,165856.23329322916 481537.0501121804,165799.76645236128 481728.91290228424,165730.21619993297 481708.4439375155),(165746.97817681843 481678.1249967319,165739.51720045673 481703.3929706164,165748.98228750372 481706.1839397019,165754.16228786216 481707.71197579463,165759.34330791573 481709.2399082823,165764.5213269664 481710.7669495632,165769.70131799649 481712.29489069746,165774.88035331282 481713.8219450789,165780.06040613883 481715.3498972343,165785.24938222612 481716.87998835195,165793.0064036057 481719.1679565437,165800.49241780592 481693.8509380728,165800.76337957833 481692.93493719323,165802.38537803394 481693.4000103697,165830.76330596063 481597.13106763444,165829.1522768488 481596.65610686253,165829.66733507172 481594.80413330207,165836.8522983434 481570.4530650798,165783.23205589326 481554.6271463925,165776.42312722164 481578.01311732817,165775.83611402218 481579.7920612626,165773.39511176312 481588.10706181667,165771.791149101 481593.5750843673,165770.18610154392 481599.0419924757,165768.58214810936 481604.5090147985,165766.97710735357 481609.97603531193,165765.37316096094 481615.44305877335,165763.76812530853 481620.9109705391,165761.39818000598 481628.9870259021,165759.00317022737 481637.1490350176,165757.3981507424 481642.6159476773,165755.7941550114 481648.0839757768,165754.18914232866 481653.55100084655,165752.58515606486 481659.0179174441,165750.98021860325 481664.4849438074,165749.3761709623 481669.95197266684,165746.97817681843 481678.1249967319)),((165764.62994572392 481000.72964452335,165770.60704551917 481019.56454185536,165757.8109932328 481023.6556331221,165749.7149720541 481026.265607322,165742.755978062 481028.52258053963,165738.16194859543 481014.2605593478,165736.62288285774 481009.4805378496,165764.5559616496 481000.51162832347,165764.62994572392 481000.72964452335)),((165780.9100788994 481051.4195472039,165753.04303926002 481060.4275618781,165750.7440165607 481053.2945383054,165746.13098868445 481038.97950592457,165773.96205107903 481030.0095373427,165780.9100788994 481051.4195472039)),((165764.39215046004 481095.6485469322,165768.84218902295 481109.45854900277,165752.09916741413 481114.8585235,165739.06214865297 481119.03948478634,165734.55407641333 481105.2304959504,165745.858077976 481101.5475506689,165752.5161283254 481099.4205502416,165764.39215046004 481095.6485469322)),((165739.06214865297 481119.03948478634,165752.09916741413 481114.8585235,165768.84218902295 481109.45854900277,165773.7592437802 481124.71645183617,165744.0691597118 481134.3254810618,165739.06214865297 481119.03948478634)),((165760.15524713008 481165.29146753036,165754.1621837003 481146.74349274713,165752.64022651344 481141.99243090645,165762.91820267861 481138.67746517947,165764.86823752327 481144.76151637506,165767.0322865295 481151.4134816525,165770.4322916698 481161.9774055011,165760.15524713008 481165.29146753036)),((165770.4322916698 481161.9774055011,165767.0322865295 481151.4134816525,165764.86823752327 481144.76151637506,165762.91820267861 481138.67746517947,165773.19626086665 481135.36252099246,165774.72427119376 481140.1124897321,165778.90532097794 481153.0484925419,165780.70934980048 481158.6634761236,165770.4322916698 481161.9774055011)),((165754.46226726277 481186.5204745377,165763.1913428137 481183.7123919793,165767.25433634454 481196.3463805137,165770.48439554079 481206.6294380334,165772.96339762883 481214.47740331833,165764.23735355845 481217.29337498534,165763.0663964398 481213.4674561492,165760.05733901297 481203.9214529135,165754.46226726277 481186.5204745377)),((165763.1913428137 481183.7123919793,165771.9203620799 481180.90343458427,165777.4883933551 481198.2974753085,165780.52041607565 481207.835417028,165781.69040843003 481211.6604477769,165772.96339762883 481214.47740331833,165770.48439554079 481206.6294380334,165767.25433634454 481196.3463805137,165763.1913428137 481183.7123919793)),((165767.94046532223 481255.0803727385,165762.39442858525 481256.88432944176,165760.70244359746 481257.4293949917,165758.18439427088 481249.7603739864,165757.21740785558 481246.7643741759,165754.35638811823 481237.780357234,165753.1123999269 481233.956395535,165760.36338960959 481231.6154014575,165767.94046532223 481255.0803727385)),((165767.94046532223 481255.0803727385,165769.13344454192 481258.7753833276,165757.8784395208 481262.4083133824,165756.68945809107 481258.72132523236,165760.70244359746 481257.4293949917,165762.39442858525 481256.88432944176,165767.94046532223 481255.0803727385)),((165752.72879604952 481450.6481872374,165753.01780734822 481449.7111945327,165754.03076075122 481446.2682207337,165756.9037671212 481436.61820636754,165759.5297725321 481427.5911792049,165760.87376458934 481423.0161490942,165766.68378131933 481424.7281545481,165765.33678659622 481429.30217518256,165765.1928150116 481429.2592470541,165762.5888224881 481438.28620799293,165758.38179191307 481452.3162255302,165752.72879604952 481450.6481872374)),((165758.38179191307 481452.3162255302,165762.5888224881 481438.28620799293,165765.1928150116 481429.2592470541,165765.33678659622 481429.30217518256,165766.68378131933 481424.7281545481,165775.2168089457 481427.24120325147,165772.145797014 481437.6892057502,165770.32284964234 481444.0061394648,165767.09185403027 481454.8851670778,165758.38179191307 481452.3162255302)),((165767.09185403027 481454.8851670778,165770.32284964234 481444.0061394648,165772.145797014 481437.6892057502,165775.2168089457 481427.24120325147,165783.75084868493 481429.75515904836,165782.39683007967 481434.32315151556,165782.5408714928 481434.36519018246,165779.88083834152 481443.37722162984,165775.75088814163 481457.4322048577,165767.09185403027 481454.8851670778)),((165759.97295779423 481542.59013106796,165751.349929424 481540.0420859427,165754.23096464516 481530.2160663096,165755.90595991243 481524.44010320725,165758.41391373967 481516.0321128274,165767.04893821903 481518.56806844496,165763.34993966614 481531.07709912147,165760.82300474338 481539.71614134696,165759.97295779423 481542.59013106796)),((165766.5320427976 481558.5590362891,165738.95195147427 481550.44109771407,165739.22793669422 481549.5020729691,165740.56592901776 481544.9660771371,165743.769969775 481545.91612452094,165768.14401146414 481553.08012593735,165766.5320427976 481558.5590362891)),((165770.3300088621 481545.6511190906,165768.14401146414 481553.08012593735,165743.769969775 481545.91612452094,165740.56592901776 481544.9660771371,165742.76593479898 481537.5050447366,165751.349929424 481540.0420859427,165759.97295779423 481542.59013106796,165770.3300088621 481545.6511190906)),((165770.3300088621 481545.6511190906,165759.97295779423 481542.59013106796,165760.82300474338 481539.71614134696,165763.34993966614 481531.07709912147,165767.04893821903 481518.56806844496,165777.35402061223 481521.5951332937,165770.3300088621 481545.6511190906)),((165759.94208684235 481081.8385492149,165764.39215046004 481095.6485469322,165752.5161283254 481099.4205502416,165745.858077976 481101.5475506689,165734.55407641333 481105.2304959504,165730.10002995466 481091.43053018703,165759.94208684235 481081.8385492149)),((165755.3420530924 481067.5615879822,165759.94208684235 481081.8385492149,165730.10002995466 481091.43053018703,165725.50401482623 481077.15149142453,165755.3420530924 481067.5615879822)),((165753.04303926002 481060.4275618781,165755.3420530924 481067.5615879822,165725.50401482623 481077.15149142453,165720.882987899 481062.85448954423,165750.7440165607 481053.2945383054,165753.04303926002 481060.4275618781)),((165746.13098868445 481038.97950592457,165750.7440165607 481053.2945383054,165720.882987899 481062.85448954423,165716.31991080538 481048.61158124864,165746.13098868445 481038.97950592457)),((165760.2829465038 480980.82661333535,165766.48497205196 481000.12763493793,165764.62994572392 481000.72964452335,165764.5559616496 481000.51162832347,165736.62288285774 481009.4805378496,165733.55590598722 480999.96057572326,165730.4898739962 480990.4396163693,165760.2829465038 480980.82661333535)),((165752.64022651344 481141.99243090645,165754.1621837003 481146.74349274713,165760.15524713008 481165.29146753036,165749.87821666626 481168.6054396765,165746.4742134789 481158.04341274337,165744.30618292658 481151.3924491705,165742.36219818195 481145.3064164967,165752.64022651344 481141.99243090645)),((165739.60024764334 481171.918429759,165733.6001518292 481153.37447009963,165732.07517469442 481148.62440939253,165742.36219818195 481145.3064164967,165744.30618292658 481151.3924491705,165746.4742134789 481158.04341274337,165749.87821666626 481168.6054396765,165739.60024764334 481171.918429759)),((165754.46226726277 481186.5204745377,165760.05733901297 481203.9214529135,165763.0663964398 481213.4674561492,165764.23735355845 481217.29337498534,165755.51036490736 481220.10935998964,165749.8103211655 481201.9753728406,165745.73224516274 481189.3294605534,165754.46226726277 481186.5204745377)),((165745.73224516274 481189.3294605534,165749.8103211655 481201.9753728406,165755.51036490736 481220.10935998964,165746.78331805518 481222.92536026856,165745.61234685374 481219.1003356426,165742.59732487198 481209.55544268835,165737.0032581936 481192.1373515939,165745.73224516274 481189.3294605534)),((165757.8784395208 481262.4083133824,165756.43242557545 481262.8753640524,165751.8144077858 481248.50834933895,165747.66039481142 481235.71740314807,165753.1123999269 481233.956395535,165754.35638811823 481237.780357234,165757.21740785558 481246.7643741759,165758.18439427088 481249.7603739864,165760.70244359746 481257.4293949917,165756.68945809107 481258.72132523236,165757.8784395208 481262.4083133824)),((165742.20737085477 481237.47841455427,165747.66039481142 481235.71740314807,165751.8144077858 481248.50834933895,165756.43242557545 481262.8753640524,165750.98140785462 481264.635368777,165746.36439863997 481250.2683613508,165742.20737085477 481237.47841455427)),((165733.85235512824 481240.17530463496,165742.20737085477 481237.47841455427,165746.36439863997 481250.2683613508,165750.98140785462 481264.635368777,165742.61838084552 481267.3353419938,165739.1253645554 481256.40639819385,165735.78637572107 481246.0963088247,165733.85235512824 481240.17530463496)),((165739.44771866192 481446.73115084914,165747.59369677713 481419.1052129124,165755.07273490838 481421.3081755765,165753.72872813584 481425.89221959456,165753.872770279 481425.93414616835,165751.21877611184 481434.9502114409,165748.3617320527 481444.60115392786,165751.15376605676 481445.4211310361,165750.1407438861 481448.8652179072,165749.84376477124 481449.7981879186,165739.44771866192 481446.73115084914)),((165755.07273490838 481421.3081755765,165760.87376458934 481423.0161490942,165759.5297725321 481427.5911792049,165756.9037671212 481436.61820636754,165754.03076075122 481446.2682207337,165753.01780734822 481449.7111945327,165752.72879604952 481450.6481872374,165749.84376477124 481449.7981879186,165750.1407438861 481448.8652179072,165751.15376605676 481445.4211310361,165748.3617320527 481444.60115392786,165751.21877611184 481434.9502114409,165753.872770279 481425.93414616835,165753.72872813584 481425.89221959456,165755.07273490838 481421.3081755765)),((165742.97691753737 481536.8301309427,165734.24586626413 481534.2861086722,165741.1428862153 481510.9591321961,165749.7788806756 481513.49606105307,165746.0828843547 481525.99109169544,165742.97691753737 481536.8301309427)),((165751.349929424 481540.0420859427,165742.76593479898 481537.5050447366,165742.97691753737 481536.8301309427,165746.0828843547 481525.99109169544,165749.7788806756 481513.49606105307,165758.41391373967 481516.0321128274,165755.90595991243 481524.44010320725,165754.23096464516 481530.2160663096,165751.349929424 481540.0420859427)),((165764.92303530494 481564.0260484118,165737.3379160775 481555.91300334374,165738.95195147427 481550.44109771407,165766.5320427976 481558.5590362891,165764.92303530494 481564.0260484118)),((165756.65861975378 481368.6482390871,165746.99361894192 481371.7652784169,165738.64354107963 481345.87521031464,165748.30754891026 481342.7652734014,165749.53056963885 481346.5632645032,165752.44162214728 481355.59022616025,165756.65861975378 481368.6482390871)),((165752.44162214728 481355.59022616025,165749.53056963885 481346.5632645032,165748.30754891026 481342.7652734014,165757.1655748783 481339.9142905514,165765.53763238693 481365.7842990672,165756.65861975378 481368.6482390871,165752.44162214728 481355.59022616025)),((165931.8740897101 481845.97389222414,165926.63909579924 481844.43286302045,165958.18401185697 481745.6750893561,165967.88499884465 481714.8050392654,165978.03495803892 481683.42508322693,165987.85492324663 481650.42518802424,165995.61388665624 481619.89523620025,166004.04382546115 481580.0652253856,166010.46478895945 481545.80430237454,166014.77372129864 481515.08432910295,166017.944697256 481484.37428252696,166020.5436071265 481447.925407236,166022.89455435504 481414.75537924014,166022.04348282522 481375.44443781814,166020.8944038609 481336.42545843904,166017.34331388713 481290.65451334784,166013.00322002955 481257.715565682,166007.23313360344 481221.6245515634,165999.8039932762 481185.89557452104,165992.08393542428 481153.505664375,165982.45284189627 481118.96567873587,165972.17376532574 481084.43462164776,165922.1182438914 480929.20882226096,165975.01141201917 480912.1598730747,166024.8938545033 481067.4346662247,166037.18297547125 481107.11472961167,166046.7030684515 481141.6757140136,166054.33414940542 481174.0956631055,166061.37422548773 481209.90462836804,166067.3343192893 481245.95563193766,166073.33447668666 481291.5845675772,166076.77359289434 481337.3455119879,166077.9346373195 481376.3654226637,166078.08471020023 481415.6754693985,166076.93381866926 481448.8553972129,166074.02386650007 481485.3043251416,166069.32390902136 481528.5953227781,166064.62495930243 481559.2152395635,166058.68402618731 481593.5952206984,166049.5850707105 481633.26420126244,166041.42513576322 481663.6941479141,166031.79418719656 481696.74509726476,166022.14521790974 481728.24511586566,166012.34424551582 481759.0840178028,165960.17927882302 481921.8258100093,165950.38024911226 481918.9487982852,165970.180244166 481857.2469406328,165931.8740897101 481845.97389222414)),((165891.6666154965 481136.02359245205,165834.14510546066 480957.56464399444,165903.14921352794 480935.321792724,165960.67176963005 481113.7816573767,165891.6666154965 481136.02359245205)),((165811.18078064197 481358.96532213397,165767.3103702741 481222.86038524355,165836.31353847278 481200.6194925535,165880.18498152556 481336.7233748839,165863.38789269142 481342.1373177792,165811.18078064197 481358.96532213397),(165784.58846067498 481223.87043900834,165778.02345562194 481225.98536036786,165785.55950023342 481249.4403665603,165786.7535148305 481253.1554111886,165786.98351243007 481253.8653332394,165785.32353432756 481254.3953284019,165793.46357298896 481279.5453289056,165848.1937031559 481261.8054207434,165840.09366832077 481236.7153893235,165838.56360882698 481237.1954718372,165838.33361808676 481236.48543613846,165837.1465972164 481232.7994343237,165829.60356585556 481209.3654743581,165823.10456946667 481211.45945178793,165817.6525229432 481213.2164879185,165812.20055093075 481214.97241758025,165803.84649189602 481217.6644071663,165795.49251017885 481220.3564110396,165790.040483603 481222.11336638086,165784.58846067498 481223.87043900834),(165799.3436366324 481297.8053805152,165807.4537167706 481322.99528463103,165809.09371874726 481322.4553506549,165809.32371226288 481323.19531513343,165817.67381487784 481348.9853649841,165825.6738182269 481346.4083368862,165834.53086462567 481343.55537642253,165843.37386738468 481340.70629521617,165852.23086611537 481337.8533663467,165861.07293261477 481335.00531610136,165869.11391915628 481332.4153192787,165860.79386263408 481306.4653622439,165860.56385632814 481305.7653391327,165862.18384853032 481305.2454062637,165854.04375129592 481280.1453590037,165799.3436366324 481297.8053805152)),((165890.8257503115 481219.568445799,165896.25174365405 481217.8234493365,165897.75379771486 481217.34054124047,165908.87381045165 481213.76548845315,165931.37404637353 481283.6954208855,165921.7149745366 481286.811464343,165912.9189682873 481289.6493829797,165904.0799201045 481292.50046260294,165895.26694583046 481295.34338203387,165886.31888588314 481298.2294122301,165878.3339113341 481300.80537398526,165878.1138858439 481300.1253995869,165876.44389041603 481300.6554533546,165854.33365392467 481232.05545480386,165855.82369299646 481231.57540042157,165855.62366086923 481230.8854573256,165866.8946775674 481227.2614635345,165868.29369451493 481226.81247772946,165873.70971056758 481225.07043869596,165882.26772553523 481222.31949046534,165890.8257503115 481219.568445799)),((165935.02397284005 481245.53548755957,165931.78590693325 481235.4624807737,165937.3279522924 481233.68351704546,165944.21996750988 481231.4705071231,165946.2929498066 481237.89247930876,165947.4609974654 481241.54953687976,165935.02397284005 481245.53548755957)),((165931.78590693325 481235.4624807737,165928.51389815565 481225.28548057156,165940.92392673437 481221.25650576956,165942.14792768657 481225.0515421137,165944.21996750988 481231.4705071231,165937.3279522924 481233.68351704546,165931.78590693325 481235.4624807737)),((165940.92392673437 481221.25650576956,165940.38089696498 481219.5725450003,165950.59394445625 481216.2815246088,165956.30395514896 481214.44053561985,165960.13897532108 481226.33549698483,165951.09199357682 481229.2654734652,165944.21996750988 481231.4705071231,165942.14792768657 481225.0515421137,165940.92392673437 481221.25650576956)),((165936.54584356796 481207.699518199,165938.6048992502 481214.10754797957,165939.7208855557 481217.54051367636,165927.31390358304 481221.5755064988,165924.12884127168 481211.6925502743,165929.67582654592 481209.9104735108,165936.54584356796 481207.699518199)),((165939.7208855557 481217.54051367636,165938.6048992502 481214.10754797957,165936.54584356796 481207.699518199,165943.42091453492 481205.48758226004,165952.46891637606 481202.5455774916,165956.30395514896 481214.44053561985,165950.59394445625 481216.2815246088,165940.38089696498 481219.5725450003,165939.7208855557 481217.54051367636)),((165928.88381791487 481183.8815045006,165932.12180322534 481193.94749854505,165919.70380637315 481197.9754764354,165916.45976908074 481187.9535376864,165921.9968088786 481186.08553448814,165928.88381791487 481183.8815045006)),((165928.88381791487 481183.8815045006,165935.77478973227 481181.6766027653,165944.79885145818 481178.7555598329,165948.63385924912 481190.6505113363,165942.92389217904 481192.4915092783,165932.71481026363 481195.78856254957,165932.12180322534 481193.94749854505,165928.88381791487 481183.8815045006)),((165925.6577841699 481173.8315612609,165926.81775358738 481177.45555016235,165928.88381791487 481183.8815045006,165921.9968088786 481186.08553448814,165916.45976908074 481187.9535376864,165913.1937729216 481177.86557317525,165925.6577841699 481173.8315612609)),((165921.24274012144 481160.08457912493,165923.31373494447 481166.50753767864,165924.47675393053 481170.1415464862,165911.99370911228 481174.1455892804,165908.7426881924 481164.09159663186,165914.34872256077 481162.2995081409,165921.24274012144 481160.08457912493)),((165925.0648026079 481171.97659024666,165924.47675393053 481170.1415464862,165923.31373494447 481166.50753767864,165921.24274012144 481160.08457912493,165928.1277549979 481157.87353403826,165937.12878032168 481154.9655552655,165940.9638250668 481166.8606115619,165935.2657636092 481168.7025348458,165925.0648026079 481171.97659024666)),((165908.7426881924 481164.09159663186,165905.50370686068 481154.0755739703,165917.98371786345 481150.0455835623,165919.17071490118 481153.6626206272,165921.24274012144 481160.08457912493,165914.34872256077 481162.2995081409,165908.7426881924 481164.09159663186)),((165937.12878032168 481154.9655552655,165928.1277549979 481157.87353403826,165921.24274012144 481160.08457912493,165919.17071490118 481153.6626206272,165917.98371786345 481150.0455835623,165916.79371812948 481146.3055934274,165918.07372073093 481144.83562240377,165932.37375480027 481140.215544091,165937.12878032168 481154.9655552655)),((165981.62270644 481566.05520726903,165982.7517157374 481562.23724365025,165985.8667134712 481551.73628236784,165991.4567438497 481553.39521309774,166000.28978018748 481555.8702663668,165996.0747680759 481570.2552233033,165990.2887963984 481568.5732643481,165981.62270644 481566.05520726903)),((165985.8667134712 481551.73628236784,165988.95169326712 481541.2192343411,165990.07469705105 481536.73523226037,166004.50474845723 481541.48531321733,166000.28978018748 481555.8702663668,165991.4567438497 481553.39521309774,165985.8667134712 481551.73628236784)),((165975.7046653689 481533.0052850057,165990.07469705105 481536.73523226037,165988.95169326712 481541.2192343411,165985.8667134712 481551.73628236784,165980.26768450555 481550.0752239369,165971.4586622845 481547.49222248094,165975.7046653689 481533.0052850057)),((165981.62270644 481566.05520726903,165967.25466094722 481561.8351702114,165971.4586622845 481547.49222248094,165980.26768450555 481550.0752239369,165985.8667134712 481551.73628236784,165982.7517157374 481562.23724365025,165981.62270644 481566.05520726903)),((165939.31052736257 481537.98322753777,165948.14258714658 481540.61517884233,165953.74756907398 481542.2762139906,165950.6586404207 481552.79416514596,165949.52764086245 481556.6282648508,165935.0645508778 481552.3851903837,165939.31052736257 481537.98322753777)),((165968.11566737344 481546.5032211833,165963.90465453628 481560.84526602336,165949.52764086245 481556.6282648508,165950.6586404207 481552.79416514596,165953.74756907398 481542.2762139906,165959.34662016534 481543.9352395898,165968.11566737344 481546.5032211833)),((165968.11566737344 481546.5032211833,165959.34662016534 481543.9352395898,165953.74756907398 481542.2762139906,165956.82960471738 481531.76726200926,165957.95361929305 481527.8292279403,165972.34463824946 481532.0372719382,165968.11566737344 481546.5032211833)),((165939.31052736257 481537.98322753777,165943.5445107696 481523.62018447777,165957.95361929305 481527.8292279403,165956.82960471738 481531.76726200926,165953.74756907398 481542.2762139906,165948.14258714658 481540.61517884233,165939.31052736257 481537.98322753777)),((165943.5445107696 481523.62018447777,165947.79850722943 481509.19020873844,165956.59254258088 481511.865261011,165962.1916013131 481513.50526350754,165959.10157256975 481524.011301254,165957.95361929305 481527.8292279403,165943.5445107696 481523.62018447777)),((165972.34463824946 481532.0372719382,165957.95361929305 481527.8292279403,165959.10157256975 481524.011301254,165962.1916013131 481513.50526350754,165967.79658568368 481515.1462869073,165976.5556365254 481517.7543160746,165972.34463824946 481532.0372719382)),((165976.5556365254 481517.7543160746,165967.79658568368 481515.1462869073,165962.1916013131 481513.50526350754,165965.2815927043 481502.9912167502,165966.3935615073 481499.1412791612,165980.7906309283 481503.33033460635,165976.5556365254 481517.7543160746)),((165951.99551549152 481494.95126221766,165966.3935615073 481499.1412791612,165965.2815927043 481502.9912167502,165962.1916013131 481513.50526350754,165956.59254258088 481511.865261011,165947.79850722943 481509.19020873844,165951.99551549152 481494.95126221766)),((165956.26151080034 481480.4822672796,165965.0625026999 481483.08525067125,165970.69252246595 481484.73534517415,165967.57958312554 481495.2263056233,165966.3935615073 481499.1412791612,165951.99551549152 481494.95126221766,165956.26151080034 481480.4822672796)),((165970.69252246595 481484.73534517415,165985.017608498 481488.9352678822,165980.7906309283 481503.33033460635,165966.3935615073 481499.1412791612,165967.57958312554 481495.2263056233,165970.69252246595 481484.73534517415)),((165985.017608498 481488.9352678822,165970.69252246595 481484.73534517415,165973.75455211758 481474.21033811977,165974.8974974293 481470.2332966167,165989.26357937 481474.4722649936,165985.017608498 481488.9352678822)),((165960.50445133742 481466.0903311382,165974.8974974293 481470.2332966167,165973.75455211758 481474.21033811977,165970.69252246595 481484.73534517415,165965.0625026999 481483.08525067125,165956.26151080034 481480.4822672796,165960.50445133742 481466.0903311382)),((165960.50445133742 481466.0903311382,165964.74948427 481451.6882785512,165973.51751495776 481454.29532028775,165979.1745332628 481455.9592810538,165976.05152430522 481466.4553314901,165974.8974974293 481470.2332966167,165960.50445133742 481466.0903311382)),((165989.26357937 481474.4722649936,165974.8974974293 481470.2332966167,165976.05152430522 481466.4553314901,165979.1745332628 481455.9592810538,165984.73649874856 481457.595332028,165993.45358051884 481460.20129447326,165989.26357937 481474.4722649936)),((165979.1745332628 481455.9592810538,165982.22851159697 481445.4223565114,165983.38548240822 481441.61335710034,165997.67452061403 481445.8253634295,165993.45358051884 481460.20129447326,165984.73649874856 481457.595332028,165979.1745332628 481455.9592810538)),((165964.74948427 481451.6882785512,165965.8944682684 481447.80536906695,165964.21943920254 481447.3353404566,165967.16940644267 481436.83333526517,165983.38548240822 481441.61335710034,165982.22851159697 481445.4223565114,165979.1745332628 481455.9592810538,165973.51751495776 481454.29532028775,165964.74948427 481451.6882785512)),((165931.78434320926 481457.6552447277,165935.97235709074 481443.2893136629,165941.40237306454 481444.85526083026,165947.03838439108 481446.5322673152,165943.89840851355 481457.0212904519,165942.7733832031 481460.8903412712,165931.78434320926 481457.6552447277)),((165961.39641423512 481450.78526691074,165957.19445905197 481465.1353463633,165942.7733832031 481460.8903412712,165943.89840851355 481457.0212904519,165947.03838439108 481446.5322673152,165952.60639016278 481448.19032571657,165961.39641423512 481450.78526691074)),((165967.16940644267 481436.83333526517,165964.21943920254 481447.3353404566,165962.54440981965 481446.8653124131,165961.39641423512 481450.78526691074,165952.60639016278 481448.19032571657,165947.03838439108 481446.5322673152,165950.09037083114 481436.00433123333,165951.29139067512 481432.15236295323,165967.16940644267 481436.83333526517)),((165935.97235709074 481443.2893136629,165940.17434220857 481428.87535132206,165951.29139067512 481432.15236295323,165950.09037083114 481436.00433123333,165947.03838439108 481446.5322673152,165941.40237306454 481444.85526083026,165935.97235709074 481443.2893136629)),((165947.79850722943 481509.19020873844,165943.5445107696 481523.62018447777,165939.31052736257 481537.98322753777,165935.0645508778 481552.3851903837,165949.52764086245 481556.6282648508,165963.90465453628 481560.84526602336,165968.11566737344 481546.5032211833,165972.34463824946 481532.0372719382,165975.7046653689 481533.0052850057,165971.4586622845 481547.49222248094,165967.25466094722 481561.8351702114,165981.62270644 481566.05520726903,165990.2887963984 481568.5732643481,165988.14081311575 481575.871190598,165925.78456217595 481557.5191725351,165951.19443893305 481471.1812507268,165929.6113786002 481464.82930264046,165931.78434320926 481457.6552447277,165942.7733832031 481460.8903412712,165957.19445905197 481465.1353463633,165961.39641423512 481450.78526691074,165962.54440981965 481446.8653124131,165964.21943920254 481447.3353404566,165965.8944682684 481447.80536906695,165964.74948427 481451.6882785512,165960.50445133742 481466.0903311382,165956.26151080034 481480.4822672796,165951.99551549152 481494.95126221766,165947.79850722943 481509.19020873844)),((165941.05912179363 481325.0553667046,165955.3011366293 481320.4854062049,165959.84321633418 481334.64037687157,165951.19216527854 481337.4754338825,165945.62013845862 481339.26544198627,165942.2591185958 481328.84044813446,165941.05912179363 481325.0553667046)),((165941.05912179363 481325.0553667046,165942.2591185958 481328.84044813446,165945.62013845862 481339.26544198627,165940.0661268979 481341.050378153,165934.73211844507 481342.753361227,165930.24406786144 481328.52543277247,165941.05912179363 481325.0553667046)),((165934.73211844507 481342.753361227,165940.0661268979 481341.050378153,165945.62013845862 481339.26544198627,165948.99422618406 481349.69436158845,165950.20422346052 481353.54544691474,165939.25420752895 481357.08540151204,165934.73211844507 481342.753361227)),((165962.87524257202 481338.1164342519,165966.16722080676 481348.3844067348,165950.20422346052 481353.54544691474,165948.99422618406 481349.69436158845,165945.62013845862 481339.26544198627,165951.19216527854 481337.4754338825,165959.84321633418 481334.64037687157,165961.14418771747 481338.6953912655,165962.87524257202 481338.1164342519)),((165966.16722080676 481348.3844067348,165962.87524257202 481338.1164342519,165964.64423360457 481337.52543432114,165963.3402144063 481333.4624012245,165971.93421949708 481330.74640247505,165977.48524113596 481328.96739244333,165980.85626413499 481339.39844098384,165982.07327767808 481343.2424288156,165966.16722080676 481348.3844067348)),((165991.720251199 481324.3384400168,165996.32429299227 481338.6354442758,165982.07327767808 481343.2424288156,165980.85626413499 481339.39844098384,165977.48524113596 481328.96739244333,165983.06424125226 481327.1794385015,165991.720251199 481324.3384400168)),((165987.1412406636 481310.11748955015,165991.720251199 481324.3384400168,165983.06424125226 481327.1794385015,165977.48524113596 481328.96739244333,165974.13820372755 481318.53639975237,165972.92219446276 481314.7565044081,165987.1412406636 481310.11748955015)),((165963.3402144063 481333.4624012245,165958.81514406268 481319.35842404625,165972.92219446276 481314.7565044081,165974.13820372755 481318.53639975237,165977.48524113596 481328.96739244333,165971.93421949708 481330.74640247505,165963.3402144063 481333.4624012245)),((165972.92219446276 481314.7565044081,165958.81514406268 481319.35842404625,165954.19315136166 481304.9514868698,165962.75612083622 481302.2305076738,165968.30917366338 481300.4094340397,165972.92219446276 481314.7565044081)),((165968.30917366338 481300.4094340397,165973.88217284554 481298.6655169666,165982.5412139683 481295.8305174183,165987.1412406636 481310.11748955015,165972.92219446276 481314.7565044081,165968.30917366338 481300.4094340397)),((165968.30917366338 481300.4094340397,165964.9601495697 481290.02650985704,165963.7271422241 481286.15745674213,165977.94914385804 481281.5714949763,165982.5412139683 481295.8305174183,165973.88217284554 481298.6655169666,165968.30917366338 481300.4094340397)),((165963.7271422241 481286.15745674213,165964.9601495697 481290.02650985704,165968.30917366338 481300.4094340397,165962.75612083622 481302.2305076738,165954.19315136166 481304.9514868698,165949.62211592981 481290.70544403687,165963.7271422241 481286.15745674213)),((165959.13904705815 481271.891451392,165962.4810715889 481282.33644102496,165963.7271422241 481286.15745674213,165949.62211592981 481290.70544403687,165945.03602160158 481276.4124190493,165953.5660289468 481273.6634235794,165959.13904705815 481271.891451392)),((165973.36409571537 481267.33151899016,165977.94914385804 481281.5714949763,165963.7271422241 481286.15745674213,165962.4810715889 481282.33644102496,165959.13904705815 481271.891451392,165964.71208475076 481270.1124758971,165973.36409571537 481267.33151899016)),((165968.77606675995 481253.0095394675,165970.30806429673 481257.7664775316,165973.36409571537 481267.33151899016,165964.71208475076 481270.1124758971,165959.13904705815 481271.891451392,165955.79304926845 481261.4484581901,165954.55201612142 481257.6254531015,165968.77606675995 481253.0095394675)),((165954.55201612142 481257.6254531015,165955.79304926845 481261.4484581901,165959.13904705815 481271.891451392,165953.5660289468 481273.6634235794,165945.03602160158 481276.4124190493,165941.9830346947 481266.89747067,165940.47400505433 481262.19544545864,165954.55201612142 481257.6254531015)),((165966.16722080676 481348.3844067348,165982.07327767808 481343.2424288156,165996.32429299227 481338.6354442758,165991.720251199 481324.3384400168,165987.1412406636 481310.11748955015,165982.5412139683 481295.8305174183,165977.94914385804 481281.5714949763,165973.36409571537 481267.33151899016,165970.30806429673 481257.7664775316,165968.77606675995 481253.0095394675,165973.53406971783 481251.476547989,166002.68035683886 481341.89440115006,165936.05519068605 481363.369405808,165923.01604604002 481322.9174133205,165949.18912624416 481314.4813888294,165934.61698036632 481269.27143408824,165941.9830346947 481266.89747067,165945.03602160158 481276.4124190493,165949.62211592981 481290.70544403687,165954.19315136166 481304.9514868698,165958.81514406268 481319.35842404625,165963.3402144063 481333.4624012245,165964.64423360457 481337.52543432114,165962.87524257202 481338.1164342519,165961.14418771747 481338.6953912655,165959.84321633418 481334.64037687157,165955.3011366293 481320.4854062049,165941.05912179363 481325.0553667046,165930.24406786144 481328.52543277247,165934.73211844507 481342.753361227,165939.25420752895 481357.08540151204,165950.20422346052 481353.54544691474,165966.16722080676 481348.3844067348)),((165895.13041732486 481533.24123828445,165910.45443059667 481537.7282090086,165918.892460091 481540.224162435,165922.71948440833 481541.33024989034,165920.67447837786 481548.2551416977,165893.09843377655 481540.1511493943,165895.13041732486 481533.24123828445)),((165896.64740066387 481528.08315691736,165896.65241750143 481528.06514321023,165920.4185142213 481535.0441892801,165924.24847192867 481536.1511745033,165922.71948440833 481541.33024989034,165918.892460091 481540.224162435,165910.45443059667 481537.7282090086,165895.13041732486 481533.24123828445,165896.64740066387 481528.08315691736)),((165896.65241750143 481528.06514321023,165898.16535466668 481522.9191811999,165898.17435241595 481522.8891597626,165921.94347844977 481529.86521559535,165925.7774623816 481530.9722108921,165924.24847192867 481536.1511745033,165920.4185142213 481535.0441892801,165896.65241750143 481528.06514321023)),((165899.69038288604 481517.7331913193,165899.69635646036 481517.7141783537,165923.4694707462 481524.6852433193,165927.30747869454 481525.7932500641,165925.7774623816 481530.9722108921,165921.94347844977 481529.86521559535,165898.17435241595 481522.8891597626,165899.69038288604 481517.7331913193)),((165901.21136076152 481512.5612122759,165901.218365878 481512.5381960822,165902.19538995755 481512.8091679609,165916.5504016183 481517.0312113604,165924.99546621574 481519.5052715604,165928.8364779695 481520.61317485454,165927.30747869454 481525.7932500641,165923.4694707462 481524.6852433193,165899.69635646036 481517.7141783537,165901.21136076152 481512.5612122759)),((165902.7343960123 481507.3852327769,165902.74037624605 481507.3632156981,165926.5204402043 481514.3261881598,165930.36547795995 481515.43421280093,165928.8364779695 481520.61317485454,165924.99546621574 481519.5052715604,165916.5504016183 481517.0312113604,165902.19538995755 481512.8091679609,165901.218365878 481512.5381960822,165902.7343960123 481507.3852327769)),((165904.25833845264 481502.20124477724,165904.2623919882 481502.18723446043,165905.24435118132 481502.44720268424,165928.0404683249 481509.1652303686,165931.89543563488 481510.25525337853,165930.36547795995 481515.43421280093,165926.5204402043 481514.3261881598,165902.74037624605 481507.3632156981,165904.25833845264 481502.20124477724)),((165914.80236954536 481498.40129218134,165920.4864416878 481500.0572347831,165923.36639387568 481500.89619632973,165933.76447955295 481503.92523969157,165931.89543563488 481510.25525337853,165928.0404683249 481509.1652303686,165905.24435118132 481502.44720268424,165904.2623919882 481502.18723446043,165906.11937296687 481495.87120313005,165914.80236954536 481498.40129218134)),((165933.76447955295 481503.92523969157,165923.36639387568 481500.89619632973,165923.65443714958 481499.88622205233,165924.6673896757 481496.43126609793,165927.45044080383 481497.24820778926,165932.95342380035 481478.61931950756,165933.09739250087 481478.6622525252,165933.3244254117 481477.8952557339,165934.4303817035 481474.0422937281,165941.84446005966 481476.2252570742,165933.76447955295 481503.92523969157)),((165928.61836432802 481472.3313100361,165934.4303817035 481474.0422937281,165933.3244254117 481477.8952557339,165933.09739250087 481478.6622525252,165932.95342380035 481478.61931950756,165927.45044080383 481497.24820778926,165924.6673896757 481496.43126609793,165923.65443714958 481499.88622205233,165923.36639387568 481500.89619632973,165920.4864416878 481500.0572347831,165920.77538404206 481499.0412540726,165921.78942337478 481495.5873013189,165927.29739742447 481476.94328597013,165928.61836432802 481472.3313100361)),((165928.61836432802 481472.3313100361,165927.29739742447 481476.94328597013,165921.78942337478 481495.5873013189,165920.77538404206 481499.0412540726,165920.4864416878 481500.0572347831,165914.80236954536 481498.40129218134,165919.0003527469 481484.2682437183,165921.6313492792 481475.26523400156,165921.4873803808 481475.22230131645,165921.71434346386 481474.4553038453,165922.81533845488 481470.62224457925,165928.61836432802 481472.3313100361)),((165914.80236954536 481498.40129218134,165906.11937296687 481495.87120313005,165909.38437225827 481484.88029707095,165911.20331499135 481478.59823054564,165914.2793231971 481468.1092675604,165922.81533845488 481470.62224457925,165921.71434346386 481474.4553038453,165921.4873803808 481475.22230131645,165921.6313492792 481475.26523400156,165919.0003527469 481484.2682437183,165914.80236954536 481498.40129218134)),((165906.11937296687 481495.87120313005,165897.47634055186 481493.30127379094,165901.6643087399 481479.175198381,165904.17528002078 481470.14120556315,165904.41532065 481470.21227725974,165904.6443266929 481469.44528353587,165905.76231058137 481465.6012429256,165914.2793231971 481468.1092675604,165911.20331499135 481478.59823054564,165909.38437225827 481484.88029707095,165906.11937296687 481495.87120313005)),((165897.47634055186 481493.30127379094,165891.82230733614 481491.62027832307,165893.12732160438 481487.17626645276,165895.98731684854 481477.5102808174,165898.60226602363 481468.5012153713,165899.950275644 481463.88929162023,165905.76231058137 481465.6012429256,165904.6443266929 481469.44528353587,165904.41532065 481470.21227725974,165904.17528002078 481470.14120556315,165901.6643087399 481479.175198381,165897.47634055186 481493.30127379094)),((165894.1482505075 481462.18126349826,165899.950275644 481463.88929162023,165898.60226602363 481468.5012153713,165895.98731684854 481477.5102808174,165893.12732160438 481487.17626645276,165891.82230733614 481491.62027832307,165888.9282799268 481490.7592738712,165890.23026762213 481486.32626971306,165887.46628168572 481485.51517682313,165892.9422399973 481466.8352261978,165892.79827060597 481466.7922943458,165894.1482505075 481462.18126349826)),((165888.9282799268 481490.7592738712,165878.61824088683 481487.69324565696,165886.72425100228 481459.99523461866,165894.1482505075 481462.18126349826,165892.79827060597 481466.7922943458,165892.9422399973 481466.8352261978,165887.46628168572 481485.51517682313,165890.23026762213 481486.32626971306,165888.9282799268 481490.7592738712)),((165856.23329322916 481537.0501121804,165881.64417191545 481450.71128487133,165929.6113786002 481464.82930264046,165951.19443893305 481471.1812507268,165925.78456217595 481557.5191725351,165856.23329322916 481537.0501121804),(165867.54927288933 481525.10522256023,165865.49131977314 481532.05914822913,165893.09843377655 481540.1511493943,165920.67447837786 481548.2551416977,165922.71948440833 481541.33024989034,165924.24847192867 481536.1511745033,165925.7774623816 481530.9722108921,165927.30747869454 481525.7932500641,165928.8364779695 481520.61317485454,165930.36547795995 481515.43421280093,165931.89543563488 481510.25525337853,165933.76447955295 481503.92523969157,165941.84446005966 481476.2252570742,165934.4303817035 481474.0422937281,165928.61836432802 481472.3313100361,165922.81533845488 481470.62224457925,165914.2793231971 481468.1092675604,165905.76231058137 481465.6012429256,165899.950275644 481463.88929162023,165894.1482505075 481462.18126349826,165886.72425100228 481459.99523461866,165878.61824088683 481487.69324565696,165876.74125623505 481494.0361689687,165875.20924209635 481499.2132491519,165873.67729294812 481504.3932228555,165872.1452832179 481509.57119418646,165870.61327667205 481514.749166038,165869.08127331096 481519.9271384061,165867.54927288933 481525.10522256023)),((165864.26622637178 481483.4501794296,165853.82416749134 481480.38124216447,165855.13816786418 481475.8981865053,165857.91919632955 481476.7151957553,165860.74618647926 481467.1472523947,165863.38416540896 481458.1492344596,165863.52718054497 481458.19227461156,165864.89212849856 481453.5532303068,165872.31417887198 481455.7352165087,165864.26622637178 481483.4501794296)),((165786.68302267324 481516.58014388575,165812.09292220575 481430.24218691647,165881.64417191545 481450.71128487133,165856.23329322916 481537.0501121804,165786.68302267324 481516.58014388575),(165798.00803197207 481504.65914855164,165795.9680335119 481511.61214057665,165823.56413966522 481519.7282063275,165851.18822609202 481527.8531666835,165864.26622637178 481483.4501794296,165872.31417887198 481455.7352165087,165864.89212849856 481453.5532303068,165859.0901429811 481451.847246296,165853.2880852939 481450.14126894844,165844.7631001899 481447.63422229275,165836.22904270093 481445.12527897663,165830.42703771713 481443.41921739513,165824.62502849937 481441.7132738949,165817.18399556502 481439.5251983774,165808.99602089508 481467.20522848406,165807.1290240118 481473.57022994,165805.60797486416 481478.7521396871,165804.0880216979 481483.9331622273,165802.56800132265 481489.1151865056,165801.0480544796 481494.29621007456,165799.53601079423 481499.45010300004,165798.00803197207 481504.65914855164)),((165866.8946775674 481227.2614635345,165866.63470314653 481226.45244678966,165865.69470760453 481223.61247728474,165861.72971818765 481224.8815075602,165858.10862015767 481213.5774607407,165855.32264947437 481205.11148452404,165854.2025963923 481201.4225106706,165859.62464855894 481199.67446122796,165860.78461601818 481203.3495048612,165863.5306689735 481211.82552133844,165866.60869701818 481221.50948498544,165868.17671572493 481221.01046857407,165868.8797176592 481223.22550298803,165867.311701787 481223.7235178127,165868.29369451493 481226.81247772946,165866.8946775674 481227.2614635345)),((165873.70971056758 481225.07043869596,165868.29369451493 481226.81247772946,165867.311701787 481223.7235178127,165868.8797176592 481223.22550298803,165868.17671572493 481221.01046857407,165866.60869701818 481221.50948498544,165863.5306689735 481211.82552133844,165860.78461601818 481203.3495048612,165859.62464855894 481199.67446122796,165865.04766110049 481197.9255297347,165866.20967289337 481201.5994664963,165868.9526537095 481210.0734764689,165873.70971056758 481225.07043869596)),((165882.26772553523 481222.31949046534,165873.70971056758 481225.07043869596,165868.9526537095 481210.0734764689,165866.20967289337 481201.5994664963,165865.04766110049 481197.9255297347,165873.60068580566 481195.1685472645,165877.02172582838 481205.785442737,165882.26772553523 481222.31949046534)),((165890.8257503115 481219.568445799,165882.26772553523 481222.31949046534,165877.02172582838 481205.785442737,165873.60068580566 481195.1685472645,165882.15365215074 481192.4114681889,165886.07474011733 481204.540549042,165890.8257503115 481219.568445799)),((165890.8257503115 481219.568445799,165886.07474011733 481204.540549042,165882.15365215074 481192.4114681889,165887.5766784854 481190.6635628014,165891.4977636454 481202.7885311759,165894.58876734154 481212.5644449591,165893.0167248861 481213.0614413691,165893.71779667106 481215.2814819412,165895.29079305512 481214.7844878564,165896.25174365405 481217.8234493365,165890.8257503115 481219.568445799)),((165896.25174365405 481217.8234493365,165895.29079305512 481214.7844878564,165893.71779667106 481215.2814819412,165893.0167248861 481213.0614413691,165894.58876734154 481212.5644449591,165891.4977636454 481202.7885311759,165887.5766784854 481190.6635628014,165892.9997111255 481188.9145507321,165894.19671993738 481192.5715478998,165896.91976828402 481201.0365170132,165899.76578669314 481210.19148501434,165900.4868094275 481212.4224744692,165896.5847507168 481213.6844948627,165897.75379771486 481217.34054124047,165896.25174365405 481217.8234493365)),((165907.70576258353 481210.1234609238,165902.2817912834 481211.8425247669,165900.4868094275 481212.4224744692,165899.76578669314 481210.19148501434,165896.91976828402 481201.0365170132,165894.19671993738 481192.5715478998,165892.9997111255 481188.9145507321,165900.16369288534 481186.6055023801,165907.70576258353 481210.1234609238)),((165907.70576258353 481210.1234609238,165908.87381045165 481213.76548845315,165897.75379771486 481217.34054124047,165896.5847507168 481213.6844948627,165900.4868094275 481212.4224744692,165902.2817912834 481211.8425247669,165907.70576258353 481210.1234609238)),((165880.18498152556 481336.7233748839,165836.31353847278 481200.6194925535,165905.31869812732 481178.3775641539,165934.61698036632 481269.27143408824,165949.18912624416 481314.4813888294,165923.01604604002 481322.9174133205,165880.18498152556 481336.7233748839),(165854.2025963923 481201.4225106706,165846.93358080686 481203.7654415951,165854.44664577578 481227.21249125793,165855.62366086923 481230.8854573256,165855.82369299646 481231.57540042157,165854.33365392467 481232.05545480386,165876.44389041603 481300.6554533546,165878.1138858439 481300.1253995869,165878.3339113341 481300.80537398526,165886.68397781134 481326.77534298535,165894.68699622378 481324.19342627533,165903.4679854846 481321.36145030503,165912.37800999396 481318.48738357215,165921.19804856065 481315.64239624795,165930.08209634136 481312.7774275843,165939.79406761308 481309.6453844185,165931.37404637353 481283.6954208855,165908.87381045165 481213.76548845315,165907.70576258353 481210.1234609238,165900.16369288534 481186.6055023801,165892.9997111255 481188.9145507321,165887.5766784854 481190.6635628014,165882.15365215074 481192.4114681889,165873.60068580566 481195.1685472645,165865.04766110049 481197.9255297347,165859.62464855894 481199.67446122796,165854.2025963923 481201.4225106706)),((165876.25758868846 481147.235518126,165886.28362180485 481143.98556564905,165896.2337106576 481174.71549742355,165886.18763645564 481177.9574857892,165881.60664909615 481163.8455611428,165876.25758868846 481147.235518126)),((165877.62665215324 481180.720548479,165876.1156383474 481176.1364793717,165874.2206071835 481170.222516107,165867.70355799777 481150.00851581164,165876.25758868846 481147.235518126,165881.60664909615 481163.8455611428,165886.18763645564 481177.9574857892,165877.62665215324 481180.720548479)),((165869.06465495183 481183.48351249145,165864.4985981491 481169.38354181446,165859.15056190282 481152.7805291889,165867.70355799777 481150.00851581164,165874.2206071835 481170.222516107,165876.1156383474 481176.1364793717,165877.62665215324 481180.720548479,165869.06465495183 481183.48351249145)),((165853.91450703648 481154.47847423767,165859.15056190282 481152.7805291889,165864.4985981491 481169.38354181446,165869.06465495183 481183.48351249145,165860.50362192755 481186.2464934498,165859.00158758258 481181.6654534509,165857.05258033366 481175.793547097,165856.1815873062 481173.1014900736,165850.60753492877 481155.55046525295,165853.77149161507 481154.5245568851,165853.91450703648 481154.47847423767)),((165924.52807736598 481843.81189789885,165956.08599516712 481745.01508612063,165965.7919827646 481714.12902105553,165975.93794683047 481682.76206980716,165985.7359202118 481649.83511083043,165993.46790969896 481619.4111303698,166001.88886370874 481579.6282719317,166008.29380160503 481545.4542077084,166012.5927007486 481514.79429283564,166015.75270217698 481484.19937875186,166018.35059922235 481447.76941500005,166020.69352027407 481414.70640413306,166019.8444648481 481375.4923786521,166018.69738716728 481336.5465047899,166015.15530439743 481290.8855103039,166010.82720700584 481258.03348857275,166005.06812188454 481222.01660339045,165997.66299492292 481186.39761198557,165989.9529152416 481154.0525668103,165980.3347990849 481119.55767611903,165970.06673855023 481085.06470021605,165920.02428878422 480929.8827890846,165922.1182438914 480929.20882226096,165972.17376532574 481084.43462164776,165982.45284189627 481118.96567873587,165992.08393542428 481153.505664375,165999.8039932762 481185.89557452104,166007.23313360344 481221.6245515634,166013.00322002955 481257.715565682,166017.34331388713 481290.65451334784,166020.8944038609 481336.42545843904,166022.04348282522 481375.44443781814,166022.89455435504 481414.75537924014,166020.5436071265 481447.925407236,166017.944697256 481484.37428252696,166014.77372129864 481515.08432910295,166010.46478895945 481545.80430237454,166004.04382546115 481580.0652253856,165995.61388665624 481619.89523620025,165987.85492324663 481650.42518802424,165978.03495803892 481683.42508322693,165967.88499884465 481714.8050392654,165958.18401185697 481745.6750893561,165926.63909579924 481844.43286302045,165924.52807736598 481843.81189789885)),((165619.34493397814 481753.9937822201,165621.25993950333 481746.4797864231,165726.6254969247 481332.95825022587,165742.17659175242 481381.20723075565,165811.18078064197 481358.96532213397,165863.38789269142 481342.1373177792,165880.18498152556 481336.7233748839,165923.01604604002 481322.9174133205,165936.05519068605 481363.369405808,166002.68035683886 481341.89440115006,165973.53406971783 481251.476547989,165994.94911866274 481244.573534503,165983.4440417146 481208.88056617026,165990.58306434262 481206.5796042553,165960.67176963005 481113.7816573767,165903.14921352794 480935.321792724,165920.02428878422 480929.8827890846,165970.06673855023 481085.06470021605,165980.3347990849 481119.55767611903,165989.9529152416 481154.0525668103,165997.66299492292 481186.39761198557,166005.06812188454 481222.01660339045,166010.82720700584 481258.03348857275,166015.15530439743 481290.8855103039,166018.69738716728 481336.5465047899,166019.8444648481 481375.4923786521,166020.69352027407 481414.70640413306,166018.35059922235 481447.76941500005,166015.75270217698 481484.19937875186,166012.5927007486 481514.79429283564,166008.29380160503 481545.4542077084,166001.88886370874 481579.6282719317,165993.46790969896 481619.4111303698,165985.7359202118 481649.83511083043,165975.93794683047 481682.76206980716,165965.7919827646 481714.12902105553,165956.08599516712 481745.01508612063,165924.52807736598 481843.81189789885,165853.94681607577 481823.0388199289,165677.60915791194 481771.1417838235,165619.34493397814 481753.9937822201),(165673.3708977106 481644.8049006763,165647.9609629814 481731.14381613344,165787.06153932825 481772.0818594473,165926.16303056382 481813.0209374773,165951.5729883572 481726.68209263764,165995.3347822398 481577.9882105603,165988.14081311575 481575.871190598,165990.2887963984 481568.5732643481,165996.0747680759 481570.2552233033,166000.28978018748 481555.8702663668,166004.50474845723 481541.48531321733,165990.07469705105 481536.73523226037,165975.7046653689 481533.0052850057,165972.34463824946 481532.0372719382,165976.5556365254 481517.7543160746,165980.7906309283 481503.33033460635,165985.017608498 481488.9352678822,165989.26357937 481474.4722649936,165993.45358051884 481460.20129447326,165997.67452061403 481445.8253634295,165983.38548240822 481441.61335710034,165967.16940644267 481436.83333526517,165951.29139067512 481432.15236295323,165940.17434220857 481428.87535132206,165935.97235709074 481443.2893136629,165931.78434320926 481457.6552447277,165929.6113786002 481464.82930264046,165881.64417191545 481450.71128487133,165812.09292220575 481430.24218691647,165742.54266873017 481409.7731823477,165717.13279208494 481496.11104573845,165673.3708977106 481644.8049006763)),((165944.21996750988 481231.4705071231,165951.09199357682 481229.2654734652,165960.13897532108 481226.33549698483,165963.05302768055 481235.37549498817,165960.19799728072 481236.29654102743,165962.03901342853 481242.00547000783,165964.4030222143 481249.38752608956,165961.2800567513 481250.39353844704,165958.91504699853 481243.0305077823,165957.41400492916 481238.35853659053,165947.4609974654 481241.54953687976,165946.2929498066 481237.89247930876,165944.21996750988 481231.4705071231)),((165964.89403841048 481241.0855376612,165967.25804585416 481248.46648246696,165964.41803350058 481249.3825525534,165964.4030222143 481249.38752608956,165962.03901342853 481242.00547000783,165960.19799728072 481236.29654102743,165963.05302768055 481235.37549498817,165964.89403841048 481241.0855376612)),((165799.76645236128 481728.91290228424,165856.23329322916 481537.0501121804,165925.78456217595 481557.5191725351,165882.02270928613 481706.2129920733,165869.31776905607 481749.3819606654,165799.76645236128 481728.91290228424),(165818.18347132907 481699.0759244936,165810.6795268119 481724.3238936018,165818.52953724368 481726.63391340274,165823.7105264967 481728.1579079759,165828.8165668759 481729.65993579174,165834.0725614319 481731.2069149638,165839.2525866725 481732.73092375806,165844.43165426826 481734.254935893,165849.6136502441 481735.7789599037,165854.79468637242 481737.3039886345,165864.21673524188 481740.07594691927,165871.61166309135 481714.8499591504,165873.5856655602 481708.1559845713,165875.19665619102 481702.68901061267,165876.80867300337 481697.2220394776,165878.42062517727 481691.7550687749,165880.0326493108 481686.2879875313,165881.64365188024 481680.82201724674,165883.25561466636 481675.3550482706,165885.81462477864 481666.6750804727,165862.71556835776 481659.87201639387,165858.18350495028 481662.28103755135,165857.22255387413 481661.9990944326,165860.42351585196 481651.13507619646,165887.98459628696 481659.2750171646,165890.5355846362 481650.59203018417,165892.1425944516 481645.1230506564,165893.74858513728 481639.6540694473,165895.3556020077 481634.18509106763,165896.961599746 481628.7161110021,165898.56855549413 481623.2471336177,165900.5446102156 481616.5211311452,165907.9205223746 481591.3661466478,165854.4933637975 481575.62010088266,165846.79339518113 481601.7910717138,165845.1543742347 481601.3041389397,165816.8084509125 481697.6910105642,165818.44844988626 481698.18494588154,165818.18347132907 481699.0759244936),(165913.7345330837 481561.835152511,165911.98453541263 481567.87514941185,165914.68449818296 481568.66519705893,165916.4345449143 481562.6352149766,165913.7345330837 481561.835152511)),((165948.95499848967 481246.2335059524,165936.5469794084 481250.24243752443,165935.02397284005 481245.53548755957,165947.4609974654 481241.54953687976,165948.95499848967 481246.2335059524)),((165947.4609974654 481241.54953687976,165957.41400492916 481238.35853659053,165958.91504699853 481243.0305077823,165948.95499848967 481246.2335059524,165947.4609974654 481241.54953687976)),((165905.31869812732 481178.3775641539,165891.6666154965 481136.02359245205,165960.67176963005 481113.7816573767,165990.58306434262 481206.5796042553,165983.4440417146 481208.88056617026,165994.94911866274 481244.573534503,165973.53406971783 481251.476547989,165968.77606675995 481253.0095394675,165954.55201612142 481257.6254531015,165940.47400505433 481262.19544545864,165941.9830346947 481266.89747067,165934.61698036632 481269.27143408824,165905.31869812732 481178.3775641539),(165905.50370686068 481154.0755739703,165908.7426881924 481164.09159663186,165911.99370911228 481174.1455892804,165924.47675393053 481170.1415464862,165925.0648026079 481171.97659024666,165925.6577841699 481173.8315612609,165913.1937729216 481177.86557317525,165916.45976908074 481187.9535376864,165919.70380637315 481197.9754764354,165932.12180322534 481193.94749854505,165932.71481026363 481195.78856254957,165933.3258276864 481197.68652243924,165920.90381222923 481201.6855597624,165924.12884127168 481211.6925502743,165927.31390358304 481221.5755064988,165939.7208855557 481217.54051367636,165940.38089696498 481219.5725450003,165940.92392673437 481221.25650576956,165928.51389815565 481225.28548057156,165931.78590693325 481235.4624807737,165935.02397284005 481245.53548755957,165936.5469794084 481250.24243752443,165948.95499848967 481246.2335059524,165958.91504699853 481243.0305077823,165961.2800567513 481250.39353844704,165964.4030222143 481249.38752608956,165964.41803350058 481249.3825525534,165967.25804585416 481248.46648246696,165964.89403841048 481241.0855376612,165968.73504042928 481239.8365646448,165963.9829787248 481225.09053244634,165960.15095575404 481213.20058163744,165956.3139019831 481201.2956022904,165952.48285594245 481189.4095544417,165948.64786753405 481177.50959311274,165944.81482477117 481165.61553636834,165940.9817653917 481153.7205927461,165936.22770472043 481138.9705800083,165932.37375480027 481140.215544091,165918.07372073093 481144.83562240377,165916.79371812948 481146.3055934274,165917.98371786345 481150.0455835623,165905.50370686068 481154.0755739703)),((165856.84086455274 481321.967319789,165853.9738187968 481312.8804221144,165852.74684928128 481309.0813951317,165860.79386263408 481306.4653622439,165869.11391915628 481332.4153192787,165861.07293261477 481335.00531610136,165856.84086455274 481321.967319789)),((165878.3339113341 481300.80537398526,165886.31888588314 481298.2294122301,165887.55189386752 481302.06239640043,165890.49793373534 481311.10642862413,165894.68699622378 481324.19342627533,165886.68397781134 481326.77534298535,165878.3339113341 481300.80537398526)),((165886.31888588314 481298.2294122301,165895.26694583046 481295.34338203387,165903.4679854846 481321.36145030503,165894.68699622378 481324.19342627533,165890.49793373534 481311.10642862413,165887.55189386752 481302.06239640043,165886.31888588314 481298.2294122301)),((165904.0799201045 481292.50046260294,165912.37800999396 481318.48738357215,165903.4679854846 481321.36145030503,165895.26694583046 481295.34338203387,165904.0799201045 481292.50046260294)),((165912.9189682873 481289.6493829797,165921.19804856065 481315.64239624795,165912.37800999396 481318.48738357215,165904.0799201045 481292.50046260294,165912.9189682873 481289.6493829797)),((165921.7149745366 481286.811464343,165922.95697104238 481290.6694003715,165925.87703315547 481299.68747166824,165930.08209634136 481312.7774275843,165921.19804856065 481315.64239624795,165912.9189682873 481289.6493829797,165921.7149745366 481286.811464343)),((165925.87703315547 481299.68747166824,165922.95697104238 481290.6694003715,165921.7149745366 481286.811464343,165931.37404637353 481283.6954208855,165939.79406761308 481309.6453844185,165930.08209634136 481312.7774275843,165925.87703315547 481299.68747166824)),((165859.39522142088 482267.4240714624,165864.58023530198 482251.2500981201,165870.91425172254 482253.2841598908,165879.3223348805 482255.98515759007,165880.66728750238 482251.79012318875,166036.17032815237 481766.6561312795,166046.02629930346 481735.6421578694,166055.72829030015 481703.96917686274,166065.4712408115 481670.5332167183,166073.85019402683 481639.2992494934,166083.20415541553 481598.5192454308,166089.29909334317 481563.24629943684,166094.11802925434 481531.8473813481,166098.9169394697 481487.64036907634,166101.8988601309 481450.2853709817,166103.08684389706 481416.0574241747,166102.93369437646 481375.9605096085,166101.7456417802 481336.0315043455,166098.21153095478 481289.0156036395,166092.06841256854 481242.295594639,166085.97631042093 481205.444609844,166078.7762296343 481168.82068623864,166070.93011676625 481135.4857379878,166061.18305531278 481100.10373740544,166048.71992073982 481059.8637894088,165962.33810554908 480790.9669277343,166126.4834736357 480738.2440844735,166284.86517634048 481326.3456167291,166308.26957530715 481457.38460489427,166313.80279147168 481573.28041882324,166138.78833844126 482338.71614736825,166081.8201098793 482362.2970864991,166078.87909140653 482354.8260973728,166065.03704142952 482350.38408176304,166067.1140423639 482343.91004357993,166047.4829979523 482337.61111607857,166046.74999094714 482339.89406430745,166011.74583306516 482328.6640402399,166011.13186545088 482330.5790858652,166004.40580526416 482313.8841250333,165995.45578310077 482311.04407232424,165986.90472601514 482308.30205776816,165982.0726736712 482294.6751175899,165979.4386831764 482292.11407342803,165976.74666644353 482289.497158236,165899.84941197015 482264.8940946159,165869.29827784642 482255.2771259079,165868.52726891052 482258.56606753974,165868.38028862118 482260.3340663107,165868.4712669673 482261.86314850824,165868.77225205908 482263.40203940653,165869.67226675144 482265.7321144773,165870.67225428545 482267.33307287534,165871.79227875813 482268.6280967436,165873.43232301722 482269.94106750196,165872.85431873804 482271.73604384495,165859.39522142088 482267.4240714624),(165940.77448270976 482218.33322843845,165944.22452076612 482227.1041601321,165950.84449544462 482224.5042468528,165947.40550719973 482215.704183836,165940.77448270976 482218.33322843845),(165988.2834341863 481993.02561051334,165987.16844019052 481996.4996890827,165988.64441476608 481996.9726212037,165987.372450483 482000.9536037061,165989.25942115605 482001.5556273442,165987.4364448771 482007.27065934683,165996.94850338978 482010.288634211,165999.36648882768 482002.6816601978,166004.11051088283 482004.19563692395,166006.53747695938 481996.633637221,166001.79845842728 481995.1046486911,166004.25946674342 481987.5016673862,165994.78641562958 481984.4296911814,165992.936448327 481990.13664986735,165991.03443861072 481989.5206833329,165989.74945852134 481993.497630687,165988.2834341863 481993.02561051334)),((165770.70677304774 480876.53069712035,165770.536768592 480876.0047152948,165773.1827870658 480875.57578046166,165775.54973754956 480875.19775313267,165805.11504480283 480966.92162979336,165834.14510546066 480957.56464399444,165891.6666154965 481136.02359245205,165905.31869812732 481178.3775641539,165836.31353847278 481200.6194925535,165822.6624279071 481158.26549094514,165814.0884203272 481161.02952517034,165811.68239555878 481148.67550719803,165823.73143364282 481145.3844633131,165854.20752218604 481135.45653249667,165847.1513999863 481113.57252679195,165841.32134709298 481095.4945620494,165835.492344386 481077.4156058137,165829.66525436094 481059.3465638337,165822.60918593645 481037.46259682236,165815.54912171973 481015.56861839304,165809.99907371998 480998.4285956074,165802.02399302027 480973.6876148568,165794.05297156327 480948.95566952834,165788.1319265725 480930.5877322591,165782.22086577112 480912.2487532343,165776.30278118345 480893.88973914855,165770.70677304774 480876.53069712035),(165833.25349588718 481161.17546683183,165832.3144548628 481161.5215512784,165836.15848971994 481173.47150982666,165837.11053207144 481173.1655096956,165843.1235316795 481191.85549232556,165851.94157576005 481189.0094869923,165860.50362192755 481186.2464934498,165869.06465495183 481183.48351249145,165877.62665215324 481180.720548479,165886.18763645564 481177.9574857892,165896.2337106576 481174.71549742355,165886.28362180485 481143.98556564905,165876.25758868846 481147.235518126,165867.70355799777 481150.00851581164,165859.15056190282 481152.7805291889,165853.91450703648 481154.47847423767,165852.19550400035 481148.7454882739,165850.19450258528 481142.07448384096,165849.5824694122 481140.03155528376,165849.43850588406 481140.07452058146,165852.05248622812 481148.7925723464,165853.77149161507 481154.5245568851,165850.60753492877 481155.55046525295,165842.05346714336 481158.3225058388,165834.20445387694 481160.8674610125,165833.25349588718 481161.17546683183)),((165960.17927882302 481921.8258100093,166012.34424551582 481759.0840178028,166022.14521790974 481728.24511586566,166031.79418719656 481696.74509726476,166041.42513576322 481663.6941479141,166049.5850707105 481633.26420126244,166058.68402618731 481593.5952206984,166064.62495930243 481559.2152395635,166069.32390902136 481528.5953227781,166074.02386650007 481485.3043251416,166076.93381866926 481448.8553972129,166078.08471020023 481415.6754693985,166077.9346373195 481376.3654226637,166076.77359289434 481337.3455119879,166073.33447668666 481291.5845675772,166067.3343192893 481245.95563193766,166061.37422548773 481209.90462836804,166054.33414940542 481174.0956631055,166046.7030684515 481141.6757140136,166037.18297547125 481107.11472961167,166024.8938545033 481067.4346662247,165975.01141201917 480912.1598730747,165908.78982323577 480706.0200216608,165932.4678412107 480697.9859559182,165962.33810554908 480790.9669277343,166048.71992073982 481059.8637894088,166061.18305531278 481100.10373740544,166070.93011676625 481135.4857379878,166078.7762296343 481168.82068623864,166085.97631042093 481205.444609844,166092.06841256854 481242.295594639,166098.21153095478 481289.0156036395,166101.7456417802 481336.0315043455,166102.93369437646 481375.9605096085,166103.08684389706 481416.0574241747,166101.8988601309 481450.2853709817,166098.9169394697 481487.64036907634,166094.11802925434 481531.8473813481,166089.29909334317 481563.24629943684,166083.20415541553 481598.5192454308,166073.85019402683 481639.2992494934,166065.4712408115 481670.5332167183,166055.72829030015 481703.96917686274,166046.02629930346 481735.6421578694,166036.17032815237 481766.6561312795,165880.66728750238 482251.79012318875,165879.3223348805 482255.98515759007,165870.91425172254 482253.2841598908,165864.58023530198 482251.2500981201,165859.39522142088 482267.4240714624,165850.33523032715 482264.5140551999,165960.17927882302 481921.8258100093)),((165893.09843377655 481540.1511493943,165865.49131977314 481532.05914822913,165867.54927288933 481525.10522256023,165879.0643191656 481528.5361596588,165891.77638575548 481532.2681751332,165895.13041732486 481533.24123828445,165893.09843377655 481540.1511493943)),((165869.08127331096 481519.9271384061,165880.59932803316 481523.3591982882,165893.3063660066 481527.08920379117,165896.64740066387 481528.08315691736,165895.13041732486 481533.24123828445,165891.77638575548 481532.2681751332,165879.0643191656 481528.5361596588,165867.54927288933 481525.10522256023,165869.08127331096 481519.9271384061)),((165869.08127331096 481519.9271384061,165870.61327667205 481514.749166038,165882.13434009094 481518.1822374329,165894.84434836917 481521.9311682699,165898.16535466668 481522.9191811999,165896.65241750143 481528.06514321023,165896.64740066387 481528.08315691736,165893.3063660066 481527.08920379117,165880.59932803316 481523.3591982882,165869.08127331096 481519.9271384061)),((165872.1452832179 481509.57119418646,165883.66833510826 481513.0041622153,165896.3713373239 481516.7511899681,165899.69038288604 481517.7331913193,165898.17435241595 481522.8891597626,165898.16535466668 481522.9191811999,165894.84434836917 481521.9311682699,165882.13434009094 481518.1822374329,165870.61327667205 481514.749166038,165872.1452832179 481509.57119418646)),((165872.1452832179 481509.57119418646,165873.67729294812 481504.3932228555,165885.20328536665 481507.8272022588,165897.90333968002 481511.55620259815,165901.21136076152 481512.5612122759,165899.69635646036 481517.7141783537,165899.69038288604 481517.7331913193,165896.3713373239 481516.7511899681,165883.66833510826 481513.0041622153,165872.1452832179 481509.57119418646)),((165875.20924209635 481499.2132491519,165886.73728430836 481502.6502407134,165899.42234036024 481506.3842186977,165902.7343960123 481507.3852327769,165901.218365878 481512.5381960822,165901.21136076152 481512.5612122759,165897.90333968002 481511.55620259815,165885.20328536665 481507.8272022588,165873.67729294812 481504.3932228555,165875.20924209635 481499.2132491519)),((165876.74125623505 481494.0361689687,165888.2723115794 481497.4721693098,165900.94134198249 481501.21323667804,165903.3433580554 481501.92918564315,165904.25833845264 481502.20124477724,165902.74037624605 481507.3632156981,165902.7343960123 481507.3852327769,165899.42234036024 481506.3842186977,165886.73728430836 481502.6502407134,165875.20924209635 481499.2132491519,165876.74125623505 481494.0361689687)),((165891.82230733614 481491.62027832307,165897.47634055186 481493.30127379094,165906.11937296687 481495.87120313005,165904.2623919882 481502.18723446043,165904.25833845264 481502.20124477724,165903.3433580554 481501.92918564315,165900.94134198249 481501.21323667804,165888.2723115794 481497.4721693098,165876.74125623505 481494.0361689687,165878.61824088683 481487.69324565696,165888.9282799268 481490.7592738712,165891.82230733614 481491.62027832307)),((165944.79885145818 481178.7555598329,165940.9638250668 481166.8606115619,165944.81482477117 481165.61553636834,165948.64786753405 481177.50959311274,165944.79885145818 481178.7555598329)),((165936.54584356796 481207.699518199,165929.67582654592 481209.9104735108,165924.12884127168 481211.6925502743,165920.90381222923 481201.6855597624,165933.3258276864 481197.68652243924,165934.48284759425 481201.28257951763,165936.54584356796 481207.699518199)),((165932.71481026363 481195.78856254957,165942.92389217904 481192.4915092783,165948.63385924912 481190.6505113363,165952.46891637606 481202.5455774916,165943.42091453492 481205.48758226004,165936.54584356796 481207.699518199,165934.48284759425 481201.28257951763,165933.3258276864 481197.68652243924,165932.71481026363 481195.78856254957)),((165928.88381791487 481183.8815045006,165926.81775358738 481177.45555016235,165925.6577841699 481173.8315612609,165925.0648026079 481171.97659024666,165935.2657636092 481168.7025348458,165940.9638250668 481166.8606115619,165944.79885145818 481178.7555598329,165935.77478973227 481181.6766027653,165928.88381791487 481183.8815045006)),((165960.13897532108 481226.33549698483,165956.30395514896 481214.44053561985,165960.15095575404 481213.20058163744,165963.9829787248 481225.09053244634,165960.13897532108 481226.33549698483)),((165956.30395514896 481214.44053561985,165952.46891637606 481202.5455774916,165956.3139019831 481201.2956022904,165960.15095575404 481213.20058163744,165956.30395514896 481214.44053561985)),((165952.48285594245 481189.4095544417,165956.3139019831 481201.2956022904,165952.46891637606 481202.5455774916,165948.63385924912 481190.6505113363,165952.48285594245 481189.4095544417)),((165944.79885145818 481178.7555598329,165948.64786753405 481177.50959311274,165952.48285594245 481189.4095544417,165948.63385924912 481190.6505113363,165944.79885145818 481178.7555598329)),((165940.9817653917 481153.7205927461,165944.81482477117 481165.61553636834,165940.9638250668 481166.8606115619,165937.12878032168 481154.9655552655,165940.9817653917 481153.7205927461)),((165940.9817653917 481153.7205927461,165937.12878032168 481154.9655552655,165932.37375480027 481140.215544091,165936.22770472043 481138.9705800083,165940.9817653917 481153.7205927461)),((165964.89403841048 481241.0855376612,165963.05302768055 481235.37549498817,165960.13897532108 481226.33549698483,165963.9829787248 481225.09053244634,165968.73504042928 481239.8365646448,165964.89403841048 481241.0855376612)),((165802.02399302027 480973.6876148568,165809.99907371998 480998.4285956074,165779.5610147902 481008.2696508966,165771.58796925325 480983.53361928085,165802.02399302027 480973.6876148568)),((165822.60918593645 481037.46259682236,165817.2181719826 481039.1916174552,165794.19015259045 481046.6316150005,165787.17005423043 481024.74455156905,165815.54912171973 481015.56861839304,165822.60918593645 481037.46259682236)),((165798.50226476917 481099.8185601817,165803.45727884932 481115.1415537492,165773.7592437802 481124.71645183617,165768.84218902295 481109.45854900277,165780.27220397923 481105.77951771766,165798.50226476917 481099.8185601817)),((165799.21918812083 481069.22953836713,165792.16316066612 481047.3965737889,165794.19015259045 481046.6316150005,165817.2181719826 481039.1916174552,165822.60918593645 481037.46259682236,165829.66525436094 481059.3465638337,165799.21918812083 481069.22953836713)),((165793.75132829722 481128.7324718677,165804.16329833507 481125.3754932473,165805.13332047366 481128.41556881135,165811.68239555878 481148.67550719803,165801.26337168008 481152.0354586903,165799.45834097321 481146.42046541837,165793.75132829722 481128.7324718677)),((165799.21918812083 481069.22953836713,165829.66525436094 481059.3465638337,165835.492344386 481077.4156058137,165827.0243031839 481080.140574016,165805.03924028226 481087.31955796864,165799.21918812083 481069.22953836713)),((165805.03924028226 481087.31955796864,165810.88331013816 481105.4135319523,165816.684352003 481123.520548419,165823.73143364282 481145.3844633131,165811.68239555878 481148.67550719803,165805.13332047366 481128.41556881135,165804.16329833507 481125.3754932473,165803.45727884932 481115.1415537492,165798.50226476917 481099.8185601817,165794.10724982165 481086.1055626836,165789.6861977294 481072.3145165163,165782.8121049136 481050.9255724577,165780.94908950687 481051.5405763582,165780.9100788994 481051.4195472039,165773.96205107903 481030.0095373427,165770.60704551917 481019.56454185536,165764.62994572392 481000.72964452335,165766.48497205196 481000.12763493793,165760.2829465038 480980.82661333535,165754.13286905934 480961.78963160724,165749.70980006928 480948.00763282424,165745.2717564758 480934.2646594566,165740.36473812314 480918.93471362256,165737.27473821864 480909.47467202117,165735.34367652657 480903.5747064268,165728.6406590719 480882.8817283568,165738.63867681925 480881.33275286073,165745.8437160834 480903.65674301836,165751.77780333883 480922.0406786393,165757.69286757722 480940.40366301994,165763.60686910295 480958.7646501255,165771.58796925325 480983.53361928085,165779.5610147902 481008.2696508966,165809.99907371998 480998.4285956074,165815.54912171973 481015.56861839304,165787.17005423043 481024.74455156905,165794.19015259045 481046.6316150005,165792.16316066612 481047.3965737889,165799.21918812083 481069.22953836713,165805.03924028226 481087.31955796864)),((165789.3793831147 481175.28645827976,165798.1083621269 481172.4784371293,165802.17141415383 481185.08041044057,165805.42044916144 481195.3554100336,165807.87149465547 481203.2124552643,165799.14445585056 481206.0284744372,165797.98348239536 481202.20045515895,165794.95742641244 481192.6604017623,165789.3793831147 481175.28645827976)),((165816.59847525915 481200.39645136514,165807.87149465547 481203.2124552643,165805.42044916144 481195.3554100336,165802.17141415383 481185.08041044057,165798.1083621269 481172.4784371293,165806.8374214708 481169.66943018365,165812.40746069382 481187.03046920174,165815.44652074503 481196.56544361706,165816.59847525915 481200.39645136514)),((165804.22552325492 481247.50836312154,165798.77555773532 481249.27043149626,165794.17451525794 481234.89239922474,165790.040483603 481222.11336638086,165795.49251017885 481220.3564110396,165796.72551110067 481224.17145823693,165799.6014908201 481233.142403265,165804.22552325492 481247.50836312154)),((165806.8374214708 481169.66943018365,165815.2434093422 481166.9654316354,165819.13143646508 481179.05043658486,165822.57751450696 481189.81243685796,165825.1135385119 481197.6484255169,165816.59847525915 481200.39645136514,165815.44652074503 481196.56544361706,165812.40746069382 481187.03046920174,165806.8374214708 481169.66943018365)),((165832.3144548628 481161.5215512784,165833.25349588718 481161.17546683183,165837.11053207144 481173.1655096956,165836.15848971994 481173.47150982666,165832.3144548628 481161.5215512784)),((165812.5765474452 481244.8093578957,165804.22552325492 481247.50836312154,165799.6014908201 481233.142403265,165796.72551110067 481224.17145823693,165795.49251017885 481220.3564110396,165803.84649189602 481217.6644071663,165809.0895179343 481233.8873874305,165812.5765474452 481244.8093578957)),((165812.5765474452 481244.8093578957,165809.0895179343 481233.8873874305,165803.84649189602 481217.6644071663,165812.20055093075 481214.97241758025,165813.447537585 481218.7784872005,165816.36456501708 481227.73640273476,165817.3325355461 481230.73542040045,165820.9275807907 481242.11036678863,165812.5765474452 481244.8093578957)),((165826.3776279051 481240.34943564463,165820.9275807907 481242.11036678863,165817.3325355461 481230.73542040045,165816.36456501708 481227.73640273476,165813.447537585 481218.7784872005,165812.20055093075 481214.97241758025,165817.6525229432 481213.2164879185,165818.91056491237 481217.01646362,165821.8195992788 481225.9774802488,165826.3776279051 481240.34943564463)),((165830.64859399022 481234.9194398026,165826.6675734102 481236.20047952776,165827.8525865298 481239.8724551546,165826.3776279051 481240.34943564463,165821.8195992788 481225.9774802488,165818.91056491237 481217.01646362,165817.6525229432 481213.2164879185,165823.10456946667 481211.45945178793,165827.27456949902 481224.218452369,165830.64859399022 481234.9194398026)),((165784.28590465026 481459.9431598627,165784.580929966 481459.00217660615,165785.5959004123 481455.5502011837,165788.38689940557 481456.3701971199,165793.87290232416 481437.7101881182,165794.01687317196 481437.75322834554,165795.3618555604 481433.1752054869,165802.763925968 481435.3552630413,165794.65391076147 481462.99320677517,165784.28590465026 481459.9431598627)),((165808.99602089508 481467.20522848406,165817.18399556502 481439.5251983774,165824.62502849937 481441.7132738949,165823.24797464852 481446.3232626617,165823.3920156111 481446.3651912605,165820.74502463543 481455.3992599747,165817.9330455101 481464.9632532137,165820.70304772386 481465.77721317613,165819.68900930948 481469.22918355267,165819.3730647613 481470.2552359135,165808.99602089508 481467.20522848406)),((165819.3730647613 481470.2552359135,165819.68900930948 481469.22918355267,165820.70304772386 481465.77721317613,165817.9330455101 481464.9632532137,165820.74502463543 481455.3992599747,165823.3920156111 481446.3651912605,165823.24797464852 481446.3232626617,165824.62502849937 481441.7132738949,165830.42703771713 481443.41921739513,165829.05303822085 481448.0332167751,165826.41504651489 481457.0631854822,165823.5790666665 481466.6232286844,165822.25705417473 481471.10315962805,165819.3730647613 481470.2552359135)),((165822.25705417473 481471.10315962805,165823.5790666665 481466.6232286844,165826.41504651489 481457.0631854822,165829.05303822085 481448.0332167751,165830.42703771713 481443.41921739513,165836.22904270093 481445.12527897663,165834.85802961228 481449.74317757157,165834.7140592224 481449.70024741895,165832.06707809644 481458.72118103574,165827.9150598663 481472.76617049647,165827.6230319796 481472.67918898124,165822.25705417473 481471.10315962805)),((165836.6310674592 481475.3272369474,165834.77111099343 481481.66921192576,165831.42309653418 481480.7601800219,165818.66706306094 481476.97414995317,165807.1290240118 481473.57022994,165808.99602089508 481467.20522848406,165819.3730647613 481470.2552359135,165822.25705417473 481471.10315962805,165827.6230319796 481472.67918898124,165827.9150598663 481472.76617049647,165836.6310674592 481475.3272369474)),((165702.08617533752 481203.37240525684,165707.698228188 481220.81630912225,165710.67626070618 481230.3733395914,165711.8762536899 481234.1892952708,165703.4442182028 481236.91032514203,165697.7431872291 481218.77539447945,165693.68317810545 481206.0753786871,165702.08617533752 481203.37240525684)),((165720.60230581425 481231.373342504,165711.8762536899 481234.1892952708,165710.67626070618 481230.3733395914,165707.698228188 481220.81630912225,165702.08617533752 481203.37240525684,165710.81519307548 481200.5633400208,165714.9112243282 481213.23540953355,165718.11326585078 481223.5293871783,165720.60230581425 481231.373342504)),((165714.91335148847 481272.22036780615,165707.31329987882 481248.74530289543,165714.59331353637 481246.3942909105,165715.8582840432 481250.2073845911,165722.21137888666 481269.8803100119,165720.5043766146 481270.4373732078,165714.91335148847 481272.22036780615)),((165727.38639761863 481272.2523536715,165716.10334139835 481275.895331588,165714.91335148847 481272.22036780615,165720.5043766146 481270.4373732078,165722.21137888666 481269.8803100119,165726.19135907304 481268.5822718183,165727.38639761863 481272.2523536715)),((165714.59331353637 481246.3942909105,165720.04529258763 481244.63435943174,165721.30132114777 481248.45032795117,165728.82339729104 481271.7892804257,165727.38639761863 481272.2523536715,165726.19135907304 481268.5822718183,165722.21137888666 481269.8803100119,165715.8582840432 481250.2073845911,165714.59331353637 481246.3942909105)),((165720.60230581425 481231.373342504,165718.11326585078 481223.5293871783,165714.9112243282 481213.23540953355,165710.81519307548 481200.5633400208,165719.54421835704 481197.7554028533,165725.1382394831 481215.1883834767,165728.14926428013 481224.7353711206,165729.32932247905 481228.5574072319,165720.60230581425 481231.373342504)),((165705.3020483263 481146.65442658326,165675.90201051926 481156.17036465387,165669.55094053983 481136.19542623137,165698.88103838265 481126.7204665121,165700.41401468738 481131.47843376535,165705.3020483263 481146.65442658326)),((165695.87495793874 481117.38646867196,165698.88103838265 481126.7204665121,165669.55094053983 481136.19542623137,165663.1508710861 481116.216385467,165692.44894243017 481106.7494406987,165695.87495793874 481117.38646867196)),((165692.44894243017 481106.7494406987,165663.1508710861 481116.216385467,165656.7638580151 481096.22948227986,165686.00988237115 481086.7584927733,165686.81593508384 481089.2614522431,165691.34494702617 481103.3244577809,165692.44894243017 481106.7494406987)),((165682.26786047127 481075.1414428623,165686.00988237115 481086.7584927733,165656.7638580151 481096.22948227986,165650.34775066923 481076.2404114006,165679.56785737386 481066.7585352824,165682.26786047127 481075.1414428623)),((165677.7228085178 481061.03045700997,165679.56785737386 481066.7585352824,165650.34775066923 481076.2404114006,165643.97375326228 481056.2404253602,165673.12279942227 481046.74945683393,165677.7228085178 481061.03045700997)),((165665.2167271966 481022.23148489284,165669.75774128851 481036.3195289759,165657.01070788447 481040.44147329027,165640.6076735651 481045.7844793601,165633.76962697253 481024.34352915717,165662.85469769547 481014.9065478738,165665.2167271966 481022.23148489284)),((165656.1386727924 480994.0735551053,165660.6777128998 481008.1525733653,165662.85469769547 481014.9065478738,165633.76962697253 481024.34352915717,165626.91556022537 481002.9364904099,165655.95464276624 480993.50259621587,165656.1386727924 480994.0735551053)),((165649.0525699072 480972.0895271607,165651.6006294285 480979.9945435866,165655.95464276624 480993.50259621587,165626.91556022537 481002.9364904099,165620.04149362512 480981.51150561386,165649.0525699072 480972.0895271607)),((165656.1386727924 480994.0735551053,165655.95464276624 480993.50259621587,165651.6006294285 480979.9945435866,165680.7376970608 480970.5815901459,165685.28873225473 480984.6725617586,165656.1386727924 480994.0735551053)),((165660.6777128998 481008.1525733653,165656.1386727924 480994.0735551053,165685.28873225473 480984.6725617586,165689.82074318492 480998.7515915497,165671.74072219664 481004.55650303455,165660.6777128998 481008.1525733653)),((165660.6777128998 481008.1525733653,165671.74072219664 481004.55650303455,165689.82074318492 480998.7515915497,165694.39581986226 481012.8314980565,165665.2167271966 481022.23148489284,165662.85469769547 481014.9065478738,165660.6777128998 481008.1525733653)),((165694.39581986226 481012.8314980565,165698.92286276966 481026.9135303987,165685.32080501522 481031.3154916907,165678.1797602082 481033.61855879077,165669.75774128851 481036.3195289759,165665.2167271966 481022.23148489284,165694.39581986226 481012.8314980565)),((165677.7228085178 481061.03045700997,165673.12279942227 481046.74945683393,165700.16085605856 481038.04550473945,165704.7448605624 481052.2855502074,165677.7228085178 481061.03045700997)),((165682.26786047127 481075.1414428623,165679.56785737386 481066.7585352824,165677.7228085178 481061.03045700997,165704.7448605624 481052.2855502074,165706.80189334918 481051.65246858,165711.3709330973 481065.73549467267,165694.0118988219 481071.4235043166,165682.26786047127 481075.1414428623)),((165682.26786047127 481075.1414428623,165694.0118988219 481071.4235043166,165711.3709330973 481065.73549467267,165715.89894905448 481079.7955159842,165686.81593508384 481089.2614522431,165686.00988237115 481086.7584927733,165682.26786047127 481075.1414428623)),((165686.81593508384 481089.2614522431,165715.89894905448 481079.7955159842,165720.4460383135 481093.8835105415,165706.03001425508 481098.5694844996,165691.34494702617 481103.3244577809,165686.81593508384 481089.2614522431)),((165692.44894243017 481106.7494406987,165691.34494702617 481103.3244577809,165706.03001425508 481098.5694844996,165720.4460383135 481093.8835105415,165724.99705833508 481107.97051686584,165710.78603248336 481112.59450324246,165695.87495793874 481117.38646867196,165692.44894243017 481106.7494406987)),((165724.99705833508 481107.97051686584,165729.54009859625 481122.04649532033,165711.89106420428 481127.78944391175,165700.41401468738 481131.47843376535,165698.88103838265 481126.7204665121,165695.87495793874 481117.38646867196,165710.78603248336 481112.59450324246,165724.99705833508 481107.97051686584)),((165734.4521396814 481137.24548951746,165705.3020483263 481146.65442658326,165700.41401468738 481131.47843376535,165711.89106420428 481127.78944391175,165729.54009859625 481122.04649532033,165734.4521396814 481137.24548951746)),((165738.16194859543 481014.2605593478,165742.755978062 481028.52258053963,165715.05491697186 481037.37150660635,165710.47685048796 481023.1045389031,165738.16194859543 481014.2605593478)),((165733.55590598722 480999.96057572326,165736.62288285774 481009.4805378496,165738.16194859543 481014.2605593478,165710.47685048796 481023.1045389031,165710.46285964557 481023.0475413903,165708.35282638256 481023.71555468504,165703.78783296674 481009.5996071852,165733.55590598722 480999.96057572326)),((165699.20177862456 480995.4046212557,165716.56078040772 480989.73153913725,165728.96582642768 480985.70758491463,165730.4898739962 480990.4396163693,165733.55590598722 480999.96057572326,165703.78783296674 481009.5996071852,165699.20177862456 480995.4046212557)),((165699.20177862456 480995.4046212557,165694.5887459312 480981.1235745071,165724.35281870016 480971.3875680756,165728.96582642768 480985.70758491463,165716.56078040772 480989.73153913725,165699.20177862456 480995.4046212557)),((165690.96304236684 481161.88443377306,165698.48310648455 481185.17838073144,165688.07310791782 481188.53536355897,165681.53306035264 481168.2743844818,165680.54303647086 481165.24541627563,165690.96304236684 481161.88443377306)),((165701.241071616 481158.56945126434,165703.20107209298 481164.64838160586,165708.76914462214 481181.860427097,165698.48310648455 481185.17838073144,165690.96304236684 481161.88443377306,165701.241071616 481158.56945126434)),((165711.51911494508 481155.254378882,165717.22517172978 481172.9383812277,165719.04618793767 481178.5463695621,165708.76914462214 481181.860427097,165703.20107209298 481164.64838160586,165701.241071616 481158.56945126434,165711.51911494508 481155.254378882)),((165721.79710368768 481151.9394390017,165723.74411552557 481158.02346741577,165725.91517520873 481164.6724258073,165729.32317666116 481175.2324445252,165719.04618793767 481178.5463695621,165717.22517172978 481172.9383812277,165711.51911494508 481155.254378882,165721.79710368768 481151.9394390017)),((165729.32317666116 481175.2324445252,165725.91517520873 481164.6724258073,165723.74411552557 481158.02346741577,165721.79710368768 481151.9394390017,165732.07517469442 481148.62440939253,165733.6001518292 481153.37447009963,165739.60024764334 481171.918429759,165729.32317666116 481175.2324445252)),((165744.0691597118 481134.3254810618,165734.4521396814 481137.24548951746,165729.54009859625 481122.04649532033,165724.99705833508 481107.97051686584,165720.4460383135 481093.8835105415,165715.89894905448 481079.7955159842,165711.3709330973 481065.73549467267,165706.80189334918 481051.65246858,165704.7448605624 481052.2855502074,165700.16085605856 481038.04550473945,165673.12279942227 481046.74945683393,165643.97375326228 481056.2404253602,165640.6076735651 481045.7844793601,165657.01070788447 481040.44147329027,165669.75774128851 481036.3195289759,165678.1797602082 481033.61855879077,165685.32080501522 481031.3154916907,165698.92286276966 481026.9135303987,165694.39581986226 481012.8314980565,165689.82074318492 480998.7515915497,165685.28873225473 480984.6725617586,165680.7376970608 480970.5815901459,165676.18266685502 480956.4655801002,165671.2726088129 480941.31761282677,165680.77863373855 480938.2345733982,165685.66868356994 480953.4786388692,165690.1106654938 480967.2975605761,165694.5887459312 480981.1235745071,165699.20177862456 480995.4046212557,165703.78783296674 481009.5996071852,165708.35282638256 481023.71555468504,165710.46285964557 481023.0475413903,165710.47685048796 481023.1045389031,165715.05491697186 481037.37150660635,165742.755978062 481028.52258053963,165749.7149720541 481026.265607322,165757.8109932328 481023.6556331221,165770.60704551917 481019.56454185536,165773.96205107903 481030.0095373427,165746.13098868445 481038.97950592457,165716.31991080538 481048.61158124864,165720.882987899 481062.85448954423,165725.50401482623 481077.15149142453,165730.10002995466 481091.43053018703,165734.55407641333 481105.2304959504,165739.06214865297 481119.03948478634,165744.0691597118 481134.3254810618)),((165601.6954647942 481546.6719394332,165603.2665091612 481557.8749336627,165605.13056301366 481571.1788902562,165606.29552746078 481579.4919302932,165603.93553425858 481579.8729459884,165601.81456528604 481580.6709376807,165600.84352435562 481581.3269791026,165599.85957510618 481582.0889164069,165597.87554561417 481582.77493841195,165596.68251470744 481583.4638832395,165593.01144504713 481547.03092506714,165601.6954647942 481546.6719394332)),((165613.28859894958 481577.5799795205,165608.9645699642 481578.9539187594,165606.29552746078 481579.4919302932,165605.13056301366 481571.1788902562,165603.2665091612 481557.8749336627,165601.6954647942 481546.6719394332,165608.92851025684 481546.3739382984,165610.40250501593 481556.91793163173,165612.08657528792 481568.9728984502,165613.28859894958 481577.5799795205)),((165620.21859594 481575.1679933951,165619.30361080015 481575.3409318947,165618.05659153924 481575.7699537777,165615.57457625074 481577.282924743,165613.28859894958 481577.5799795205,165612.08657528792 481568.9728984502,165610.40250501593 481556.91793163173,165608.92851025684 481546.3739382984,165616.15855676873 481546.07594130037,165617.5385718406 481555.9609400558,165619.04956229002 481566.7919658535,165620.21859594 481575.1679933951)),((165623.9376382452 481574.2589582951,165623.01662087196 481574.6369428262,165620.21859594 481575.1679933951,165619.04956229002 481566.7919658535,165617.5385718406 481555.9609400558,165616.15855676873 481546.07594130037,165630.81959485167 481545.47095438227,165630.21454977486 481547.5409433741,165628.09460247122 481555.2969364661,165625.4496212022 481564.38196237275,165623.9376382452 481574.2589582951)),((165628.31663550483 481572.72292747104,165628.04863887076 481572.71700972883,165627.295598274 481572.8799478917,165623.9376382452 481574.2589582951,165625.4496212022 481564.38196237275,165628.09460247122 481555.2969364661,165630.21454977486 481547.5409433741,165630.81959485167 481545.47095438227,165631.22455350097 481544.08903662313,165633.3745833264 481544.7169693225,165636.29257085733 481545.5699760255,165633.00861587102 481556.7359281843,165630.34462376888 481565.81200944126,165628.31663550483 481572.72292747104)),((165633.3856519854 481573.5369492708,165632.82463946828 481573.27093218954,165630.5476559399 481572.77791210177,165628.31663550483 481572.72292747104,165630.34462376888 481565.81200944126,165633.00861587102 481556.7359281843,165636.29257085733 481545.5699760255,165639.0665883725 481546.3799487256,165641.1875889794 481547.00003377564,165640.17763841612 481550.4559441469,165637.91261260203 481558.1710089705,165635.23962159565 481567.2429514656,165633.3856519854 481573.5369492708)),((165641.1875889794 481547.00003377564,165643.28964864177 481547.61395936704,165646.08260235947 481548.430986488,165642.7976639682 481559.6009356378,165640.13564119017 481568.67301044683,165638.23264531 481575.1569398359,165637.4426444891 481575.10194171686,165635.3536547517 481574.47091204784,165633.3856519854 481573.5369492708,165635.23962159565 481567.2429514656,165637.91261260203 481558.1710089705,165640.17763841612 481550.4559441469,165641.1875889794 481547.00003377564)),((165646.08260235947 481548.430986488,165648.85661667652 481549.24096469354,165650.96862176774 481549.85803041206,165649.958664692 481553.31405006663,165647.69163715083 481561.03400178667,165645.03063553 481570.10296081327,165643.2706992526 481576.0999714038,165639.91967184047 481575.27395426604,165638.23264531 481575.1569398359,165640.13564119017 481568.67301044683,165642.7976639682 481559.6009356378,165646.08260235947 481548.430986488)),((165650.96862176774 481549.85803041206,165653.05364497183 481550.467027788,165657.99464405555 481551.91099821345,165650.32766874752 481578.0449577952,165648.0466597634 481577.8079396033,165644.648671317 481576.43896047387,165643.2706992526 481576.0999714038,165645.03063553 481570.10296081327,165647.69163715083 481561.03400178667,165649.958664692 481553.31405006663,165650.96862176774 481549.85803041206)),((165597.10836855051 481501.71796845895,165598.75642536755 481513.5499901675,165600.78144138883 481528.0779719089,165601.90946393978 481536.1719631933,165601.79148220416 481536.1869529567,165600.50544929018 481536.5239913413,165598.6064298529 481537.42793941393,165597.56047163295 481538.20198303956,165595.37948262927 481538.55801897385,165594.34147427918 481538.8050224204,165592.372445522 481540.68994923134,165588.5163591032 481502.0869509593,165597.10836855051 481501.71796845895)),((165597.10836855051 481501.71796845895,165604.32943953897 481501.40702809585,165605.8934301998 481512.59698919836,165607.74949452898 481525.88001087715,165608.8854826356 481534.00595366396,165608.20447646998 481534.1490220308,165606.98346215248 481534.59201060794,165605.26547829775 481535.54897306906,165604.510497712 481535.8509906347,165601.90946393978 481536.1719631933,165600.78144138883 481528.0779719089,165598.75642536755 481513.5499901675,165597.10836855051 481501.71796845895)),((165615.8315313926 481531.766010167,165615.3114868945 481531.91298419517,165611.34546807274 481533.4889680317,165608.8854826356 481534.00595366396,165607.74949452898 481525.88001087715,165605.8934301998 481512.59698919836,165604.32943953897 481501.40702809585,165611.56142035974 481501.0960104723,165613.03043996624 481511.64299716364,165614.70650677482 481523.6830372915,165615.8315313926 481531.766010167)),((165622.75852275462 481529.29204706463,165620.85555015082 481529.8120057646,165618.75952816228 481531.2989910082,165616.7705169842 481531.50099598616,165615.8315313926 481531.766010167,165614.70650677482 481523.6830372915,165613.03043996624 481511.64299716364,165611.56142035974 481501.0960104723,165618.78644569792 481500.7859898448,165620.16649585604 481510.6900147568,165621.67753720444 481521.5330571065,165622.75852275462 481529.29204706463)),((165625.36251695952 481528.5799986202,165622.75852275462 481529.29204706463,165621.67753720444 481521.5330571065,165620.16649585604 481510.6900147568,165618.78644569792 481500.7859898448,165633.42851383932 481500.1560463788,165632.83250715226 481502.20502546395,165630.69952356882 481510.02007002296,165628.0715206423 481519.09099991864,165625.36251695952 481528.5799986202)),((165631.39255629783 481525.9149679285,165630.9685436477 481525.75995393127,165626.60055760553 481527.95702596626,165625.36251695952 481528.5799986202,165628.0715206423 481519.09099991864,165630.69952356882 481510.02007002296,165632.83250715226 481502.20502546395,165633.42851383932 481500.1560463788,165633.83247599567 481498.76400175615,165635.98251853054 481499.39505090343,165638.89950109937 481500.2520623487,165635.61351528965 481511.4580626708,165632.96656307607 481520.5230521847,165631.39255629783 481525.9149679285)),((165636.15255543543 481527.8090347562,165635.76454149632 481527.74900617154,165633.54852585605 481526.7010197023,165631.39255629783 481525.9149679285,165632.96656307607 481520.5230521847,165635.61351528965 481511.4580626708,165638.89950109937 481500.2520623487,165641.6435532639 481501.0580775339,165643.76354626822 481501.6800529023,165642.74956631157 481505.1340623208,165640.50856337114 481512.89001112076,165637.8615369034 481521.9539965238,165636.15255543543 481527.8090347562)),((165641.0645587276 481529.1800476667,165638.37758717962 481528.1529627594,165636.15255543543 481527.8090347562,165637.8615369034 481521.9539965238,165640.50856337114 481512.89001112076,165642.74956631157 481505.1340623208,165643.76354626822 481501.6800529023,165645.86452733708 481502.2970925542,165648.68557037693 481503.12608684925,165645.4025835435 481514.32307485805,165642.75657368667 481523.3860584972,165641.0645587276 481529.1800476667)),((165645.72461313903 481531.4160453151,165643.13460460407 481529.8150443105,165641.31457092945 481529.27504986216,165641.0645587276 481529.1800476667,165642.75657368667 481523.3860584972,165645.4025835435 481514.32307485805,165648.68557037693 481503.12608684925,165651.4875353038 481503.949033332,165653.5885826305 481504.5660764206,165652.57459638227 481508.0200838466,165650.2975556335 481515.7560342427,165647.65160788404 481524.81801406626,165645.72461313903 481531.4160453151)),((165594.43835523605 481468.28806687647,165600.1983606112 481464.6210421077,165612.83637232205 481459.5890219916,165620.33443431728 481482.60899424774,165617.41239246196 481483.43207033456,165615.567429844 481484.39298408286,165611.76339167368 481487.9240030302,165610.4653846653 481489.7019940075,165609.1804135772 481491.25203327456,165594.43835523605 481468.28806687647)),((165651.00263553346 481531.53602544207,165650.68361048083 481531.4800387959,165648.0476012429 481531.2610583079,165646.0606299827 481531.6230536444,165645.72461313903 481531.4160453151,165647.65160788404 481524.81801406626,165650.2975556335 481515.7560342427,165652.57459638227 481508.0200838466,165653.5885826305 481504.5660764206,165655.69957732878 481505.1860347452,165658.47258306312 481506.00002155197,165655.1925952362 481517.1879972574,165652.54664141696 481526.2489731121,165651.00263553346 481531.53602544207)),((165655.69661185972 481533.65705866605,165655.4066068051 481533.64397103206,165653.0226090003 481532.37297374895,165652.3046370842 481531.7630322554,165651.00263553346 481531.53602544207,165652.54664141696 481526.2489731121,165655.1925952362 481517.1879972574,165658.47258306312 481506.00002155197,165661.29362405348 481506.82802168775,165663.39460076226 481507.4450688031,165662.38060607156 481510.9000756058,165660.08660692768 481518.6210755559,165657.4416015454 481527.68104950315,165655.69661185972 481533.65705866605)),((165663.39460076226 481507.4450688031,165665.47860903255 481508.0580746425,165670.22964096483 481509.46604211105,165662.57364781812 481535.79004389286,165661.11068602707 481535.338044527,165660.1266268186 481534.8480261718,165658.27065199334 481533.7779970369,165655.69661185972 481533.65705866605,165657.4416015454 481527.68104950315,165660.08660692768 481518.6210755559,165662.38060607156 481510.9000756058,165663.39460076226 481507.4450688031)),((165609.1804135772 481491.25203327456,165606.64137371397 481493.6790316174,165604.2244188458 481495.22997775994,165602.0863669969 481495.8700489089,165597.89835535063 481496.7679685144,165593.188377013 481497.3100615866,165588.03632643542 481497.5650396594,165587.65731793118 481493.6549637098,165585.72233638985 481491.07004353654,165587.94934977996 481486.58998821466,165587.7653250545 481478.26604016084,165588.21129993236 481474.9870435183,165590.01334120362 481471.9130116907,165592.43131333546 481469.63706420065,165594.43835523605 481468.28806687647,165609.1804135772 481491.25203327456)),((165625.61842997943 481484.47602831735,165621.1104070053 481482.5680497702,165620.85143608338 481482.51608853386,165620.5864597661 481482.53009397513,165620.33443431728 481482.60899424774,165612.83637232205 481459.5890219916,165620.71241652773 481456.7870874901,165627.99739901253 481454.5000468303,165635.8624803692 481479.10100514797,165634.66750241435 481480.9960390412,165634.4774464169 481481.29904667084,165634.34248522227 481481.63110167166,165634.2674835271 481481.98108809546,165634.09446386903 481482.3830462035,165633.8515055482 481482.7470238606,165633.54647508613 481483.0610215058,165633.18948459928 481483.31504716893,165631.25648065427 481484.411062512,165629.91048233415 481484.59909278114,165627.1144806144 481484.76809059485,165626.603464249 481484.74106588034,165626.10146400786 481484.64307415194,165625.61842997943 481484.47602831735)),((165648.08653428173 481476.2990276144,165647.86148435998 481475.94605757366,165647.57353313183 481475.643020685,165647.2324787548 481475.39906175155,165646.85247903992 481475.2251152005,165646.44552518346 481475.1251011414,165646.02749005595 481475.10506207735,165643.58148713713 481475.28804590553,165642.12246694972 481475.65507555055,165638.07150308546 481477.1080192522,165636.6764993843 481477.95206626377,165636.23644210448 481478.47005359555,165635.8624803692 481479.10100514797,165627.99739901253 481454.5000468303,165636.2674338283 481452.2540818349,165643.30345424515 481450.68607193313,165649.01146646184 481450.635073883,165648.08653428173 481476.2990276144)),((165649.01146646184 481450.635073883,165661.20053165723 481452.01012863585,165669.51655038618 481453.89110264566,165660.14857230982 481485.5410656815,165654.23356992472 481483.0190674538,165653.72155860608 481482.7580494559,165653.2395243348 481482.4440232437,165652.79249916642 481482.08311920054,165652.38654961833 481481.6760179917,165652.02452553634 481481.2290678083,165648.08653428173 481476.2990276144,165649.01146646184 481450.635073883)),((165669.51655038618 481453.89110264566,165677.21057037477 481455.7971147626,165678.09361457388 481474.8440950918,165679.7696094002 481477.1761442125,165675.3816531761 481492.013062,165671.26163448754 481491.7910823835,165667.6125819265 481490.75711747725,165663.79056113077 481487.1331103664,165660.14857230982 481485.5410656815,165669.51655038618 481453.89110264566)),((165681.03342769816 481370.15520559694,165641.61332610715 481382.8551930367,165641.5133125544 481382.5352045473,165638.62327390848 481383.47516436345,165634.75324187803 481371.4851336322,165635.76328570157 481371.1652004403,165635.0433026686 481368.94515537814,165663.8433302382 481360.86520960403,165657.52328062925 481341.24516691454,165628.47320274284 481351.8552004529,165625.06317551967 481341.27521638497,165665.82326523197 481328.1352726176,165666.68328978316 481330.79522885894,165667.64327717246 481330.48520777485,165678.1333795042 481363.04516690416,165678.6834249223 481362.87523271586,165681.03342769816 481370.15520559694)),((165617.09714722337 481317.51421955513,165606.96301187953 481285.8701942276,165646.96914224676 481273.1072177767,165657.14321245725 481304.6542777951,165617.09714722337 481317.51421955513)),((165697.51917027353 481223.1333431713,165698.7212011478 481226.9583123765,165695.85917038817 481227.8583556615,165694.65720787522 481224.0323859261,165697.51917027353 481223.1333431713)),((165691.0211510048 481200.6953381686,165684.65409020818 481202.74839304714,165627.13258731828 481024.289515661,165607.1455695246 481030.731438868,165566.96323440745 480906.0715719191,165574.42528150935 480904.9875946103,165574.58128517252 480905.4695904154,165583.41331453214 480932.7785604291,165586.3243433018 480937.3354978831,165597.32340997134 480954.55349533306,165613.19249478946 480960.0385192044,165620.04149362512 480981.51150561386,165626.91556022537 481002.9364904099,165633.76962697253 481024.34352915717,165640.6076735651 481045.7844793601,165643.97375326228 481056.2404253602,165650.34775066923 481076.2404114006,165656.7638580151 481096.22948227986,165663.1508710861 481116.216385467,165669.55094053983 481136.19542623137,165675.90201051926 481156.17036465387,165680.54303647086 481165.24541627563,165681.53306035264 481168.2743844818,165688.07310791782 481188.53536355897,165691.87410709585 481200.42136204895,165691.16416331995 481200.64936207084,165688.9681318548 481194.1513498069,165688.82613778592 481194.19933092536,165691.0211510048 481200.6953381686)),((165394.9029742899 481052.66726315656,165391.35300913145 481055.2353273808,165419.3029016435 480960.14942550805,165522.93914092943 480915.56648424943,165552.40018022567 480908.1865915554,165566.96323440745 480906.0715719191,165607.1455695246 481030.731438868,165627.13258731828 481024.289515661,165684.65409020818 481202.74839304714,165690.637159789 481221.30839094444,165698.30625700488 481245.10234980984,165726.6254969247 481332.95825022587,165621.25993950333 481746.4797864231,165608.29683258527 481742.66481066804,165530.07598408076 481402.1821074725,165504.24280883875 481322.0651372312,165506.19878915494 481318.29511296586,165535.80903714304 481410.38904937153,165552.20405153732 481405.0530219699,165546.18801888666 481386.17912897764,165541.54601756966 481371.76508184953,165554.2629943963 481367.735124824,165562.40305383655 481365.1051199224,165574.37903995242 481361.12113882875,165564.77300100867 481331.25810891256,165509.9188188538 481314.44116910786,165465.68434751168 481121.8952823013,165427.8932166291 481135.29226641194,165401.2360271267 481050.67228847835,165394.9029742899 481052.66726315656),(165427.52394187503 480977.50537967804,165440.88706372227 481019.16937753715,165489.6121819983 481003.45438690356,165489.7661682667 481003.89342792385,165501.345250247 481038.8804116276,165549.2653961326 481023.05548012163,165537.74729069465 480988.0414772943,165536.48827910237 480984.2474703807,165550.1163297019 480979.8685207914,165551.204297186 480983.2904326845,165554.06332501216 480982.3815094123,165552.97231042304 480978.9504667289,165550.39932501575 480970.86152901244,165538.51629952638 480974.6894406412,165529.12722465204 480945.6495404934,165506.22314893643 480953.0694465758,165498.83109759056 480930.19554248103,165465.89800546746 480944.3154379804,165467.87100096743 480950.48842851777,165464.2350314395 480954.8794289921,165466.6010389317 480962.2814950371,165481.35811240494 480957.5234483394,165482.11709943743 480959.9004340465,165427.52394187503 480977.50537967804),(165584.85220088865 481409.5310950002,165586.09217947957 481413.3250766451,165588.95218029778 481412.39013984415,165587.7132266067 481408.5960484149,165584.85220088865 481409.5310950002),(165585.72233638985 481491.07004353654,165587.65731793118 481493.6549637098,165588.03632643542 481497.5650396594,165593.188377013 481497.3100615866,165597.89835535063 481496.7679685144,165602.0863669969 481495.8700489089,165604.2244188458 481495.22997775994,165606.64137371397 481493.6790316174,165609.1804135772 481491.25203327456,165610.4653846653 481489.7019940075,165611.76339167368 481487.9240030302,165615.567429844 481484.39298408286,165617.41239246196 481483.43207033456,165620.33443431728 481482.60899424774,165620.5864597661 481482.53009397513,165620.85143608338 481482.51608853386,165621.1104070053 481482.5680497702,165625.61842997943 481484.47602831735,165626.10146400786 481484.64307415194,165626.603464249 481484.74106588034,165627.1144806144 481484.76809059485,165629.91048233415 481484.59909278114,165631.25648065427 481484.411062512,165633.18948459928 481483.31504716893,165633.54647508613 481483.0610215058,165633.8515055482 481482.7470238606,165634.09446386903 481482.3830462035,165634.2674835271 481481.98108809546,165634.34248522227 481481.63110167166,165634.4774464169 481481.29904667084,165634.66750241435 481480.9960390412,165635.8624803692 481479.10100514797,165636.23644210448 481478.47005359555,165636.6764993843 481477.95206626377,165638.07150308546 481477.1080192522,165642.12246694972 481475.65507555055,165643.58148713713 481475.28804590553,165646.02749005595 481475.10506207735,165646.44552518346 481475.1251011414,165646.85247903992 481475.2251152005,165647.2324787548 481475.39906175155,165647.57353313183 481475.643020685,165647.86148435998 481475.94605757366,165648.08653428173 481476.2990276144,165652.02452553634 481481.2290678083,165652.38654961833 481481.6760179917,165652.79249916642 481482.08311920054,165653.2395243348 481482.4440232437,165653.72155860608 481482.7580494559,165654.23356992472 481483.0190674538,165660.14857230982 481485.5410656815,165663.79056113077 481487.1331103664,165667.6125819265 481490.75711747725,165671.26163448754 481491.7910823835,165675.3816531761 481492.013062,165679.7696094002 481477.1761442125,165678.09361457388 481474.8440950918,165677.21057037477 481455.7971147626,165669.51655038618 481453.89110264566,165661.20053165723 481452.01012863585,165649.01146646184 481450.635073883,165643.30345424515 481450.68607193313,165636.2674338283 481452.2540818349,165627.99739901253 481454.5000468303,165620.71241652773 481456.7870874901,165612.83637232205 481459.5890219916,165600.1983606112 481464.6210421077,165594.43835523605 481468.28806687647,165592.43131333546 481469.63706420065,165590.01334120362 481471.9130116907,165588.21129993236 481474.9870435183,165587.7653250545 481478.26604016084,165587.94934977996 481486.58998821466,165585.72233638985 481491.07004353654),(165588.5163591032 481502.0869509593,165592.372445522 481540.68994923134,165594.34147427918 481538.8050224204,165595.37948262927 481538.55801897385,165597.56047163295 481538.20198303956,165598.6064298529 481537.42793941393,165600.50544929018 481536.5239913413,165601.79148220416 481536.1869529567,165601.90946393978 481536.1719631933,165604.510497712 481535.8509906347,165605.26547829775 481535.54897306906,165606.98346215248 481534.59201060794,165608.20447646998 481534.1490220308,165608.8854826356 481534.00595366396,165611.34546807274 481533.4889680317,165615.3114868945 481531.91298419517,165615.8315313926 481531.766010167,165616.7705169842 481531.50099598616,165618.75952816228 481531.2989910082,165620.85555015082 481529.8120057646,165622.75852275462 481529.29204706463,165625.36251695952 481528.5799986202,165626.60055760553 481527.95702596626,165630.9685436477 481525.75995393127,165631.39255629783 481525.9149679285,165633.54852585605 481526.7010197023,165635.76454149632 481527.74900617154,165636.15255543543 481527.8090347562,165638.37758717962 481528.1529627594,165641.0645587276 481529.1800476667,165641.31457092945 481529.27504986216,165643.13460460407 481529.8150443105,165645.72461313903 481531.4160453151,165646.0606299827 481531.6230536444,165648.0476012429 481531.2610583079,165650.68361048083 481531.4800387959,165651.00263553346 481531.53602544207,165652.3046370842 481531.7630322554,165653.0226090003 481532.37297374895,165655.4066068051 481533.64397103206,165655.69661185972 481533.65705866605,165658.27065199334 481533.7779970369,165660.1266268186 481534.8480261718,165661.11068602707 481535.338044527,165662.57364781812 481535.79004389286,165670.22964096483 481509.46604211105,165665.47860903255 481508.0580746425,165663.39460076226 481507.4450688031,165661.29362405348 481506.82802168775,165658.47258306312 481506.00002155197,165655.69957732878 481505.1860347452,165653.5885826305 481504.5660764206,165651.4875353038 481503.949033332,165648.68557037693 481503.12608684925,165645.86452733708 481502.2970925542,165643.76354626822 481501.6800529023,165641.6435532639 481501.0580775339,165638.89950109937 481500.2520623487,165635.98251853054 481499.39505090343,165633.83247599567 481498.76400175615,165633.42851383932 481500.1560463788,165618.78644569792 481500.7859898448,165611.56142035974 481501.0960104723,165604.32943953897 481501.40702809585,165597.10836855051 481501.71796845895,165588.5163591032 481502.0869509593),(165593.01144504713 481547.03092506714,165596.68251470744 481583.4638832395,165597.87554561417 481582.77493841195,165599.85957510618 481582.0889164069,165600.84352435562 481581.3269791026,165601.81456528604 481580.6709376807,165603.93553425858 481579.8729459884,165606.29552746078 481579.4919302932,165608.9645699642 481578.9539187594,165613.28859894958 481577.5799795205,165615.57457625074 481577.282924743,165618.05659153924 481575.7699537777,165619.30361080015 481575.3409318947,165620.21859594 481575.1679933951,165623.01662087196 481574.6369428262,165623.9376382452 481574.2589582951,165627.295598274 481572.8799478917,165628.04863887076 481572.71700972883,165628.31663550483 481572.72292747104,165630.5476559399 481572.77791210177,165632.82463946828 481573.27093218954,165633.3856519854 481573.5369492708,165635.3536547517 481574.47091204784,165637.4426444891 481575.10194171686,165638.23264531 481575.1569398359,165639.91967184047 481575.27395426604,165643.2706992526 481576.0999714038,165644.648671317 481576.43896047387,165648.0466597634 481577.8079396033,165650.32766874752 481578.0449577952,165657.99464405555 481551.91099821345,165653.05364497183 481550.467027788,165650.96862176774 481549.85803041206,165648.85661667652 481549.24096469354,165646.08260235947 481548.430986488,165643.28964864177 481547.61395936704,165641.1875889794 481547.00003377564,165639.0665883725 481546.3799487256,165636.29257085733 481545.5699760255,165633.3745833264 481544.7169693225,165631.22455350097 481544.08903662313,165630.81959485167 481545.47095438227,165616.15855676873 481546.07594130037,165608.92851025684 481546.3739382984,165601.6954647942 481546.6719394332,165593.01144504713 481547.03092506714),(165597.5845531633 481592.7809603289,165601.46063956618 481624.22684115765,165602.4566080327 481626.1179109706,165603.4766237798 481624.7488834811,165603.94560087743 481624.40786518116,165605.9586501752 481623.6938694143,165608.3766218822 481622.2119098665,165609.59865615456 481622.0139273513,165610.50162004144 481622.1958936819,165610.90362644003 481622.2768680413,165612.98163506953 481622.0459009408,165615.42563522808 481620.3188860079,165616.78266352086 481620.37387635745,165617.541648888 481620.5498598102,165617.8856379771 481620.6299310871,165620.35871091337 481620.06290929666,165621.48069942274 481619.27690625296,165622.2996590703 481618.7028769826,165625.2756705811 481617.25394821167,165625.84766296556 481617.26296805777,165628.1157292097 481617.2968912284,165630.43568379804 481617.8349535341,165630.91172989132 481618.07486284024,165632.94469717392 481619.0998674647,165635.7647570934 481619.4059113776,165638.03776862158 481619.89692265476,165644.46871871245 481593.9039186575,165638.50767270915 481592.1769323115,165633.6376789234 481590.7659570493,165628.70063606824 481589.335927328,165628.16568494434 481591.1839845278,165613.63262675228 481591.94290989527,165606.4086137545 481592.319920889,165597.5845531633 481592.7809603289),(165606.96301187953 481285.8701942276,165617.09714722337 481317.51421955513,165657.14321245725 481304.6542777951,165646.96914224676 481273.1072177767,165606.96301187953 481285.8701942276),(165607.4216895084 481643.51492878806,165613.1327812483 481684.9217904698,165613.63977163073 481687.1918895534,165614.71079015185 481685.2448456506,165620.94879263086 481665.6538638274,165624.86279959895 481664.59682269074,165631.44275984986 481641.9439352179,165619.17873585294 481638.4528815434,165616.39472356904 481642.6609089703,165607.4216895084 481643.51492878806),(165625.06317551967 481341.27521638497,165628.47320274284 481351.8552004529,165657.52328062925 481341.24516691454,165663.8433302382 481360.86520960403,165635.0433026686 481368.94515537814,165635.76328570157 481371.1652004403,165634.75324187803 481371.4851336322,165638.62327390848 481383.47516436345,165641.5133125544 481382.5352045473,165641.61332610715 481382.8551930367,165681.03342769816 481370.15520559694,165678.6834249223 481362.87523271586,165678.1333795042 481363.04516690416,165667.64327717246 481330.48520777485,165666.68328978316 481330.79522885894,165665.82326523197 481328.1352726176,165625.06317551967 481341.27521638497)),((165853.91450703648 481154.47847423767,165853.77149161507 481154.5245568851,165852.05248622812 481148.7925723464,165849.43850588406 481140.07452058146,165849.5824694122 481140.03155528376,165850.19450258528 481142.07448384096,165852.19550400035 481148.7454882739,165853.91450703648 481154.47847423767)),((165690.637159789 481221.30839094444,165684.65409020818 481202.74839304714,165691.0211510048 481200.6953381686,165693.18418155596 481207.09636898787,165693.32617529767 481207.04838799126,165691.16416331995 481200.64936207084,165691.87410709585 481200.42136204895,165753.65927694863 481180.5064628724,165814.0884203272 481161.02952517034,165822.6624279071 481158.26549094514,165836.31353847278 481200.6194925535,165767.3103702741 481222.86038524355,165698.30625700488 481245.10234980984,165690.637159789 481221.30839094444),(165693.68317810545 481206.0753786871,165697.7431872291 481218.77539447945,165703.4442182028 481236.91032514203,165711.8762536899 481234.1892952708,165720.60230581425 481231.373342504,165729.32932247905 481228.5574072319,165738.05634936754 481225.7413761125,165746.78331805518 481222.92536026856,165755.51036490736 481220.10935998964,165764.23735355845 481217.29337498534,165772.96339762883 481214.47740331833,165781.69040843003 481211.6604477769,165790.41742727094 481208.8443977667,165799.14445585056 481206.0284744372,165807.87149465547 481203.2124552643,165816.59847525915 481200.39645136514,165825.1135385119 481197.6484255169,165822.57751450696 481189.81243685796,165819.13143646508 481179.05043658486,165820.13049025944 481178.728514202,165816.24341989227 481166.6435105667,165815.2434093422 481166.9654316354,165806.8374214708 481169.66943018365,165798.1083621269 481172.4784371293,165789.3793831147 481175.28645827976,165780.6493209348 481178.09549384686,165771.9203620799 481180.90343458427,165763.1913428137 481183.7123919793,165754.46226726277 481186.5204745377,165745.73224516274 481189.3294605534,165737.0032581936 481192.1373515939,165728.27421057862 481194.94637054345,165719.54421835704 481197.7554028533,165710.81519307548 481200.5633400208,165702.08617533752 481203.37240525684,165693.68317810545 481206.0753786871),(165694.65720787522 481224.0323859261,165695.85917038817 481227.8583556615,165698.7212011478 481226.9583123765,165697.51917027353 481223.1333431713,165694.65720787522 481224.0323859261)),((165737.3379160775 481555.91300334374,165735.73095426153 481561.36300590524,165734.12296457813 481566.8170122977,165732.5039211776 481572.30804616894,165731.722979526 481574.95398846315,165704.13282570825 481566.80807221646,165711.63384485795 481541.3200574355,165739.22793669422 481549.5020729691,165738.95195147427 481550.44109771407,165737.3379160775 481555.91300334374)),((165742.76593479898 481537.5050447366,165740.56592901776 481544.9660771371,165739.22793669422 481549.5020729691,165711.63384485795 481541.3200574355,165715.32678747826 481528.77303401113,165725.64985202887 481531.7811151973,165734.24586626413 481534.2861086722,165742.97691753737 481536.8301309427,165742.76593479898 481537.5050447366)),((165767.09185403027 481454.8851670778,165754.05186441253 481499.1701048759,165726.42579294113 481491.028104843,165739.44771866192 481446.73115084914,165749.84376477124 481449.7981879186,165752.72879604952 481450.6481872374,165758.38179191307 481452.3162255302,165767.09185403027 481454.8851670778)),((165791.7737026315 481328.7753049603,165783.7456507334 481331.359336259,165774.88861889107 481334.2092723015,165766.04762865734 481337.0552536876,165757.1655748783 481339.9142905514,165748.30754891026 481342.7652734014,165738.64354107963 481345.87521031464,165716.10334139835 481275.895331588,165727.38639761863 481272.2523536715,165728.82339729104 481271.7892804257,165734.2843600761 481270.0263800398,165742.61838084552 481267.3353419938,165750.98140785462 481264.635368777,165756.43242557545 481262.8753640524,165757.8784395208 481262.4083133824,165769.13344454192 481258.7753833276,165769.3634933841 481259.5253597224,165771.04348919258 481258.97537535493,165793.1736878639 481327.55535145255,165791.54366571992 481328.0852987592,165791.7737026315 481328.7753049603)),((165720.04529258763 481244.63435943174,165725.5073073317 481242.8703389998,165726.75330058602 481246.6902926032,165729.64336236584 481255.6653443158,165734.2843600761 481270.0263800398,165728.82339729104 481271.7892804257,165721.30132114777 481248.45032795117,165720.04529258763 481244.63435943174)),((165725.5073073317 481242.8703389998,165733.85235512824 481240.17530463496,165735.78637572107 481246.0963088247,165739.1253645554 481256.40639819385,165742.61838084552 481267.3353419938,165734.2843600761 481270.0263800398,165729.64336236584 481255.6653443158,165726.75330058602 481246.6902926032,165725.5073073317 481242.8703389998)),((165726.6254969247 481332.95825022587,165698.30625700488 481245.10234980984,165767.3103702741 481222.86038524355,165811.18078064197 481358.96532213397,165742.17659175242 481381.20723075565,165726.6254969247 481332.95825022587),(165714.59331353637 481246.3942909105,165707.31329987882 481248.74530289543,165714.91335148847 481272.22036780615,165716.10334139835 481275.895331588,165738.64354107963 481345.87521031464,165746.99361894192 481371.7652784169,165756.65861975378 481368.6482390871,165765.53763238693 481365.7842990672,165774.3697140342 481362.9352931985,165783.21470086896 481360.0823257834,165792.06672522734 481357.2272755572,165800.07373514827 481354.6453257462,165791.7737026315 481328.7753049603,165791.54366571992 481328.0852987592,165793.1736878639 481327.55535145255,165771.04348919258 481258.97537535493,165769.3634933841 481259.5253597224,165769.13344454192 481258.7753833276,165767.94046532223 481255.0803727385,165760.36338960959 481231.6154014575,165753.1123999269 481233.956395535,165747.66039481142 481235.71740314807,165742.20737085477 481237.47841455427,165733.85235512824 481240.17530463496,165725.5073073317 481242.8703389998,165720.04529258763 481244.63435943174,165714.59331353637 481246.3942909105)),((165728.27421057862 481194.94637054345,165737.0032581936 481192.1373515939,165742.59732487198 481209.55544268835,165745.61234685374 481219.1003356426,165746.78331805518 481222.92536026856,165738.05634936754 481225.7413761125,165735.57526303138 481217.8884169158,165732.34628696222 481207.6103914263,165728.27421057862 481194.94637054345)),((165719.54421835704 481197.7554028533,165728.27421057862 481194.94637054345,165732.34628696222 481207.6103914263,165735.57526303138 481217.8884169158,165738.05634936754 481225.7413761125,165729.32932247905 481228.5574072319,165728.14926428013 481224.7353711206,165725.1382394831 481215.1883834767,165719.54421835704 481197.7554028533)),((165717.13279208494 481496.11104573845,165742.54266873017 481409.7731823477,165812.09292220575 481430.24218691647,165786.68302267324 481516.58014388575,165717.13279208494 481496.11104573845),(165739.44771866192 481446.73115084914,165726.42579294113 481491.028104843,165754.05186441253 481499.1701048759,165781.5689765867 481507.33716742526,165794.65391076147 481462.99320677517,165802.763925968 481435.3552630413,165795.3618555604 481433.1752054869,165789.54184028375 481431.46125288424,165783.75084868493 481429.75515904836,165775.2168089457 481427.24120325147,165766.68378131933 481424.7281545481,165760.87376458934 481423.0161490942,165755.07273490838 481421.3081755765,165747.59369677713 481419.1052129124,165739.44771866192 481446.73115084914)),((165725.64985202887 481531.7811151973,165715.32678747826 481528.77303401113,165722.1637920794 481505.38503976824,165732.5078354939 481508.4231106378,165731.36181199265 481512.2791458858,165728.8128404287 481520.9150407567,165725.64985202887 481531.7811151973)),((165734.24586626413 481534.2861086722,165725.64985202887 481531.7811151973,165728.8128404287 481520.9150407567,165731.36181199265 481512.2791458858,165732.5078354939 481508.4231106378,165741.1428862153 481510.9591321961,165734.24586626413 481534.2861086722)),((165673.3708977106 481644.8049006763,165717.13279208494 481496.11104573845,165786.68302267324 481516.58014388575,165742.92118772503 481665.2739500047,165673.3708977106 481644.8049006763),(165689.5289023787 481616.43091684714,165682.66390541804 481639.6949511576,165693.02695096543 481642.74889270985,165701.65495568834 481645.29095071973,165710.28301998795 481647.8329127002,165718.91107302954 481650.3760023997,165727.5380969889 481652.91799232236,165737.844128147 481655.95499203826,165744.93108682157 481631.96596303635,165747.11110594447 481624.55796098587,165748.72110548115 481619.0870505108,165750.3331012124 481613.60902404686,165751.94207886027 481608.14100534626,165753.55408603878 481602.66097729624,165756.02206237818 481594.2760404996,165758.48305164994 481585.91000471317,165760.09602746696 481580.43009233876,165761.7070189946 481574.9550718272,165763.31704865114 481569.4850566739,165764.92303530494 481564.0260484118,165766.5320427976 481558.5590362891,165768.14401146414 481553.08012593735,165770.3300088621 481545.6511190906,165777.35402061223 481521.5951332937,165767.04893821903 481518.56806844496,165758.41391373967 481516.0321128274,165749.7788806756 481513.49606105307,165741.1428862153 481510.9591321961,165732.5078354939 481508.4231106378,165722.1637920794 481505.38503976824,165715.32678747826 481528.77303401113,165711.63384485795 481541.3200574355,165704.13282570825 481566.80807221646,165694.93587527092 481598.058018297,165689.5289023787 481616.43091684714)),((165749.87821666626 481168.6054396765,165760.15524713008 481165.29146753036,165770.4322916698 481161.9774055011,165780.70934980048 481158.6634761236,165790.9863538234 481155.3494567121,165801.26337168008 481152.0354586903,165811.68239555878 481148.67550719803,165814.0884203272 481161.02952517034,165753.65927694863 481180.5064628724,165691.87410709585 481200.42136204895,165688.07310791782 481188.53536355897,165698.48310648455 481185.17838073144,165708.76914462214 481181.860427097,165719.04618793767 481178.5463695621,165729.32317666116 481175.2324445252,165739.60024764334 481171.918429759,165749.87821666626 481168.6054396765)),((165804.16329833507 481125.3754932473,165793.75132829722 481128.7324718677,165783.4742649519 481132.0474867819,165773.19626086665 481135.36252099246,165762.91820267861 481138.67746517947,165752.64022651344 481141.99243090645,165742.36219818195 481145.3064164967,165732.07517469442 481148.62440939253,165721.79710368768 481151.9394390017,165711.51911494508 481155.254378882,165701.241071616 481158.56945126434,165690.96304236684 481161.88443377306,165680.54303647086 481165.24541627563,165675.90201051926 481156.17036465387,165705.3020483263 481146.65442658326,165734.4521396814 481137.24548951746,165744.0691597118 481134.3254810618,165773.7592437802 481124.71645183617,165803.45727884932 481115.1415537492,165804.16329833507 481125.3754932473)),((165815.2434093422 481166.9654316354,165816.24341989227 481166.6435105667,165820.13049025944 481178.728514202,165819.13143646508 481179.05043658486,165815.2434093422 481166.9654316354)),((165765.53763238693 481365.7842990672,165757.1655748783 481339.9142905514,165766.04762865734 481337.0552536876,165774.3697140342 481362.9352931985,165765.53763238693 481365.7842990672)),((165774.3697140342 481362.9352931985,165766.04762865734 481337.0552536876,165774.88861889107 481334.2092723015,165783.21470086896 481360.0823257834,165774.3697140342 481362.9352931985)),((165792.06672522734 481357.2272755572,165783.21470086896 481360.0823257834,165774.88861889107 481334.2092723015,165783.7456507334 481331.359336259,165784.97264818248 481335.1672473105,165787.86368516678 481344.1852849584,165792.06672522734 481357.2272755572)),((165787.86368516678 481344.1852849584,165784.97264818248 481335.1672473105,165783.7456507334 481331.359336259,165791.7737026315 481328.7753049603,165800.07373514827 481354.6453257462,165792.06672522734 481357.2272755572,165787.86368516678 481344.1852849584)),((165817.33076423616 481320.5923644494,165818.53473190608 481324.32034577214,165821.46778268923 481333.36931528937,165825.6738182269 481346.4083368862,165817.67381487784 481348.9853649841,165809.32371226288 481323.19531513343,165817.33076423616 481320.5923644494)),((165817.33076423616 481320.5923644494,165826.1607530206 481317.7223063045,165834.53086462567 481343.55537642253,165825.6738182269 481346.4083368862,165821.46778268923 481333.36931528937,165818.53473190608 481324.32034577214,165817.33076423616 481320.5923644494)),((165691.0211510048 481200.6953381686,165688.82613778592 481194.19933092536,165688.9681318548 481194.1513498069,165691.16416331995 481200.64936207084,165693.32617529767 481207.04838799126,165693.18418155596 481207.09636898787,165691.0211510048 481200.6953381686)),((165798.00803197207 481504.65914855164,165809.52610699498 481508.05810830294,165822.24111503712 481511.8021899461,165825.61514416043 481512.7781425044,165823.56413966522 481519.7282063275,165795.9680335119 481511.61214057665,165798.00803197207 481504.65914855164)),((165799.53601079423 481499.45010300004,165811.0490582101 481502.8772050506,165827.14610558908 481507.58913941676,165825.61514416043 481512.7781425044,165822.24111503712 481511.8021899461,165809.52610699498 481508.05810830294,165798.00803197207 481504.65914855164,165799.53601079423 481499.45010300004)),((165801.0480544796 481494.29621007456,165812.57303552347 481497.69619328826,165825.33510116214 481501.4762128732,165828.6791265633 481502.39513447497,165827.14610558908 481507.58913941676,165811.0490582101 481502.8772050506,165799.53601079423 481499.45010300004,165801.0480544796 481494.29621007456)),((165802.56800132265 481489.1151865056,165814.09605930385 481492.51618132205,165830.20212846796 481497.23215074255,165828.6791265633 481502.39513447497,165825.33510116214 481501.4762128732,165812.57303552347 481497.69619328826,165801.0480544796 481494.29621007456,165802.56800132265 481489.1151865056)),((165804.0880216979 481483.9331622273,165815.62004295533 481487.3351705922,165828.35112886416 481491.10723019537,165831.73209434262 481492.0351359933,165830.97413562768 481494.6171360007,165830.20212846796 481497.23215074255,165814.09605930385 481492.51618132205,165802.56800132265 481489.1151865056,165804.0880216979 481483.9331622273)),((165805.60797486416 481478.7521396871,165817.14307526563 481482.1541582829,165833.24713194987 481486.86924293207,165831.73209434262 481492.0351359933,165828.35112886416 481491.10723019537,165815.62004295533 481487.3351705922,165804.0880216979 481483.9331622273,165805.60797486416 481478.7521396871)),((165807.1290240118 481473.57022994,165818.66706306094 481476.97414995317,165831.42309653418 481480.7601800219,165834.77111099343 481481.66921192576,165833.24713194987 481486.86924293207,165817.14307526563 481482.1541582829,165805.60797486416 481478.7521396871,165807.1290240118 481473.57022994)),((165780.9100788994 481051.4195472039,165780.94908950687 481051.5405763582,165782.8121049136 481050.9255724577,165789.6861977294 481072.3145165163,165759.94208684235 481081.8385492149,165755.3420530924 481067.5615879822,165753.04303926002 481060.4275618781,165780.9100788994 481051.4195472039)),((165789.6861977294 481072.3145165163,165794.10724982165 481086.1055626836,165764.39215046004 481095.6485469322,165759.94208684235 481081.8385492149,165789.6861977294 481072.3145165163)),((165764.39215046004 481095.6485469322,165794.10724982165 481086.1055626836,165798.50226476917 481099.8185601817,165780.27220397923 481105.77951771766,165768.84218902295 481109.45854900277,165764.39215046004 481095.6485469322)),((165780.70934980048 481158.6634761236,165778.90532097794 481153.0484925419,165774.72427119376 481140.1124897321,165773.19626086665 481135.36252099246,165783.4742649519 481132.0474867819,165785.43027980113 481138.130446508,165787.59027662704 481144.78452594153,165790.9863538234 481155.3494567121,165780.70934980048 481158.6634761236)),((165790.9863538234 481155.3494567121,165787.59027662704 481144.78452594153,165785.43027980113 481138.130446508,165783.4742649519 481132.0474867819,165793.75132829722 481128.7324718677,165799.45834097321 481146.42046541837,165801.26337168008 481152.0354586903,165790.9863538234 481155.3494567121)),((165771.9203620799 481180.90343458427,165780.6493209348 481178.09549384686,165784.69838921897 481190.71845116117,165787.94644276387 481200.9894316278,165790.41742727094 481208.8443977667,165781.69040843003 481211.6604477769,165780.52041607565 481207.835417028,165777.4883933551 481198.2974753085,165771.9203620799 481180.90343458427)),((165780.6493209348 481178.09549384686,165789.3793831147 481175.28645827976,165794.95742641244 481192.6604017623,165797.98348239536 481202.20045515895,165799.14445585056 481206.0284744372,165790.41742727094 481208.8443977667,165787.94644276387 481200.9894316278,165784.69838921897 481190.71845116117,165780.6493209348 481178.09549384686)),((165785.55950023342 481249.4403665603,165778.02345562194 481225.98536036786,165784.58846067498 481223.87043900834,165785.88444177373 481227.66737380484,165788.72052130097 481236.65235585446,165792.13649313548 481247.3183605189,165790.44449281244 481247.86742136953,165785.55950023342 481249.4403665603)),((165785.55950023342 481249.4403665603,165790.44449281244 481247.86742136953,165792.13649313548 481247.3183605189,165796.1385307854 481246.02142821206,165797.33956570356 481249.73437673337,165786.7535148305 481253.1554111886,165785.55950023342 481249.4403665603)),((165790.040483603 481222.11336638086,165794.17451525794 481234.89239922474,165798.77555773532 481249.27043149626,165797.33956570356 481249.73437673337,165796.1385307854 481246.02142821206,165792.13649313548 481247.3183605189,165788.72052130097 481236.65235585446,165785.88444177373 481227.66737380484,165784.58846067498 481223.87043900834,165790.040483603 481222.11336638086)),((165775.75088814163 481457.4322048577,165779.88083834152 481443.37722162984,165782.5408714928 481434.36519018246,165782.39683007967 481434.32315151556,165783.75084868493 481429.75515904836,165789.54184028375 481431.46125288424,165788.19285334527 481436.0332602932,165781.70292275774 481458.1561794963,165781.4059229174 481459.0961572339,165775.75088814163 481457.4322048577)),((165781.4059229174 481459.0961572339,165781.70292275774 481458.1561794963,165788.19285334527 481436.0332602932,165789.54184028375 481431.46125288424,165795.3618555604 481433.1752054869,165794.01687317196 481437.75322834554,165793.87290232416 481437.7101881182,165788.38689940557 481456.3701971199,165785.5959004123 481455.5502011837,165784.580929966 481459.00217660615,165784.28590465026 481459.9431598627,165781.4059229174 481459.0961572339)),((165784.28590465026 481459.9431598627,165794.65391076147 481462.99320677517,165781.5689765867 481507.33716742526,165754.05186441253 481499.1701048759,165767.09185403027 481454.8851670778,165775.75088814163 481457.4322048577,165781.4059229174 481459.0961572339,165784.28590465026 481459.9431598627))) diff --git a/rust/geo-test-fixtures/fixtures/nl_zones.wkt b/rust/sedona-geo-test-fixtures/fixtures/nl_zones.wkt similarity index 100% rename from rust/geo-test-fixtures/fixtures/nl_zones.wkt rename to rust/sedona-geo-test-fixtures/fixtures/nl_zones.wkt diff --git a/rust/geo-test-fixtures/fixtures/norway_concave_hull.wkt b/rust/sedona-geo-test-fixtures/fixtures/norway_concave_hull.wkt similarity index 100% rename from rust/geo-test-fixtures/fixtures/norway_concave_hull.wkt rename to rust/sedona-geo-test-fixtures/fixtures/norway_concave_hull.wkt diff --git a/rust/geo-test-fixtures/fixtures/norway_convex_hull.wkt b/rust/sedona-geo-test-fixtures/fixtures/norway_convex_hull.wkt similarity index 98% rename from rust/geo-test-fixtures/fixtures/norway_convex_hull.wkt rename to rust/sedona-geo-test-fixtures/fixtures/norway_convex_hull.wkt index ee45f8cd..0dd909ba 100644 --- a/rust/geo-test-fixtures/fixtures/norway_convex_hull.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/norway_convex_hull.wkt @@ -1 +1 @@ -LINESTRING(7.717377961338066 57.74911832172092,6.968425350867709 57.74957737187902,5.464957056755467 58.24822761552509,4.722530819313656 59.24963650749106,4.346980035524813 60.498808789126734,4.340231074407465 61.998825794804695,12.617561279995918 68.4983356095851,15.010693169334283 69.49664550225157,18.503596794856012 70.49788127446817,23.41773118246719 71.25021807292373,23.99734444112429 71.25032666052927,25.81713611470763 71.25061029282803,27.018043769538682 71.25053409142788,28.291580927773403 71.25031072902001,30.61987385954102 70.74988171707938,31.220012092660365 70.50025174432726,31.22041170425437 70.00042112672493,31.220360609653444 69.74967563784787,31.218815724995086 69.50004679809811,11.84258850133738 58.74982401923083,7.717377961338066 57.74911832172092) \ No newline at end of file +LINESTRING(7.717377961338066 57.74911832172092,6.968425350867709 57.74957737187902,5.464957056755467 58.24822761552509,4.722530819313656 59.24963650749106,4.346980035524813 60.498808789126734,4.340231074407465 61.998825794804695,12.617561279995918 68.4983356095851,15.010693169334283 69.49664550225157,18.503596794856012 70.49788127446817,23.41773118246719 71.25021807292373,23.99734444112429 71.25032666052927,25.81713611470763 71.25061029282803,27.018043769538682 71.25053409142788,28.291580927773403 71.25031072902001,30.61987385954102 70.74988171707938,31.220012092660365 70.50025174432726,31.22041170425437 70.00042112672493,31.220360609653444 69.74967563784787,31.218815724995086 69.50004679809811,11.84258850133738 58.74982401923083,7.717377961338066 57.74911832172092) diff --git a/rust/geo-test-fixtures/fixtures/norway_main.wkt b/rust/sedona-geo-test-fixtures/fixtures/norway_main.wkt similarity index 99% rename from rust/geo-test-fixtures/fixtures/norway_main.wkt rename to rust/sedona-geo-test-fixtures/fixtures/norway_main.wkt index a9bd7fa7..180559e0 100644 --- a/rust/geo-test-fixtures/fixtures/norway_main.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/norway_main.wkt @@ -1 +1 @@ -LINESTRING(11.82022128355349 59.29625663896727,11.830832839047314 59.240760520804976,11.804303950312752 59.22754715933777,11.783080839325102 59.206405780990224,11.775122172704734 59.17601504961564,11.77777506157819 59.136374965214,11.76451061721091 59.11523358686647,11.775122172704734 59.10730556998614,11.77777506157819 59.08880686393204,11.748593283970173 59.066344149437775,11.737981728476347 59.050488115677126,11.708799950868329 59.030668073476306,11.706147061994873 59.01349070356893,11.690229728754137 58.98970665292795,11.684923951007224 58.971207946873854,11.690229728754137 58.9553519131132,11.663700840019574 58.934210534765654,11.650436395652292 58.90646247568451,11.6318661735381 58.909105147977954,11.589419951562801 58.89060644192386,11.573502618322063 58.89589178651074,11.570849729448607 58.88796376963042,11.557585285081327 58.898534458804185,11.544320840714047 58.89457045036402,11.539015062967135 58.88003575275009,11.525750618599853 58.876071744309925,11.483304396624554 58.89192777807058,11.456775507889994 58.88796376963042,11.456775507889994 58.91703316485828,11.464734174510362 58.93288919861894,11.45942839676345 58.951387904673034,11.462081285636906 58.971207946873854,11.454122619016537 58.985742644487786,11.470039952257274 58.98177863604762,11.464734174510362 59.00027734210172,11.448816841269624 59.01216936742221,11.43024661915543 59.03595341806319,11.419635063661605 59.043881434943515,11.432899508028886 59.06238014099762,11.419635063661605 59.066344149437775,11.419635063661605 59.05445212411729,11.406370619294325 59.05709479641073,11.406370619294325 59.072950830171386,11.393106174927045 59.07691483861155,11.385147508306677 59.09541354466565,11.37453595281285 59.103341561545975,11.387800397180133 59.11523358686647,11.355965730698657 59.11919759530663,11.321478175343728 59.11787625915991,11.276379064494972 59.10069888925253,11.223321287025849 59.08880686393204,11.199445287164743 59.09144953622548,11.204751064911655 59.10730556998614,11.231279953646217 59.13373229292056,11.22862706477276 59.13769630136073,11.199445287164743 59.1112695784263,11.199445287164743 59.11919759530663,11.183527953924006 59.11787625915991,11.172916398430182 59.1297682844804,11.178222176177094 59.14166030980089,11.212709731532023 59.145624318241055,11.175569287303638 59.15223099897466,11.172916398430182 59.16015901585499,11.188833731670918 59.17865772190908,11.186180842797462 59.19715642796318,11.178222176177094 59.18658573878941,11.1596519540629 59.183943066495964,11.164957731809814 59.16015901585499,11.130470176454882 59.153552335121375,11.119858620961057 59.145624318241055,11.114552843214145 59.168087032735315,11.098635509973409 59.183943066495964,11.090676843353041 59.17865772190908,11.11189995434069 59.14166030980089,11.109247065467233 59.13373229292056,11.072106621238847 59.12184026760007,11.072106621238847 59.14033897365417,11.027007510390092 59.1297682844804,11.037619065883916 59.14033897365417,11.042924843630828 59.1614803520017,11.027007510390092 59.148266990534495,11.005784399402442 59.17601504961564,11.011090177149354 59.18658573878941,10.99251995503516 59.17865772190908,10.989867066161704 59.18790707493613,10.976602621794424 59.18658573878941,10.968643955174056 59.17601504961564,10.950073733059863 59.17205104117548,10.950073733059863 59.153552335121375,10.931503510945669 59.136374965214,10.907627511084563 59.13769630136073,10.918239066578387 59.14958832668121,10.90232173333765 59.148266990534495,10.897015955590739 59.15619500741482,10.907627511084563 59.168087032735315,10.899668844464195 59.18262173034925,10.883751511223458 59.17601504961564,10.886404400096914 59.190549747229575,10.86783417798272 59.17601504961564,10.857222622488896 59.18658573878941,10.859875511362352 59.17205104117548,10.825387956007422 59.15223099897466,10.825387956007422 59.17205104117548,10.80681773389323 59.19715642796318,10.790900400652491 59.18658573878941,10.788247511779035 59.19451375566974,10.804164845019773 59.20508444484351,10.761718623044473 59.232832503924655,10.793553289525947 59.25925922685908,10.772330178538297 59.255295218418915,10.745801289803737 59.232832503924655,10.729883956563 59.23151116777793,10.735189734309913 59.26586590759268,10.74314840093028 59.255295218418915,10.748454178677193 59.28172194135334,10.74314840093028 59.2856859497935,10.790900400652491 59.31475534502137,10.780288845158667 59.31871935346153,10.759065734171017 59.30814866428776,10.751107067550649 59.31607668116809,10.753759956424105 59.342503404102516,10.732536845436456 59.345146076395956,10.716619512195718 59.32400469804841,10.698049290081524 59.31871935346153,10.690090623461156 59.30154198355415,10.658255956979684 59.33457538722219,10.663561734726596 59.37950081621071,10.650297290359314 59.37157279933038,10.647644401485858 59.39403551382464,10.655603068106227 59.432354262079556,10.6874377345877 59.47199434648119,10.682131956840788 59.50899175858939,10.6874377345877 59.52484779235004,10.666214623600052 59.52352645620332,10.650297290359314 59.55391718757791,10.655603068106227 59.5843079189525,10.652950179232771 59.614698650327085,10.61846262387784 59.67415877692954,10.629074179371663 59.69794282757052,10.621115512751295 59.70058549986396,10.613156846130927 59.682086793809866,10.586627957396367 59.7217268782115,10.591933735143279 59.732297567385274,10.581322179649455 59.7402255842656,10.581322179649455 59.76136696261314,10.607851068384015 59.80364971930822,10.642338623738945 59.841968467563134,10.655603068106227 59.87235919893772,10.6874377345877 59.84989648444346,10.692743512334612 59.83404045068281,10.713966623322262 59.74815360114592,10.72192528994263 59.72833355894511,10.732536845436456 59.72833355894511,10.724578178816088 59.75079627343937,10.735189734309913 59.766652307200026,10.729883956563 59.77854433252051,10.735189734309913 59.797043038574614,10.753759956424105 59.82346976150904,10.767024400791385 59.83139777838936,10.780288845158667 59.864431182057395,10.751107067550649 59.89482191343198,10.751107067550649 59.906713938752475,10.740495512056825 59.90142859416559,10.732536845436456 59.91067794719264,10.711313734448806 59.906713938752475,10.690090623461156 59.91728462792624,10.695396401208068 59.90274993031231,10.67417329022042 59.89482191343198,10.663561734726596 59.90274993031231,10.668867512473508 59.91728462792624,10.642338623738945 59.91067794719264,10.626421290498207 59.88028721581805,10.602545290637103 59.87235919893772,10.591933735143279 59.88821523269837,10.610503957257471 59.90274993031231,10.570710624155629 59.886893896551655,10.530917291053786 59.886893896551655,10.509694180066138 59.87632320737789,10.501735513445768 59.853860492883626,10.491123957951944 59.841968467563134,10.469900846964293 59.83536178682952,10.47255373583775 59.83007644224264,10.499082624572312 59.83139777838936,10.47255373583775 59.819505753068874,10.501735513445768 59.80100704701478,10.501735513445768 59.7587242903197,10.51499995781305 59.76268829875986,10.512347068939594 59.734940239678714,10.520305735559962 59.72833355894511,10.522958624433418 59.709834852891014,10.517652846686506 59.69397881913036,10.533570179927242 59.6781227853697,10.538875957674154 59.68340812995659,10.581322179649455 59.66358808775577,10.599892401763647 59.664909423902486,10.615809735004383 59.59619994427299,10.615809735004383 59.569773221338565,10.589280846269823 59.55127451528446,10.536223068800698 59.53145447308365,10.4937768468254 59.51956244776316,10.480512402458118 59.52352645620332,10.464595069217381 59.51691977546972,10.448677735976645 59.52352645620332,10.419495958368627 59.52352645620332,10.4088844028748 59.53938248996398,10.427454624988995 59.56184520445824,10.440719069356277 59.60677063344676,10.41684306949517 59.61073464188692,10.443371958229733 59.62262666720741,10.43010751386245 59.6345186925279,10.427454624988995 59.653017398582,10.43806618048282 59.667552096195934,10.427454624988995 59.67415877692954,10.43010751386245 59.68605080225003,10.41684306949517 59.68340812995659,10.366438180899504 59.71379886133118,10.361132403152592 59.709834852891014,10.316033292303835 59.71644153362462,10.286851514695817 59.73626157582544,10.286851514695817 59.74815360114592,10.244405292720518 59.746832264999206,10.233793737226694 59.7402255842656,10.186041737504482 59.744189592705766,10.26297551483471 59.72040554206478,10.27093418145508 59.70851351674429,10.31338040343038 59.690014810690194,10.345215069911854 59.690014810690194,10.374396847519872 59.6781227853697,10.387661291887152 59.659624079315606,10.392967069634064 59.64376804555495,10.406231514001345 59.62659067564758,10.400925736254433 59.59619994427299,10.390314180760608 59.58034391051233,10.406231514001345 59.56448787675168,10.398272847380976 59.56052386831151,10.390314180760608 59.53541848152381,10.363785292026048 59.527490464643485,10.305421736810011 59.53938248996398,10.26297551483471 59.56448787675168,10.252363959340887 59.56052386831151,10.244405292720518 59.569773221338565,10.231140848353238 59.5658092128984,10.244405292720518 59.55788119601807,10.260322625961255 59.53145447308365,10.278892848075449 59.53145447308365,10.302768847936555 59.4970997332689,10.318686181177291 59.48917171638857,10.342562181038398 59.468030338041025,10.350520847658766 59.4786010272148,10.358479514279134 59.460102321160704,10.38235551414024 59.43763960666644,10.400925736254433 59.45085296813365,10.427454624988995 59.440282278959884,10.443371958229733 59.452174304280376,10.456636402597013 59.44424628740005,10.45928929147047 59.42839025363939,10.475206624711205 59.42839025363939,10.4937768468254 59.43631827051972,10.496429735698856 59.417819564465624,10.475206624711205 59.395356849971364,10.475206624711205 59.380822152357425,10.461942180343925 59.372894135477104,10.469900846964293 59.35043142098284,10.4937768468254 59.333254051075464,10.496429735698856 59.322683361901696,10.522958624433418 59.32004068960825,10.52826440218033 59.30814866428776,10.520305735559962 59.293613966673824,10.501735513445768 59.29229263052711,10.4937768468254 59.26982991603285,10.501735513445768 59.255295218418915,10.488471069078487 59.263223235299236,10.47255373583775 59.25925922685908,10.467247958090837 59.24340319309842,10.432760402735907 59.271151252179564,10.427454624988995 59.25925922685908,10.400925736254433 59.26586590759268,10.398272847380976 59.27643659676645,10.377049736393328 59.277757932913175,10.371743958646416 59.24340319309842,10.379702625266784 59.235475176218095,10.358479514279134 59.21036978943039,10.345215069911854 59.216976470164,10.329297736671116 59.193192419523015,10.32664484779766 59.168087032735315,10.308074625683467 59.145624318241055,10.321339070050747 59.145624318241055,10.32664484779766 59.1297682844804,10.31338040343038 59.125804276040235,10.310727514556923 59.13373229292056,10.278892848075449 59.14033897365417,10.308074625683467 59.09937755310581,10.305421736810011 59.080878847051714,10.316033292303835 59.06898682173122,10.300115959063099 59.05313078797057,10.302768847936555 59.06502281329106,10.292157292442731 59.0742721663181,10.289504403569275 59.09541354466565,10.26297551483471 59.12316160374679,10.257669737087799 59.10994824227958,10.273587070328537 59.09673488081236,10.281545736948905 59.04784544338368,10.27093418145508 59.03991742650335,10.257669737087799 59.06502281329106,10.252363959340887 59.09937755310581,10.241752403847062 59.09541354466565,10.233793737226694 59.12184026760007,10.22318218173287 59.125804276040235,10.225835070606326 59.09144953622548,10.217876403985958 59.0742721663181,10.233793737226694 59.058416132557454,10.228487959479782 59.038596090356634,10.20195907074522 59.02009738430254,10.15420707102301 59.005562686688606,10.130331071161903 59.005562686688606,10.127678182288447 59.0240613927427,10.175430182010658 59.038596090356634,10.16747151539029 59.05445212411729,10.148901293276097 59.0425600987968,10.117066626794621 59.03463208191647,10.109107960174253 59.0240613927427,10.074620404819324 59.01349070356893,10.064008849325498 59.03198940962303,10.042785738337848 59.0425600987968,10.016256849603288 59.04652410723696,10.026868405097112 59.03198940962303,10.018909738476744 59.028025401182866,10.03482707171748 59.016133375862374,10.042785738337848 59.00159867824844,10.03482707171748 58.97781462760746,10.016256849603288 58.979135963754175,10.002992405236007 58.96988661072713,9.981769294248357 58.98309997219434,9.963199072134163 58.97781462760746,9.971157738754531 58.965922602286966,9.957893294387251 58.96063725770008,9.93136440565269 58.965922602286966,9.923405739032322 58.973850619167294,9.883612405930478 58.96724393843369,9.867695072689742 58.97517195531402,9.857083517195917 58.956673249259914,9.81994307296753 58.971207946873854,9.854430628322461 58.98970665292795,9.84116618395518 59.01745471200909,9.84116618395518 59.03991742650335,9.822595961840985 59.03198940962303,9.806678628600249 59.03595341806319,9.79871996197988 59.066344149437775,9.806678628600249 59.09144953622548,9.790761295359513 59.09144953622548,9.788108406486057 59.066344149437775,9.772191073245319 59.05445212411729,9.772191073245319 59.03991742650335,9.737703517890388 59.072950830171386,9.72974485127002 59.06502281329106,9.71648040690274 59.06898682173122,9.711174629155828 59.09144953622548,9.719133295776196 59.10466289769269,9.700563073662002 59.10730556998614,9.697910184788546 59.07691483861155,9.689951518168177 59.06898682173122,9.705868851408916 59.05445212411729,9.69525729591509 59.050488115677126,9.658116851686703 59.058416132557454,9.644852407319423 59.083521519345155,9.650158185066335 59.103341561545975,9.63954662957251 59.1112695784263,9.586488852103386 59.12316160374679,9.589141740976842 59.11523358686647,9.530778185760806 59.131089620627115,9.509555074773157 59.125804276040235,9.562612852242282 59.11787625915991,9.559959963368826 59.10730556998614,9.581183074356474 59.103341561545975,9.626282185205229 59.080878847051714,9.626282185205229 59.06238014099762,9.644852407319423 59.058416132557454,9.650158185066335 59.04652410723696,9.671381296053983 59.050488115677126,9.697910184788546 59.04652410723696,9.735050629016932 59.028025401182866,9.7430092956373 59.01216936742221,9.748315073384212 58.98970665292795,9.732397740143476 58.993670661368114,9.721786184649652 59.008205358982046,9.700563073662002 59.00159867824844,9.713827518029284 58.993670661368114,9.705868851408916 58.985742644487786,9.671381296053983 58.996313333661554,9.652811073939791 58.98970665292795,9.671381296053983 58.98177863604762,9.700563073662002 58.979135963754175,9.689951518168177 58.96724393843369,9.676687073800895 58.973850619167294,9.663422629433615 58.96724393843369,9.647505296192879 58.971207946873854,9.650158185066335 58.96063725770008,9.623629296331773 58.9553519131132,9.631587962952143 58.94742389623287,9.623629296331773 58.93949587935254,9.607711963091035 58.951387904673034,9.589141740976842 58.94478122393943,9.613017740837948 58.93288919861894,9.581183074356474 58.92496118173861,9.552001296748456 58.93288919861894,9.549348407875 58.928925190178774,9.517513741393525 58.928925190178774,9.480373297165139 58.9368532070591,9.467108852797859 58.93288919861894,9.501596408152789 58.926282517885326,9.469761741671315 58.90249846724435,9.453844408430577 58.88664243348369,9.435274186316384 58.90646247568451,9.374257742226892 58.898534458804185,9.366299075606523 58.89192777807058,9.36895196447998 58.88003575275009,9.387522186594172 58.89457045036402,9.408745297581822 58.90249846724435,9.42466263082256 58.898534458804185,9.416703964202192 58.8681437274296,9.406092408708366 58.86417971898943,9.358340408986155 58.86153704669599,9.321199964757769 58.87210773586976,9.30528263151703 58.88003575275009,9.294671076023207 58.853609029815665,9.299976853770119 58.847002349082054,9.276100853909014 58.833788987614845,9.30528263151703 58.839074332201726,9.302629742643575 58.831146315321405,9.329158631378137 58.83775299605501,9.371604853353436 58.847002349082054,9.408745297581822 58.8496450213755,9.443232852936752 58.84568101293534,9.467108852797859 58.82718230688124,9.43792707518984 58.81925429000091,9.390175075467628 58.81529028156075,9.406092408708366 58.808683600827145,9.371604853353436 58.79943424780009,9.379563519973804 58.79282756706649,9.435274186316384 58.811326273120585,9.435274186316384 58.80075558394682,9.38221640884726 58.78489955018616,9.384869297720716 58.78225687789271,9.347728853492331 58.75450881881157,9.286712409402838 58.73997412119764,9.233654631933714 58.74261679349108,9.204472854325697 58.74790213807797,9.18855552108496 58.74261679349108,9.183249743338047 58.74790213807797,9.167332410097309 58.73997412119764,9.135497743615836 58.74261679349108,9.114274632628186 58.75054481037141,9.082439966146712 58.75054481037141,9.0771341883998 58.75979416339845,9.066522632905976 58.75583015495829,9.082439966146712 58.743938129637804,9.058563966285607 58.7254394235837,9.095704410513992 58.724118087436985,9.124886188122012 58.71751140670338,9.199167076578785 58.71619007055666,9.19651418770533 58.724118087436985,9.15937374347694 58.724118087436985,9.106315966007818 58.73204610431731,9.106315966007818 58.743938129637804,9.164679521223853 58.73336744046403,9.225695965313346 58.73865278505092,9.207125743199153 58.721475415143544,9.238960409680626 58.72808209587715,9.241613298554082 58.724118087436985,9.225695965313346 58.70561938138289,9.130191965868924 58.69504869220912,9.11162174375473 58.69769136450256,9.103663077134362 58.68712067532879,9.204472854325697 58.69504869220912,9.225695965313346 58.68712067532879,9.204472854325697 58.66465796083453,9.164679521223853 58.656729943954204,9.162026632350397 58.66730063312797,9.116927521501642 58.65012326322059,9.140803521362749 58.648801927073876,9.0771341883998 58.62501787643289,9.032035077551045 58.611804514965684,9.032035077551045 58.619732531846005,8.994894633322659 58.5880204643247,8.976324411208466 58.589341800471416,8.971018633461552 58.60255516193863,8.947142633600446 58.61048317881896,8.952448411347358 58.62501787643289,8.933878189233166 58.61841119569929,8.939183966980078 58.59991248964519,8.923266633739342 58.57348576671077,8.963059966841184 58.59594848120503,8.968365744588096 58.5880204643247,8.957754189094272 58.569521758270604,8.968365744588096 58.56291507753699,8.949795522473902 58.549701716069784,8.886126189510955 58.52459632928208,8.878167522890585 58.49816960634766,8.86225018964985 58.5008122786411,8.851638634156025 58.48892025332061,8.81980396767455 58.474385555706675,8.75082885696469 58.45588684965258,8.713688412736303 58.44003081589192,8.718994190483215 58.41888943754438,8.700423968369023 58.39114137846324,8.726952857103583 58.392462714609955,8.713688412736303 58.37924935314275,8.687159524001743 58.364714655528815,8.668589301887549 58.36867866396898,8.671242190761005 58.354143966355046,8.65267196864681 58.354143966355046,8.644713302026442 58.342251941034554,8.620837302165338 58.33960926874111,8.631448857659162 58.33168125186078,8.607572857798056 58.32771724342062,8.6049199689246 58.33828793259439,8.623490191038794 58.35678663864849,8.6049199689246 58.36075064708865,8.57043241356967 58.311861209659966,8.530639080467827 58.289398495165706,8.509415969480177 58.299969184339474,8.517374636100547 58.289398495165706,8.490845747365984 58.277506469845214,8.490845747365984 58.27354246140505,8.535944858214739 58.28543448672554,8.530639080467827 58.269578452964886,8.461663969757966 58.25900776379112,8.435135081023404 58.266935780671446,8.443093747643774 58.29336250360587,8.408606192288843 58.26561444452472,8.42452352552958 58.266935780671446,8.432482192149948 58.25107974691079,8.427176414403036 58.24315173003046,8.400647525668475 58.247115738470626,8.387383081301193 58.255043755350954,8.371465748060457 58.23654504929686,8.318407970591332 58.212760998655874,8.305143526224052 58.21672500709604,8.27861463748949 58.212760998655874,8.297184859603684 58.202190309482106,8.25208574875493 58.20615431792227,8.246779971008015 58.20086897333538,8.281267526362946 58.19161962030833,8.275961748616034 58.19822630104194,8.305143526224052 58.19161962030833,8.283920415236402 58.18369160342801,8.270655970869122 58.159907552787026,8.241474193261103 58.157264880493585,8.241474193261103 58.16783556966735,8.222903971146911 58.17576358654768,8.233515526640735 58.182370267281286,8.20168086015926 58.190298284161614,8.209639526779629 58.17179957810752,8.233515526640735 58.16387156122719,8.233515526640735 58.15330087205342,8.257391526501841 58.1334808298526,8.241474193261103 58.12555281297227,8.217598193399997 58.12158880453211,8.206986637906173 58.11233945150506,8.199027971285805 58.14140884673293,8.204333749032717 58.16387156122719,8.185763526918524 58.16387156122719,8.191069304665437 58.15330087205342,8.172499082551242 58.13480216599932,8.180457749171612 58.12951682141244,8.14597019381668 58.126874149119,8.164540415930874 58.12291014067883,8.15392886043705 58.10705410691818,8.135358638322856 58.10309009847801,8.130052860575944 58.12158880453211,8.124747082829032 58.108375443064894,8.087606638600645 58.12158880453211,8.087606638600645 58.1334808298526,8.063730638739539 58.11894613223867,8.058424860992627 58.12291014067883,8.071689305359907 58.14140884673293,8.058424860992627 58.137444838292765,8.047813305498803 58.14537285517309,8.058424860992627 58.16122888893374,8.076995083106821 58.16783556966735,8.087606638600645 58.18633427572145,8.071689305359907 58.19426229260178,8.058424860992627 58.2140823348026,8.034548861131523 58.23654504929686,8.02128441676424 58.232581040856694,8.050466194372259 58.2140823348026,8.053119083245715 58.202190309482106,8.037201750004979 58.19822630104194,8.050466194372259 58.182370267281286,8.037201750004979 58.179727594987845,8.047813305498803 58.16387156122719,8.026590194511153 58.157264880493585,8.034548861131523 58.14537285517309,7.997408416903135 58.14140884673293,8.013325750143872 58.130838157559154,7.997408416903135 58.12951682141244,7.984143972535854 58.14405151902637,7.962920861548205 58.13480216599932,7.978838194788942 58.126874149119,7.954962194927836 58.11233945150506,7.970879528168574 58.114982123798505,7.978838194788942 58.10309009847801,7.976185305915486 58.08723406471736,7.949656417180924 58.07402070325014,7.9443506394340115 58.07666337554359,7.933739083940187 58.10044742618457,7.915168861825993 58.070056694809985,7.875375528724151 58.072699367103425,7.8568053066099575 58.070056694809985,7.84088797336922 58.07402070325014,7.838235084495764 58.0647713502231,7.817011973508115 58.06609268636982,7.822317751255028 58.08062738398375,7.803747529140834 58.08062738398375,7.79313597364701 58.06609268636982,7.7825244181531845 58.06609268636982,7.7851773070266415 58.077984711690306,7.748036862798254 58.070056694809985,7.721507974063693 58.05155798875588,7.687020418708762 58.06873535866326,7.708243529696412 58.050236652609165,7.68171464096185 58.04759398031572,7.68171464096185 58.04362997187556,7.655185752227288 58.050236652609165,7.6604915299742 58.0396659634354,7.68171464096185 58.03570195499523,7.671103085468025 58.03173794655507,7.668450196594569 58.01323924050097,7.631309752366183 58.01720324894113,7.6206981968723575 58.027773938114905,7.6233510857458135 58.0396659634354,7.610086641378533 58.04362997187556,7.6206981968723575 58.007953895914085,7.594169308137796 58.00927523206081,7.583557752643971 57.99870454288703,7.575599086023603 58.007953895914085,7.549070197289041 58.00927523206081,7.517235530807566 58.005311223620645,7.498665308693374 58.005311223620645,7.503971086440286 58.01984592123458,7.456219086718074 58.01984592123458,7.429690197983513 58.01588191279441,7.429690197983513 58.027773938114905,7.442954642350793 58.03570195499523,7.41111997586932 58.04362997187556,7.424384420236601 58.03570195499523,7.403161309248951 58.02513126582146,7.419078642489688 58.02380992967474,7.403161309248951 58.005311223620645,7.3819381982613015 58.01720324894113,7.33418619853909 58.027773938114905,7.331533309665634 58.03570195499523,7.318268865298354 58.04362997187556,7.318268865298354 58.02513126582146,7.278475532196511 58.027773938114905,7.275822643323055 58.04362997187556,7.286434198816879 58.050236652609165,7.278475532196511 58.05816466948949,7.267863976702686 58.04759398031572,7.243987976841581 58.04362997187556,7.2227648658539305 58.03173794655507,7.20950042148665 58.030416610408345,7.198888865992825 58.04759398031572,7.177665755005176 58.05816466948949,7.169707088384808 58.0396659634354,7.156442644017527 58.04362997187556,7.124607977536052 58.03834462728867,7.121955088662596 58.02513126582146,7.111343533168771 58.03834462728867,7.106037755421859 58.027773938114905,7.113996422042227 58.01588191279441,7.108690644295315 58.005311223620645,7.076855977813841 57.98681251756655,7.055632866826192 57.97888450068622,7.02910397809163 57.99474053444687,7.034409755838542 58.00398988747392,7.037062644711998 58.02116725738129,7.0662444223200165 58.04362997187556,7.135219533029877 58.06873535866326,7.1458310885237015 58.06609268636982,7.140525310776789 58.05420066104933,7.148483977397158 58.050236652609165,7.17501286613172 58.10309009847801,7.185624421625544 58.11233945150506,7.182971532752088 58.1334808298526,7.177665755005176 58.13480216599932,7.180318643878632 58.11101811535834,7.167054199511352 58.108375443064894,7.1458310885237015 58.092519409304245,7.1458310885237015 58.072699367103425,7.124607977536052 58.072699367103425,7.103384866548403 58.08062738398375,7.106037755421859 58.06873535866326,7.092773311054579 58.07402070325014,7.074203088940385 58.05816466948949,7.050327089079279 58.055521997196045,7.039715533585454 58.046272644169,7.015839533724349 58.03438061884851,6.984004867242875 58.027773938114905,6.978699089495962 58.046272644169,7.002575089357068 58.05420066104933,7.013186644850893 58.06873535866326,7.002575089357068 58.072699367103425,7.013186644850893 58.08459139242392,7.058285755699648 58.11233945150506,7.060938644573104 58.11894613223867,7.02910397809163 58.108375443064894,7.023798200344718 58.09912609003785,6.986657756116331 58.070056694809985,6.97339331174905 58.070056694809985,6.976046200622506 58.05420066104933,6.960128867381769 58.04759398031572,6.93890575639412 58.050236652609165,6.933599978647207 58.06080734178293,6.952170200761401 58.06873535866326,6.933599978647207 58.07402070325014,6.960128867381769 58.08062738398375,6.930947089773751 58.08062738398375,6.946864423014489 58.09912609003785,6.928294200900295 58.092519409304245,6.920335534279927 58.072699367103425,6.891153756671908 58.070056694809985,6.9097239787861024 58.07666337554359,6.816872868215135 58.09119807315752,6.814219979341679 58.09912609003785,6.854013312443522 58.10441143462473,6.854013312443522 58.11101811535834,6.901765312165733 58.12555281297227,6.949517311887945 58.12158880453211,6.954823089634857 58.11233945150506,6.976046200622506 58.12291014067883,6.9946164227367 58.12158880453211,7.034409755838542 58.12951682141244,7.02910397809163 58.137444838292765,7.047674200205823 58.13876617443948,7.02910397809163 58.14537285517309,6.986657756116331 58.130838157559154,6.960128867381769 58.126874149119,6.930947089773751 58.12951682141244,6.888500867798452 58.137444838292765,6.888500867798452 58.14537285517309,6.854013312443522 58.1519795359067,6.832790201455873 58.17179957810752,6.867277756810803 58.187655611868166,6.859319090190434 58.190298284161614,6.819525757088591 58.17576358654768,6.814219979341679 58.18633427572145,6.79299686835403 58.18369160342801,6.814219979341679 58.165192897373906,6.803608423847855 58.15594354434686,6.843401756949698 58.14537285517309,6.867277756810803 58.1334808298526,6.851360423570066 58.117624796091945,6.8274844237089605 58.108375443064894,6.803608423847855 58.11101811535834,6.777079535113293 58.10044742618457,6.750550646378731 58.11101811535834,6.7452448686318185 58.130838157559154,6.7585093129991 58.14537285517309,6.7452448686318185 58.16915690581407,6.755856424125644 58.187655611868166,6.7452448686318185 58.19161962030833,6.734633313137994 58.18369160342801,6.739939090884906 58.14140884673293,6.721368868770713 58.130838157559154,6.73728620201145 58.12951682141244,6.739939090884906 58.10309009847801,6.7585093129991 58.09648341774441,6.806261312721311 58.09648341774441,6.806261312721311 58.09119807315752,6.771773757366381 58.077984711690306,6.811567090468223 58.08459139242392,6.816872868215135 58.0647713502231,6.79299686835403 58.0647713502231,6.785038201733661 58.05420066104933,6.771773757366381 58.072699367103425,6.763815090746013 58.0647713502231,6.713410202150344 58.06873535866326,6.694839980036152 58.06609268636982,6.660352424681221 58.07666337554359,6.639129313693571 58.06609268636982,6.620559091579379 58.07402070325014,6.615253313832466 58.08855540086408,6.596683091718273 58.08459139242392,6.55688975861643 58.11101811535834,6.554236869742974 58.11894613223867,6.586071536224448 58.12555281297227,6.623211980452835 58.157264880493585,6.623211980452835 58.17840625884112,6.694839980036152 58.17576358654768,6.6709639801750455 58.190298284161614,6.700145757783064 58.202190309482106,6.742591979758362 58.2140823348026,6.7452448686318185 58.22201035168292,6.769120868492925 58.232581040856694,6.811567090468223 58.24315173003046,6.877889312304628 58.266935780671446,6.869930645684259 58.27089978911161,6.814219979341679 58.26165043608456,6.814219979341679 58.255043755350954,6.777079535113293 58.24447306617718,6.731980424264538 58.224653023976366,6.708104424403432 58.2206890155362,6.686881313415783 58.25107974691079,6.684228424542327 58.26297177223128,6.6709639801750455 58.255043755350954,6.660352424681221 58.27089978911161,6.6709639801750455 58.28147047828538,6.663005313554677 58.29336250360587,6.64708798031394 58.29336250360587,6.64708798031394 58.26561444452472,6.6683110913015895 58.24050905773702,6.649740869187396 58.23654504929686,6.525055092134956 58.247115738470626,6.519749314388044 58.25900776379112,6.493220425653481 58.25240108305751,6.477303092412745 58.255043755350954,6.461385759172008 58.269578452964886,6.456079981425095 58.26297177223128,6.41098087057634 58.266935780671446,6.381799092968322 58.27354246140505,6.4322039815639895 58.28543448672554,6.424245314943621 58.289398495165706,6.368534648601042 58.277506469845214,6.336699982119567 58.289398495165706,6.323435537752286 58.30129052048619,6.3526173153603045 58.3263959072739,6.315476871131918 58.30921853736652,6.26507198253625 58.319789226540294,6.259766204789338 58.342251941034554,6.249154649295513 58.322431898833734,6.169567983091828 58.33828793259439,6.100592872381967 58.36075064708865,6.100592872381967 58.37132133626242,6.068758205900493 58.37264267240914,6.063452428153581 58.384534697729634,6.0501879837863 58.37528534470258,6.023659095051738 58.38849870616979,6.015700428431369 58.40303340378373,6.005088872937545 58.41096142066406,6.023659095051738 58.41888943754438,6.013047539557913 58.429460126718155,5.99447731744372 58.41888943754438,5.986518650823352 58.47042154726651,5.93876665110114 58.47042154726651,5.8777502070116485 58.46381486653291,5.861832873770911 58.47174288341323,5.880403095885105 58.47570689185339,5.824692429542525 58.482313572587,5.787551985314138 58.49024158946733,5.782246207567226 58.5008122786411,5.7955106519345065 58.502133614787816,5.7928577630610505 58.51534697625503,5.768981763199945 58.52856033772224,5.726535541224646 58.53516701845585,5.70265954136354 58.53516701845585,5.649601763894417 58.55498706065667,5.6389902084005925 58.584056455884536,5.625725764033311 58.59330580891158,5.572667986564188 58.648801927073876,5.551444875576538 58.656729943954204,5.538180431209257 58.671264641568136,5.548791986703082 58.693727356062396,5.516957320221608 58.70958338982305,5.519610209095064 58.72015407899682,5.503692875854327 58.743938129637804,5.48777554261359 58.75186614651813,5.501039986980871 58.76375817183862,5.532874653462345 58.77829286945256,5.543486208956169 58.79679157550665,5.538180431209257 58.82057562614763,5.5567506533234505 58.83511032376157,5.559403542196907 58.84568101293534,5.543486208956169 58.85228769366894,5.570015097690732 58.87342907201648,5.601849764172206 58.87739308045664,5.596543986425293 58.89060644192386,5.575320875437644 58.898534458804185,5.575320875437644 58.91703316485828,5.607155541919118 58.92496118173861,5.572667986564188 58.93024652632549,5.559403542196907 58.940817215499266,5.580626653184556 58.96063725770008,5.607155541919118 58.9553519131132,5.623072875159855 58.940817215499266,5.625725764033311 58.91306915641812,5.61246131966603 58.90646247568451,5.644295986147505 58.898534458804185,5.641643097274049 58.903819803391066,5.660213319388242 58.91042648412468,5.684089319249347 58.928925190178774,5.66817198600861 58.940817215499266,5.646948875020961 58.93024652632549,5.6336844306536795 58.93288919861894,5.628378652906767 58.95270924081975,5.591238208678381 58.96988661072713,5.609808430792574 58.97517195531402,5.604502653045662 58.985742644487786,5.56470931994382 58.979135963754175,5.56470931994382 59.016133375862374,5.591238208678381 59.02009738430254,5.575320875437644 59.028025401182866,5.580626653184556 59.03595341806319,5.604502653045662 59.0240613927427,5.625725764033311 59.02009738430254,5.654907541641329 59.00952669512876,5.660213319388242 58.99763466980828,5.681436430375891 58.99763466980828,5.731841318971559 58.97517195531402,5.761023096579576 58.96988661072713,5.763675985453032 58.956673249259914,5.747758652212296 58.951387904673034,5.755717318832664 58.928925190178774,5.737147096718471 58.91439049256484,5.753064429959208 58.89589178651074,5.74510576333884 58.87210773586976,5.753064429959208 58.856251702109105,5.774287540946857 58.88399976119025,5.774287540946857 58.926282517885326,5.787551985314138 58.93949587935254,5.819386651795613 58.92496118173861,5.84856842940363 58.93024652632549,5.851221318277086 58.9553519131132,5.8697915403912795 58.965922602286966,5.893667540252386 58.96724393843369,5.898973317999298 58.95931592155336,5.933460873354228 58.94742389623287,5.936113762227684 58.9553519131132,5.975907095329527 58.9368532070591,5.981212873076439 58.928925190178774,5.965295539835703 58.918354501005005,5.967948428709159 58.90249846724435,5.99447731744372 58.89457045036402,6.010394650684457 58.90249846724435,6.042229317165932 58.89192777807058,6.0501879837863 58.89457045036402,6.121815983369617 58.85228769366894,6.135080427736898 58.856251702109105,6.150997760977635 58.84171700449517,6.17487376083874 58.83511032376157,6.185485316332565 58.84171700449517,6.238543093801688 58.84171700449517,6.2783364269035316 58.83775299605501,6.280989315776988 58.84568101293534,6.246501760422057 58.8496450213755,6.172220871965284 58.847002349082054,6.119163094496161 58.87342907201648,6.103245761255423 58.89457045036402,6.087328428014686 58.8998557949509,6.103245761255423 58.90646247568451,6.103245761255423 58.920997173298446,6.121815983369617 58.93024652632549,6.121815983369617 58.940817215499266,6.143039094357266 58.94874523237959,6.148344872104179 58.9553519131132,6.169567983091828 58.956673249259914,6.1934439829529335 58.971207946873854,6.222625760560952 58.97781462760746,6.257113315915882 58.993670661368114,6.283642204650444 59.00027734210172,6.302212426764637 58.99763466980828,6.368534648601042 59.00424135054188,6.5064848700207625 59.028025401182866,6.527707981008412 59.028025401182866,6.641782202567027 59.050488115677126,6.641782202567027 59.05709479641073,6.525055092134956 59.038596090356634,6.50117909227385 59.03991742650335,6.371187537474498 59.02274005659598,6.342005759866479 59.016133375862374,6.2677248714097065 59.01216936742221,6.201402649573302 58.98970665292795,6.14038620548381 58.956673249259914,6.100592872381967 58.940817215499266,6.097939983508511 58.926282517885326,6.079369761394318 58.918354501005005,6.074063983647406 58.903819803391066,6.047535094912844 58.928925190178774,6.0289648727986505 58.93024652632549,5.99447731744372 58.96724393843369,6.015700428431369 58.98970665292795,6.052840872659756 59.00027734210172,6.087328428014686 58.985742644487786,6.066105317027037 59.005562686688606,6.015700428431369 59.0240613927427,5.991824428570264 59.02009738430254,5.9467253177215085 59.02274005659598,5.914890651240035 59.050488115677126,5.909584873493122 59.06502281329106,5.896320429125842 59.06502281329106,5.885708873632017 59.08484285549188,5.9546839843418775 59.11523358686647,5.981212873076439 59.12184026760007,5.997130206317176 59.11523358686647,6.0395764282924755 59.11523358686647,6.068758205900493 59.131089620627115,6.092634205761598 59.1297682844804,6.089981316888142 59.13769630136073,6.111204427875792 59.14033897365417,6.161609316471459 59.136374965214,6.17487376083874 59.13769630136073,6.161609316471459 59.148266990534495,6.100592872381967 59.145624318241055,6.089981316888142 59.15223099897466,6.076716872520862 59.14430298209433,6.047535094912844 59.13769630136073,6.023659095051738 59.14430298209433,6.0501879837863 59.170729705028755,6.0501879837863 59.17601504961564,6.068758205900493 59.17865772190908,6.068758205900493 59.193192419523015,6.097939983508511 59.1984777641099,6.103245761255423 59.22094047860416,6.1165102056227045 59.213012461723835,6.14038620548381 59.23151116777793,6.177526649712196 59.235475176218095,6.17487376083874 59.24736720153859,6.219972871687496 59.26586590759268,6.2677248714097065 59.2671872437394,6.304865315638093 59.280400605206616,6.323435537752286 59.26982991603285,6.323435537752286 59.2856859497935,6.37649331522141 59.30154198355415,6.416286648323252 59.31211267272793,6.517096425514588 59.31607668116809,6.461385759172008 59.322683361901696,6.424245314943621 59.32400469804841,6.3446586487399355 59.31607668116809,6.328741315499199 59.300220647407436,6.212014205067127 59.27379392447301,6.188138205206021 59.26982991603285,6.153650649851091 59.25925922685908,6.14038620548381 59.27379392447301,6.119163094496161 59.2856859497935,6.1138573167492485 59.30154198355415,6.127121761116529 59.30814866428776,6.172220871965284 59.3041846558476,6.182832427459109 59.30814866428776,6.249154649295513 59.31211267272793,6.2677248714097065 59.29757797511399,6.26507198253625 59.322683361901696,6.246501760422057 59.33457538722219,6.235890204928232 59.34911008483612,6.222625760560952 59.35703810171645,6.214667093940583 59.34911008483612,6.235890204928232 59.327968706488576,6.227931538307864 59.322683361901696,6.1907910940794775 59.31607668116809,6.19609687182639 59.333254051075464,6.214667093940583 59.34118206795579,6.1907910940794775 59.34118206795579,6.17487376083874 59.31475534502137,6.135080427736898 59.31475534502137,6.100592872381967 59.322683361901696,6.100592872381967 59.353074093276284,6.121815983369617 59.36893012703694,6.111204427875792 59.36893012703694,6.082022650267774 59.34646741254268,6.087328428014686 59.33457538722219,6.079369761394318 59.327968706488576,6.0395764282924755 59.330611378782024,6.015700428431369 59.34118206795579,6.023659095051738 59.353074093276284,6.0395764282924755 59.36100211015661,6.047535094912844 59.375536807770544,6.063452428153581 59.38478616079759,6.076716872520862 59.38346482465087,6.089981316888142 59.39403551382464,6.14038620548381 59.40328486685169,6.135080427736898 59.41385555602546,6.177526649712196 59.420462236759064,6.201402649573302 59.440282278959884,6.214667093940583 59.440282278959884,6.209361316193671 59.41517689217218,6.251807538168969 59.468030338041025,6.246501760422057 59.47727969106808,6.251807538168969 59.4970997332689,6.2677248714097065 59.505027750149225,6.3526173153603045 59.51956244776316,6.392410648462147 59.52484779235004,6.405675092829428 59.53409714537709,6.4322039815639895 59.53806115381725,6.469344425792376 59.5473105068443,6.517096425514588 59.5473105068443,6.562195536363342 59.55391718757791,6.538319536502237 59.55788119601807,6.479955981286201 59.555238523724626,6.464038648045464 59.56052386831151,6.4322039815639895 59.555238523724626,6.392410648462147 59.54598917069758,6.368534648601042 59.54598917069758,6.357923093107217 59.53806115381725,6.32078264887883 59.527490464643485,6.2677248714097065 59.51956244776316,6.296906649017725 59.55788119601807,6.307518204511549 59.56448787675168,6.331394204372655 59.58166524665905,6.328741315499199 59.62262666720741,6.342005759866479 59.62659067564758,6.365881759727586 59.64376804555495,6.342005759866479 59.64905339014184,6.336699982119567 59.64376804555495,6.304865315638093 59.63848270096806,6.2862950935239 59.614698650327085,6.294253760144269 59.60412796115331,6.2862950935239 59.592235935832825,6.304865315638093 59.5909145996861,6.304865315638093 59.57637990207217,6.280989315776988 59.5658092128984,6.26507198253625 59.55127451528446,6.2677248714097065 59.53541848152381,6.249154649295513 59.51956244776316,6.201402649573302 59.49842106941561,6.198749760699846 59.482565035654964,6.214667093940583 59.47199434648119,6.182832427459109 59.452174304280376,6.158956427598003 59.42574758134595,6.121815983369617 59.417819564465624,6.119163094496161 59.40592753914513,6.08467553914123 59.409891547585296,6.052840872659756 59.40592753914513,6.044882206039388 59.395356849971364,6.015700428431369 59.40328486685169,6.018353317304825 59.37950081621071,5.99447731744372 59.37685814391726,5.973254206456071 59.35703810171645,5.957336873215334 59.34911008483612,5.941419539974596 59.358359437863164,5.93876665110114 59.37950081621071,5.917543540113491 59.39932085841153,5.909584873493122 59.429711589786116,5.922849317860403 59.43631827051972,5.914890651240035 59.44821029584021,5.930807984480772 59.452174304280376,5.93876665110114 59.44688895969349,5.970601317582615 59.4416036151066,5.997130206317176 59.44821029584021,6.013047539557913 59.44424628740005,6.0501879837863 59.45613831272054,6.158956427598003 59.47067301033447,6.1934439829529335 59.47463701877464,6.19609687182639 59.482565035654964,6.158956427598003 59.48652904409513,6.156303538724547 59.48124369950824,6.063452428153581 59.47199434648119,6.0501879837863 59.47727969106808,5.922849317860403 59.47199434648119,5.885708873632017 59.48124369950824,5.901626206872754 59.48652904409513,5.901626206872754 59.49445706097545,5.880403095885105 59.49445706097545,5.867138651517823 59.505027750149225,5.867138651517823 59.54202516225742,5.84856842940363 59.54334649840414,5.837956873909805 59.52088378390987,5.8140808740487 59.51956244776316,5.84856842940363 59.48652904409513,5.859179984897455 59.46670900189431,5.835303985036349 59.45613831272054,5.774287540946857 59.43631827051972,5.763675985453032 59.440282278959884,5.755717318832664 59.460102321160704,5.739799985591927 59.47463701877464,5.731841318971559 59.47463701877464,5.739799985591927 59.460102321160704,5.737147096718471 59.452174304280376,5.750411541085752 59.44424628740005,5.750411541085752 59.429711589786116,5.70265954136354 59.40724887529185,5.684089319249347 59.40592753914513,5.684089319249347 59.395356849971364,5.774287540946857 59.42442624519923,5.843262651656718 59.43631827051972,5.845915540530174 59.42178357290579,5.867138651517823 59.39403551382464,5.896320429125842 59.37950081621071,5.89101465137893 59.34911008483612,5.8724444292647355 59.33457538722219,5.8697915403912795 59.342503404102516,5.835303985036349 59.342503404102516,5.822039540669069 59.327968706488576,5.811427985175244 59.34646741254268,5.7955106519345065 59.34646741254268,5.798163540807963 59.32664737034186,5.787551985314138 59.322683361901696,5.771634652073401 59.33457538722219,5.755717318832664 59.327968706488576,5.74510576333884 59.342503404102516,5.747758652212296 59.327968706488576,5.726535541224646 59.31475534502137,5.692047985869715 59.300220647407436,5.684089319249347 59.30154198355415,5.660213319388242 59.2856859497935,5.660213319388242 59.26586590759268,5.644295986147505 59.26190189915252,5.6310315417802235 59.26982991603285,5.646948875020961 59.2856859497935,5.641643097274049 59.288328622086944,5.644295986147505 59.31871935346153,5.684089319249347 59.322683361901696,5.686742208122803 59.327968706488576,5.660213319388242 59.342503404102516,5.662866208261698 59.353074093276284,5.6389902084005925 59.38346482465087,5.617767097412942 59.45613831272054,5.609808430792574 59.47067301033447,5.61246131966603 59.490493052535285,5.6336844306536795 59.49313572482873,5.617767097412942 59.49842106941561,5.575320875437644 59.49842106941561,5.559403542196907 59.48917171638857,5.5567506533234505 59.47463701877464,5.538180431209257 59.47199434648119,5.530221764588889 59.44821029584021,5.516957320221608 59.44424628740005,5.463899542752484 59.460102321160704,5.463899542752484 59.432354262079556,5.4718582093728525 59.440282278959884,5.511651542474696 59.42839025363939,5.538180431209257 59.43631827051972,5.543486208956169 59.44821029584021,5.5567506533234505 59.45085296813365,5.5567506533234505 59.468030338041025,5.591238208678381 59.47463701877464,5.591238208678381 59.45613831272054,5.609808430792574 59.44821029584021,5.615114208539486 59.40724887529185,5.591238208678381 59.41385555602546,5.591238208678381 59.40328486685169,5.617767097412942 59.39932085841153,5.625725764033311 59.38346482465087,5.607155541919118 59.375536807770544,5.61246131966603 59.353074093276284,5.609808430792574 59.32664737034186,5.593891097551837 59.322683361901696,5.588585319804925 59.300220647407436,5.56470931994382 59.277757932913175,5.548791986703082 59.26982991603285,5.530221764588889 59.27643659676645,5.519610209095064 59.26982991603285,5.46655243162594 59.277757932913175,5.4692053204993964 59.29229263052711,5.461246653879028 59.32004068960825,5.46655243162594 59.31607668116809,5.48777554261359 59.32664737034186,5.482469764866678 59.333254051075464,5.463899542752484 59.322683361901696,5.458593765005572 59.327968706488576,5.4771639871197655 59.36364478245005,5.4798168759932215 59.3913928415312,5.463899542752484 59.3913928415312,5.463899542752484 59.36100211015661,5.445329320638291 59.33721805951563,5.458593765005572 59.293613966673824,5.426759098524098 59.293613966673824,5.413494654156817 59.28964995823367,5.3922715431691675 59.31475534502137,5.3922715431691675 59.342503404102516,5.381659987675343 59.372894135477104,5.3922715431691675 59.380822152357425,5.405535987536449 59.37685814391726,5.384312876548799 59.40328486685169,5.386965765422255 59.42178357290579,5.368395543308062 59.40724887529185,5.373701321054974 59.387428833091036,5.365742654434606 59.37685814391726,5.365742654434606 59.364966118596776,5.373701321054974 59.33853939566235,5.349825321193869 59.327968706488576,5.333907987953132 59.330611378782024,5.299420432598201 59.364966118596776,5.294114654851289 59.3913928415312,5.283503099357464 59.3913928415312,5.249015544002534 59.432354262079556,5.2384039885087095 59.432354262079556,5.246362655129078 59.44424628740005,5.23044532188834 59.45613831272054,5.249015544002534 59.468030338041025,5.227792433014884 59.468030338041025,5.222486655267972 59.50106374170906,5.243709766255622 59.50106374170906,5.27289154386364 59.48652904409513,5.264932877243271 59.4786010272148,5.302073321471657 59.4786010272148,5.312684876965482 59.49445706097545,5.280850210484008 59.49313572482873,5.227792433014884 59.51691977546972,5.256974210622903 59.51691977546972,5.278197321610552 59.50899175858939,5.278197321610552 59.52352645620332,5.2410568773821655 59.52352645620332,5.2410568773821655 59.54598917069758,5.280850210484008 59.56184520445824,5.28615598823092 59.58827192739266,5.323296432459307 59.60016395271315,5.3153377658389385 59.61866265876725,5.325949321332763 59.62659067564758,5.373701321054974 59.63319735638118,5.371048432181518 59.64508938170167,5.408188876409905 59.653017398582,5.410841765283361 59.61866265876725,5.421453320777186 59.62659067564758,5.440023542891379 59.614698650327085,5.429411987397554 59.61205597803364,5.429411987397554 59.58166524665905,5.445329320638291 59.58166524665905,5.442676431764835 59.60677063344676,5.461246653879028 59.608091969593474,5.4771639871197655 59.62262666720741,5.463899542752484 59.63319735638118,5.41880043190373 59.65566007087544,5.445329320638291 59.66358808775577,5.447982209511747 59.6715161046361,5.429411987397554 59.679444121516426,5.450635098385203 59.690014810690194,5.461246653879028 59.704549508304126,5.4718582093728525 59.69133614683691,5.4798168759932215 59.709834852891014,5.498387098107415 59.71379886133118,5.527568875715433 59.732297567385274,5.535527542335801 59.73097623123855,5.519610209095064 59.71644153362462,5.540833320082713 59.709834852891014,5.535527542335801 59.6715161046361,5.52226309796852 59.659624079315606,5.532874653462345 59.64905339014184,5.511651542474696 59.6345186925279,5.527568875715433 59.62526933950085,5.519610209095064 59.61866265876725,5.519610209095064 59.585629255099214,5.538180431209257 59.569773221338565,5.514304431348152 59.55788119601807,5.506345764727783 59.5473105068443,5.493081320360503 59.55788119601807,5.503692875854327 59.54202516225742,5.506345764727783 59.52484779235004,5.498387098107415 59.51956244776316,5.4692053204993964 59.52352645620332,5.461246653879028 59.54334649840414,5.447982209511747 59.53938248996398,5.455940876132116 59.52352645620332,5.445329320638291 59.51295576702955,5.461246653879028 59.48124369950824,5.46655243162594 59.48917171638857,5.463899542752484 59.51163443088283,5.493081320360503 59.50899175858939,5.514304431348152 59.51691977546972,5.52226309796852 59.53541848152381,5.548791986703082 59.52484779235004,5.540833320082713 59.54202516225742,5.567362208817276 59.55788119601807,5.56470931994382 59.58166524665905,5.585932430931469 59.58827192739266,5.5540977644499945 59.60016395271315,5.5567506533234505 59.61073464188692,5.5540977644499945 59.62923334794102,5.559403542196907 59.63055468408774,5.5540977644499945 59.647732053995114,5.56470931994382 59.66358808775577,5.591238208678381 59.68605080225003,5.609808430792574 59.68340812995659,5.6336844306536795 59.667552096195934,5.665519097135154 59.66358808775577,5.678783541502435 59.667552096195934,5.737147096718471 59.653017398582,5.771634652073401 59.64905339014184,5.790204874187594 59.62130533106069,5.774287540946857 59.608091969593474,5.737147096718471 59.59884261656643,5.800816429681419 59.60280662500659,5.822039540669069 59.61073464188692,5.800816429681419 59.61866265876725,5.7928577630610505 59.64112537326151,5.859179984897455 59.64905339014184,5.893667540252386 59.64112537326151,5.920196428986947 59.64376804555495,5.896320429125842 59.64905339014184,5.930807984480772 59.6715161046361,5.917543540113491 59.67548011307626,5.867138651517823 59.659624079315606,5.859179984897455 59.659624079315606,5.819386651795613 59.64905339014184,5.7928577630610505 59.64905339014184,5.784899096440682 59.66358808775577,5.782246207567226 59.68340812995659,5.808775096301788 59.69133614683691,5.8140808740487 59.701906836010686,5.851221318277086 59.70851351674429,5.867138651517823 59.71644153362462,5.856527096023999 59.724369550504946,5.909584873493122 59.7402255842656,5.928155095607316 59.732297567385274,5.93876665110114 59.734940239678714,5.933460873354228 59.744189592705766,5.9467253177215085 59.75079627343937,5.930807984480772 59.757402954172974,5.936113762227684 59.769294979493466,5.95998976208879 59.754760281879534,5.957336873215334 59.744189592705766,5.981212873076439 59.732297567385274,6.007741761811001 59.7402255842656,6.044882206039388 59.744189592705766,6.087328428014686 59.73626157582544,6.1165102056227045 59.746832264999206,6.14038620548381 59.78118700481396,6.177526649712196 59.789115021694286,6.212014205067127 59.80364971930822,6.227931538307864 59.819505753068874,6.249154649295513 59.83007644224264,6.2783364269035316 59.83007644224264,6.315476871131918 59.83800445912297,6.3552702042337605 59.853860492883626,6.365881759727586 59.871037862791,6.336699982119567 59.853860492883626,6.288947982397356 59.841968467563134,6.2703777602831625 59.841968467563134,6.227931538307864 59.83404045068281,6.188138205206021 59.811577736188546,6.158956427598003 59.80364971930822,6.148344872104179 59.791757693987726,6.1138573167492485 59.77854433252051,6.092634205761598 59.78515101325412,6.08467553914123 59.7587242903197,6.063452428153581 59.76136696261314,6.052840872659756 59.754760281879534,6.015700428431369 59.75211760958609,5.975907095329527 59.76268829875986,5.957336873215334 59.789115021694286,5.978559984202983 59.804971055454935,5.989171539696808 59.82611243380248,5.978559984202983 59.84857514829674,5.99447731744372 59.85782450132379,5.965295539835703 59.853860492883626,5.970601317582615 59.83404045068281,5.957336873215334 59.811577736188546,5.936113762227684 59.79572170242789,5.909584873493122 59.791757693987726,5.883055984758561 59.769294979493466,5.827345318415981 59.789115021694286,5.798163540807963 59.819505753068874,5.75837020770612 59.83404045068281,5.710618207983909 59.82346976150904,5.7159239857308215 59.83007644224264,5.678783541502435 59.83800445912297,5.678783541502435 59.84989648444346,5.700006652490084 59.8459324760033,5.689395096996259 59.853860492883626,5.739799985591927 59.864431182057395,5.750411541085752 59.87632320737789,5.755717318832664 59.86575251820411,5.774287540946857 59.88292988811149,5.763675985453032 59.89085790499182,5.771634652073401 59.91067794719264,5.7928577630610505 59.92521264480657,5.819386651795613 59.931819325540175,5.851221318277086 59.929176653246735,5.8697915403912795 59.94371135086067,5.920196428986947 59.95296070388771,5.9520310954684215 59.945032687007384,5.991824428570264 59.95296070388771,5.997130206317176 59.974102082235255,6.010394650684457 59.97806609067542,5.989171539696808 59.98863677984919,5.981212873076439 60.00052880516968,5.997130206317176 60.02431285581066,6.018353317304825 60.038847553424596,6.015700428431369 60.05073957874509,6.0369235394190195 60.06527427635902,6.087328428014686 60.083772982413116,6.1138573167492485 60.09566500773361,6.135080427736898 60.09302233544016,6.185485316332565 60.103593024613936,6.212014205067127 60.103593024613936,6.235890204928232 60.11548504993442,6.2677248714097065 60.11812772222787,6.315476871131918 60.126055739108196,6.310171093385005 60.1326624198418,6.283642204650444 60.1326624198418,6.283642204650444 60.14983978974917,6.296906649017725 60.16437448736311,6.2783364269035316 60.16437448736311,6.26507198253625 60.15248246204262,6.251807538168969 60.133983755988524,6.198749760699846 60.114163713787704,6.169567983091828 60.11152104149426,6.148344872104179 60.1075570330541,6.135080427736898 60.11019970534754,6.156303538724547 60.11548504993442,6.164262205344915 60.126055739108196,6.124468872243073 60.14191177286885,6.121815983369617 60.15512513433606,6.092634205761598 60.17230250424343,6.092634205761598 60.18287319341721,6.082022650267774 60.190801210297536,6.1058986501288794 60.201371899471305,6.121815983369617 60.2198706055254,6.153650649851091 60.21722793323196,6.156303538724547 60.2132639247918,6.19609687182639 60.22515595011228,6.1934439829529335 60.23704797543277,6.206708427320215 60.246297328459825,6.201402649573302 60.25818935378032,6.233237316054776 60.25818935378032,6.233237316054776 60.27404538754097,6.249154649295513 60.27668805983441,6.238543093801688 60.288580085154905,6.225278649434408 60.29254409359507,6.273030649156619 60.307078791209,6.283642204650444 60.30443611891556,6.323435537752286 60.31500680808933,6.3446586487399355 60.33746952258359,6.37649331522141 60.34143353102375,6.3552702042337605 60.34936154790408,6.3552702042337605 60.3691815901049,6.395063537335603 60.36786025395818,6.453427092551639 60.37182426239834,6.493220425653481 60.38371628771883,6.5117906477676755 60.41014301065326,6.5224022032615 60.4127856829467,6.559542647489886 60.43656973358768,6.578112869604079 60.43656973358768,6.623211980452835 60.42599904441391,6.6683110913015895 60.408821674506534,6.6683110913015895 60.40221499377293,6.641782202567027 60.386358960012274,6.641782202567027 60.37314559854506,6.625864869326291 60.35728956478441,6.625864869326291 60.33746952258359,6.607294647212098 60.32954150570326,6.61260042495901 60.308400127355725,6.5887244250979045 60.27404538754097,6.578112869604079 60.27008137910081,6.562195536363342 60.23704797543277,6.572807091857167 60.223834613965565,6.543625314249149 60.17230250424343,6.548931091996062 60.15248246204262,6.540972425375693 60.14455444516229,6.527707981008412 60.07716630167951,6.540972425375693 60.069238284799184,6.551583980869518 60.07980897397295,6.543625314249149 60.09566500773361,6.55688975861643 60.11019970534754,6.559542647489886 60.1326624198418,6.572807091857167 60.14191177286885,6.572807091857167 60.170981168096716,6.599335980591729 60.20533590791147,6.599335980591729 60.223834613965565,6.620559091579379 60.23704797543277,6.615253313832466 60.25158267304671,6.623211980452835 60.25951068992703,6.615253313832466 60.27668805983441,6.633823535946659 60.29254409359507,6.657699535807765 60.32293482496966,6.652393758060852 60.33746952258359,6.684228424542327 60.386358960012274,6.708104424403432 60.37314559854506,6.724021757644169 60.37710960698522,6.705451535529976 60.398250985332766,6.734633313137994 60.406179002213094,6.755856424125644 60.43260572514752,6.774426646239837 60.433927061294234,6.779732423986749 60.443176414321286,6.806261312721311 60.451104431201614,6.814219979341679 60.46035378422866,6.840748868076242 60.4748884818426,6.888500867798452 60.46696046496227,6.941558645267576 60.470924473402434,6.9919635338632435 60.482816498722926,7.031756866965086 60.47753115413604,7.058285755699648 60.462996456522106,7.079508866687297 60.47885249028276,7.135219533029877 60.496029860190134,7.132566644156421 60.50131520477702,7.076855977813841 60.485459171016366,7.060938644573104 60.48678050716308,7.015839533724349 60.50131520477702,6.986657756116331 60.50395787707046,6.957475978508313 60.4999938686303,6.941558645267576 60.48942317945653,6.9123768676595585 60.496029860190134,6.949517311887945 60.51981391083112,6.944211534141032 60.52642059156472,7.034409755838542 60.583238045873735,7.015839533724349 60.5872020543139,6.965434645128681 60.558132659086034,6.928294200900295 60.53170593615161,6.922988423153383 60.558132659086034,6.944211534141032 60.566060675966355,6.944211534141032 60.57398869284668,6.9070710899126455 60.56473933981964,6.9123768676595585 60.55681132293931,6.9070710899126455 60.53434860844505,6.917682645406471 60.51981391083112,6.888500867798452 60.493387187896694,6.875236423431172 60.482816498722926,6.864624867937347 60.48942317945653,6.832790201455873 60.48942317945653,6.79299686835403 60.4748884818426,6.755856424125644 60.46960313725571,6.7478977575052745 60.45506843964178,6.705451535529976 60.440533742027846,6.70279864665652 60.42996305285407,6.6683110913015895 60.43260572514752,6.660352424681221 60.44449775046801,6.633823535946659 60.448461758908174,6.631170647073203 60.462996456522106,6.663005313554677 60.482816498722926,6.692187091162696 60.493387187896694,6.718715979897257 60.51981391083112,6.700145757783064 60.51981391083112,6.673616869048502 60.49735119633686,6.657699535807765 60.496029860190134,6.636476424820115 60.47885249028276,6.609947536085554 60.470924473402434,6.599335980591729 60.45903244808194,6.559542647489886 60.45506843964178,6.527707981008412 60.456389775788494,6.498526203400394 60.44449775046801,6.4322039815639895 60.428641716707354,6.41098087057634 60.43260572514752,6.395063537335603 60.41410701909342,6.357923093107217 60.4127856829467,6.342005759866479 60.39957232147948,6.296906649017725 60.39164430459916,6.273030649156619 60.3942869768926,6.235890204928232 60.42599904441391,6.243848871548601 60.440533742027846,6.214667093940583 60.470924473402434,6.201402649573302 60.465639128815546,6.222625760560952 60.440533742027846,6.227931538307864 60.418071027533585,6.2783364269035316 60.38371628771883,6.249154649295513 60.3691815901049,6.23058442718132 60.37975227927867,6.198749760699846 60.386358960012274,6.201402649573302 60.3691815901049,6.172220871965284 60.36389624551801,6.14038620548381 60.37182426239834,6.177526649712196 60.346718875610634,6.212014205067127 60.34539753946392,6.219972871687496 60.32954150570326,6.177526649712196 60.32029215267621,6.164262205344915 60.31236413579589,6.17487376083874 60.28461607671474,6.19609687182639 60.28065206827458,6.161609316471459 60.25554668148688,6.153650649851091 60.24233332001966,6.137733316610354 60.25158267304671,6.087328428014686 60.24761866460655,6.047535094912844 60.26215336222048,6.0316177616721065 60.27404538754097,6.013047539557913 60.27008137910081,6.015700428431369 60.25554668148688,6.005088872937545 60.25026133689999,6.005088872937545 60.229119958552445,5.965295539835703 60.2132639247918,5.957336873215334 60.18683720185737,5.9520310954684215 60.1762665126836,5.9546839843418775 60.16437448736311,5.93876665110114 60.15248246204262,5.920196428986947 60.14983978974917,5.922849317860403 60.16437448736311,5.901626206872754 60.16041047892295,5.901626206872754 60.14455444516229,5.896320429125842 60.133983755988524,5.909584873493122 60.114163713787704,5.920196428986947 60.07980897397295,5.914890651240035 60.05866759562541,5.920196428986947 60.061310267918856,5.909584873493122 60.03091953654427,5.896320429125842 60.01506350278361,5.867138651517823 60.001850141316396,5.867138651517823 59.993922124436075,5.824692429542525 59.98203009911558,5.811427985175244 60.00052880516968,5.829998207289437 60.016384838930335,5.800816429681419 60.00845682205001,5.776940429820313 59.979387426822136,5.761023096579576 59.97806609067542,5.755717318832664 60.009778158196724,5.739799985591927 60.00052880516968,5.726535541224646 60.001850141316396,5.721229763477734 60.026955528104104,5.7132710968573654 60.04677557030492,5.7159239857308215 60.071880957092624,5.721229763477734 60.07584496553279,5.753064429959208 60.05734625947869,5.750411541085752 60.066595612505736,5.782246207567226 60.066595612505736,5.7928577630610505 60.05073957874509,5.819386651795613 60.07716630167951,5.837956873909805 60.091700999293444,5.829998207289437 60.091700999293444,5.800816429681419 60.07716630167951,5.7928577630610505 60.091700999293444,5.782246207567226 60.07584496553279,5.755717318832664 60.07320229323935,5.734494207845015 60.09566500773361,5.74510576333884 60.106235696907376,5.72388265235119 60.10227168846721,5.737147096718471 60.12209173066803,5.755717318832664 60.1326624198418,5.72388265235119 60.15512513433606,5.721229763477734 60.17230250424343,5.763675985453032 60.18287319341721,5.75837020770612 60.18947987415081,5.739799985591927 60.18287319341721,5.70265954136354 60.178909184977044,5.697353763616628 60.190801210297536,5.684089319249347 60.16041047892295,5.646948875020961 60.148518453602456,5.609808430792574 60.14455444516229,5.572667986564188 60.15248246204262,5.591238208678381 60.178909184977044,5.604502653045662 60.18551586571065,5.591238208678381 60.20533590791147,5.623072875159855 60.20269323561802,5.665519097135154 60.229119958552445,5.726535541224646 60.23176263084589,5.750411541085752 60.23704797543277,5.737147096718471 60.24761866460655,5.721229763477734 60.243654656166385,5.662866208261698 60.243654656166385,5.623072875159855 60.23572663928606,5.665519097135154 60.266117370660645,5.66817198600861 60.27800939598114,5.660213319388242 60.281973404421294,5.628378652906767 60.25554668148688,5.596543986425293 60.23572663928606,5.596543986425293 60.25026133689999,5.585932430931469 60.25158267304671,5.604502653045662 60.2634746983672,5.6310315417802235 60.27008137910081,5.6336844306536795 60.27800939598114,5.662866208261698 60.3004721104754,5.649601763894417 60.30443611891556,5.654907541641329 60.33482685029015,5.684089319249347 60.34539753946392,5.697353763616628 60.3691815901049,5.74510576333884 60.3691815901049,5.768981763199945 60.39032296845244,5.755717318832664 60.398250985332766,5.739799985591927 60.39164430459916,5.721229763477734 60.403536329919646,5.7132710968573654 60.39560831303932,5.7185768746042775 60.37975227927867,5.686742208122803 60.37314559854506,5.676130652628979 60.36389624551801,5.665519097135154 60.34539753946392,5.652254652767873 60.34275486717047,5.660213319388242 60.37182426239834,5.644295986147505 60.37314559854506,5.641643097274049 60.34275486717047,5.623072875159855 60.3255774972631,5.628378652906767 60.32293482496966,5.623072875159855 60.293865429741786,5.61246131966603 60.28593741286146,5.559403542196907 60.25818935378032,5.575320875437644 60.243654656166385,5.5567506533234505 60.223834613965565,5.535527542335801 60.206657244058185,5.543486208956169 60.206657244058185,5.527568875715433 60.1947652187377,5.501039986980871 60.190801210297536,5.46655243162594 60.18287319341721,5.450635098385203 60.16701715965655,5.463899542752484 60.16437448736311,5.445329320638291 60.133983755988524,5.440023542891379 60.13001974754836,5.426759098524098 60.14455444516229,5.426759098524098 60.16041047892295,5.3922715431691675 60.14983978974917,5.381659987675343 60.13794776442869,5.352478210067325 60.1326624198418,5.360436876687693 60.14455444516229,5.405535987536449 60.16041047892295,5.3949244320426235 60.178909184977044,5.371048432181518 60.17494517653688,5.331255099079676 60.19344388259098,5.336560876826588 60.20533590791147,5.352478210067325 60.20929991635163,5.360436876687693 60.201371899471305,5.384312876548799 60.21722793323196,5.355131098940781 60.229119958552445,5.339213765700044 60.22779862240573,5.3153377658389385 60.21722793323196,5.28615598823092 60.221191941672124,5.280850210484008 60.20533590791147,5.264932877243271 60.201371899471305,5.243709766255622 60.20929991635163,5.246362655129078 60.221191941672124,5.262279988369815 60.22779862240573,5.280850210484008 60.22779862240573,5.28615598823092 60.23704797543277,5.333907987953132 60.25818935378032,5.325949321332763 60.27008137910081,5.299420432598201 60.25818935378032,5.280850210484008 60.27008137910081,5.262279988369815 60.266117370660645,5.275544432737096 60.25818935378032,5.262279988369815 60.24233332001966,5.235751099635253 60.246297328459825,5.2384039885087095 60.26215336222048,5.206569322027235 60.27404538754097,5.203916433153779 60.288580085154905,5.209222210900691 60.31500680808933,5.246362655129078 60.32029215267621,5.296767543724745 60.31500680808933,5.299420432598201 60.30443611891556,5.325949321332763 60.31236413579589,5.325949321332763 60.32689883340982,5.339213765700044 60.32954150570326,5.333907987953132 60.34275486717047,5.3179906547123945 60.32954150570326,5.28615598823092 60.32293482496966,5.278197321610552 60.32689883340982,5.25166843287599 60.32293482496966,5.2384039885087095 60.34143353102375,5.235751099635253 60.35993223707785,5.214527988647603 60.33482685029015,5.203916433153779 60.32689883340982,5.180040433292673 60.34143353102375,5.203916433153779 60.353325556344245,5.193304877659954 60.35993223707785,5.174734655545761 60.353325556344245,5.172081766672305 60.37182426239834,5.219833766394516 60.39164430459916,5.2410568773821655 60.398250985332766,5.259627099496359 60.39032296845244,5.264932877243271 60.3942869768926,5.310031988092026 60.38371628771883,5.302073321471657 60.398250985332766,5.3179906547123945 60.40221499377293,5.3179906547123945 60.41014301065326,5.280850210484008 60.43260572514752,5.278197321610552 60.44714042276145,5.3153377658389385 60.43656973358768,5.3179906547123945 60.443176414321286,5.267585766116727 60.45903244808194,5.278197321610552 60.46696046496227,5.25166843287599 60.4748884818426,5.259627099496359 60.50395787707046,5.299420432598201 60.52642059156472,5.336560876826588 60.51981391083112,5.371048432181518 60.507921885510626,5.39757732091608 60.48942317945653,5.455940876132116 60.443176414321286,5.461246653879028 60.45242576734833,5.511651542474696 60.42203503597375,5.5567506533234505 60.42203503597375,5.5779737643111 60.428641716707354,5.623072875159855 60.42996305285407,5.644295986147505 60.45506843964178,5.665519097135154 60.46035378422866,5.692047985869715 60.451104431201614,5.734494207845015 60.45506843964178,5.739799985591927 60.470924473402434,5.734494207845015 60.47885249028276,5.7185768746042775 60.53963395303194,5.737147096718471 60.55284731449915,5.721229763477734 60.558132659086034,5.737147096718471 60.59645140734095,5.737147096718471 60.65723287009012,5.768981763199945 60.65987554238357,5.7955106519345065 60.65326886164996,5.800816429681419 60.64005550018275,5.829998207289437 60.61362877724832,5.880403095885105 60.62155679412865,5.8724444292647355 60.630806147155695,5.896320429125842 60.625520802568815,5.9546839843418775 60.64005550018275,5.9467253177215085 60.645340844769635,5.901626206872754 60.63609149174258,5.867138651517823 60.63741282788931,5.837956873909805 60.62155679412865,5.800816429681419 60.65987554238357,5.768981763199945 60.667803559263895,5.739799985591927 60.66648222311717,5.739799985591927 60.68233825687783,5.774287540946857 60.70480097137209,5.7955106519345065 60.72858502201307,5.7928577630610505 60.735191702746675,5.771634652073401 60.72065700513274,5.753064429959208 60.70083696293192,5.686742208122803 60.70480097137209,5.676130652628979 60.70083696293192,5.665519097135154 60.72065700513274,5.70265954136354 60.74444105577372,5.70265954136354 60.75369040880077,5.721229763477734 60.755011744947495,5.763675985453032 60.780117131735196,5.774287540946857 60.799937173936016,5.800816429681419 60.81182919925651,5.790204874187594 60.81579320769667,5.768981763199945 60.807865190816344,5.737147096718471 60.76954644256143,5.70265954136354 60.765582434121264,5.662866208261698 60.72726368586635,5.654907541641329 60.73122769430651,5.607155541919118 60.70480097137209,5.575320875437644 60.69687295449176,5.551444875576538 60.70083696293192,5.567362208817276 60.670446231557335,5.575320875437644 60.65987554238357,5.575320875437644 60.64137683632947,5.540833320082713 60.625520802568815,5.519610209095064 60.62948481100898,5.498387098107415 60.62948481100898,5.4771639871197655 60.62155679412865,5.463899542752484 60.60702209651472,5.426759098524098 60.59513007119423,5.3922715431691675 60.603058088074555,5.408188876409905 60.58455938202046,5.3922715431691675 60.58455938202046,5.360436876687693 60.59909407963439,5.368395543308062 60.580595373580294,5.386965765422255 60.57002468440652,5.37635420992843 60.56473933981964,5.336560876826588 60.5620966675262,5.312684876965482 60.55416865064587,5.296767543724745 60.54227662532538,5.278197321610552 60.53963395303194,5.275544432737096 60.55284731449915,5.235751099635253 60.5620966675262,5.227792433014884 60.5872020543139,5.201263544280323 60.61759278568849,5.206569322027235 60.62155679412865,5.172081766672305 60.63344881944914,5.116371100329725 60.66119687853028,5.116371100329725 60.67573157614422,5.12698265582355 60.67837424843766,5.174734655545761 60.66648222311717,5.19595776653341 60.6559115339434,5.209222210900691 60.64005550018275,5.246362655129078 60.61891412183521,5.264932877243271 60.61891412183521,5.227792433014884 60.64401950862291,5.227792433014884 60.6559115339434,5.243709766255622 60.65987554238357,5.1057595448359 60.71669299669258,5.129635544697006 60.71405032439913,5.129635544697006 60.72462101357291,5.190651988786498 60.69819429063848,5.166775988925393 60.72462101357291,5.206569322027235 60.71669299669258,5.209222210900691 60.72462101357291,5.148205766811199 60.732549030453235,5.1057595448359 60.72858502201307,5.063313322860601 60.75104773650733,5.044743100746408 60.777474459441756,4.989032434403828 60.799937173936016,4.986379545530372 60.79200915705569,4.965156434542723 60.79597316549585,4.949239101301986 60.807865190816344,4.970462212289635 60.807865190816344,4.989032434403828 60.81843587999011,5.023519989758759 60.81447187154995,5.012908434264934 60.822399888430276,5.042090211872952 60.81579320769667,5.039437322999496 60.810507863109784,5.060660433987145 60.80125851008273,5.0818835449747946 60.780117131735196,5.1057595448359 60.76293976182782,5.087189322721707 60.78936648476225,5.100453767088988 60.78936648476225,5.129635544697006 60.76690377026799,5.121676878076637 60.78143846788192,5.1561644334315675 60.77615312329503,5.172081766672305 60.76293976182782,5.246362655129078 60.73915571118684,5.2410568773821655 60.74708372806717,5.262279988369815 60.74708372806717,5.278197321610552 60.73915571118684,5.278197321610552 60.73122769430651,5.294114654851289 60.735191702746675,5.3179906547123945 60.73122769430651,5.349825321193869 60.70612230751881,5.349825321193869 60.69819429063848,5.331255099079676 60.69687295449176,5.355131098940781 60.667803559263895,5.357783987814237 60.65326886164996,5.3922715431691675 60.63741282788931,5.39757732091608 60.64005550018275,5.373701321054974 60.6559115339434,5.357783987814237 60.67969558458438,5.381659987675343 60.67176756770406,5.445329320638291 60.63344881944914,5.463899542752484 60.64137683632947,5.386965765422255 60.67969558458438,5.389618654295711 60.69819429063848,5.410841765283361 60.69423028219832,5.440023542891379 60.67176756770406,5.463899542752484 60.65723287009012,5.4692053204993964 60.67176756770406,5.445329320638291 60.68233825687783,5.445329320638291 60.690266273758155,5.424106209650642 60.70215829907865,5.447982209511747 60.70612230751881,5.450635098385203 60.71669299669258,5.41880043190373 60.70876497981225,5.37635420992843 60.732549030453235,5.386965765422255 60.74972640036061,5.368395543308062 60.73915571118684,5.347172432320413 60.74444105577372,5.352478210067325 60.765582434121264,5.339213765700044 60.765582434121264,5.323296432459307 60.74972640036061,5.296767543724745 60.75104773650733,5.267585766116727 60.76293976182782,5.264932877243271 60.76954644256143,5.299420432598201 60.799937173936016,5.3179906547123945 60.799937173936016,5.331255099079676 60.81579320769667,5.357783987814237 60.81843587999011,5.37635420992843 60.81447187154995,5.355131098940781 60.83429191375077,5.352478210067325 60.84618393907126,5.368395543308062 60.864682645125356,5.41880043190373 60.864682645125356,5.4692053204993964 60.875253334299124,5.493081320360503 60.872610662005684,5.511651542474696 60.85411195595158,5.538180431209257 60.86864665356552,5.585932430931469 60.86864665356552,5.591238208678381 60.872610662005684,5.570015097690732 60.87657467044585,5.519610209095064 60.872610662005684,5.485122653740134 60.88450268732617,5.530221764588889 60.91357208255404,5.519610209095064 60.91489341870076,5.463899542752484 60.887145359619616,5.405535987536449 60.87657467044585,5.368395543308062 60.87657467044585,5.3418666545735 60.867325317418796,5.336560876826588 60.82768523301716,5.310031988092026 60.830327905310604,5.312684876965482 60.81579320769667,5.280850210484008 60.81182919925651,5.283503099357464 60.823721224577,5.262279988369815 60.832970577604044,5.214527988647603 60.823721224577,5.209222210900691 60.832970577604044,5.214527988647603 60.85675462824503,5.23044532188834 60.864682645125356,5.203916433153779 60.864682645125356,5.201263544280323 60.830327905310604,5.172081766672305 60.81182919925651,5.1535115445581114 60.81579320769667,5.1535115445581114 60.83429191375077,5.169428877798849 60.842219930631096,5.137594211317374 60.83825592219093,5.116371100329725 60.82768523301716,5.100453767088988 60.830327905310604,5.063313322860601 60.842219930631096,5.058007545113689 60.872610662005684,5.031478656379127 60.895073376499944,5.03678443412604 60.929428116314696,5.020867100885303 60.929428116314696,5.004949767644566 60.951890830808956,5.007602656518022 60.96642552842289,5.039437322999496 60.962461519982725,5.044743100746408 60.95849751154256,5.119023989203181 60.95849751154256,5.116371100329725 60.91489341870076,5.113718211456269 60.89903738494011,5.116371100329725 60.87657467044585,5.134941322443918 60.87921734273929,5.12698265582355 60.89375204035322,5.129635544697006 60.92810678016797,5.134941322443918 60.939998805488464,5.132288433570462 60.962461519982725,5.1535115445581114 60.96642552842289,5.209222210900691 60.962461519982725,5.267585766116727 60.97038953686305,5.3179906547123945 60.99020957906387,5.299420432598201 60.99020957906387,5.246362655129078 60.97038953686305,5.190651988786498 60.96642552842289,5.172081766672305 60.98888824291715,5.185346211039586 60.99285225135731,5.185346211039586 61.007386948971245,5.1641231000519365 60.99020957906387,5.1641231000519365 60.97435354530322,5.116371100329725 60.96378285612944,5.087189322721707 60.97435354530322,5.087189322721707 60.982281562183545,5.042090211872952 60.97831755374338,5.026172878632215 61.01135095741141,5.042090211872952 61.0166363019983,5.026172878632215 61.02456431887862,5.047395989619864 61.02852832731878,5.023519989758759 61.03117099961223,5.044743100746408 61.049669705666325,5.042090211872952 61.06024039484009,5.068619100607513 61.06420440328026,5.0818835449747946 61.069489747867145,5.14024710019083 61.072132420160585,5.1561644334315675 61.08138177318763,5.166775988925393 61.069489747867145,5.185346211039586 61.069489747867145,5.203916433153779 61.077417764747466,5.23044532188834 61.06552573942698,5.294114654851289 61.06552573942698,5.296767543724745 61.047027033372885,5.325949321332763 61.03909901649256,5.3179906547123945 61.03117099961223,5.360436876687693 61.03381367190567,5.408188876409905 61.0232429827319,5.421453320777186 61.027206991172065,5.434717765144466 61.0232429827319,5.463899542752484 61.03117099961223,5.458593765005572 61.01531496585157,5.46655243162594 61.00870828511797,5.4718582093728525 60.98888824291715,5.482469764866678 60.98624557062371,5.482469764866678 61.00870828511797,5.493081320360503 61.01927897429174,5.4798168759932215 61.047027033372885,5.503692875854327 61.05363371410649,5.519610209095064 61.06552573942698,5.559403542196907 61.06420440328026,5.609808430792574 61.08006043704091,5.660213319388242 61.05759772254665,5.681436430375891 61.06024039484009,5.617767097412942 61.085345781627794,5.6389902084005925 61.09988047924173,5.66817198600861 61.10648715997534,5.665519097135154 61.09591647080157,5.731841318971559 61.09855914309501,5.771634652073401 61.107808496122054,5.774287540946857 61.11837918529583,5.800816429681419 61.12630720217616,5.822039540669069 61.11837918529583,5.819386651795613 61.08402444548108,5.798163540807963 61.072132420160585,5.7928577630610505 61.05099104181304,5.808775096301788 61.049669705666325,5.811427985175244 61.069489747867145,5.832651096162893 61.077417764747466,5.845915540530174 61.09591647080157,5.8724444292647355 61.091952462361405,5.880403095885105 61.09988047924173,5.851221318277086 61.1104511684155,5.885708873632017 61.11837918529583,5.89101465137893 61.1289498744696,5.989171539696808 61.1289498744696,6.042229317165932 61.10648715997534,6.060799539280125 61.114415176855665,6.08467553914123 61.10648715997534,6.132427538863442 61.11837918529583,6.188138205206021 61.114415176855665,6.214667093940583 61.09988047924173,6.273030649156619 61.09988047924173,6.323435537752286 61.08006043704091,6.299559537891181 61.04570569722616,6.26507198253625 61.03909901649256,6.2862950935239 61.03381367190567,6.310171093385005 61.041741688786,6.315476871131918 61.049669705666325,6.342005759866479 61.072132420160585,6.41098087057634 61.069489747867145,6.41098087057634 61.05363371410649,6.381799092968322 61.027206991172065,6.381799092968322 61.0166363019983,6.3473115376133915 61.01135095741141,6.413633759449796 61.007386948971245,6.397716426209059 61.0232429827319,6.418939537196708 61.03909901649256,6.4322039815639895 61.069489747867145,6.456079981425095 61.08006043704091,6.5064848700207625 61.08402444548108,6.540972425375693 61.1038444876819,6.575459980730623 61.09988047924173,6.5887244250979045 61.09063112621468,6.607294647212098 61.12630720217616,6.628517758199747 61.15273392511058,6.631170647073203 61.17387530345812,6.641782202567027 61.17519663960484,6.6656582024281334 61.16066194199091,6.700145757783064 61.14876991667042,6.766467979619469 61.14876991667042,6.777079535113293 61.142163235936806,6.816872868215135 61.147448580523694,6.851360423570066 61.14480590823025,6.877889312304628 61.11837918529583,6.875236423431172 61.091952462361405,6.944211534141032 61.07609642860075,6.946864423014489 61.08798845392124,6.976046200622506 61.08402444548108,7.005227978230524 61.06552573942698,7.013186644850893 61.03117099961223,7.02910397809163 61.0166363019983,7.034409755838542 60.99681625979748,7.013186644850893 60.97831755374338,6.930947089773751 60.959818847689284,6.928294200900295 60.94792682236879,6.891153756671908 60.94132014163518,6.869930645684259 60.93207078860814,6.859319090190434 60.90696540182043,6.840748868076242 60.87921734273929,6.875236423431172 60.90168005723355,6.888500867798452 60.929428116314696,6.928294200900295 60.939998805488464,6.978699089495962 60.962461519982725,6.9946164227367 60.959818847689284,7.031756866965086 60.97171087300977,7.047674200205823 60.98624557062371,7.092773311054579 60.9545335031024,7.1458310885237015 60.939998805488464,7.156442644017527 60.91357208255404,7.124607977536052 60.875253334299124,7.121955088662596 60.86071863668519,7.140525310776789 60.867325317418796,7.169707088384808 60.90168005723355,7.180318643878632 60.90300139338027,7.196235977119369 60.92150009943437,7.193583088245913 60.937356133195024,7.180318643878632 60.95056949466223,7.161748421764439 60.95585483924912,7.124607977536052 60.95585483924912,7.08481464443421 60.97435354530322,7.058285755699648 61.020600310438454,7.039715533585454 61.03381367190567,7.034409755838542 61.047027033372885,7.047674200205823 61.06024039484009,7.034409755838542 61.08402444548108,7.026451089218174 61.08798845392124,7.039715533585454 61.1038444876819,7.0662444223200165 61.1104511684155,7.079508866687297 61.10648715997534,7.137872421903333 61.1104511684155,7.159095532890983 61.11837918529583,7.217459088107018 61.11837918529583,7.236029310221212 61.13291388290976,7.241335087968125 61.147448580523694,7.259905310082317 61.14480590823025,7.326227531918722 61.12102185758927,7.358062198400196 61.12630720217616,7.3819381982613015 61.12234319373599,7.392549753755127 61.1104511684155,7.421731531363145 61.10252315153517,7.450913308971162 61.1038444876819,7.472136419958812 61.09988047924173,7.453566197844618 61.11177250456222,7.424384420236601 61.1104511684155,7.416425753616232 61.13291388290976,7.371326642767476 61.14480590823025,7.421731531363145 61.15537659740402,7.456219086718074 61.17519663960484,7.472136419958812 61.17783931189828,7.517235530807566 61.19105267336549,7.578251974897059 61.19369534565894,7.604780863631621 61.19105267336549,7.64722708560692 61.20558737097943,7.657838641100744 61.224086077033526,7.673755974341481 61.21747939629992,7.6976319742025865 61.22012206859336,7.710896418569868 61.22805008547369,7.69497908532913 61.23597810235402,7.68171464096185 61.232014093913854,7.649879974480376 61.24258478308762,7.633962641239639 61.23069275776713,7.6233510857458135 61.21351538785976,7.5437644195421285 61.20823004327287,7.50131819756683 61.209551379419594,7.48009508657918 61.201623362539266,7.432343086856969 61.1976593540991,7.392549753755127 61.20558737097943,7.379285309387845 61.26504749758188,7.360715087273652 61.27033284216877,7.35540930952674 61.28090353134254,7.3129630875514415 61.29543822895647,7.3129630875514415 61.299402237396635,7.360715087273652 61.31129426271713,7.397855531502039 61.3350783133581,7.392549753755127 61.35621969170565,7.437648864603881 61.39453843996056,7.477442197705724 61.40510912913433,7.493359530946462 61.43549986050892,7.511929753060654 61.44871322197613,7.538458641795216 61.451355894269575,7.594169308137796 61.477782617204,7.599475085884708 61.48835330637777,7.583557752643971 61.49760265940482,7.549070197289041 61.473818608763835,7.503971086440286 61.45267723041629,7.442954642350793 61.44078520509581,7.437648864603881 61.41039447372122,7.405814198122407 61.406430465281055,7.36867375389402 61.391895767667116,7.360715087273652 61.38000374234663,7.33418619853909 61.3905744315204,7.3076573098045285 61.39453843996056,7.283781309943423 61.40510912913433,7.294392865437247 61.383967750786795,7.342144865159459 61.36811171702614,7.350103531779828 61.34564900253188,7.32092175417181 61.32715029647778,7.26521108782923 61.3033662458368,7.246640865715037 61.299402237396635,7.291739976563791 61.27297551446221,7.326227531918722 61.266368833728606,7.339491976286003 61.25051279996795,7.347450642906372 61.209551379419594,7.35540930952674 61.19369534565894,7.395202642628583 61.181803320338446,7.363367976147108 61.167268622724514,7.326227531918722 61.156697933550745,7.278475532196511 61.16330461428435,7.257252421208861 61.16858995887123,7.26521108782923 61.17783931189828,7.236029310221212 61.181803320338446,7.243987976841581 61.17123263116468,7.188277310499 61.167268622724514,7.172359977258264 61.156697933550745,7.17501286613172 61.142163235936806,7.1458310885237015 61.14480590823025,7.076855977813841 61.13291388290976,7.06359153344656 61.136877891349926,6.999922200483612 61.124985866029434,6.9946164227367 61.10648715997534,6.968087534002137 61.11177250456222,6.944211534141032 61.11177250456222,6.944211534141032 61.12630720217616,6.925641312026839 61.14084189979009,6.960128867381769 61.15273392511058,6.9919635338632435 61.14876991667042,7.047674200205823 61.18708866492533,7.074203088940385 61.1976593540991,7.113996422042227 61.19898069024582,7.169707088384808 61.1976593540991,7.172359977258264 61.204266034832706,7.121955088662596 61.209551379419594,7.11930219978914 61.21351538785976,7.137872421903333 61.246548791527786,7.161748421764439 61.25051279996795,7.17501286613172 61.25844081684828,7.167054199511352 61.269011506022046,7.156442644017527 61.25844081684828,7.140525310776789 61.25844081684828,7.111343533168771 61.2478701276745,7.111343533168771 61.23597810235402,7.095426199928035 61.21351538785976,7.058285755699648 61.20558737097943,7.055632866826192 61.1976593540991,7.021145311471262 61.189731337218774,7.015839533724349 61.181803320338446,6.997269311610156 61.17123263116468,6.9893106449897875 61.159340605844186,6.9097239787861024 61.16066194199091,6.888500867798452 61.17387530345812,6.869930645684259 61.17123263116468,6.840748868076242 61.18576732877861,6.731980424264538 61.179160648045006,6.710757313276888 61.18312465648517,6.697492868909608 61.1976593540991,6.633823535946659 61.209551379419594,6.596683091718273 61.20558737097943,6.580765758477535 61.22805008547369,6.5887244250979045 61.23994211079418,6.625864869326291 61.25051279996795,6.649740869187396 61.266368833728606,6.676269757921958 61.276939522902374,6.676269757921958 61.299402237396635,6.718715979897257 61.3350783133581,6.734633313137994 61.33904232179827,6.742591979758362 61.35225568326548,6.7585093129991 61.40510912913433,6.755856424125644 61.42096516289499,6.734633313137994 61.406430465281055,6.73728620201145 61.39453843996056,6.721368868770713 61.34961301097204,6.692187091162696 61.33772098565155,6.663005313554677 61.31129426271713,6.655046646934309 61.2848675397827,6.572807091857167 61.25183413611467,6.562195536363342 61.266368833728606,6.562195536363342 61.296759565103194,6.551583980869518 61.299402237396635,6.540972425375693 61.27297551446221,6.527707981008412 61.27033284216877,6.498526203400394 61.274296850608934,6.538319536502237 61.26240482528844,6.554236869742974 61.246548791527786,6.543625314249149 61.23069275776713,6.562195536363342 61.212194051713034,6.490567536780025 61.224086077033526,6.493220425653481 61.21351538785976,6.535666647628781 61.20823004327287,6.525055092134956 61.19369534565894,6.543625314249149 61.159340605844186,6.538319536502237 61.15273392511058,6.540972425375693 61.136877891349926,6.477303092412745 61.13027121061632,6.474650203539289 61.114415176855665,6.4295510926905335 61.11177250456222,6.413633759449796 61.11837918529583,6.37649331522141 61.1104511684155,6.299559537891181 61.13423521905648,6.2703777602831625 61.13291388290976,6.222625760560952 61.16066194199091,6.206708427320215 61.16330461428435,6.227931538307864 61.18576732877861,6.214667093940583 61.189731337218774,6.19609687182639 61.17783931189828,6.182832427459109 61.16066194199091,6.14038620548381 61.15273392511058,6.119163094496161 61.156697933550745,6.055493761533212 61.14480590823025,6.007741761811001 61.164625950431066,6.0289648727986505 61.17519663960484,6.047535094912844 61.17519663960484,6.068758205900493 61.18312465648517,6.082022650267774 61.1976593540991,6.079369761394318 61.21351538785976,6.060799539280125 61.2161580601532,6.0501879837863 61.19369534565894,6.002435984064089 61.18312465648517,5.978559984202983 61.16858995887123,5.930807984480772 61.16066194199091,5.901626206872754 61.16330461428435,5.8724444292647355 61.159340605844186,5.851221318277086 61.167268622724514,5.824692429542525 61.164625950431066,5.819386651795613 61.189731337218774,5.829998207289437 61.20558737097943,5.819386651795613 61.20823004327287,5.7928577630610505 61.19105267336549,5.800816429681419 61.159340605844186,5.771634652073401 61.16066194199091,5.755717318832664 61.167268622724514,5.72388265235119 61.167268622724514,5.7185768746042775 61.16066194199091,5.72388265235119 61.14480590823025,5.70265954136354 61.136877891349926,5.673477763755523 61.147448580523694,5.649601763894417 61.14876991667042,5.628378652906767 61.14084189979009,5.615114208539486 61.15273392511058,5.609808430792574 61.14084189979009,5.588585319804925 61.12630720217616,5.52226309796852 61.10252315153517,5.503692875854327 61.1038444876819,5.41880043190373 61.072132420160585,5.3922715431691675 61.069489747867145,5.373701321054974 61.09063112621468,5.347172432320413 61.09988047924173,5.349825321193869 61.12630720217616,5.3418666545735 61.13819922749664,5.325949321332763 61.12234319373599,5.283503099357464 61.1104511684155,5.27289154386364 61.12234319373599,5.267585766116727 61.11177250456222,5.249015544002534 61.1038444876819,5.227792433014884 61.10648715997534,5.227792433014884 61.12630720217616,5.19595776653341 61.13291388290976,5.193304877659954 61.14480590823025,5.243709766255622 61.142163235936806,5.262279988369815 61.13027121061632,5.288808877104376 61.136877891349926,5.211875099774147 61.16330461428435,5.185346211039586 61.156697933550745,5.177387544419217 61.147448580523694,5.166775988925393 61.147448580523694,5.111065322582813 61.164625950431066,5.0765777672278825 61.167268622724514,5.0765777672278825 61.17783931189828,5.097800878215532 61.201623362539266,5.148205766811199 61.20558737097943,5.222486655267972 61.18576732877861,5.256974210622903 61.167268622724514,5.299420432598201 61.17123263116468,5.296767543724745 61.17519663960484,5.262279988369815 61.181803320338446,5.25166843287599 61.19369534565894,5.280850210484008 61.189731337218774,5.299420432598201 61.181803320338446,5.3153377658389385 61.18576732877861,5.262279988369815 61.20558737097943,5.180040433292673 61.224086077033526,5.063313322860601 61.21747939629992,5.010255545391478 61.22012206859336,5.007602656518022 61.224086077033526,5.028825767505671 61.23597810235402,5.087189322721707 61.23597810235402,5.100453767088988 61.232014093913854,5.111065322582813 61.24390611923434,5.100453767088988 61.25844081684828,5.09249510046862 61.24258478308762,5.042090211872952 61.23994211079418,5.007602656518022 61.24258478308762,5.026172878632215 61.257119480701554,5.026172878632215 61.27297551446221,5.007602656518022 61.266368833728606,4.9943382121507405 61.25051279996795,4.98107376778346 61.26108348914172,4.98107376778346 61.2848675397827,5.05004887849332 61.2848675397827,5.055354656240233 61.29147422051631,5.028825767505671 61.29543822895647,5.060660433987145 61.299402237396635,5.116371100329725 61.296759565103194,5.129635544697006 61.288831548222866,5.150858655684655 61.299402237396635,5.132288433570462 61.299402237396635,5.129635544697006 61.30865159042368,5.150858655684655 61.31790094345073,5.1561644334315675 61.30733025427696,5.206569322027235 61.30072357354335,5.225139544141428 61.304687581983515,5.201263544280323 61.31525827115729,5.219833766394516 61.32715029647778,5.19595776653341 61.331114304917946,5.201263544280323 61.34564900253188,5.227792433014884 61.344327666385155,5.235751099635253 61.34961301097204,5.278197321610552 61.34829167482532,5.333907987953132 61.319222279597454,5.355131098940781 61.31790094345073,5.333907987953132 61.33375697721139,5.294114654851289 61.35225568326548,5.355131098940781 61.34961301097204,5.368395543308062 61.36018370014581,5.408188876409905 61.36546904473269,5.4028830986629925 61.3720757254663,5.426759098524098 61.37603973390647,5.442676431764835 61.3720757254663,5.4798168759932215 61.3720757254663,5.532874653462345 61.37075438931958,5.559403542196907 61.36018370014581,5.644295986147505 61.36811171702614,5.660213319388242 61.36018370014581,5.676130652628979 61.36018370014581,5.652254652767873 61.37603973390647,5.570015097690732 61.37075438931958,5.530221764588889 61.38000374234663,5.4771639871197655 61.38000374234663,5.463899542752484 61.37868240619991,5.440023542891379 61.383967750786795,5.39757732091608 61.38264641464007,5.389618654295711 61.3720757254663,5.312684876965482 61.3720757254663,5.28615598823092 61.364147708585975,5.185346211039586 61.35754102785236,5.172081766672305 61.34961301097204,5.169428877798849 61.331114304917946,5.1057595448359 61.32715029647778,5.0765777672278825 61.321864951890895,5.068619100607513 61.33772098565155,5.111065322582813 61.33772098565155,5.111065322582813 61.36811171702614,5.100453767088988 61.36811171702614,5.097800878215532 61.344327666385155,5.047395989619864 61.34564900253188,5.031478656379127 61.36018370014581,5.026172878632215 61.37868240619991,5.031478656379127 61.391895767667116,5.055354656240233 61.40246645684089,5.09249510046862 61.39850244840073,5.100453767088988 61.37603973390647,5.1057595448359 61.38000374234663,5.103106655962444 61.41039447372122,5.166775988925393 61.42757184362859,5.1641231000519365 61.431535852068755,5.121676878076637 61.42492917133515,5.087189322721707 61.42492917133515,5.047395989619864 61.41303714601466,4.9943382121507405 61.40510912913433,4.973115101163091 61.41700115445482,5.004949767644566 61.428893179775315,5.047395989619864 61.43946386894908,5.073924878354426 61.44871322197613,5.121676878076637 61.45267723041629,5.235751099635253 61.45531990270974,5.246362655129078 61.46985460032367,5.235751099635253 61.48174662564416,5.262279988369815 61.48174662564416,5.278197321610552 61.47117593647039,5.349825321193869 61.4592839111499,5.381659987675343 61.46324791959007,5.323296432459307 61.477782617204,5.368395543308062 61.477782617204,5.421453320777186 61.473818608763835,5.429411987397554 61.45796257500318,5.450635098385203 61.4592839111499,5.46655243162594 61.44474921353597,5.538180431209257 61.43946386894908,5.585932430931469 61.44078520509581,5.5567506533234505 61.44474921353597,5.596543986425293 61.45796257500318,5.6336844306536795 61.45531990270974,5.662866208261698 61.46721192803023,5.662866208261698 61.477782617204,5.684089319249347 61.477782617204,5.689395096996259 61.48967464252449,5.7132710968573654 61.493638650964655,5.755717318832664 61.49231731481793,5.763675985453032 61.48571063408433,5.7928577630610505 61.48174662564416,5.7955106519345065 61.46721192803023,5.832651096162893 61.45531990270974,5.856527096023999 61.4592839111499,5.811427985175244 61.473818608763835,5.811427985175244 61.48835330637777,5.761023096579576 61.50156666784498,5.721229763477734 61.50156666784498,5.7159239857308215 61.50553067628514,5.6310315417802235 61.484389297937604,5.625725764033311 61.47117593647039,5.591238208678381 61.46589059188351,5.482469764866678 61.45267723041629,5.445329320638291 61.46985460032367,5.461246653879028 61.473818608763835,5.4771639871197655 61.46589059188351,5.4692053204993964 61.48174662564416,5.495734209233959 61.48571063408433,5.501039986980871 61.493638650964655,5.4692053204993964 61.493638650964655,5.440023542891379 61.48571063408433,5.41880043190373 61.48967464252449,5.355131098940781 61.48571063408433,5.296767543724745 61.49760265940482,5.246362655129078 61.49760265940482,5.219833766394516 61.50553067628514,5.222486655267972 61.51213735701875,5.190651988786498 61.51213735701875,5.169428877798849 61.516101365458915,5.187999099913042 61.52270804619252,5.1588173223050235 61.53460007151301,5.180040433292673 61.531957399219564,5.172081766672305 61.55706278600727,5.214527988647603 61.55442011371383,5.2384039885087095 61.54252808839334,5.296767543724745 61.538564079953176,5.280850210484008 61.55045610527367,5.320643543585851 61.546492096833504,5.3418666545735 61.55706278600727,5.3922715431691675 61.546492096833504,5.39757732091608 61.55045610527367,5.352478210067325 61.56234813059415,5.331255099079676 61.558384122153996,5.262279988369815 61.57291881976793,5.27289154386364 61.57688282820809,5.227792433014884 61.583489508941696,5.203916433153779 61.580846836648256,5.174734655545761 61.59273886196874,5.209222210900691 61.59934554270235,5.2410568773821655 61.59538153426219,5.246362655129078 61.605952223435956,5.299420432598201 61.60727355958268,5.360436876687693 61.59934554270235,5.3949244320426235 61.591417525822024,5.349825321193869 61.583489508941696,5.347172432320413 61.591417525822024,5.333907987953132 61.580846836648256,5.355131098940781 61.57291881976793,5.357783987814237 61.57688282820809,5.450635098385203 61.571597483621204,5.463899542752484 61.58745351738186,5.426759098524098 61.59538153426219,5.389618654295711 61.60727355958268,5.336560876826588 61.613880240316284,5.3153377658389385 61.60991623187612,5.28615598823092 61.611237568022844,5.227792433014884 61.611237568022844,5.1641231000519365 61.603309551142516,5.100453767088988 61.59802420655563,5.09249510046862 61.59273886196874,5.044743100746408 61.58877485352858,5.03678443412604 61.583489508941696,4.9969911010241965 61.580846836648256,4.9943382121507405 61.59802420655563,5.068619100607513 61.603309551142516,5.0765777672278825 61.611237568022844,5.132288433570462 61.611237568022844,5.137594211317374 61.60727355958268,5.19595776653341 61.61520157646301,5.275544432737096 61.61784424875645,5.3179906547123945 61.62973627407694,5.365742654434606 61.625772265636776,5.41880043190373 61.641628299397425,5.336560876826588 61.64030696325071,5.304726210345113 61.636342954810544,5.280850210484008 61.625772265636776,5.222486655267972 61.625772265636776,5.2384039885087095 61.633700282517104,5.148205766811199 61.62973627407694,5.097800878215532 61.63766429095727,4.989032434403828 61.625772265636776,5.007602656518022 61.648234980131036,4.970462212289635 61.6706976946253,4.970462212289635 61.68258971994579,4.986379545530372 61.69448174526628,4.970462212289635 61.71298045132038,4.98107376778346 61.72487247664087,5.007602656518022 61.71694445976054,5.007602656518022 61.723551140494145,4.983726656656916 61.72883648508103,4.991685323277284 61.7394071742548,5.020867100885303 61.74733519113513,5.031478656379127 61.7579058803089,5.05004887849332 61.7579058803089,5.084536433848251 61.75394187186873,5.103106655962444 61.73676450196135,5.1057595448359 61.70505243444005,5.119023989203181 61.706373770586765,5.116371100329725 61.743371182694965,5.148205766811199 61.73147915737447,5.166775988925393 61.71958713205398,5.1561644334315675 61.7024097621466,5.169428877798849 61.701088425999885,5.177387544419217 61.723551140494145,5.193304877659954 61.71958713205398,5.222486655267972 61.72751514893431,5.190651988786498 61.73544316581464,5.148205766811199 61.7394071742548,5.150858655684655 61.75394187186873,5.169428877798849 61.76186988874906,5.19595776653341 61.7579058803089,5.222486655267972 61.76186988874906,5.267585766116727 61.76186988874906,5.299420432598201 61.76979790562939,5.262279988369815 61.77772592250972,5.206569322027235 61.77244057792283,5.190651988786498 61.768476569482665,5.1535115445581114 61.77244057792283,5.132288433570462 61.7579058803089,5.121676878076637 61.76319122489578,5.097800878215532 61.75922721645561,5.097800878215532 61.77640458636299,5.150858655684655 61.80415264544414,5.177387544419217 61.810759326177745,5.219833766394516 61.810759326177745,5.235751099635253 61.816044670764626,5.3179906547123945 61.8266153599384,5.320643543585851 61.830579368378565,5.296767543724745 61.83454337681873,5.323296432459307 61.8451140659925,5.386965765422255 61.84247139369906,5.386965765422255 61.84907807443266,5.299420432598201 61.85700609131299,5.331255099079676 61.875504797367086,5.339213765700044 61.88739682268758,5.386965765422255 61.90721686488839,5.43206487627101 61.917787554062166,5.463899542752484 61.905895528741674,5.511651542474696 61.905895528741674,5.540833320082713 61.90193152030151,5.530221764588889 61.89400350342118,5.543486208956169 61.88739682268758,5.580626653184556 61.897967511861346,5.609808430792574 61.89928884800807,5.646948875020961 61.88739682268758,5.705312430236996 61.88343281424741,5.737147096718471 61.85700609131299,5.776940429820313 61.853042082872825,5.692047985869715 61.84247139369906,5.6336844306536795 61.81208066232446,5.665519097135154 61.810759326177745,5.678783541502435 61.82529402379168,5.70265954136354 61.83454337681873,5.787551985314138 61.84247139369906,5.819386651795613 61.84247139369906,5.859179984897455 61.853042082872825,5.909584873493122 61.85964876360643,5.936113762227684 61.853042082872825,5.978559984202983 61.84907807443266,5.978559984202983 61.830579368378565,5.967948428709159 61.82000867920479,5.970601317582615 61.808116653884305,5.95998976208879 61.788296611683485,5.941419539974596 61.765833897189225,5.909584873493122 61.746013854988405,5.920196428986947 61.73147915737447,5.928155095607316 61.743371182694965,5.9520310954684215 61.75129919957529,5.967948428709159 61.76319122489578,5.99447731744372 61.83718604911217,6.0316177616721065 61.8451140659925,6.127121761116529 61.77640458636299,6.177526649712196 61.76319122489578,6.212014205067127 61.77376191406955,6.214667093940583 61.77772592250972,6.177526649712196 61.78433260324332,6.150997760977635 61.80415264544414,6.082022650267774 61.83454337681873,6.082022650267774 61.8451140659925,6.124468872243073 61.82925803223184,6.161609316471459 61.83454337681873,6.1934439829529335 61.833222040672005,6.251807538168969 61.8451140659925,6.294253760144269 61.8451140659925,6.336699982119567 61.83850738525889,6.379146204094866 61.816044670764626,6.479955981286201 61.80283130929742,6.527707981008412 61.808116653884305,6.562195536363342 61.82925803223184,6.607294647212098 61.8451140659925,6.615253313832466 61.853042082872825,6.578112869604079 61.863612772046594,6.586071536224448 61.86757678048676,6.636476424820115 61.87154078892692,6.686881313415783 61.87154078892692,6.7585093129991 61.863612772046594,6.787691090607117 61.85039941057938,6.806261312721311 61.83454337681873,6.819525757088591 61.86757678048676,6.846054645823154 61.86493410819332,6.84870753469661 61.87154078892692,6.819525757088591 61.875504797367086,6.795649757227486 61.86757678048676,6.766467979619469 61.8768261335138,6.710757313276888 61.87946880580725,6.700145757783064 61.89928884800807,6.673616869048502 61.886075486540854,6.628517758199747 61.89003949498102,6.564848425236798 61.88211147810069,6.540972425375693 61.868898116633474,6.530360869881868 61.85700609131299,6.5224022032615 61.833222040672005,6.413633759449796 61.830579368378565,6.371187537474498 61.84247139369906,6.336699982119567 61.86097009975315,6.315476871131918 61.863612772046594,6.26507198253625 61.85964876360643,6.235890204928232 61.86097009975315,6.177526649712196 61.85039941057938,6.137733316610354 61.846435402139214,6.047535094912844 61.875504797367086,5.957336873215334 61.87154078892692,5.909584873493122 61.88211147810069,5.851221318277086 61.87286212507364,5.829998207289437 61.86097009975315,5.808775096301788 61.85700609131299,5.798163540807963 61.87154078892692,5.771634652073401 61.87154078892692,5.763675985453032 61.87946880580725,5.731841318971559 61.89400350342118,5.811427985175244 61.89928884800807,5.84856842940363 61.895324839567905,5.90427909574621 61.90193152030151,5.973254206456071 61.897967511861346,5.989171539696808 61.90193152030151,5.981212873076439 61.91250220947528,5.896320429125842 61.920430226355606,5.859179984897455 61.91250220947528,5.843262651656718 61.91646621791544,5.806122207428332 61.91646621791544,5.7928577630610505 61.920430226355606,5.721229763477734 61.91250220947528,5.678783541502435 61.90985953718184,5.617767097412942 61.917787554062166,5.604502653045662 61.92175156250233,5.548791986703082 61.92175156250233,5.516957320221608 61.92439423479577,5.501039986980871 61.9323222516761,5.485122653740134 61.92571557094249,5.455940876132116 61.928358243235934,5.458593765005572 61.9389289324097,5.442676431764835 61.940250268556426,5.384312876548799 61.928358243235934,5.3179906547123945 61.90721686488839,5.304726210345113 61.913823545622,5.2410568773821655 61.90721686488839,5.222486655267972 61.913823545622,5.201263544280323 61.89928884800807,5.174734655545761 61.895324839567905,5.150858655684655 61.90985953718184,5.187999099913042 61.91250220947528,5.190651988786498 61.917787554062166,5.166775988925393 61.91646621791544,5.119023989203181 61.917787554062166,5.1561644334315675 61.95610630231708,5.1535115445581114 61.97724768066462,5.172081766672305 61.985175697544946,5.193304877659954 61.98649703369166,5.187999099913042 61.978569016811335,5.193304877659954 61.950820957730194,5.209222210900691 61.94685694929003,5.214527988647603 61.9323222516761,5.227792433014884 61.9323222516761,5.222486655267972 61.948178285436754,5.209222210900691 61.95478496617036,5.203916433153779 61.97724768066462,5.235751099635253 61.97724768066462,5.243709766255622 61.9825330252515,5.280850210484008 61.95610630231708,5.28615598823092 61.948178285436754,5.302073321471657 61.95610630231708,5.275544432737096 61.97724768066462,5.299420432598201 61.985175697544946,5.3179906547123945 61.97460500837118,5.3179906547123945 61.98913970598511,5.333907987953132 61.993103714425274,5.336560876826588 62.01688776506625,5.3418666545735 62.02349444579986,5.389618654295711 62.02349444579986,5.408188876409905 62.012923756626094,5.426759098524098 62.0195304373597,5.41880043190373 62.027458454240026,5.3922715431691675 62.03406513497363,5.336560876826588 62.03538647112035,5.349825321193869 62.04595716029412,5.3418666545735 62.057849185614614,5.310031988092026 62.07634789166871,5.262279988369815 62.08427590854904,5.2410568773821655 62.102774614603135,5.116371100329725 62.10013194230969,5.113718211456269 62.12655866524412,5.1535115445581114 62.12127332065723,5.1588173223050235 62.125237329097395,5.137594211317374 62.145057371298215,5.103106655962444 62.14902137973837,5.095147989342076 62.16619874964575,5.111065322582813 62.16355607735231,5.1057595448359 62.17941211111297,5.095147989342076 62.18337611955313,5.097800878215532 62.1939468087269,5.14024710019083 62.2005534894605,5.1561644334315675 62.18601879184657,5.177387544419217 62.1939468087269,5.180040433292673 62.21376685092771,5.209222210900691 62.205838834047384,5.225139544141428 62.20848150634083,5.227792433014884 62.1939468087269,5.249015544002534 62.17809077496624,5.280850210484008 62.1754481026728,5.283503099357464 62.1569493966187,5.299420432598201 62.1569493966187,5.294114654851289 62.17148409423264,5.325949321332763 62.167520085792475,5.323296432459307 62.152985388178536,5.310031988092026 62.12920133753756,5.325949321332763 62.11466663992363,5.349825321193869 62.11070263148346,5.355131098940781 62.09881060616297,5.3922715431691675 62.09088258928264,5.39757732091608 62.080311900108875,5.429411987397554 62.069741210935106,5.442676431764835 62.07238388322855,5.445329320638291 62.060491857908055,5.4718582093728525 62.057849185614614,5.4692053204993964 62.049921168734286,5.48777554261359 62.03406513497363,5.4718582093728525 62.015566428919534,5.450635098385203 62.00895974818593,5.46655243162594 62.0010317313056,5.493081320360503 62.012923756626094,5.516957320221608 62.04199315185396,5.527568875715433 62.04595716029412,5.519610209095064 62.060491857908055,5.519610209095064 62.07634789166871,5.543486208956169 62.07634789166871,5.572667986564188 62.06577720249494,5.588585319804925 62.07238388322855,5.607155541919118 62.049921168734286,5.617767097412942 62.049921168734286,5.617767097412942 62.07238388322855,5.604502653045662 62.080311900108875,5.572667986564188 62.08427590854904,5.567362208817276 62.09484659772281,5.543486208956169 62.09881060616297,5.482469764866678 62.10013194230969,5.461246653879028 62.09881060616297,5.434717765144466 62.102774614603135,5.429411987397554 62.1133453037769,5.4028830986629925 62.12920133753756,5.434717765144466 62.15562806047198,5.434717765144466 62.17412676652608,5.463899542752484 62.189982800286735,5.485122653740134 62.2005534894605,5.516957320221608 62.18734012799329,5.5567506533234505 62.167520085792475,5.609808430792574 62.16619874964575,5.6389902084005925 62.17412676652608,5.676130652628979 62.13712935441789,5.673477763755523 62.11863064836379,5.721229763477734 62.08691858084248,5.747758652212296 62.09484659772281,5.689395096996259 62.122594656803955,5.697353763616628 62.13580801827116,5.66817198600861 62.17412676652608,5.710618207983909 62.167520085792475,5.737147096718471 62.17941211111297,5.771634652073401 62.17941211111297,5.798163540807963 62.18734012799329,5.798163540807963 62.19791081716706,5.819386651795613 62.19658948102034,5.851221318277086 62.20187482560723,5.883055984758561 62.2005534894605,5.914890651240035 62.18601879184657,5.9520310954684215 62.1569493966187,5.936113762227684 62.13712935441789,5.941419539974596 62.122594656803955,5.933460873354228 62.102774614603135,5.8777502070116485 62.049921168734286,5.843262651656718 62.012923756626094,5.856527096023999 62.004995739745766,5.885708873632017 62.03538647112035,5.901626206872754 62.04199315185396,5.93876665110114 62.07899056396215,5.970601317582615 62.102774614603135,5.975907095329527 62.122594656803955,5.95998976208879 62.13580801827116,5.981212873076439 62.14109336285805,6.010394650684457 62.13977202671133,6.044882206039388 62.10938129533674,6.066105317027037 62.1067386230433,6.087328428014686 62.09088258928264,6.068758205900493 62.069741210935106,6.0501879837863 62.06577720249494,6.0316177616721065 62.04595716029412,6.052840872659756 62.049921168734286,6.066105317027037 62.06181319405478,6.082022650267774 62.05388517717445,6.089981316888142 62.069741210935106,6.1138573167492485 62.07899056396215,6.153650649851091 62.07634789166871,6.177526649712196 62.08427590854904,6.214667093940583 62.07370521937526,6.23058442718132 62.07899056396215,6.246501760422057 62.06841987478838,6.2677248714097065 62.06577720249494,6.2783364269035316 62.07899056396215,6.299559537891181 62.069741210935106,6.288947982397356 62.06445586634822,6.310171093385005 62.057849185614614,6.32078264887883 62.07238388322855,6.310171093385005 62.080311900108875,6.283642204650444 62.08427590854904,6.249154649295513 62.082954572402315,6.249154649295513 62.0882399169892,6.219972871687496 62.08691858084248,6.177526649712196 62.09881060616297,6.150997760977635 62.09088258928264,6.124468872243073 62.10938129533674,6.076716872520862 62.130522673684276,6.074063983647406 62.14109336285805,6.0395764282924755 62.15959206891215,6.007741761811001 62.167520085792475,5.981212873076439 62.189982800286735,5.9520310954684215 62.20187482560723,5.965295539835703 62.20451749790067,5.930807984480772 62.22037353166132,5.970601317582615 62.23094422083509,5.986518650823352 62.22698021239493,5.99447731744372 62.205838834047384,6.018353317304825 62.19658948102034,6.042229317165932 62.20187482560723,6.079369761394318 62.189982800286735,6.119163094496161 62.18734012799329,6.121815983369617 62.2005534894605,6.0395764282924755 62.212445514780995,6.013047539557913 62.21376685092771,6.005088872937545 62.23622956542198,5.95998976208879 62.25076426303591,5.986518650823352 62.26926296909001,6.005088872937545 62.27322697753017,6.233237316054776 62.35647115477361,6.2677248714097065 62.36043516321377,6.318129760005374 62.374969860827704,6.3446586487399355 62.372327188534264,6.3526173153603045 62.352507146333444,6.395063537335603 62.322116414958856,6.418939537196708 62.28908301129083,6.426898203817077 62.26133495220968,6.469344425792376 62.24944292688919,6.487914647906569 62.217730859367876,6.474650203539289 62.212445514780995,6.479955981286201 62.20187482560723,6.498526203400394 62.20451749790067,6.5224022032615 62.18337611955313,6.538319536502237 62.17941211111297,6.55688975861643 62.15959206891215,6.578112869604079 62.145057371298215,6.575459980730623 62.13316534597772,6.543625314249149 62.125237329097395,6.540972425375693 62.1067386230433,6.55688975861643 62.1067386230433,6.559542647489886 62.11730931221707,6.594030202844817 62.122594656803955,6.61260042495901 62.13316534597772,6.5887244250979045 62.167520085792475,6.55688975861643 62.1939468087269,6.596683091718273 62.20187482560723,6.652393758060852 62.189982800286735,6.639129313693571 62.20187482560723,6.594030202844817 62.212445514780995,6.527707981008412 62.20451749790067,6.538319536502237 62.212445514780995,6.498526203400394 62.262656288356396,6.469344425792376 62.27322697753017,6.464038648045464 62.29304701973099,6.445468425931271 62.31154572578509,6.4322039815639895 62.33797244871951,6.397716426209059 62.357792490920325,6.424245314943621 62.3683631800941,6.405675092829428 62.38421921385475,6.418939537196708 62.3934685668818,6.464038648045464 62.40139658376213,6.498526203400394 62.40139658376213,6.551583980869518 62.39082589458836,6.554236869742974 62.364399171653936,6.572807091857167 62.35647115477361,6.575459980730623 62.33797244871951,6.5887244250979045 62.33400844027935,6.5887244250979045 62.35382848248017,6.570154202983711 62.3683631800941,6.578112869604079 62.40139658376213,6.543625314249149 62.406681928349016,6.607294647212098 62.429144642843276,6.676269757921958 62.44103666816376,6.710757313276888 62.45160735733754,6.742591979758362 62.44764334889737,6.742591979758362 62.43310865128343,6.785038201733661 62.429144642843276,6.808914201594767 62.43575132357688,6.859319090190434 62.43178731513672,6.9123768676595585 62.41328860908262,6.88319509005154 62.37893386926787,6.893806645545364 62.3683631800941,6.888500867798452 62.364399171653936,6.901765312165733 62.349864474040004,6.917682645406471 62.34590046559984,6.917682645406471 62.32343775110557,6.954823089634857 62.307581717344924,6.962781756255225 62.28908301129083,7.005227978230524 62.285119002850664,6.997269311610156 62.270584305236724,7.005227978230524 62.24283624615558,6.999922200483612 62.21376685092771,7.015839533724349 62.19791081716706,7.015839533724349 62.18205478340641,6.9893106449897875 62.167520085792475,6.933599978647207 62.13316534597772,6.928294200900295 62.12127332065723,6.867277756810803 62.0882399169892,6.875236423431172 62.080311900108875,6.93890575639412 62.1067386230433,6.986657756116331 62.09484659772281,7.005227978230524 62.08427590854904,7.06359153344656 62.08691858084248,7.098079088801491 62.09484659772281,7.121955088662596 62.1133453037769,7.140525310776789 62.11466663992363,7.177665755005176 62.1067386230433,7.196235977119369 62.09616793386952,7.206847532613194 62.10013194230969,7.188277310499 62.11466663992363,7.148483977397158 62.125237329097395,7.113996422042227 62.122594656803955,7.074203088940385 62.09881060616297,7.034409755838542 62.09484659772281,6.960128867381769 62.11466663992363,6.986657756116331 62.14109336285805,7.034409755838542 62.16619874964575,7.039715533585454 62.18601879184657,7.034409755838542 62.20451749790067,7.039715533585454 62.22037353166132,7.034409755838542 62.27322697753017,7.04236842245891 62.277190985970336,7.076855977813841 62.279833658263776,7.106037755421859 62.27454831367689,7.129913755282965 62.2811549944105,7.172359977258264 62.26133495220968,7.217459088107018 62.26133495220968,7.2227648658539305 62.25340693532935,7.259905310082317 62.28379766670394,7.3076573098045285 62.2811549944105,7.32092175417181 62.287761675144104,7.350103531779828 62.26926296909001,7.363367976147108 62.26926296909001,7.392549753755127 62.25076426303591,7.41111997586932 62.232265556981815,7.429690197983513 62.234908229275256,7.416425753616232 62.2441575823023,7.429690197983513 62.25076426303591,7.363367976147108 62.2811549944105,7.344797754032915 62.29304701973099,7.3076573098045285 62.29568969202443,7.283781309943423 62.29172568358427,7.246640865715037 62.297011028171156,7.217459088107018 62.285119002850664,7.17501286613172 62.285119002850664,7.1458310885237015 62.29568969202443,7.124607977536052 62.297011028171156,7.092773311054579 62.29304701973099,7.087467533307666 62.30097503661131,7.060938644573104 62.307581717344924,7.005227978230524 62.307581717344924,6.9893106449897875 62.31154572578509,6.962781756255225 62.32608042339902,6.930947089773751 62.374969860827704,6.984004867242875 62.374969860827704,6.986657756116331 62.38289787770803,6.957475978508313 62.386861886148196,6.941558645267576 62.42518063440311,6.885847978924996 62.44764334889737,6.869930645684259 62.459535374217865,6.832790201455873 62.45821403807114,6.811567090468223 62.462178046511305,6.771773757366381 62.459535374217865,6.774426646239837 62.46614205495147,6.808914201594767 62.47010606339163,6.811567090468223 62.481998088712125,6.705451535529976 62.4740700718318,6.694839980036152 62.484640761005565,6.652393758060852 62.46349938265803,6.633823535946659 62.459535374217865,6.609947536085554 62.46614205495147,6.596683091718273 62.45160735733754,6.564848425236798 62.44764334889737,6.535666647628781 62.43310865128343,6.485261759033113 62.429144642843276,6.4295510926905335 62.43178731513672,6.395063537335603 62.417252617522784,6.381799092968322 62.42121662596295,6.392410648462147 62.429144642843276,6.342005759866479 62.43575132357688,6.3552702042337605 62.44367934045721,6.342005759866479 62.45160735733754,6.3526173153603045 62.45821403807114,6.318129760005374 62.462178046511305,6.249154649295513 62.4555713657777,6.227931538307864 62.46746339109819,6.371187537474498 62.47671274412524,6.373840426347954 62.484640761005565,6.403022203955972 62.48860476944573,6.450774203678183 62.49256877788589,6.477303092412745 62.504460803206385,6.5064848700207625 62.49785412247277,6.5224022032615 62.504460803206385,6.540972425375693 62.49653278632606,6.572807091857167 62.49653278632606,6.594030202844817 62.50181813091294,6.601988869465185 62.49389011403261,6.628517758199747 62.49653278632606,6.641782202567027 62.481998088712125,6.6709639801750455 62.484640761005565,6.6656582024281334 62.48860476944573,6.718715979897257 62.49256877788589,6.710757313276888 62.49653278632606,6.660352424681221 62.50181813091294,6.615253313832466 62.504460803206385,6.599335980591729 62.51238882008671,6.623211980452835 62.51899550082032,6.609947536085554 62.52295950926048,6.527707981008412 62.51503149238015,6.525055092134956 62.51635282852688,6.474650203539289 62.51238882008671,6.46669153691892 62.51635282852688,6.519749314388044 62.526923517700645,6.540972425375693 62.524280845407205,6.586071536224448 62.53088752614081,6.575459980730623 62.5427795514613,6.538319536502237 62.5427795514613,6.448121314804727 62.53088752614081,6.371187537474498 62.53485153458097,6.342005759866479 62.53088752614081,6.251807538168969 62.52824485384736,6.2862950935239 62.54145821531458,6.2703777602831625 62.549386232194905,6.273030649156619 62.5612782575154,6.251807538168969 62.58109829971622,6.304865315638093 62.59959700577031,6.334047093246111 62.614131703384245,6.379146204094866 62.60356101421047,6.434856870437446 62.614131703384245,6.450774203678183 62.59034765274326,6.450774203678183 62.567884938249,6.461385759172008 62.567884938249,6.469344425792376 62.58374097200966,6.453427092551639 62.614131703384245,6.525055092134956 62.61809571182441,6.564848425236798 62.624702392558014,6.570154202983711 62.594311661183426,6.601988869465185 62.59034765274326,6.609947536085554 62.58374097200966,6.596683091718273 62.5612782575154,6.61260042495901 62.554671576781786,6.633823535946659 62.591668988889985,6.631170647073203 62.60356101421047,6.609947536085554 62.61016769494408,6.631170647073203 62.6299877371449,6.649740869187396 62.6299877371449,6.657699535807765 62.60620368650392,6.6709639801750455 62.602239678063754,6.663005313554677 62.633951745585065,6.771773757366381 62.6550931239326,6.798302646100942 62.65245045163916,6.8221786459620475 62.636594417878506,6.877889312304628 62.6114890310908,6.9150297565330145 62.58770498044982,6.9123768676595585 62.57317028283589,6.930947089773751 62.58770498044982,6.917682645406471 62.59959700577031,6.93890575639412 62.614131703384245,6.925641312026839 62.6299877371449,6.9097239787861024 62.633951745585065,6.9070710899126455 62.647165107052274,6.960128867381769 62.65245045163916,6.9946164227367 62.65112911549244,7.047674200205823 62.6550931239326,7.08481464443421 62.6550931239326,7.08481464443421 62.62866640099818,7.0662444223200165 62.6299877371449,7.026451089218174 62.62205972026457,7.023798200344718 62.614131703384245,7.076855977813841 62.61809571182441,7.090120422181122 62.62205972026457,7.106037755421859 62.57977696356949,7.124607977536052 62.57581295512933,7.132566644156421 62.55731424907523,7.121955088662596 62.5427795514613,7.124607977536052 62.526923517700645,7.140525310776789 62.52031683696704,7.148483977397158 62.53749420687441,7.1458310885237015 62.57977696356949,7.124607977536052 62.591668988889985,7.124607977536052 62.60620368650392,7.1458310885237015 62.614131703384245,7.1431781996502455 62.62602372870474,7.167054199511352 62.6299877371449,7.198888865992825 62.62205972026457,7.233376421347756 62.61016769494408,7.254599532335405 62.62205972026457,7.286434198816879 62.607525022650634,7.326227531918722 62.60620368650392,7.331533309665634 62.61016769494408,7.360715087273652 62.60620368650392,7.379285309387845 62.57317028283589,7.416425753616232 62.5612782575154,7.434995975730425 62.549386232194905,7.448260420097706 62.53088752614081,7.474789308832268 62.53485153458097,7.474789308832268 62.54542222375474,7.525194197427935 62.53353019843425,7.546417308415585 62.49653278632606,7.564987530529778 62.49653278632606,7.559681752782866 62.53353019843425,7.586210641517427 62.5427795514613,7.657838641100744 62.54674355990146,7.663144418847656 62.56392092980884,7.687020418708762 62.569206274395725,7.748036862798254 62.56524226595556,7.7851773070266415 62.571848946689165,7.7825244181531845 62.57713429127605,7.750689751671711 62.57713429127605,7.732119529557517 62.58374097200966,7.6604915299742 62.57713429127605,7.655185752227288 62.571848946689165,7.549070197289041 62.55335024063507,7.5437644195421285 62.55731424907523,7.493359530946462 62.56524226595556,7.474789308832268 62.56524226595556,7.456219086718074 62.57713429127605,7.469483531085356 62.58374097200966,7.429690197983513 62.58770498044982,7.405814198122407 62.60620368650392,7.395202642628583 62.6299877371449,7.474789308832268 62.64055842631867,7.496012419819918 62.633951745585065,7.496012419819918 62.61809571182441,7.511929753060654 62.60356101421047,7.503971086440286 62.58374097200966,7.530499975174848 62.58770498044982,7.538458641795216 62.57317028283589,7.546417308415585 62.591668988889985,7.5437644195421285 62.62073838411785,7.506623975313742 62.633951745585065,7.50131819756683 62.66302114081293,7.527847086301391 62.666985149253094,7.549070197289041 62.67491316613342,7.599475085884708 62.678877174573586,7.6206981968723575 62.69341187218752,7.687020418708762 62.69737588062768,7.710896418569868 62.70794656980145,7.832929306748852 62.731730620442434,7.8674168621037825 62.7356946288826,7.907210195205625 62.731730620442434,7.925780417319818 62.723802603562106,7.9416977505605555 62.723802603562106,7.931086195066731 62.73833730117604,7.95230930605438 62.743622645762926,7.997408416903135 62.73965863732276,8.031895972258067 62.72908794814899,8.037201750004979 62.723802603562106,8.08495374972719 62.709267905948174,8.095565305221013 62.709267905948174,8.10617686071484 62.69737588062768,8.116788416208664 62.701339889067846,8.122094193955576 62.686805191453914,8.143317304943224 62.68284118301375,8.140664416069768 62.70530389750801,8.130052860575944 62.71587458668178,8.111482638461752 62.72115993126866,8.108829749588295 62.72908794814899,8.018631527890784 62.75022932649653,8.018631527890784 62.75551467108341,8.066383527612995 62.77004936869735,8.066383527612995 62.776656049430954,7.968226639295118 62.766085360257186,7.928433306193274 62.77004936869735,7.671103085468025 62.72115993126866,7.55702886390941 62.6986972167744,7.50131819756683 62.686805191453914,7.450913308971162 62.68284118301375,7.440301753477337 62.69737588062768,7.413772864742776 62.69076919989408,7.352756420653284 62.69076919989408,7.347450642906372 62.6986972167744,7.384591087134758 62.70794656980145,7.419078642489688 62.70794656980145,7.413772864742776 62.71983859512194,7.392549753755127 62.71983859512194,7.416425753616232 62.72776661200227,7.36867375389402 62.731730620442434,7.366020865020564 62.73833730117604,7.413772864742776 62.746265318056366,7.450913308971162 62.75551467108341,7.594169308137796 62.77797738557767,7.679061752088394 62.776656049430954,7.721507974063693 62.79251208319161,7.668450196594569 62.78458406631128,7.671103085468025 62.79251208319161,7.633962641239639 62.79251208319161,7.6206981968723575 62.788548074751446,7.503971086440286 62.77797738557767,7.450913308971162 62.77004936869735,7.376632420514389 62.76212135181702,7.251946643461949 62.743622645762926,7.1431781996502455 62.734373292735874,7.06359153344656 62.72908794814899,7.015839533724349 62.723802603562106,6.984004867242875 62.723802603562106,6.968087534002137 62.7356946288826,6.986657756116331 62.73965863732276,6.9946164227367 62.75815734337686,6.968087534002137 62.77797738557767,6.9893106449897875 62.78722673860472,6.978699089495962 62.79251208319161,7.015839533724349 62.81101078924571,7.015839533724349 62.81761746997931,7.0688973111934725 62.8295094952998,7.092773311054579 62.8295094952998,7.108690644295315 62.8229028145662,7.076855977813841 62.821581478419475,7.076855977813841 62.81497479768587,7.106037755421859 62.81233212539242,7.156442644017527 62.818938806126035,7.159095532890983 62.80704678080554,7.198888865992825 62.80308277236538,7.233376421347756 62.8044041085121,7.241335087968125 62.81101078924571,7.20950042148665 62.81101078924571,7.177665755005176 62.8229028145662,7.206847532613194 62.83347350373997,7.185624421625544 62.83347350373997,7.151136866270614 62.841401520620295,7.17501286613172 62.84932953750062,7.140525310776789 62.85197220979406,7.103384866548403 62.8480082013539,7.060938644573104 62.83743751218013,6.9893106449897875 62.83875884832685,7.010533755977437 62.8480082013539,7.005227978230524 62.85725755438095,6.9893106449897875 62.85990022667439,6.9946164227367 62.87179225199488,6.962781756255225 62.87443492428832,6.978699089495962 62.89425496648914,6.952170200761401 62.88764828575553,6.960128867381769 62.89821897492931,6.9070710899126455 62.90218298336947,6.89645953441882 62.9101110002498,6.922988423153383 62.91407500868996,7.021145311471262 62.95239375694487,7.060938644573104 62.970892462998975,7.090120422181122 62.95900043767848,7.100731977674947 62.961643109971924,7.079508866687297 62.973535135292416,7.103384866548403 62.98806983290635,7.121955088662596 62.98146315217274,7.151136866270614 62.98542716061291,7.151136866270614 62.9973191859334,7.17501286613172 62.993355177493235,7.20950042148665 62.993355177493235,7.236029310221212 62.99996185822684,7.2970457543107035 63.00788987510717,7.283781309943423 62.99996185822684,7.246640865715037 62.98939116905307,7.286434198816879 62.9788204798793,7.278475532196511 62.98939116905307,7.3076573098045285 62.99996185822684,7.323574643045266 62.98939116905307,7.315615976424898 62.970892462998975,7.331533309665634 62.973535135292416,7.376632420514389 62.96692845455881,7.384591087134758 62.95900043767848,7.413772864742776 62.95503642923832,7.416425753616232 62.94842974850471,7.442954642350793 62.93653772318422,7.456219086718074 62.92068168942357,7.448260420097706 62.906146991809635,7.429690197983513 62.906146991809635,7.432343086856969 62.89821897492931,7.469483531085356 62.89821897492931,7.485400864326093 62.906146991809635,7.517235530807566 62.906146991809635,7.564987530529778 62.92464569786373,7.588863530390883 62.92464569786373,7.583557752643971 62.93653772318422,7.68171464096185 62.96692845455881,7.718855085190237 62.970892462998975,7.79313597364701 62.95900043767848,7.748036862798254 62.94314440391783,7.710896418569868 62.92464569786373,7.673755974341481 62.89425496648914,7.687020418708762 62.89425496648914,7.721507974063693 62.91275367254324,7.753342640545167 62.92068168942357,7.84088797336922 62.951072420798155,7.8647639732303265 62.944465740064544,7.885987084217976 62.95900043767848,7.939044861687099 62.961643109971924,7.97353241704203 62.970892462998975,8.02128441676424 62.96296444611865,8.034548861131523 62.96560711841209,8.04250752775189 62.951072420798155,8.061077749866083 62.951072420798155,8.071689305359907 62.93653772318422,8.10617686071484 62.928609706303895,8.095565305221013 62.92068168942357,8.11944130508212 62.92068168942357,8.087606638600645 62.88764828575553,8.111482638461752 62.886326949608815,8.10617686071484 62.87972026887521,8.111482638461752 62.85725755438095,8.135358638322856 62.818938806126035,8.172499082551242 62.808368116952266,8.169846193677786 62.80044010007194,8.262697304248753 62.77797738557767,8.310449303970964 62.78458406631128,8.329019526085158 62.766085360257186,8.384730192427737 62.754193334936694,8.400647525668475 62.74758665420309,8.419217747782668 62.717195922828495,8.429829303276492 62.71983859512194,8.429829303276492 62.731730620442434,8.45901108088451 62.72776661200227,8.496151525112897 62.71587458668178,8.501457302859809 62.71983859512194,8.517374636100547 62.67755583842686,8.525333302720915 62.67094915769326,8.549209302582021 62.67491316613342,8.562473746949301 62.69473320833424,8.554515080328933 62.717195922828495,8.52798619159437 62.734373292735874,8.443093747643774 62.75815734337686,8.408606192288843 62.77269204099079,8.339631081578982 62.788548074751446,8.323713748338246 62.8044041085121,8.24412708213456 62.808368116952266,8.222903971146911 62.821581478419475,8.193722193538893 62.82686682300636,8.172499082551242 62.8480082013539,8.156581749310506 62.85725755438095,8.16719330480433 62.86782824355472,8.151275971563594 62.89029095804898,8.16719330480433 62.89821897492931,8.204333749032717 62.906146991809635,8.20168086015926 62.91407500868996,8.156581749310506 62.9101110002498,8.159234638183962 62.91407500868996,8.135358638322856 62.944465740064544,8.053119083245715 62.97485647143914,8.02128441676424 62.9973191859334,7.994755528029679 62.99996185822684,7.997408416903135 63.03167392574815,7.976185305915486 63.03960194262847,7.949656417180924 63.01978190042766,7.981491083662398 63.02770991730799,7.989449750282766 63.0224245727211,7.981491083662398 63.01185388354733,7.949656417180924 62.9973191859334,7.891292861964888 62.98939116905307,7.885987084217976 63.001283194373556,7.899251528585257 63.01185388354733,7.885987084217976 63.023745908867824,7.915168861825993 63.04224461492192,7.954962194927836 63.03960194262847,7.978838194788942 63.048851295655524,7.968226639295118 63.080563363176836,7.978838194788942 63.088491380057164,8.069036416486451 63.110954094551424,8.108829749588295 63.103026077671096,8.111482638461752 63.088491380057164,8.127399971702488 63.088491380057164,8.138011527196312 63.068671337856344,8.124747082829032 63.05281530409569,8.087606638600645 63.05017263180225,8.087606638600645 63.04224461492192,8.130052860575944 63.046208623362084,8.130052860575944 63.03431659804159,8.15392886043705 63.023745908867824,8.172499082551242 63.023745908867824,8.191069304665437 63.01185388354733,8.257391526501841 62.995997849786676,8.241474193261103 62.98146315217274,8.254738637628385 62.970892462998975,8.275961748616034 62.98278448831946,8.302490637350596 62.97749914373258,8.33432530383207 62.96296444611865,8.283920415236402 62.928609706303895,8.289226192983314 62.92068168942357,8.31310219284442 62.91275367254324,8.336978192705526 62.89029095804898,8.29983774847714 62.863864235114555,8.31310219284442 62.863864235114555,8.368812859187 62.886326949608815,8.419217747782668 62.86782824355472,8.45901108088451 62.844044192913735,8.485539969619072 62.84536552906046,8.496151525112897 62.83479483988668,8.517374636100547 62.83743751218013,8.51472174722709 62.85725755438095,8.456358192011054 62.87179225199488,8.42452352552958 62.886326949608815,8.416564858909211 62.90218298336947,8.45901108088451 62.883684277315375,8.490845747365984 62.87972026887521,8.509415969480177 62.86518557126128,8.546556413708565 62.863864235114555,8.578391080190038 62.86782824355472,8.618184413291882 62.83743751218013,8.636754635406074 62.8295094952998,8.650019079773354 62.8295094952998,8.697771079495567 62.81761746997931,8.700423968369023 62.82686682300636,8.65267196864681 62.83875884832685,8.634101746532618 62.83875884832685,8.62614307991225 62.84932953750062,8.628795968785706 62.86518557126128,8.610225746671512 62.87972026887521,8.589002635683864 62.883684277315375,8.541250635961653 62.87839893272849,8.535944858214739 62.886326949608815,8.520027524974003 62.886326949608815,8.49349863623944 62.90086164722275,8.472275525251792 62.90218298336947,8.45901108088451 62.92200302557029,8.429829303276492 62.93257371474406,8.416564858909211 62.95503642923832,8.474928414125248 62.961643109971924,8.50676308060672 62.95767910153176,8.657977746393723 62.970892462998975,8.650019079773354 62.98939116905307,8.607572857798056 62.98939116905307,8.567779524696213 62.98542716061291,8.50676308060672 62.96692845455881,8.461663969757966 62.970892462998975,8.490845747365984 62.99203384134651,8.522680413847459 62.9973191859334,8.594308413430776 63.01978190042766,8.565126635822757 63.01978190042766,8.485539969619072 62.9973191859334,8.419217747782668 62.97485647143914,8.368812859187 62.96692845455881,8.344936859325895 62.98542716061291,8.318407970591332 62.993355177493235,8.34758974819935 63.00788987510717,8.43778796989686 63.00788987510717,8.49349863623944 63.015817891987496,8.469622636378336 63.0224245727211,8.432482192149948 63.015817891987496,8.382077303554281 63.01449655584077,8.34758974819935 63.01978190042766,8.307796415097508 63.00788987510717,8.217598193399997 63.02770991730799,8.214945304526541 63.03431659804159,8.236168415514191 63.05017263180225,8.230862637767279 63.0660286655629,8.191069304665437 63.07924202703011,8.177804860298156 63.088491380057164,8.183110638045068 63.096419396937485,8.159234638183962 63.105668749964536,8.156581749310506 63.12284611987191,8.222903971146911 63.14002348977929,8.241474193261103 63.125488792165356,8.257391526501841 63.110954094551424,8.275961748616034 63.09906206923093,8.307796415097508 63.09245538849733,8.283920415236402 63.084527371617,8.283920415236402 63.07263534629651,8.323713748338246 63.07659935473667,8.326366637211702 63.09509806079077,8.31310219284442 63.103026077671096,8.326366637211702 63.1096327584047,8.273308859742578 63.11756077528503,8.241474193261103 63.14134482592601,8.275961748616034 63.147951506659616,8.33432530383207 63.14398749821945,8.368812859187 63.13209547289896,8.403300414541931 63.133416809045684,8.427176414403036 63.14134482592601,8.432482192149948 63.136059481339124,8.464316858631422 63.133416809045684,8.496151525112897 63.14002348977929,8.504110191733265 63.12945280060552,8.535944858214739 63.136059481339124,8.565126635822757 63.12152478372519,8.589002635683864 63.118882111431745,8.607572857798056 63.09509806079077,8.628795968785706 63.09509806079077,8.62614307991225 63.11491810299158,8.602267080051144 63.1281314644588,8.562473746949301 63.136059481339124,8.567779524696213 63.147951506659616,8.549209302582021 63.158522195833385,8.57043241356967 63.167771548860436,8.644713302026442 63.17173555730059,8.665936413014093 63.17966357418092,8.726952857103583 63.18627025491453,8.742870190344322 63.18230624647437,8.801233745560356 63.18627025491453,8.830415523168377 63.19419827179486,8.936531078106622 63.1968409440883,8.981630188955378 63.20212628867519,8.98693596670229 63.20873296940879,8.838374189788745 63.200804952528465,8.73756441259741 63.19287693564814,8.687159524001743 63.19419827179486,8.676547968507917 63.198162280235024,8.644713302026442 63.18891292720797,8.6049199689246 63.19419827179486,8.6049199689246 63.20609029711535,8.58369685793695 63.200804952528465,8.581043969063494 63.22458900316945,8.57043241356967 63.23515969234322,8.549209302582021 63.24176637307682,8.551862191455477 63.25365839839731,8.52798619159437 63.25497973454404,8.517374636100547 63.27347844059813,8.49349863623944 63.2774424490383,8.496151525112897 63.29197714665223,8.530639080467827 63.28933447435878,8.522680413847459 63.29990516353256,8.57043241356967 63.31179718885305,8.596961302304232 63.310475852706325,8.63940752427953 63.31972520573338,8.657977746393723 63.31576119729321,8.665936413014093 63.32236787802682,8.705729746115935 63.32633188646698,8.713688412736303 63.330295894907145,8.75082885696469 63.33425990334731,8.766746190205428 63.34086658408091,8.8410270786622 63.34483059252108,8.8410270786622 63.352758609401405,8.75082885696469 63.34483059252108,8.708382634989391 63.346151928667794,8.692465301748655 63.36861464316206,8.67389507963446 63.375221323895666,8.665936413014093 63.38711334921616,8.644713302026442 63.3897560215096,8.647366190899898 63.40164804683009,8.660630635267179 63.40957606371042,8.711035523862847 63.417504080590746,8.740217301470866 63.41354007215058,8.732258634850496 63.42146808903091,8.817151078801094 63.42939610591124,8.848985745282569 63.425432097471074,8.864903078523305 63.428074769764514,8.878167522890585 63.417504080590746,8.870208856270217 63.405612055270254,8.891431967257867 63.38711334921616,8.907349300498606 63.38711334921616,8.907349300498606 63.39504136609648,8.8834733006375 63.40957606371042,8.90469641162515 63.408254727563694,8.93122530035971 63.425432097471074,8.960407077967728 63.41354007215058,8.96571285571464 63.402969382976806,9.02142352205722 63.41221873600386,8.978977300081922 63.42146808903091,9.00020041106957 63.428074769764514,8.971018633461552 63.439966795085006,9.00020041106957 63.447894811965334,8.994894633322659 63.462429509579266,9.018770633183763 63.462429509579266,9.02938218867759 63.44657347581861,9.093051521640536 63.439966795085006,9.085092855020168 63.428074769764514,9.095704410513992 63.420146752884186,9.135497743615836 63.420146752884186,9.151415076856573 63.39372002994976,9.148762187983117 63.37654266004239,9.175291076717679 63.37918533233583,9.177943965591135 63.372578651602225,9.130191965868924 63.35672261784157,9.116927521501642 63.34483059252108,9.138150632489292 63.34086658408091,9.095704410513992 63.31840386958665,9.085092855020168 63.29197714665223,9.093051521640536 63.2840491297719,9.130191965868924 63.302547835826,9.127539076995468 63.310475852706325,9.143456410236205 63.31972520573338,9.183249743338047 63.32633188646698,9.204472854325697 63.34086658408091,9.238960409680626 63.330295894907145,9.23630752080717 63.346151928667794,9.268142187288646 63.34879460096124,9.29201818714975 63.36068662628173,9.363646186733067 63.36068662628173,9.469761741671315 63.380506668482546,9.501596408152789 63.39372002994976,9.493637741532421 63.397684038389926,9.453844408430577 63.38711334921616,9.371604853353436 63.375221323895666,9.321199964757769 63.375221323895666,9.25753063179482 63.36729330701534,9.228348854186802 63.372578651602225,9.231001743060258 63.39107735765632,9.215084409819521 63.383149340775994,9.18855552108496 63.39504136609648,9.177943965591135 63.41354007215058,9.18855552108496 63.42939610591124,9.217737298692978 63.4333601143514,9.225695965313346 63.425432097471074,9.233654631933714 63.43600278664484,9.25753063179482 63.4333601143514,9.270795076162102 63.442609467378446,9.284059520529382 63.4333601143514,9.302629742643575 63.439966795085006,9.358340408986155 63.447894811965334,9.371604853353436 63.44657347581861,9.443232852936752 63.46639351801943,9.498943519279333 63.45978683728582,9.501596408152789 63.482249551780086,9.440579964063296 63.473000198753034,9.398133742087998 63.45978683728582,9.376910631100348 63.462429509579266,9.366299075606523 63.455822828845655,9.342423075745419 63.455822828845655,9.347728853492331 63.46903619031287,9.323852853631225 63.47432153489976,9.284059520529382 63.495462913247295,9.273447965035558 63.495462913247295,9.281406631655926 63.47828554333992,9.297323964896663 63.47828554333992,9.284059520529382 63.465072181872706,9.329158631378137 63.465072181872706,9.329158631378137 63.45450149269894,9.297323964896663 63.44657347581861,9.286712409402838 63.455822828845655,9.241613298554082 63.447894811965334,9.225695965313346 63.447894811965334,9.225695965313346 63.455822828845655,9.175291076717679 63.4584655011391,9.180596854464591 63.46639351801943,9.167332410097309 63.482249551780086,9.14610929910966 63.48621356022025,9.201819965452241 63.50339093012762,9.217737298692978 63.515282955448114,9.231001743060258 63.51660429159483,9.254877742921364 63.50339093012762,9.249571965174452 63.490177568660414,9.262836409541732 63.490177568660414,9.27875374278247 63.5086762747145,9.262836409541732 63.50735493856779,9.244266187427538 63.52321097232844,9.29201818714975 63.527174980768606,9.294671076023207 63.515282955448114,9.315894187010855 63.52321097232844,9.323852853631225 63.53378166150221,9.360993297859611 63.55360170370303,9.400786630961454 63.55624437599647,9.384869297720716 63.515282955448114,9.408745297581822 63.49678424939402,9.427315519696016 63.50339093012762,9.408745297581822 63.52585364462188,9.443232852936752 63.537745669942375,9.445885741810208 63.55624437599647,9.485679074912053 63.57210040975713,9.504249297026245 63.5641723928768,9.533431074634262 63.56945773746368,9.562612852242282 63.56152972058336,9.573224407736106 63.53113898920877,9.586488852103386 63.53378166150221,9.575877296609562 63.5641723928768,9.559959963368826 63.57210040975713,9.567918629989194 63.580028426637455,9.544042630128088 63.58399243507762,9.520166630266981 63.580028426637455,9.493637741532421 63.580028426637455,9.517513741393525 63.58663510737106,9.525472408013893 63.599848468838275,9.567918629989194 63.60645514957188,9.599753296470666 63.62098984718581,9.650158185066335 63.62098984718581,9.689951518168177 63.63684588094647,9.724439073523108 63.644773897826795,9.750967962257668 63.644773897826795,9.737703517890388 63.624953855625975,9.71648040690274 63.61438316645221,9.737703517890388 63.61702583874565,9.761579517751494 63.59059911581122,9.753620851131124 63.582671098930895,9.7854555176126 63.57606441819729,9.788108406486057 63.56152972058336,9.809331517473705 63.557565712143195,9.833207517334811 63.5390670060891,9.822595961840985 63.527174980768606,9.804025739726793 63.515282955448114,9.851777739449005 63.50074825783418,9.843819072828635 63.484892224073526,9.904835516918128 63.470357526459594,9.907488405791584 63.45978683728582,9.979116405374901 63.442609467378446,9.957893294387251 63.40164804683009,9.941975961146515 63.372578651602225,9.907488405791584 63.34879460096124,9.880959517057022 63.34483059252108,9.814637295220617 63.31972520573338,9.86238929494283 63.31179718885305,9.891571072550846 63.32633188646698,9.949934627766883 63.34086658408091,9.960546183260707 63.34879460096124,10.000339516362551 63.34483059252108,10.03482707171748 63.34879460096124,10.05605018270513 63.34483059252108,10.074620404819324 63.323689214173534,10.101149293553885 63.32897455876042,10.148901293276097 63.31972520573338,10.16747151539029 63.310475852706325,10.209917737365588 63.32236787802682,10.231140848353238 63.34483059252108,10.146248404402641 63.34483059252108,10.125025293414991 63.352758609401405,10.106455071300797 63.352758609401405,10.085231960313148 63.3712573154555,10.071967515945868 63.3712573154555,10.05605018270513 63.385792013069434,10.064008849325498 63.402969382976806,10.114413737921165 63.425432097471074,10.140942626655727 63.42411076132435,10.18073595975757 63.447894811965334,10.233793737226694 63.45450149269894,10.300115959063099 63.4584655011391,10.34786795878531 63.447894811965334,10.355826625405678 63.43203877820468,10.4088844028748 63.439966795085006,10.443371958229733 63.455822828845655,10.467247958090837 63.45185882040549,10.469900846964293 63.439966795085006,10.499082624572312 63.4333601143514,10.557446179788347 63.42939610591124,10.602545290637103 63.44393080352517,10.615809735004383 63.43864545893828,10.63968573486549 63.44393080352517,10.666214623600052 63.43600278664484,10.767024400791385 63.42939610591124,10.782941734032123 63.41354007215058,10.809470622766685 63.417504080590746,10.804164845019773 63.4333601143514,10.838652400374702 63.4333601143514,10.862528400235808 63.44393080352517,10.899668844464195 63.44657347581861,10.907627511084563 63.45185882040549,10.907627511084563 63.46903619031287,10.897015955590739 63.473000198753034,10.883751511223458 63.465072181872706,10.878445733476546 63.47432153489976,10.838652400374702 63.470357526459594,10.812123511640142 63.470357526459594,10.774983067411753 63.484892224073526,10.756412845297561 63.50074825783418,10.756412845297561 63.51924696388828,10.772330178538297 63.537745669942375,10.835999511501246 63.5390670060891,10.894363066717283 63.5456736868227,10.934156399819125 63.56152972058336,10.907627511084563 63.560208384436635,10.915586177704931 63.56813640131696,10.859875511362352 63.56152972058336,10.870487066856178 63.57210040975713,10.849263955868526 63.57342174590384,10.873139955729634 63.58795644351778,10.899668844464195 63.58399243507762,10.918239066578387 63.58663510737106,10.891710177843827 63.59192045195795,10.934156399819125 63.61041915801204,10.897015955590739 63.61041915801204,10.843958178121614 63.59192045195795,10.80681773389323 63.58399243507762,10.82008217826051 63.580028426637455,10.790900400652491 63.57870709049073,10.767024400791385 63.56813640131696,10.748454178677193 63.565493729023515,10.737842623183369 63.57342174590384,10.72192528994263 63.56152972058336,10.70866084557535 63.56152972058336,10.682131956840788 63.5456736868227,10.647644401485858 63.537745669942375,10.623768401624751 63.54699502296942,10.647644401485858 63.557565712143195,10.666214623600052 63.55624437599647,10.676826179093876 63.580028426637455,10.70070217895498 63.59192045195795,10.70070217895498 63.60645514957188,10.72192528994263 63.62098984718581,10.740495512056825 63.62098984718581,10.780288845158667 63.63684588094647,10.804164845019773 63.6328818725063,10.841305289248158 63.63684588094647,10.857222622488896 63.65534458700056,10.870487066856178 63.65666592314729,10.907627511084563 63.68177130993499,10.931503510945669 63.689699326815315,10.955379510806775 63.70159135213581,11.00047862165553 63.70159135213581,11.011090177149354 63.7134833774563,11.045577732504285 63.709519369016135,11.045577732504285 63.69366333525548,11.11189995434069 63.70819803286941,11.151693287442532 63.70423402442925,11.149040398569076 63.71612604974974,11.186180842797462 63.712162041309575,11.210056842658567 63.7200900581899,11.204751064911655 63.754444798004656,11.239238620266587 63.754444798004656,11.27107328674806 63.76633682332515,11.286990619988796 63.75048078956449,11.329436841964096 63.754444798004656,11.345354175204832 63.76237281488498,11.329436841964096 63.77030083176531,11.371883063939395 63.77294350405875,11.390453286053589 63.78087152093908,11.422287952535061 63.76633682332515,11.440858174649255 63.784835529379244,11.432899508028886 63.79540621855301,11.462081285636906 63.80333423543334,11.4382052857758 63.81126225231367,11.401064841547413 63.81522626075383,11.401064841547413 63.82315427763416,11.432899508028886 63.821832941487436,11.4382052857758 63.832403630661204,11.419635063661605 63.83372496680793,11.3957590638005 63.84825966442186,11.369230175065939 63.83372496680793,11.316172397596816 63.83768897524809,11.30556084210299 63.84825966442186,11.316172397596816 63.852223672862024,11.300255064356078 63.864115698182516,11.334742619711008 63.857509017448905,11.355965730698657 63.864115698182516,11.377188841686307 63.87997173194317,11.348007064078288 63.89318509341038,11.358618619572113 63.91036246331775,11.377188841686307 63.91036246331775,11.369230175065939 63.92093315249153,11.385147508306677 63.94603853927923,11.37453595281285 63.95000254771939,11.342701286331376 63.936789186252184,11.342701286331376 63.92357582478497,11.318825286470272 63.9130051356112,11.329436841964096 63.894506429557104,11.30556084210299 63.87997173194317,11.300255064356078 63.87072237891612,11.268420397874603 63.86807970662268,11.244544398013499 63.86015168974235,11.231279953646217 63.87072237891612,11.220668398152393 63.86279436203579,11.191486620544374 63.85618768130219,11.178222176177094 63.84561699212842,11.13842884307525 63.83768897524809,11.093329732226497 63.83768897524809,11.082718176732671 63.841652983688256,11.072106621238847 63.86279436203579,11.074759510112303 63.883935740383336,11.114552843214145 63.89847043799727,11.127817287581426 63.90639845487759,11.154346176315988 63.90507711873087,11.186180842797462 63.916969144051365,11.204751064911655 63.919611816344805,11.20740395378511 63.936789186252184,11.255155953507323 63.95132388386612,11.279031953368428 63.97642927065382,11.310866619849904 63.96982258992021,11.316172397596816 63.961894573039885,11.3533128418252 63.97378659836038,11.38249461943322 63.967179917626765,11.38249461943322 63.98039327909398,11.401064841547413 63.97775060680054,11.483304396624554 64.0068200020284,11.43024661915543 64.01342668276202,11.443511063522712 64.02135469964234,11.43024661915543 64.02928271652267,11.37453595281285 64.0187120273489,11.363924397319026 64.03853206954972,11.318825286470272 64.03060405266939,11.316172397596816 64.03853206954972,11.279031953368428 64.03456806110955,11.263114620127691 64.02664004422923,11.241891509140043 64.02664004422923,11.233932842519673 64.07156547321775,11.279031953368428 64.07552948165791,11.350659952951744 64.09799219615218,11.387800397180133 64.10327754073906,11.385147508306677 64.11120555761939,11.334742619711008 64.11120555761939,11.310866619849904 64.11516956605955,11.302907953229534 64.10327754073906,11.318825286470272 64.0993135322989,11.30556084210299 64.09138551541857,11.265767509001147 64.07949349009807,11.218015509278937 64.0742081455112,11.204751064911655 64.05174543101693,11.220668398152393 64.02267603578906,11.202098176038199 64.0068200020284,11.164957731809814 63.9936066405612,11.109247065467233 63.984357287534145,11.016395954896268 63.95528789230628,11.011090177149354 63.94603853927923,10.989867066161704 63.94339586698579,10.939462177566037 63.916969144051365,10.920891955451843 63.90507711873087,10.849263955868526 63.88261440423661,10.711313734448806 63.84825966442186,10.6874377345877 63.84561699212842,10.605198179510559 63.809940916166944,10.594586624016735 63.79672755469973,10.647644401485858 63.81522626075383,10.666214623600052 63.81522626075383,10.695396401208068 63.84033164754153,10.753759956424105 63.84825966442186,10.767024400791385 63.84561699212842,10.812123511640142 63.852223672862024,10.849263955868526 63.864115698182516,10.85456973361544 63.87072237891612,10.963338177427143 63.90507711873087,10.971296844047512 63.894506429557104,11.042924843630828 63.87865039579645,11.04823062137774 63.857509017448905,11.066800843491933 63.841652983688256,11.064147954618477 63.83768897524809,10.995172843908616 63.81786893304727,11.008437288275898 63.79540621855301,10.955379510806775 63.74651678112433,10.944767955312951 63.738588764244,10.796206178399403 63.70819803286941,10.774983067411753 63.70819803286941,10.711313734448806 63.69366333525548,10.679479067967332 63.68177130993499,10.626421290498207 63.67516462920138,10.610503957257471 63.66591527617433,10.607851068384015 63.64873790626696,10.557446179788347 63.624953855625975,10.530917291053786 63.62231118333253,10.507041291192682 63.61041915801204,10.45928929147047 63.599848468838275,10.45928929147047 63.59192045195795,10.419495958368627 63.58795644351778,10.419495958368627 63.56813640131696,10.355826625405678 63.57342174590384,10.305421736810011 63.55360170370303,10.233793737226694 63.55624437599647,10.209917737365588 63.54963769526287,10.209917737365588 63.5390670060891,10.156859959896465 63.52321097232844,10.119719515668077 63.50074825783418,10.101149293553885 63.492820240953854,10.045438627211304 63.490177568660414,10.018909738476744 63.492820240953854,9.989727960868725 63.48621356022025,9.98707507199527 63.495462913247295,9.949934627766883 63.495462913247295,9.934017294526146 63.50074825783418,9.907488405791584 63.535102997648934,9.923405739032322 63.54303101452926,9.894223961424302 63.56152972058336,9.899529739171214 63.57342174590384,9.926058627905778 63.582671098930895,9.918099961285408 63.59192045195795,9.854430628322461 63.58663510737106,9.817290184094073 63.61041915801204,9.806678628600249 63.62891786406614,9.859736406069374 63.64080988938663,9.822595961840985 63.647416570120235,9.822595961840985 63.65666592314729,9.801372850853337 63.660629931587444,9.825248850714441 63.67120062076122,9.811984406347161 63.683092646081704,9.851777739449005 63.689699326815315,9.865042183816286 63.67780730149482,9.873000850436654 63.689699326815315,9.918099961285408 63.70159135213581,9.918099961285408 63.69762734369564,9.960546183260707 63.69630600754892,9.936670183399603 63.70819803286941,9.979116405374901 63.7200900581899,9.979116405374901 63.70819803286941,10.07727329369278 63.73066074736367,10.082579071439692 63.738588764244,10.130331071161903 63.75312346185793,10.07727329369278 63.74915945341777,10.037479960590936 63.731982083510395,10.013603960729831 63.72801807507023,10.018909738476744 63.738588764244,10.03482707171748 63.74651678112433,10.040132849464392 63.757087470298096,10.07727329369278 63.76237281488498,10.071967515945868 63.76897949561859,10.117066626794621 63.776907512498916,10.117066626794621 63.784835529379244,10.064008849325498 63.77558617635219,10.029521293970568 63.76237281488498,9.981769294248357 63.754444798004656,9.934017294526146 63.754444798004656,9.91014129466504 63.742552772684164,9.87565373931011 63.734624755803836,9.880959517057022 63.72801807507023,9.846471961702091 63.71876872204318,9.827901739587897 63.722732730483344,9.804025739726793 63.709519369016135,9.748315073384212 63.70423402442925,9.737703517890388 63.69630600754892,9.67403418492744 63.70159135213581,9.663422629433615 63.69366333525548,9.663422629433615 63.67516462920138,9.636893740699055 63.67780730149482,9.591794629850298 63.67384329305466,9.565265741115738 63.65534458700056,9.544042630128088 63.660629931587444,9.575877296609562 63.68573531837515,9.575877296609562 63.709519369016135,9.549348407875 63.7200900581899,9.620976407458317 63.72801807507023,9.623629296331773 63.731982083510395,9.668728407180527 63.738588764244,9.697910184788546 63.754444798004656,9.766885295498406 63.76237281488498,9.804025739726793 63.76105147873826,9.79871996197988 63.76897949561859,9.753620851131124 63.76897949561859,9.71648040690274 63.76237281488498,9.613017740837948 63.757087470298096,9.581183074356474 63.76237281488498,9.562612852242282 63.77294350405875,9.589141740976842 63.787478201672684,9.607711963091035 63.79144221011285,9.607711963091035 63.799370226993176,9.658116851686703 63.809940916166944,9.67403418492744 63.81786893304727,9.663422629433615 63.82315427763416,9.623629296331773 63.81522626075383,9.634240851825599 63.829760958367764,9.666075518307071 63.83372496680793,9.676687073800895 63.844295655981696,9.72974485127002 63.852223672862024,9.721786184649652 63.85618768130219,9.753620851131124 63.864115698182516,9.76423240662495 63.85618768130219,9.804025739726793 63.86015168974235,9.814637295220617 63.857509017448905,9.79871996197988 63.841652983688256,9.697910184788546 63.827118286074324,9.69525729591509 63.81522626075383,9.735050629016932 63.82315427763416,9.769538184371862 63.821832941487436,9.780149739865688 63.829760958367764,9.817290184094073 63.83768897524809,9.817290184094073 63.84825966442186,9.835860406208267 63.852223672862024,9.851777739449005 63.844295655981696,9.865042183816286 63.852223672862024,9.883612405930478 63.852223672862024,9.886265294803934 63.87072237891612,9.859736406069374 63.85618768130219,9.827901739587897 63.872043715062844,9.88891818367739 63.89318509341038,9.923405739032322 63.89847043799727,9.93136440565269 63.89054242111694,9.957893294387251 63.894506429557104,9.926058627905778 63.88261440423661,9.934017294526146 63.872043715062844,10.029521293970568 63.90904112717104,10.111760849047709 63.92357582478497,10.109107960174253 63.92753983322513,10.156859959896465 63.93282517781202,10.186041737504482 63.94075319469235,10.188694626377938 63.92886116937186,10.215223515112502 63.92357582478497,10.220529292859414 63.936789186252184,10.204611959618676 63.93546785010546,10.204611959618676 63.94735987542595,10.225835070606326 63.94735987542595,10.22318218173287 63.959251900746445,10.183388848631026 63.95000254771939,10.188694626377938 63.959251900746445,10.140942626655727 63.94603853927923,10.106455071300797 63.94075319469235,10.10380218242734 63.95793056459972,10.22318218173287 63.99757064900136,10.20195907074522 63.99757064900136,10.106455071300797 63.9632159091866,10.079926182566236 63.96585858148005,10.119719515668077 63.98039327909398,10.098496404680429 63.97775060680054,10.042785738337848 63.961894573039885,10.026868405097112 63.961894573039885,9.955240405513795 63.95000254771939,9.952587516640339 63.959251900746445,9.981769294248357 63.97642927065382,10.002992405236007 63.97642927065382,10.000339516362551 63.99889198514808,10.050744404958218 63.984357287534145,10.050744404958218 63.9936066405612,10.005645294109463 64.0068200020284,10.005645294109463 64.0187120273489,10.029521293970568 64.02664004422923,10.05605018270513 64.01474801890873,10.064008849325498 64.02267603578906,10.03482707171748 64.03456806110955,10.064008849325498 64.03853206954972,10.082579071439692 64.05042409487021,10.061355960452042 64.05438810331037,10.018909738476744 64.08213616239152,10.037479960590936 64.07949349009807,10.026868405097112 64.09799219615218,10.071967515945868 64.10724154917922,10.143595515529185 64.07817215395136,10.252363959340887 64.10063486844561,10.252363959340887 64.11516956605955,10.207264848492132 64.10327754073906,10.175430182010658 64.10327754073906,10.132983960035359 64.11120555761939,10.119719515668077 64.12838292752676,10.156859959896465 64.14556029743413,10.183388848631026 64.1561309866079,10.220529292859414 64.14423896128741,10.228487959479782 64.14820296972758,10.215223515112502 64.16141633119479,10.22318218173287 64.17595102880873,10.186041737504482 64.18387904568905,10.196653292998308 64.20105641559643,10.228487959479782 64.20105641559643,10.252363959340887 64.18520038183577,10.265628403708167 64.18520038183577,10.247058181593975 64.20502042403659,10.281545736948905 64.20502042403659,10.284198625822361 64.19180706256938,10.300115959063099 64.18520038183577,10.308074625683467 64.20105641559643,10.300115959063099 64.2116271047702,10.350520847658766 64.20502042403659,10.36909106977296 64.19180706256938,10.358479514279134 64.17727236495544,10.374396847519872 64.17727236495544,10.39561995850752 64.20105641559643,10.342562181038398 64.21691244935708,10.292157292442731 64.22484046623741,10.273587070328537 64.23408981926445,10.297463070189643 64.24598184458495,10.323991958924204 64.24598184458495,10.358479514279134 64.25787386990544,10.331950625544572 64.26580188678577,10.36909106977296 64.28297925669314,10.406231514001345 64.25390986146527,10.424801736115539 64.25390986146527,10.39561995850752 64.27769391210626,10.406231514001345 64.28165792054642,10.403578625127889 64.29487128201363,10.435413291609365 64.2988352904538,10.435413291609365 64.28562192898659,10.451330624850101 64.27769391210626,10.467247958090837 64.28165792054642,10.448677735976645 64.29090727357347,10.467247958090837 64.29751395430708,10.491123957951944 64.2869432651333,10.507041291192682 64.3054419711874,10.475206624711205 64.2988352904538,10.451330624850101 64.30676330733412,10.45928929147047 64.31469132421445,10.446024847103189 64.32261934109478,10.469900846964293 64.3305473579751,10.451330624850101 64.33979671100215,10.446024847103189 64.35168873632264,10.483165291331574 64.35829541705625,10.565404846408716 64.32790468568166,10.581322179649455 64.33186869412182,10.512347068939594 64.3556527447628,10.509694180066138 64.37283011467018,10.578669290775998 64.3675447700833,10.615809735004383 64.33979671100215,10.650297290359314 64.3556527447628,10.682131956840788 64.36225942549642,10.63968573486549 64.35961675320297,10.610503957257471 64.36622343393658,10.626421290498207 64.37150877852346,10.602545290637103 64.38736481228412,10.573363513029085 64.38340080384395,10.56275195753526 64.38868614843084,10.581322179649455 64.39529282916445,10.56275195753526 64.40322084604477,10.499082624572312 64.39529282916445,10.483165291331574 64.38736481228412,10.451330624850101 64.40718485448494,10.536223068800698 64.4362542497128,10.56275195753526 64.42039821595215,10.586627957396367 64.41643420751198,10.607851068384015 64.392650156871,10.63968573486549 64.39132882072428,10.615809735004383 64.40850619063166,10.642338623738945 64.4111488629251,10.626421290498207 64.41643420751198,10.607851068384015 64.41643420751198,10.605198179510559 64.42436222439231,10.581322179649455 64.42436222439231,10.549487513167978 64.43889692200625,10.570710624155629 64.44153959429968,10.589280846269823 64.4362542497128,10.599892401763647 64.45607429191362,10.615809735004383 64.45739562806034,10.650297290359314 64.44021825815297,10.682131956840788 64.41247019907182,10.751107067550649 64.41511287136527,10.751107067550649 64.38736481228412,10.759065734171017 64.37679412311034,10.796206178399403 64.38472213999067,10.82008217826051 64.3675447700833,10.841305289248158 64.37150877852346,10.822735067133966 64.38868614843084,10.782941734032123 64.40454218219149,10.82008217826051 64.41511287136527,10.801511956146317 64.42832623283248,10.809470622766685 64.4362542497128,10.761718623044473 64.43229024127264,10.745801289803737 64.44418226659313,10.740495512056825 64.42832623283248,10.70070217895498 64.42436222439231,10.695396401208068 64.4362542497128,10.658255956979684 64.44418226659313,10.655603068106227 64.45607429191362,10.690090623461156 64.45739562806034,10.692743512334612 64.47721567026116,10.70866084557535 64.47721567026116,10.735189734309913 64.46532364494067,10.737842623183369 64.45739562806034,10.756412845297561 64.45607429191362,10.764371511917929 64.46532364494067,10.759065734171017 64.473251661821,10.769677289664841 64.48117967870132,10.812123511640142 64.473251661821,10.828040844880878 64.45343161962018,10.862528400235808 64.45343161962018,10.822735067133966 64.473251661821,10.838652400374702 64.47721567026116,10.793553289525947 64.49703571246198,10.788247511779035 64.51024907392919,10.835999511501246 64.50628506548902,10.873139955729634 64.4983570486087,10.894363066717283 64.46796631723412,10.907627511084563 64.47193032567428,10.891710177843827 64.49307170402182,10.88905728897037 64.50628506548902,10.907627511084563 64.50099972090214,10.907627511084563 64.5168557546628,10.950073733059863 64.50628506548902,10.973949732920968 64.49703571246198,10.947420844186407 64.52081976310296,10.976602621794424 64.53271178842346,10.960685288553687 64.5419611414505,10.934156399819125 64.57103053667836,10.918239066578387 64.5670665282382,10.907627511084563 64.57895855355869,10.944767955312951 64.58688657043902,10.947420844186407 64.59877859575951,10.9659910663006 64.60670661263984,11.00047862165553 64.59481458731935,11.00047862165553 64.5855652342923,11.02170173264318 64.58688657043902,11.072106621238847 64.56574519209148,11.072106621238847 64.53799713301034,11.082718176732671 64.53403312457017,11.072106621238847 64.51421308236935,11.090676843353041 64.51421308236935,11.098635509973409 64.52610510768984,11.1596519540629 64.49307170402182,11.16761062068327 64.49439304016853,11.188833731670918 64.48117967870132,11.191486620544374 64.46928765338083,11.1596519540629 64.44418226659313,11.191486620544374 64.43889692200625,11.223321287025849 64.45211028347346,11.244544398013499 64.4481462750333,11.29229639773571 64.46400230879395,11.342701286331376 64.46003830035379,11.342701286331376 64.44153959429968,11.294949286609166 64.4481462750333,11.294949286609166 64.44021825815297,11.34004839745792 64.4362542497128,11.31351950872336 64.38736481228412,11.279031953368428 64.37547278696363,11.223321287025849 64.3305473579751,11.212709731532023 64.31336998806773,11.23658573139313 64.31336998806773,11.27107328674806 64.35433140861609,11.332089730837552 64.37283011467018,11.337395508584464 64.39132882072428,11.37453595281285 64.39661416531116,11.393106174927045 64.37943679540379,11.377188841686307 64.37943679540379,11.358618619572113 64.36622343393658,11.387800397180133 64.36358076164314,11.409023508167781 64.3675447700833,11.387800397180133 64.40454218219149,11.371883063939395 64.40454218219149,11.350659952951744 64.41907687980543,11.385147508306677 64.42832623283248,11.38249461943322 64.43493291356609,11.406370619294325 64.44418226659313,11.446163952396168 64.43229024127264,11.52044484085294 64.4481462750333,11.517791951979484 64.4613596365005,11.49922172986529 64.46003830035379,11.480651507751098 64.46796631723412,11.462081285636906 64.45343161962018,11.440858174649255 64.45211028347346,11.443511063522712 64.46928765338083,11.424940841408517 64.47589433411444,11.443511063522712 64.48514368714149,11.462081285636906 64.5168557546628,11.512486174232572 64.51421308236935,11.536362174093679 64.51817709080952,11.52044484085294 64.53403312457017,11.509833285359116 64.52610510768984,11.491263063244922 64.52610510768984,11.49922172986529 64.53667579686362,11.48595728549801 64.5419611414505,11.523097729726397 64.54592514989066,11.52044484085294 64.55781717521116,11.573502618322063 64.55517450291771,11.544320840714047 64.53403312457017,11.557585285081327 64.53403312457017,11.621254618044276 64.56574519209148,11.72206439523561 64.58160122585214,11.783080839325102 64.58688657043902,11.780427950451646 64.59085057887918,11.716758617488697 64.58952924273247,11.692882617627593 64.59481458731935,11.650436395652292 64.57895855355869,11.639824840158468 64.58292256199886,11.610643062550452 64.57103053667836,11.621254618044276 64.58688657043902,11.610643062550452 64.5855652342923,11.629213284664644 64.61463462952017,11.602684395930083 64.61859863796033,11.546973729587503 64.60274260419968,11.552279507334415 64.59877859575951,11.589419951562801 64.60406394034639,11.602684395930083 64.5974572596128,11.594725729309713 64.58292256199886,11.552279507334415 64.56574519209148,11.536362174093679 64.56574519209148,11.491263063244922 64.57763721741198,11.48595728549801 64.5855652342923,11.4382052857758 64.60406394034639,11.432899508028886 64.61463462952017,11.398411952673957 64.63181199942754,11.3957590638005 64.64238268860132,11.411676397041237 64.6476680331882,11.385147508306677 64.65427471392181,11.379841730559763 64.66880941153573,11.393106174927045 64.68730811758984,11.41698217478815 64.67938010070951,11.4382052857758 64.69127212603,11.427593730281973 64.69920014291033,11.406370619294325 64.70052147905704,11.403717730420869 64.71241350437754,11.427593730281973 64.70844949593737,11.52044484085294 64.72826953813819,11.533709285220223 64.73751889116524,11.52840350747331 64.74941091648573,11.546973729587503 64.75601759721934,11.581461284942433 64.74412557189885,11.600031507056627 64.7414828996054,11.634519062411556 64.7533749249259,11.623907506917732 64.76130294180622,11.581461284942433 64.75601759721934,11.565543951701695 64.76130294180622,11.600031507056627 64.77187363098,11.629213284664644 64.76790962253983,11.650436395652292 64.77583763942016,11.663700840019574 64.76923095868655,11.708799950868329 64.77319496712671,11.72206439523561 64.7850869924472,11.740634617349803 64.77319496712671,11.793692394818926 64.77319496712671,11.849403061161507 64.7969790177677,11.783080839325102 64.80490703464802,11.780427950451646 64.79433634547425,11.740634617349803 64.79301500932753,11.745940395096717 64.80887104308819,11.703494173121417 64.80490703464802,11.676965284386856 64.81812039611523,11.639824840158468 64.81415638767507,11.639824840158468 64.8220844045554,11.796345283692382 64.83794043831605,11.775122172704734 64.84190444675622,11.809609728059664 64.85908181666359,11.796345283692382 64.8656884973972,11.756551950590541 64.84322578290293,11.719411506362153 64.83794043831605,11.655742173399206 64.8352977660226,11.671659506639942 64.85908181666359,11.708799950868329 64.86304582510375,11.690229728754137 64.87097384198408,11.897155060883719 64.91457793482589,11.952865727226298 64.9343979770267,12.021840837936159 64.9277912962931,12.037758171176897 64.94364733005375,12.064287059911457 64.94761133849391,12.074898615405282 64.95553935537424,12.096121726392932 64.9528966830808,12.106733281886756 64.9595033638144,12.146526614988598 64.96082469996112,12.175708392596617 64.95553935537424,12.191625725837355 64.9410046577603,12.167749725976249 64.93175530473326,12.199584392457723 64.93175530473326,12.242030614433022 64.93836198546687,12.247336392179934 64.9343979770267,12.287129725281776 64.9343979770267,12.295088391902144 64.9277912962931,12.372022169232373 64.91854194326605,12.440997279942234 64.88550853959802,12.456914613182972 64.88947254803819,12.390592391346567 64.92382728785293,12.316311502889794 64.93968332161359,12.300394169649056 64.94496866620047,12.252642169926846 64.94893267464063,12.24998928105339 64.94496866620047,12.199584392457723 64.94761133849391,12.188972836963899 64.95553935537424,12.15183239273551 64.96743138069473,12.117344837380582 64.9713953891349,12.085510170899106 64.96478870840129,12.05632839329109 64.9713953891349,12.024493726809615 64.96082469996112,12.029799504556527 64.95553935537424,12.00592350469542 64.94496866620047,11.952865727226298 64.94893267464063,11.910419505251 64.9277912962931,11.796345283692382 64.90400724565211,11.68757683988068 64.8775805227177,11.613295951423908 64.8656884973972,11.621254618044276 64.85908181666359,11.655742173399206 64.86172448895704,11.639824840158468 64.83794043831605,11.613295951423908 64.82604841299556,11.565543951701695 64.8220844045554,11.552279507334415 64.81283505152835,11.52044484085294 64.81679905996852,11.509833285359116 64.80887104308819,11.45942839676345 64.80887104308819,11.467387063383818 64.79301500932753,11.393106174927045 64.75205358877918,11.3533128418252 64.74544690804557,11.332089730837552 64.74544690804557,11.249850175760411 64.72826953813819,11.218015509278937 64.72562686584475,11.191486620544374 64.74412557189885,11.25780884238078 64.7533749249259,11.279031953368428 64.74808958033901,11.308213730976448 64.7599816056595,11.34004839745792 64.76130294180622,11.366577286192483 64.77319496712671,11.414329285914693 64.80094302620786,11.446163952396168 64.80887104308819,11.443511063522712 64.81415638767507,11.411676397041237 64.80622837079474,11.342701286331376 64.80490703464802,11.310866619849904 64.8101923792349,11.329436841964096 64.8220844045554,11.294949286609166 64.81679905996852,11.29229639773571 64.80887104308819,11.244544398013499 64.80622837079474,11.265767509001147 64.82472707684884,11.260461731254235 64.83133375758244,11.308213730976448 64.83794043831605,11.27107328674806 64.83926177446277,11.276379064494972 64.84586845519638,11.409023508167781 64.8656884973972,11.525750618599853 64.86304582510375,11.531056396346766 64.86965250583737,11.565543951701695 64.87097384198408,11.570849729448607 64.86700983354392,11.60533728480354 64.87890185886441,11.66635372889303 64.88682987574474,11.703494173121417 64.9026859095054,11.684923951007224 64.90664991794556,11.637171951285012 64.89475789262507,11.560238173954783 64.87890185886441,11.454122619016537 64.87097384198408,11.411676397041237 64.87361651427753,11.281684842241884 64.85379647207671,11.276379064494972 64.86700983354392,11.329436841964096 64.8907938841849,11.3533128418252 64.89475789262507,11.3533128418252 64.9026859095054,11.45942839676345 64.93571931317342,11.480651507751098 64.92646996014638,11.54166795184059 64.88682987574474,11.568196840575151 64.89211522033162,11.560238173954783 64.89872190106523,11.59737861818317 64.92382728785293,11.565543951701695 64.91854194326605,11.539015062967135 64.9026859095054,11.52044484085294 64.9158992709726,11.475345730004186 64.93571931317342,11.509833285359116 64.94893267464063,11.565543951701695 64.95686069152096,11.570849729448607 64.94364733005375,11.589419951562801 64.9595033638144,11.60533728480354 64.96082469996112,11.629213284664644 64.94496866620047,11.626560395791188 64.9343979770267,11.655742173399206 64.9343979770267,11.647783506778836 64.94364733005375,11.613295951423908 64.96478870840129,11.650436395652292 64.96875271684145,11.6743123955134 64.96082469996112,11.655742173399206 64.95157534693408,11.727370172982523 64.9528966830808,11.732675950729435 64.96743138069473,11.783080839325102 64.98328741445539,11.716758617488697 64.9846087506021,11.719411506362153 64.97535939757506,11.70084128424796 64.98328741445539,11.639824840158468 64.98064474216194,11.61860172917082 64.97668073372178,11.592072840436257 64.97668073372178,11.613295951423908 64.9965007759226,11.637171951285012 65.00442879280293,11.6743123955134 65.0097141373898,11.669006617766486 65.00046478436276,11.684923951007224 65.00046478436276,11.698188395374505 65.01632081812342,11.711452839741785 65.01632081812342,11.730023061855979 65.00046478436276,11.748593283970173 64.9965007759226,11.775122172704734 65.00310745665621,11.772469283831278 64.99253676748243,11.793692394818926 64.99517943977588,11.788386617072014 65.00839280124309,11.809609728059664 65.02028482656358,11.836138616794226 65.02028482656358,11.928989727365192 65.05728223867177,11.952865727226298 65.05860357481849,11.947559949479386 65.07313827243243,11.921031060744824 65.06653159169882,11.84675017228805 65.03746219647095,11.780427950451646 65.01632081812342,11.748593283970173 65.0097141373898,11.737981728476347 65.02424883500375,11.756551950590541 65.04539021335128,11.793692394818926 65.07049560013898,11.836138616794226 65.08635163389964,11.814915505806576 65.08635163389964,11.854708838908419 65.11409969298079,11.899807949757175 65.127313054448,11.905113727504087 65.13788374362177,11.984700393707772 65.16166779426275,11.990006171454684 65.1709171472898,12.019187949062703 65.16298913040947,12.035105282303439 65.14713309664882,12.003270615821965 65.11277835683407,11.990006171454684 65.11409969298079,11.950212838352842 65.1022076676603,11.995311949201596 65.10617167610046,11.990006171454684 65.08635163389964,12.013882171315789 65.09427965077997,12.043063948923809 65.0771022808726,12.066939948784913 65.07842361701931,12.06959283765837 65.08899430619309,12.053675504417633 65.10617167610046,12.08285728202565 65.1339197351816,12.088163059772562 65.11409969298079,12.1040803930133 65.11277835683407,12.13856794836823 65.11938503756767,12.114691948507126 65.12599171830128,12.109386170760212 65.13788374362177,12.119997726254038 65.15109710508898,12.11203905963367 65.17884516417013,12.117344837380582 65.18677318105046,12.154485281608967 65.19470119793078,12.159791059355879 65.20262921481111,12.202237281331179 65.21187856783816,12.226113281192283 65.21187856783816,12.242030614433022 65.19998654251766,12.265906614294128 65.19073718949062,12.276518169787952 65.1709171472898,12.295088391902144 65.16695313884964,12.2977412807756 65.15506111352914,12.234071947812652 65.11013568454062,12.300394169649056 65.11806370142095,12.337534613877445 65.11277835683407,12.329575947257077 65.09824365922013,12.300394169649056 65.08635163389964,12.234071947812652 65.0652102555521,12.17305550372316 65.05331823023161,12.12530350400095 65.05331823023161,12.093468837519476 65.06917426399227,11.976741727087404 65.07049560013898,11.960824393846666 65.0652102555521,12.077551504278738 65.06124624711194,12.117344837380582 65.04935422179145,12.098774615266388 65.04142620491112,12.133262170621318 65.04539021335128,12.159791059355879 65.04539021335128,12.181014170343529 65.03614086032424,12.19427861471081 65.01632081812342,12.175708392596617 64.9846087506021,12.210195947951547 64.99517943977588,12.212848836825003 65.02028482656358,12.181014170343529 65.04803288564473,12.247336392179934 65.05860357481849,12.252642169926846 65.05331823023161,12.321617280636707 65.06653159169882,12.326923058383619 65.08106628931276,12.385286613599655 65.0903156423398,12.411815502334218 65.08899430619309,12.427732835574954 65.0771022808726,12.459567502056428 65.0771022808726,12.480790613044078 65.08635163389964,12.494055057411359 65.10485033995374,12.480790613044078 65.10617167610046,12.44365016881569 65.08899430619309,12.401203946840392 65.09824365922013,12.43038572444841 65.1022076676603,12.448955946562602 65.11277835683407,12.483443501917534 65.11409969298079,12.502013724031727 65.12202770986111,12.539154168260113 65.13127706288816,12.586906167982324 65.12995572674144,12.586906167982324 65.13920507976849,12.655881278692185 65.16166779426275,12.671798611932921 65.17488115572996,12.714244833908221 65.19470119793078,12.738120833769326 65.1960225340775,12.77791416687117 65.21848524857177,12.793831500111907 65.21187856783816,12.79117861123845 65.22377059315865,12.825666166593379 65.25283998838651,12.857500833074855 65.27266003058733,12.93708749927854 65.30569343425536,12.960963499139645 65.30965744269552,12.966269276886557 65.31758545957585,12.942393277025452 65.33212015718979,12.83362483321375 65.27794537517421,12.801790166732275 65.25283998838651,12.76464972250389 65.23698395462586,12.751385278136606 65.2264132654521,12.677104389679833 65.1960225340775,12.639963945451449 65.18677318105046,12.502013724031727 65.1339197351816,12.41712128008113 65.13920507976849,12.353451947118181 65.15770378582259,12.369369280358917 65.17620249187668,12.409162613460762 65.18809451719717,12.440997279942234 65.18280917261029,12.472831946423709 65.18413050875701,12.509972390652095 65.1960225340775,12.475484835297166 65.1960225340775,12.459567502056428 65.20791455939799,12.425079946701498 65.20659322325128,12.422427057828042 65.2145212401316,12.44365016881569 65.21980658471848,12.422427057828042 65.23169861003898,12.387939502473111 65.22377059315865,12.342840391624357 65.22244925701193,12.334881725003989 65.23169861003898,12.353451947118181 65.23301994618569,12.401203946840392 65.24887597994635,12.46487327980334 65.2396266269193,12.507319501778639 65.2396266269193,12.509972390652095 65.2515186522398,12.462220390929884 65.24491197150618,12.414468391207674 65.25283998838651,12.419774168954586 65.25680399682668,12.462220390929884 65.25548266067996,12.422427057828042 65.26869602214717,12.372022169232373 65.25680399682668,12.390592391346567 65.26869602214717,12.361410613738549 65.26737468600045,12.345493280497813 65.25680399682668,12.321617280636707 65.25680399682668,12.295088391902144 65.24359063535947,12.276518169787952 65.22773460159881,12.247336392179934 65.23037727389226,12.326923058383619 65.26869602214717,12.329575947257077 65.28587339205454,12.364063502612005 65.30833610654881,12.385286613599655 65.30965744269552,12.419774168954586 65.30569343425536,12.446303057689146 65.31362145113569,12.451608835436058 65.32419214030946,12.472831946423709 65.32419214030946,12.470179057550252 65.33608416562996,12.425079946701498 65.31758545957585,12.40385683571385 65.3202281318693,12.422427057828042 65.33740550177667,12.422427057828042 65.345333518657,12.475484835297166 65.36251088856437,12.467526168676796 65.3704389054447,12.433038613321866 65.36118955241766,12.425079946701498 65.36251088856437,12.3401875027509 65.32419214030946,12.273865280914496 65.31758545957585,12.268559503167584 65.31230011498897,12.247336392179934 65.31758545957585,12.244683503306478 65.32815614874963,12.226113281192283 65.32947748489634,12.223460392318827 65.31758545957585,12.234071947812652 65.30040808966848,12.27121239204104 65.2898374004947,12.263253725420672 65.27266003058733,12.252642169926846 65.27266003058733,12.199584392457723 65.23698395462586,12.13856794836823 65.23037727389226,12.074898615405282 65.20791455939799,12.053675504417633 65.21055723169144,12.048369726670721 65.21848524857177,12.1040803930133 65.23698395462586,12.088163059772562 65.2396266269193,12.117344837380582 65.25680399682668,12.1040803930133 65.26341067756029,12.135915059494774 65.28058804746766,12.11203905963367 65.28455205590782,12.13856794836823 65.29644408122832,12.13856794836823 65.30833610654881,12.085510170899106 65.30437209810864,12.085510170899106 65.31362145113569,12.127956392874406 65.32551347645618,12.12530350400095 65.34665485480372,12.13856794836823 65.35061886324388,12.149179503862054 65.3704389054447,12.186319948090443 65.36515356085782,12.19427861471081 65.345333518657,12.218154614571915 65.35061886324388,12.196931503584267 65.36647489700454,12.223460392318827 65.37440291388486,12.231419058939196 65.36647489700454,12.27121239204104 65.38100959461848,12.265906614294128 65.39025894764552,12.212848836825003 65.37836692232503,12.178361281470073 65.37440291388486,12.165096837102793 65.38629493920536,12.186319948090443 65.40611498140618,12.247336392179934 65.43122036819388,12.348146169371269 65.46028976342174,12.353451947118181 65.46689644415535,12.326923058383619 65.46689644415535,12.342840391624357 65.49068049479634,12.27121239204104 65.46689644415535,12.273865280914496 65.4761457971824,12.252642169926846 65.46689644415535,12.24998928105339 65.48010980562256,12.268559503167584 65.48407381406273,12.287129725281776 65.49596583938322,12.231419058939196 65.48275247791601,12.22876617006574 65.4642537718619,12.178361281470073 65.4391483850742,12.19427861471081 65.46689644415535,12.234071947812652 65.49596583938322,12.234071947812652 65.50389385626355,12.260600836547216 65.5448552768119,12.239377725559565 65.5448552768119,12.226113281192283 65.55542596598568,12.263253725420672 65.57656734433321,12.289782614155232 65.58581669736026,12.324270169510163 65.57656734433321,12.324270169510163 65.54089126837174,12.366716391485461 65.5197498900242,12.37467505810583 65.5197498900242,12.448955946562602 65.47878846947584,12.451608835436058 65.46293243571519,12.435691502195322 65.45368308268814,12.44365016881569 65.41932834287338,12.475484835297166 65.41536433443322,12.48609639079099 65.40215097296601,12.509972390652095 65.39818696452585,12.504666612905183 65.37308157773815,12.54180705713357 65.3704389054447,12.536501279386657 65.39025894764552,12.512625279525551 65.38497360305864,12.52058394614592 65.40215097296601,12.496707946284815 65.40611498140618,12.49936083515827 65.4140429982865,12.470179057550252 65.43386304048732,12.456914613182972 65.45368308268814,12.48609639079099 65.45896842727502,12.478137724170622 65.44311239351437,12.502013724031727 65.44971907424798,12.536501279386657 65.4391483850742,12.539154168260113 65.44575506580782,12.515278168399007 65.45764709112831,12.54976572375394 65.4510404103947,12.568335945868132 65.4391483850742,12.552418612627395 65.40611498140618,12.565683056994676 65.41007898984634,12.592211945729236 65.40611498140618,12.578947501361956 65.41536433443322,12.581600390235412 65.4391483850742,12.592211945729236 65.44179105736765,12.63200527883108 65.41007898984634,12.666492834186009 65.39158028379224,12.706286167287853 65.36251088856437,12.698327500667485 65.38629493920536,12.613435056716886 65.43518437663404,12.639963945451449 65.42725635975371,12.653228389818729 65.43386304048732,12.64526972319836 65.44575506580782,12.759343944756978 65.45764709112831,12.77791416687117 65.4642537718619,12.65853416756564 65.45896842727502,12.626699501084168 65.45500441883486,12.602823501223062 65.4642537718619,12.663839945312553 65.48010980562256,12.653228389818729 65.48407381406273,12.592211945729236 65.47482446103568,12.581600390235412 65.49068049479634,12.552418612627395 65.50785786470371,12.581600390235412 65.51710721773075,12.592211945729236 65.51578588158404,12.624046612210712 65.52107122617092,12.626699501084168 65.52767790690453,12.586906167982324 65.52503523461108,12.568335945868132 65.55542596598568,12.5762946124885 65.58449536121354,12.56303016812122 65.5884593696537,12.54976572375394 65.56467531901272,12.552418612627395 65.53296325149141,12.533848390513201 65.51710721773075,12.49936083515827 65.50785786470371,12.459567502056428 65.51710721773075,12.517931057272463 65.55542596598568,12.536501279386657 65.57260333589305,12.539154168260113 65.58449536121354,12.52058394614592 65.58053135277338,12.504666612905183 65.56071131057256,12.446303057689146 65.52767790690453,12.440997279942234 65.52107122617092,12.398551057966936 65.53692725993157,12.385286613599655 65.54881928525207,12.379980835852741 65.56863932745289,12.401203946840392 65.57260333589305,12.414468391207674 65.58978070580042,12.385286613599655 65.57656734433321,12.366716391485461 65.60167273112091,12.366716391485461 65.6254567817619,12.350799058244725 65.62677811790861,12.440997279942234 65.69813026983157,12.507319501778639 65.73909169037992,12.581600390235412 65.71795031203239,12.58955905685578 65.69945160597828,12.605476390096518 65.69945160597828,12.570988834741588 65.67831022763075,12.581600390235412 65.67434621919058,12.61078216784343 65.6941662613914,12.634658167704536 65.69152358909795,12.64526972319836 65.68227423607091,12.602823501223062 65.66641820231025,12.613435056716886 65.6505621685496,12.624046612210712 65.66245419387009,12.642616834324905 65.67038221075042,12.637311056577992 65.64527682396272,12.706286167287853 65.64263415166927,12.74873238926315 65.63470613478894,12.743426611516238 65.61752876488157,12.775261277997714 65.60563673956108,12.783219944618082 65.59374471424059,12.807095944479187 65.60167273112091,12.759343944756978 65.61752876488157,12.761996833630434 65.63074212634878,12.793831500111907 65.63338479864223,12.751385278136606 65.64659816010943,12.743426611516238 65.64263415166927,12.700980389540941 65.65320484084305,12.653228389818729 65.6505621685496,12.655881278692185 65.67038221075042,12.671798611932921 65.68755958065779,12.63200527883108 65.69813026983157,12.626699501084168 65.71398630359222,12.608129278969974 65.71134363129877,12.608129278969974 65.72191432047255,12.539154168260113 65.75230505184713,12.581600390235412 65.76419707716762,12.602823501223062 65.78401711936844,12.61078216784343 65.80383716156926,12.671798611932921 65.81176517844959,12.685063056300205 65.78005311092828,12.714244833908221 65.7747677663414,12.72220350052859 65.78269578322173,12.690368834047117 65.79855181698238,12.693021722920573 65.80383716156926,12.719550611655134 65.79855181698238,12.730162167148958 65.80383716156926,12.693021722920573 65.81705052303647,12.685063056300205 65.84479858211762,12.677104389679833 65.81969319532992,12.663839945312553 65.8249785399168,12.629352389957624 65.82365720377008,12.608129278969974 65.81572918688975,12.597517723476148 65.8249785399168,12.605476390096518 65.84479858211762,12.629352389957624 65.85272659899795,12.642616834324905 65.89765202798647,12.663839945312553 65.92143607862745,12.716897722781678 65.9372921123881,12.716897722781678 65.92936409550778,12.740773722642782 65.94257745697499,12.801790166732275 65.96239749917581,12.809748833352643 65.96768284376269,12.844236388707575 65.9742895244963,12.86811238856868 65.97164685220285,12.86811238856868 65.95711215458893,12.899947055050152 65.95843349073564,12.921170166037804 65.94125612082827,12.939740388151996 65.93861344853482,12.93708749927854 65.9306854316545,12.960963499139645 65.92540008706762,13.02728572097605 65.92540008706762,13.045855943090242 65.91747207018729,13.053814609710614 65.90029470027991,13.072384831824806 65.88972401110614,13.093607942812454 65.88576000266598,13.128095498167387 65.89633069183975,13.141359942534667 65.86990396890532,13.18645905338342 65.82894254835696,13.183806164509964 65.86461862431844,13.165235942395771 65.87386797734548,13.157277275775403 65.8936880195463,13.162583053522315 65.90954405330696,13.133401275914299 65.918793406334,13.136054164787755 65.93861344853482,13.12544260929393 65.94257745697499,13.09626083168591 65.93332810394794,13.064426165204438 65.9372921123881,13.051161720837158 65.94654146541515,13.021979943229137 65.94522012926844,12.987492387874209 65.94654146541515,12.93708749927854 65.97032551605614,12.897294166176696 65.97032551605614,12.897294166176696 65.98353887752334,12.934434610405084 65.99410956669712,12.953004832519277 66.00732292816433,12.93708749927854 66.02185762577827,12.953004832519277 66.03507098724548,12.95035194364582 66.04696301256597,12.990145276747665 66.06017637403318,13.024632832102593 66.06414038247334,13.045855943090242 66.07735374394055,12.95035194364582 66.06281904632662,12.897294166176696 66.05092702100613,12.857500833074855 66.04828434871268,12.846889277581031 66.0548910294463,12.807095944479187 66.05224835715285,12.655881278692185 66.0297856426586,12.653228389818729 66.03507098724548,12.83362483321375 66.0681043909135,12.714244833908221 66.05224835715285,12.746079500389694 66.06281904632662,12.677104389679833 66.06017637403318,12.674451500806377 66.0681043909135,12.703633278414397 66.08131775238071,12.759343944756978 66.10113779458153,12.823013277719923 66.11963650063564,12.823013277719923 66.12756451751596,12.918517277164348 66.14077787898317,12.998103943368033 66.14474188742334,12.99279816562112 66.15002723201022,13.067079054077894 66.15795524889054,13.075037720698262 66.14077787898317,13.093607942812454 66.14606322357005,13.08299638731863 66.15266990430366,13.09626083168591 66.16191925733071,13.191764831130332 66.18173929953153,13.247475497472912 66.18966731641186,13.22890527535872 66.19495266099874,13.29788038606858 66.22137938393317,13.321756385929685 66.22666472852005,13.356243941284617 66.22666472852005,13.377467052272266 66.21873671163972,13.462359496222863 66.23062873696021,13.504805718198163 66.23062873696021,13.5207230514389 66.2425207622807,13.579086606654936 66.23459274540038,13.584392384401848 66.217415375493,13.57643371778148 66.20684468631923,13.549904829046916 66.20684468631923,13.499499940451251 66.19098865255857,13.526028829185812 66.19098865255857,13.608268384262953 66.1989166694389,13.597656828769129 66.1738112826512,13.549904829046916 66.14606322357005,13.539293273553092 66.13549253439629,13.536640384679636 66.10906581146186,13.560516384540744 66.1051018030217,13.565822162287656 66.1236005090758,13.597656828769129 66.14606322357005,13.642755939617885 66.16191925733071,13.682549272719726 66.15795524889054,13.714383939201202 66.16191925733071,13.74887149455613 66.16984727421104,13.801929272025255 66.15399124045038,13.815193716392535 66.14077787898317,13.841722605127096 66.16191925733071,13.788664827657975 66.18306063567825,13.754177272303043 66.18570330797169,13.682549272719726 66.1738112826512,13.66663193947899 66.19098865255857,13.616227050883321 66.17777529109136,13.618879939756777 66.19363132485202,13.650714606238253 66.20684468631923,13.626838606377145 66.21345136705284,13.640103050744429 66.22137938393317,13.597656828769129 66.22666472852005,13.658673272858621 66.23327140925366,13.717036828074658 66.2425207622807,13.793970605404887 66.2425207622807,13.820499494139447 66.23062873696021,13.770094605543779 66.20552335017251,13.76213593892341 66.19363132485202,13.783359049911063 66.18966731641186,13.791317716531431 66.20684468631923,13.847028382874008 66.22270072007989,13.966408382179537 66.24648477072087,13.966408382179537 66.26234080448152,13.982325715420274 66.27159015750857,14.030077715142486 66.27555416594873,14.045995048383222 66.29008886356267,14.088441270358523 66.29141019970939,14.128234603460363 66.3046235611766,14.122928825713451 66.31519425035037,14.149457714448015 66.33633562869791,14.122928825713451 66.34029963713807,14.11762304796654 66.33237162025775,14.019466159648662 66.3046235611766,13.992937270914098 66.31123024191021,13.93722660457152 66.30330222502988,13.910697715836957 66.28744619126923,13.905391938090045 66.27026882136185,13.873557271608572 66.27555416594873,13.844375494000552 66.27159015750857,13.809887938645623 66.27555416594873,13.740912827935762 66.25837679604136,13.74887149455613 66.27159015750857,13.770094605543779 66.27423282980202,13.770094605543779 66.29141019970939,13.743565716809218 66.2927315358561,13.754177272303043 66.27819683824218,13.72234260582157 66.27423282980202,13.727648383568482 66.25837679604136,13.616227050883321 66.23855675384054,13.573780828908024 66.2544127876012,13.579086606654936 66.26630481292169,13.640103050744429 66.28744619126923,13.565822162287656 66.29008886356267,13.552557717920372 66.27159015750857,13.512764384818531 66.25837679604136,13.4782768294636 66.2544127876012,13.462359496222863 66.24516343457415,13.380119941145722 66.23723541769382,13.364202607904986 66.24912744301432,13.316450608182773 66.25044877916103,13.244822608599456 66.21873671163972,13.15993016464886 66.19363132485202,13.035244387596418 66.1738112826512,13.019327054355681 66.17645395494465,13.008715498861857 66.20155934173235,13.02728572097605 66.20155934173235,13.101566609432822 66.23459274540038,13.18645905338342 66.25837679604136,13.183806164509964 66.26234080448152,13.114831053800103 66.24912744301432,13.133401275914299 66.25969813218808,13.199723497750703 66.2795181743889,13.252781275219824 66.28348218282906,13.321756385929685 66.29669554429627,13.382772830019178 66.30330222502988,13.414607496500654 66.30065955273643,13.4782768294636 66.30330222502988,13.499499940451251 66.30726623347005,13.555210606793828 66.30330222502988,13.5631692734142 66.30726623347005,13.502152829324707 66.31915825879054,13.446442162982127 66.31915825879054,13.427871940867934 66.32840761181758,13.483582607210511 66.34426364557824,13.45705371847595 66.34294230943152,13.427871940867934 66.3482276540184,13.403995941006826 66.33633562869791,13.366855496778442 66.3350142925512,13.36154971903153 66.32708627567087,13.236863941979088 66.30726623347005,13.133401275914299 66.30065955273643,13.112178164926647 66.3046235611766,13.144012831408123 66.31123024191021,13.165235942395771 66.32840761181758,13.144012831408123 66.33237162025775,13.104219498306279 66.32047959493725,13.098913720559366 66.31123024191021,13.000756832241489 66.33105028411103,12.990145276747665 66.3482276540184,13.003409721114945 66.3601196793389,13.085649276192086 66.37597571309955,13.133401275914299 66.39711709144709,13.157277275775403 66.40108109988725,13.141359942534667 66.4288291589684,13.149318609155035 66.43675717584873,13.088302165065542 66.45261320960938,13.08299638731863 66.46450523492987,13.114831053800103 66.45789855419626,13.165235942395771 66.46186256263643,13.151971498028491 66.46979057951675,13.101566609432822 66.47375458795692,13.098913720559366 66.49489596630445,13.043203054216786 66.49093195786429,13.02728572097605 66.5094306639184,12.971575054633469 66.5226440253856,12.995451054494577 66.53189337841265,13.024632832102593 66.52792936997248,13.090955053938998 66.5477494121733,13.12544260929393 66.55039208446675,13.122789720420474 66.53850005914626,13.210335053244528 66.51471600850527,13.218293719864896 66.49093195786429,13.239516830852544 66.48961062171757,13.250128386346368 66.48036126869053,13.236863941979088 66.46054122648971,13.21564083099144 66.45261320960938,13.250128386346368 66.4539345457561,13.25543416409328 66.44600652887577,13.350938163537705 66.46186256263643,13.419913274247566 66.46979057951675,13.33236794142351 66.47375458795692,13.295227497195125 66.46450523492987,13.260739941840193 66.46846924337004,13.281963052827845 66.4724332518102,13.274004386207476 66.48564661327741,13.311144830435861 66.50546665547823,13.292574608321669 66.50678799162495,13.258087052966737 66.52660803382577,13.33236794142351 66.53057204226593,13.350938163537705 66.54246406758642,13.37481416339881 66.53850005914626,13.425219051994478 66.53982139529298,13.438483496361759 66.54642807602659,13.549904829046916 66.54246406758642,13.613574162009865 66.52792936997248,13.634797272997517 66.51868001694544,13.66663193947899 66.51471600850527,13.661326161732077 66.5345360507061,13.552557717920372 66.55567742905363,13.472971051716687 66.5596414374938,13.50745860707162 66.58342548813478,13.53398749580618 66.58342548813478,13.560516384540744 66.59531751345527,13.656020383985165 66.6032455303356,13.717036828074658 66.59928152189543,13.732954161315394 66.60853087492248,13.701119494833918 66.61249488336264,13.58969816214876 66.60853087492248,13.560516384540744 66.60720953877576,13.496847051577795 66.5913535050151,13.454400829602495 66.56360544593396,13.433177718614846 66.5596414374938,13.337673719170422 66.5596414374938,13.292574608321669 66.5477494121733,13.223599497611808 66.55832010134708,13.207682164371072 66.55567742905363,13.18645905338342 66.56756945437412,13.212987942117984 66.57549747125445,13.218293719864896 66.59796018574872,13.247475497472912 66.59531751345527,13.25543416409328 66.59928152189543,13.22890527535872 66.61117354721593,13.258087052966737 66.62438690868314,13.276657275080932 66.61117354721593,13.289921719448213 66.61645889180281,13.281963052827845 66.6283509171233,13.313797719309317 66.62306557253642,13.303186163815493 66.63231492556346,13.372161274525354 66.63099358941675,13.380119941145722 66.63627893400363,13.321756385929685 66.64420695088396,13.289921719448213 66.64420695088396,13.274004386207476 66.63760027015034,13.223599497611808 66.63231492556346,13.189111942256876 66.65213496776428,13.165235942395771 66.65742031235116,13.197070608877247 66.6719550099651,13.223599497611808 66.67724035455198,13.260739941840193 66.66799100152494,13.313797719309317 66.66931233767166,13.335020830296965 66.66534832923149,13.369508385651898 66.66931233767166,13.36154971903153 66.64949229547084,13.390731496639546 66.64552828703067,13.385425718892634 66.66006298464461,13.406648829880282 66.653456303911,13.425219051994478 66.66138432079133,13.523375940312356 66.65609897620445,13.518070162565444 66.64552828703067,13.555210606793828 66.64420695088396,13.536640384679636 66.66799100152494,13.49419416270434 66.67724035455198,13.45705371847595 66.67591901840527,13.451747940729039 66.6838470352856,13.390731496639546 66.68913237987248,13.289921719448213 66.69573906060609,13.274004386207476 66.70498841363313,13.295227497195125 66.70763108592658,13.25543416409328 66.71291643051346,13.268698608460564 66.71688043895362,13.21564083099144 66.72084444739379,13.226252386485264 66.72612979198067,13.281963052827845 66.73273647271428,13.324409274803141 66.73009380042083,13.380119941145722 66.734057808861,13.425219051994478 66.72612979198067,13.454400829602495 66.73009380042083,13.472971051716687 66.71820177510034,13.50745860707162 66.72612979198067,13.531334606932724 66.72480845583395,13.528681718059268 66.70366707748641,13.568475051161112 66.69309638831264,13.592351051022217 66.69309638831264,13.640103050744429 66.6970603967528,13.714383939201202 66.69970306904625,13.714383939201202 66.70763108592658,13.687855050466638 66.71291643051346,13.72234260582157 66.71688043895362,13.807235049772167 66.72084444739379,13.902739049216589 66.72612979198067,13.902739049216589 66.73009380042083,13.764788827796867 66.73273647271428,13.72234260582157 66.73009380042083,13.69316082821355 66.72084444739379,13.671937717225902 66.72480845583395,13.671937717225902 66.71688043895362,13.600309717642585 66.7089524220733,13.57643371778148 66.7089524220733,13.552557717920372 66.72480845583395,13.5631692734142 66.74594983418149,13.54725194017346 66.75387785106182,13.592351051022217 66.7591631956487,13.743565716809218 66.75123517876837,13.76213593892341 66.75387785106182,13.613574162009865 66.77105522096919,13.53398749580618 66.76312720408886,13.54725194017346 66.77369789326264,13.510111495945075 66.77501922940935,13.523375940312356 66.78558991858313,13.496847051577795 66.78955392702329,13.502152829324707 66.8027672884905,13.610921273136409 66.80540996078395,13.62418571750369 66.81069530537083,13.701119494833918 66.81333797766428,13.719689716948114 66.80540996078395,13.759483050049955 66.8027672884905,13.820499494139447 66.79483927161017,13.998243048661013 66.79748194390362,13.982325715420274 66.80673129693066,13.945185271191889 66.81069530537083,13.905391938090045 66.80673129693066,13.823152383012903 66.80937396922411,13.743565716809218 66.83183668371836,13.767441716670323 66.83580069215853,13.740912827935762 66.84372870903886,13.706425272580834 66.83051534757165,13.66663193947899 66.83051534757165,13.70907816145429 66.83976470059869,13.695813717087006 66.85165672591918,13.717036828074658 66.85958474279951,13.701119494833918 66.87147676812,13.658673272858621 66.88072612114705,13.648061717364797 66.90054616334787,13.629491495250601 66.9084741802282,13.571127940034568 66.90715284408148,13.54725194017346 66.89922482720115,13.53398749580618 66.90318883564132,13.544599051300004 66.93225823086918,13.496847051577795 66.93490090316263,13.483582607210511 66.94943560077655,13.504805718198163 66.95604228151016,13.54725194017346 66.95339960921672,13.555210606793828 66.94547159233639,13.536640384679636 66.94018624774951,13.555210606793828 66.93622223930934,13.610921273136409 66.95339960921672,13.727648383568482 66.94415025618967,13.801929272025255 66.96132762609705,13.793970605404887 66.96925564297737,13.740912827935762 66.96793430683066,13.72234260582157 66.97454098756425,13.746218605682675 66.98114766829787,13.81254082751908 66.98511167673803,13.862945716114748 66.98246900444458,13.873557271608572 67.00096771049868,13.902739049216589 67.00096771049868,13.92130927133078 67.00889572737901,13.992937270914098 67.01021706352573,14.003548826407926 67.00096771049868,13.963755493306081 66.98246900444458,13.945185271191889 66.96793430683066,13.89478038259622 66.97189831527082,13.905391938090045 66.96132762609705,13.905391938090045 66.94547159233639,13.945185271191889 66.95207827307,13.982325715420274 66.98114766829787,14.01416038190175 66.98643301288475,13.992937270914098 66.96925564297737,14.011507493028294 66.96132762609705,14.038036381762854 66.98114766829787,14.02742482626903 66.9890756851782,14.061912381623959 66.99039702132491,14.024771937395574 67.01814508040606,14.016813270775206 67.03267977802,14.022119048522118 67.04985714792737,14.04068927063631 67.04192913104704,14.038036381762854 67.06703451783474,14.051300826130134 67.08156921544868,14.077829714864698 67.06307050939458,14.101705714725803 67.0577851648077,14.11762304796654 67.03796512260688,14.125581714586907 67.0141810719659,14.138846158954188 66.99436102976507,14.157416381068384 67.00625305508557,14.16006926994184 66.98643301288475,14.183945269802944 66.99700370205852,14.21312704741096 66.99039702132491,14.239655936145525 67.00096771049868,14.226391491778244 67.00625305508557,14.255573269386261 67.02210908884622,14.274143491500453 67.05382115636753,14.237003047272069 67.07760520700852,14.279449269247365 67.07760520700852,14.308631046855385 67.06703451783474,14.353730157704138 67.07760520700852,14.428011046160911 67.07892654315523,14.481068823630036 67.06307050939458,14.486374601376948 67.05514249251425,14.52086215673188 67.0577851648077,14.531473712225704 67.06307050939458,14.571267045327545 67.04985714792737,14.584531489694829 67.03267977802,14.613713267302845 67.03400111416671,14.603101711809021 67.04192913104704,14.61106037842939 67.05117848407409,14.584531489694829 67.0709985262749,14.54739104546644 67.0709985262749,14.499639045744228 67.07496253471507,14.489027490250404 67.06967719012819,14.446581268275107 67.07892654315523,14.446581268275107 67.08685456003556,14.406787935173263 67.09478257691589,14.343118602210314 67.07892654315523,14.303325269108473 67.09213990462244,14.282102158120821 67.08685456003556,14.250267491639349 67.08685456003556,14.247614602765893 67.09213990462244,14.274143491500453 67.09874658535605,14.27679638037391 67.11063861067655,14.300672380235017 67.10006792150277,14.308631046855385 67.1264946444372,14.340465713336858 67.14763602278474,14.31924260234921 67.15952804810523,14.337812824463402 67.17274140957244,14.396176379679439 67.1767054180126,14.438622601654739 67.1952041240667,14.483721712503492 67.19652546021342,14.462498601515843 67.18066942645277,14.502291934617684 67.18331209874621,14.571267045327545 67.17934809030605,14.571267045327545 67.18727610718638,14.621671933923214 67.19652546021342,14.642895044910862 67.18066942645277,14.709217266747267 67.17934809030605,14.727787488861463 67.1885974433331,14.648200822657774 67.19124011562654,14.616366156176301 67.20445347709375,14.544738156592985 67.19916813250687,14.515556378984968 67.20445347709375,14.542085267719528 67.20973882168063,14.62432482279667 67.2203095108544,14.66677104477197 67.21766683856096,14.703911489000355 67.21238149397408,14.73574615548183 67.21634550241424,14.751663488722567 67.22823752773473,14.794109710697864 67.24012955305523,14.823291488305884 67.24012955305523,14.841861710420076 67.22823752773473,14.902878154509569 67.22955886388145,14.974506154092886 67.24937890608227,14.979811931839798 67.24012955305523,15.006340820574358 67.24012955305523,14.940018598737954 67.2203095108544,14.950630154231781 67.20445347709375,14.897572376762657 67.17934809030605,14.886960821268833 67.15952804810523,14.921448376623761 67.1516000312249,14.947977265358325 67.1516000312249,14.955935931978694 67.12781598058392,14.97185326521943 67.11592395526343,15.001035042827446 67.11988796370359,14.974506154092886 67.15556403966507,14.926754154370673 67.16217072039868,14.918795487750305 67.16745606498556,14.94532437648487 67.19256145177326,14.966547487472518 67.2018108048003,15.008993709447815 67.21238149397408,15.02756393156201 67.22823752773473,15.003687931700902 67.22955886388145,15.019605264941642 67.23748688076178,15.09123326452496 67.23616554461506,15.123067931006432 67.22823752773473,15.133679486500256 67.20973882168063,15.15755548636136 67.20841748553391,15.207960374957029 67.2203095108544,15.255712374679241 67.20841748553391,15.266323930173066 67.19916813250687,15.298158596654538 67.19256145177326,15.388356818352051 67.1885974433331,15.420191484833524 67.16745606498556,15.377745262858223 67.12781598058392,15.385703929478595 67.12385197214375,15.417538595960067 67.13574399746425,15.385703929478595 67.10271059379622,15.420191484833524 67.09874658535605,15.433455929200804 67.10271059379622,15.457331929061912 67.09213990462244,15.467943484555736 67.10271059379622,15.438761706947716 67.11063861067655,15.452026151314996 67.11988796370359,15.444067484694628 67.13045865287737,15.44937326244154 67.14763602278474,15.47855504004956 67.16481339269211,15.481207928923016 67.18463343489293,15.467943484555736 67.19256145177326,15.441414595821172 67.19916813250687,15.43610881807426 67.20841748553391,15.396315484972419 67.21238149397408,15.401621262719331 67.22163084700112,15.375092373984767 67.21766683856096,15.351216374123663 67.22163084700112,15.42284437370698 67.24409356149539,15.444067484694628 67.23748688076178,15.430803040327348 67.22559485544129,15.494472373290296 67.23352287232161,15.486513706669928 67.2454148976421,15.44937326244154 67.24409356149539,15.430803040327348 67.25994959525605,15.385703929478595 67.2573069229626,15.351216374123663 67.24805756993555,15.329993263136014 67.23616554461506,15.295505707781082 67.22823752773473,15.27693548566689 67.23352287232161,15.239795041438505 67.23352287232161,15.27693548566689 67.2454148976421,15.314075929895278 67.24145088920194,15.343257707503295 67.24937890608227,15.348563485250207 67.26391360369621,15.231836374818133 67.26787761213637,15.226530597071221 67.2573069229626,15.1734728196021 67.25334291452243,15.115109264386064 67.27316295672325,15.04082837592929 67.26919894828309,15.04082837592929 67.2758056290167,15.077968820157675 67.2824123097503,15.085927486778044 67.27844830131014,15.120415042132976 67.28637631819046,15.1734728196021 67.29034032663063,15.20000170833666 67.30619636039128,15.226530597071221 67.30619636039128,15.258365263552697 67.31412437727161,15.258365263552697 67.34187243635276,15.229183485944677 67.34187243635276,15.229183485944677 67.32998041103227,15.207960374957029 67.32998041103227,15.197348819463205 67.31808838571177,15.160208375234816 67.29430433507079,15.141638153120624 67.29430433507079,15.168167041855188 67.3260164025921,15.154902597487904 67.32733773873882,15.112456375512608 67.32205239415194,15.038175487055835 67.31808838571177,14.987770598460166 67.29694700736424,15.019605264941642 67.29430433507079,14.990423487333622 67.28901899048391,14.974506154092886 67.29430433507079,14.92940704324413 67.29034032663063,14.8949194878892 67.29694700736424,14.815332821685516 67.29430433507079,14.791456821824408 67.28637631819046,14.86573771028118 67.2824123097503,14.83920882154662 67.26787761213637,14.794109710697864 67.26391360369621,14.722481711114547 67.24145088920194,14.69329993350653 67.24937890608227,14.690647044633074 67.25598558681588,14.719828822241091 67.26127093140276,14.717175933367635 67.29430433507079,14.733093266608375 67.30223235195112,14.722481711114547 67.3128030411249,14.714523044494179 67.30487502424457,14.669423933645426 67.29430433507079,14.605754600682477 67.28901899048391,14.632283489417038 67.28505498204375,14.56065548983372 67.27316295672325,14.526167934478792 67.27712696516342,14.4651514903893 67.27316295672325,14.428011046160911 67.26523493984293,14.414746601793631 67.26919894828309,14.316589713475754 67.25202157837572,14.311283935728841 67.26523493984293,14.337812824463402 67.26919894828309,14.404135046299807 67.28637631819046,14.382911935312158 67.29430433507079,14.398829268552895 67.31016036883145,14.430663935034367 67.30619636039128,14.473110157009668 67.31940972185849,14.489027490250404 67.33526575561915,14.565961267580633 67.35904980626013,14.568614156454089 67.3696204954339,14.632283489417038 67.38547652919456,14.640242156037406 67.40001122680849,14.61106037842939 67.39604721836832,14.573919934201001 67.40397523524865,14.589837267441741 67.41190325212898,14.629630600543582 67.41058191598226,14.640242156037406 67.43568730276996,14.685341266886162 67.44361531965029,14.709217266747267 67.43965131121013,14.738399044355287 67.44361531965029,14.727787488861463 67.43304463047652,14.791456821824408 67.43700863891668,14.794109710697864 67.44493665579701,14.860431932534269 67.43568730276996,14.86573771028118 67.42908062203635,14.8524732659139 67.40793924368882,14.820638599432428 67.38679786534128,14.86573771028118 67.38679786534128,14.863084821407725 67.39868989066177,14.910836821129937 67.4317232943298,14.947977265358325 67.42908062203635,14.974506154092886 67.44757932809046,15.056745709170027 67.45154333653062,15.051439931423115 67.4568286811175,14.98511770958671 67.45550734497078,14.940018598737954 67.44757932809046,14.82594437717934 67.46079268955766,14.767580821963303 67.45154333653062,14.703911489000355 67.45550734497078,14.65350660040469 67.47664872331832,14.658812378151602 67.48061273175848,14.775539488583671 67.525538160747,14.932059932117586 67.57442759817569,15.054092820296571 67.59028363193634,15.093886153398415 67.58631962349618,15.125720819879888 67.5625355728552,15.149596819740992 67.56517824514864,15.154902597487904 67.55460755597487,15.136332375373712 67.54139419450766,15.083274597904587 67.54139419450766,15.032869709308923 67.57046358973552,15.001035042827446 67.57707027046914,14.990423487333622 67.5625355728552,14.99838215395399 67.55725022826832,15.02756393156201 67.55460755597487,15.030216820435466 67.54139419450766,15.077968820157675 67.52818083304045,15.030216820435466 67.5123247992798,15.008993709447815 67.49911143781259,14.92940704324413 67.49118342093226,14.977159042966342 67.48457674019865,15.01164659832127 67.48854074863881,15.054092820296571 67.50836079083963,15.083274597904587 67.50968212698635,15.15755548636136 67.53214484148062,15.202654597210117 67.52950216918717,15.202654597210117 67.51628880771996,15.239795041438505 67.50836079083963,15.239795041438505 67.50439678239947,15.18673726396938 67.49646876551914,15.15755548636136 67.5004327739593,15.141638153120624 67.48854074863881,15.176125708475556 67.48325540405193,15.165514152981732 67.46739937029128,15.128373708753344 67.45947135341095,15.138985264247168 67.44757932809046,15.133679486500256 67.43304463047652,15.146943930867536 67.4317232943298,15.15755548636136 67.45286467267734,15.20000170833666 67.46343536185111,15.226530597071221 67.47664872331832,15.218571930450853 67.4872194124921,15.239795041438505 67.49646876551914,15.279588374540346 67.49646876551914,15.29019993003417 67.50439678239947,15.401621262719331 67.49646876551914,15.44937326244154 67.48854074863881,15.473249262302648 67.48061273175848,15.47855504004956 67.46872070643799,15.473249262302648 67.44361531965029,15.518348373151401 67.42775928588964,15.539571484139053 67.40793924368882,15.544877261885965 67.37094183158062,15.584670594987806 67.37358450387407,15.58201770611435 67.34980045323309,15.589976372734718 67.34715778093964,15.635075483583474 67.3696204954339,15.61119948372237 67.37358450387407,15.592629261608174 67.40001122680849,15.65099281682421 67.40793924368882,15.68017459443223 67.42379527744947,15.722620816407527 67.43700863891668,15.696091927672967 67.43700863891668,15.658951483444579 67.42775928588964,15.661604372318035 67.41983126900931,15.63772837245693 67.41190325212898,15.584670594987806 67.40793924368882,15.571406150620525 67.41190325212898,15.542224373012509 67.43700863891668,15.521001262024857 67.43965131121013,15.515695484277945 67.46079268955766,15.55548881737979 67.46475669799783,15.584670594987806 67.47664872331832,15.552835928506333 67.47136337873144,15.528959928645229 67.47664872331832,15.53426570639214 67.4872194124921,15.58201770611435 67.51761014386668,15.68017459443223 67.55328621982815,15.765067038382828 67.5625355728552,15.81016614923158 67.57310626202897,15.844653704586513 67.57046358973552,15.892405704308722 67.57839160661585,15.865876815574161 67.58631962349618,15.918934593043286 67.59424764037651,15.88709992656181 67.59424764037651,15.847306593459969 67.59028363193634,15.844653704586513 67.58631962349618,15.78363726049702 67.5810342789093,15.778331482750108 67.57442759817569,15.733232371901352 67.57046358973552,15.666910150064947 67.5625355728552,15.587323483861262 67.5374301860675,15.518348373151401 67.50836079083963,15.473249262302648 67.525538160747,15.46529059568228 67.53346617762733,15.433455929200804 67.52818083304045,15.385703929478595 67.53610884992078,15.356522151870575 67.53214484148062,15.284894152287258 67.5374301860675,15.223877708197765 67.54932221138799,15.213266152703941 67.56121423670848,15.226530597071221 67.58235561505602,15.213266152703941 67.59028363193634,15.237142152565049 67.59028363193634,15.215919041577397 67.59821164881667,15.253059485805785 67.606139665697,15.242447930311961 67.61671035487078,15.30346437440145 67.61935302716421,15.393662596098963 67.59821164881667,15.425497262580436 67.59689031266996,15.441414595821172 67.57442759817569,15.452026151314996 67.59028363193634,15.433455929200804 67.60878233799045,15.398968373845875 67.60878233799045,15.29019993003417 67.63785173321831,15.268976819046522 67.63917306936503,15.226530597071221 67.62331703560437,15.194695930589749 67.62331703560437,15.15755548636136 67.6312450524847,15.231836374818133 67.68409849835355,15.279588374540346 67.69070517908716,15.324687485389102 67.68409849835355,15.33264615200947 67.69863319596749,15.26367104129961 67.69863319596749,15.247753708058873 67.6999545321142,15.26367104129961 67.71845323816831,15.282241263413802 67.72241724660847,15.311423041021822 67.7369519442224,15.348563485250207 67.73166659963552,15.401621262719331 67.7118465574347,15.398968373845875 67.70391854055437,15.462637706808824 67.69599052367404,15.526307039771769 67.68013448991339,15.536918595265597 67.68277716220683,15.502431039910665 67.6999545321142,15.544877261885965 67.71052522128798,15.627116816963106 67.686741170647,15.653645705697667 67.69070517908716,15.616505261469282 67.69863319596749,15.571406150620525 67.71581056587486,15.547530150759421 67.71977457431503,15.473249262302648 67.71581056587486,15.446720373568084 67.73166659963552,15.406927040466243 67.74752263339617,15.4095799293397 67.75280797798305,15.444067484694628 67.7554506502765,15.53426570639214 67.76866401174371,15.613852372595826 67.76073599486338,15.674868816685319 67.7369519442224,15.712009260913703 67.7303452634888,15.75710837176246 67.7303452634888,15.759761260635916 67.7118465574347,15.778331482750108 67.6999545321142,15.834042149092689 67.68013448991339,15.855265260080337 67.71052522128798,15.818124815851949 67.70391854055437,15.78363726049702 67.71448922972814,15.78363726049702 67.74091595266256,15.72792659415444 67.74884396954289,15.661604372318035 67.77262802018387,15.61119948372237 67.7805560370642,15.571406150620525 67.7805560370642,15.43610881807426 67.80962543229207,15.412232818213155 67.82151745761256,15.420191484833524 67.83340948293305,15.430803040327348 67.82548146605272,15.44937326244154 67.83340948293305,15.452026151314996 67.8492655166937,15.425497262580436 67.87304956733469,15.428150151453892 67.8492655166937,15.404274151592787 67.84133749981338,15.383051040605139 67.8743709034814,15.372439485111311 67.86908555889453,15.375092373984767 67.83737349137321,15.396315484972419 67.83340948293305,15.375092373984767 67.80169741541174,15.306117263274906 67.78980539009125,15.29019993003417 67.77791336477075,15.237142152565049 67.76073599486338,15.197348819463205 67.7554506502765,15.192043041716293 67.74752263339617,15.207960374957029 67.7369519442224,15.168167041855188 67.71845323816831,15.146943930867536 67.71845323816831,15.115109264386064 67.70391854055437,15.101844820018783 67.70788254899453,15.054092820296571 67.68806250679371,14.98511770958671 67.67617048147322,14.947977265358325 67.66295712000601,14.860431932534269 67.65502910312568,14.764927933089847 67.65899311156585,14.786151044077496 67.66427845615273,14.733093266608375 67.66692112844618,14.73574615548183 67.6748491453265,14.791456821824408 67.69070517908716,14.873696376901552 67.70391854055437,14.8949194878892 67.71052522128798,14.884307932395377 67.71977457431503,14.79941548844478 67.71581056587486,14.804721266191692 67.72770259119535,14.762275044216391 67.72373858275519,14.788803932950952 67.73959461651584,14.889613710142289 67.73563060807568,14.977159042966342 67.75148664183634,15.038175487055835 67.74487996110273,15.09123326452496 67.75148664183634,15.14429104199408 67.76337866715683,15.083274597904587 67.76337866715683,15.01164659832127 67.75941465871666,15.030216820435466 67.76998534789043,14.993076376207078 67.76866401174371,14.995729265080534 67.77659202862404,15.04082837592929 67.78584138165108,15.043481264802747 67.7924480623847,14.97185326521943 67.78584138165108,14.82594437717934 67.76866401174371,14.820638599432428 67.77659202862404,14.873696376901552 67.78452004550437,14.833903043799708 67.78848405394453,14.836555932673164 67.8056614238519,14.79941548844478 67.7924480623847,14.75696926646948 67.80169741541174,14.78349815520404 67.82548146605272,14.77023371083676 67.82944547449289,14.810027043938604 67.83340948293305,14.802068377318236 67.84133749981338,14.817985710558972 67.84662284440026,14.876349265775008 67.82944547449289,14.897572376762657 67.83340948293305,14.884307932395377 67.84133749981338,15.067357264663851 67.86644288660108,15.085927486778044 67.85322952513387,15.10449770889224 67.86512155045436,15.138985264247168 67.86908555889453,15.107150597765695 67.8743709034814,14.849820377040444 67.85455086128059,14.828597266052796 67.8611575420142,14.892266599015745 67.86908555889453,14.879002154648465 67.87701357577485,14.900225265636113 67.8862629288019,14.995729265080534 67.90344029870927,15.093886153398415 67.90608297100272,15.085927486778044 67.8994762902691,15.136332375373712 67.89154827338878,15.229183485944677 67.90344029870927,15.20000170833666 67.89022693724206,15.247753708058873 67.89022693724206,15.25040659693233 67.8862629288019,15.194695930589749 67.86644288660108,15.178778597349012 67.85058685284042,15.194695930589749 67.85058685284042,15.27693548566689 67.8862629288019,15.27693548566689 67.89815495412239,15.324687485389102 67.91533232402976,15.35917504074403 67.91929633246993,15.327340374262558 67.90608297100272,15.335299040882926 67.8994762902691,15.42284437370698 67.92326034091009,15.531612817518685 67.9417590469642,15.560794595126701 67.93515236623058,15.526307039771769 67.91533232402976,15.542224373012509 67.9113683155896,15.59528215048163 67.93911637467075,15.59528215048163 67.94704439155107,15.65099281682421 67.94968706384452,15.648339927950754 67.95893641687157,15.725273705280983 67.96818576989861,15.778331482750108 67.9668644337519,15.815471926978493 67.95365107228469,15.849959482333425 67.91533232402976,15.868529704447617 67.9113683155896,15.892405704308722 67.91929633246993,15.884447037688354 67.9417590469642,15.932199037410566 67.96290042531173,15.88709992656181 67.97214977833877,15.905670148676005 67.9800777952191,15.940157704030934 67.97214977833877,15.979951037132778 67.97611378677894,15.953422148398214 67.98404180365927,15.950769259524758 67.9919698205396,15.990562592626603 67.9919698205396,15.987909703753147 67.99725516512648,15.961380815018583 67.99593382897976,15.948116370651302 68.0051831820068,15.977298148259322 68.00782585430025,15.95607503727167 68.0236818880609,15.924240370790198 68.03293124108795,15.860571037827249 68.03689524952811,15.834042149092689 68.05539395558222,15.794248815990844 68.0487872748486,15.778331482750108 68.05671529172893,15.75710837176246 68.04350193026173,15.807513260358125 68.04350193026173,15.820777704725408 68.0355739133814,15.743843927395176 68.03293124108795,15.709356372040247 68.04746593870189,15.619158150342738 68.04746593870189,15.58201770611435 68.04482326640844,15.58201770611435 68.06332197246255,15.59528215048163 68.07257132548959,15.53426570639214 68.08974869539696,15.518348373151401 68.09767671227729,15.521001262024857 68.06464330860926,15.446720373568084 68.04482326640844,15.396315484972419 68.03953792182156,15.404274151592787 68.03293124108795,15.35917504074403 68.02896723264779,15.385703929478595 68.0236818880609,15.428150151453892 68.02500322420762,15.441414595821172 68.01575387118058,15.42284437370698 68.00782585430025,15.414885707086611 67.99593382897976,15.367133707364399 68.0051831820068,15.377745262858223 68.01971787962074,15.335299040882926 68.01178986274041,15.30346437440145 68.0170752073273,15.279588374540346 68.04482326640844,15.27693548566689 68.0606793001691,15.298158596654538 68.06464330860926,15.353869262997119 68.06464330860926,15.314075929895278 68.07653533392975,15.34591059637675 68.1042833930109,15.398968373845875 68.11749675447811,15.391009707225507 68.13071011594532,15.412232818213155 68.14260214126581,15.475902151176104 68.15317283043959,15.515695484277945 68.14920882199942,15.507736817657577 68.13071011594532,15.49181948441684 68.12674610750516,15.497125262163753 68.11353274603795,15.521001262024857 68.10692606530434,15.531612817518685 68.13335278823877,15.55548881737979 68.1293887797986,15.587323483861262 68.13335278823877,15.58201770611435 68.14920882199942,15.627116816963106 68.1412808051191,15.62446392808965 68.17431420878712,15.592629261608174 68.18092088952073,15.627116816963106 68.19017024254778,15.674868816685319 68.18224222566745,15.672215927811859 68.17431420878712,15.717315038660615 68.17035020034696,15.725273705280983 68.14920882199942,15.698744816546423 68.15053015814614,15.685480372179143 68.14524481355926,15.71466214978716 68.13731679667893,15.725273705280983 68.11749675447811,15.704050594293335 68.1042833930109,15.66425726119149 68.10560472915762,15.603240817102002 68.11485408218466,15.597935039355086 68.10956873759778,15.643034150203842 68.09767671227729,15.648339927950754 68.0857846869568,15.61119948372237 68.07257132548959,15.635075483583474 68.06860731704943,15.629769705836562 68.05671529172893,15.658951483444579 68.05935796402238,15.66425726119149 68.07124998934287,15.65099281682421 68.07653533392975,15.669563038938403 68.08842735925025,15.74119103852172 68.0857846869568,15.72792659415444 68.09767671227729,15.762414149509372 68.10692606530434,15.767719927256284 68.09767671227729,15.807513260358125 68.09635537613057,15.7969017048643 68.10956873759778,15.815471926978493 68.11749675447811,15.842000815713057 68.1108900737445,15.897711482055637 68.13335278823877,15.87383548219453 68.13863813282565,15.940157704030934 68.1544941665863,15.868529704447617 68.16242218346663,15.889752815435266 68.17035020034696,15.852612371206881 68.17695688108057,15.849959482333425 68.19941959557482,15.879141259941441 68.20734761245515,15.892405704308722 68.19545558713466,15.92954614853711 68.19545558713466,15.964033703892039 68.20734761245515,15.95607503727167 68.23113166309614,15.940157704030934 68.24302368841663,15.937504815157478 68.25623704988384,15.974645259385866 68.26416506676416,16.046273258969183 68.25623704988384,16.064843481083376 68.22716765465597,16.104636814185216 68.20734761245515,16.01974437023462 68.18620623410762,16.046273258969183 68.17827821722729,16.059537703336463 68.18224222566745,16.091372369817936 68.17827821722729,16.115248369679044 68.19941959557482,16.141777258413605 68.18620623410762,16.14443014728706 68.16242218346663,16.128512814046324 68.1544941665863,16.107289703058672 68.12146076291828,16.1179012585525 68.11749675447811,16.099331036438304 68.08974869539696,16.115248369679044 68.0857846869568,16.064843481083376 68.04746593870189,16.086066592071024 68.0487872748486,16.133818591793236 68.02500322420762,16.155041702780885 68.02764589650107,16.181570591515445 67.99989783741992,16.2266697023642 67.96818576989861,16.229322591237658 67.96025775301828,16.192182147009273 67.90608297100272,16.210752369123465 67.89419094568223,16.237281257858026 67.89022693724206,16.261157257719134 67.89419094568223,16.3115621463148 67.86644288660108,16.3540083682901 67.86644288660108,16.377884368151204 67.8492655166937,16.48665281196291 67.81226810458551,16.51848747844438 67.82019612146584,16.47869414534254 67.82548146605272,16.438900812240696 67.83737349137321,16.438900812240696 67.84530150825354,16.468082589848713 67.85851486972075,16.412371923506136 67.86512155045436,16.36727281265738 67.87965624806829,16.295644813074063 67.89022693724206,16.271768813212958 67.90211896256255,16.242587035604938 67.90211896256255,16.28503325758024 67.95893641687157,16.266463035466046 67.98272046751255,16.29033903532715 67.98800581209943,16.197487924756185 68.01575387118058,16.192182147009273 68.02103921576746,16.231975480111114 68.0236818880609,16.229322591237658 68.03953792182156,16.261157257719134 68.02896723264779,16.279727479833326 68.02896723264779,16.338091035049363 67.97214977833877,16.364619923783923 67.96290042531173,16.43624792336724 67.91797499632321,16.465429700975257 67.91533232402976,16.441553701114152 67.93118835779042,16.468082589848713 67.9549724084314,16.396454590265396 67.95365107228469,16.327479479555535 68.00386184586009,16.31686792406171 68.02896723264779,16.3540083682901 68.02896723264779,16.383190145898116 68.01575387118058,16.388495923645028 68.02896723264779,16.420330590126504 68.01311119888713,16.452165256607977 67.97479245063222,16.4627768121018 67.9668644337519,16.523793256191293 67.96290042531173,16.537057700558574 67.97611378677894,16.489305700836365 67.97611378677894,16.45747103435489 68.00386184586009,16.49195858970982 68.00782585430025,16.510528811824013 68.02896723264779,16.465429700975257 68.03160990494123,16.399107479138852 68.03953792182156,16.356661257163555 68.03953792182156,16.35931414603701 68.0606793001691,16.391148812518484 68.07389266163631,16.401760368012308 68.08974869539696,16.43624792336724 68.08974869539696,16.433595034493784 68.10164072071746,16.454818145481433 68.10560472915762,16.454818145481433 68.12146076291828,16.47869414534254 68.12146076291828,16.515834589570925 68.09371270383713,16.552975033799314 68.08049934236992,16.635214588876455 68.08049934236992,16.65909058873756 68.06332197246255,16.69092525521903 68.07257132548959,16.66439636648447 68.07389266163631,16.648479033243735 68.08446335081008,16.709495477333228 68.08049934236992,16.72806569944742 68.08974869539696,16.606032811268435 68.08974869539696,16.563586589293138 68.09635537613057,16.537057700558574 68.10560472915762,16.53175192281166 68.12146076291828,16.489305700836365 68.13335278823877,16.446859478861064 68.1293887797986,16.420330590126504 68.1108900737445,16.364619923783923 68.09239136769041,16.338091035049363 68.09371270383713,16.279727479833326 68.11749675447811,16.300950590820975 68.11749675447811,16.28503325758024 68.13071011594532,16.24789281335185 68.13335278823877,16.245239924478394 68.13863813282565,16.274421702086414 68.15053015814614,16.29829770194752 68.13863813282565,16.34074392392282 68.14260214126581,16.34074392392282 68.16242218346663,16.36727281265738 68.17035020034696,16.401760368012308 68.13863813282565,16.417677701253048 68.13863813282565,16.420330590126504 68.1663861919068,16.38053725702466 68.17035020034696,16.383190145898116 68.17827821722729,16.452165256607977 68.17695688108057,16.465429700975257 68.1663861919068,16.481347034215997 68.16902886420024,16.473388367595625 68.18752757025433,16.420330590126504 68.19413425098794,16.39380170139194 68.20338360401499,16.407066145759224 68.20734761245515,16.5052230340771 68.19017024254778,16.547669256052398 68.17695688108057,16.587462589154242 68.17695688108057,16.58215681140733 68.18224222566745,16.47604125646908 68.20602627630844,16.47869414534254 68.21923963777564,16.465429700975257 68.22716765465597,16.47604125646908 68.24302368841663,16.452165256607977 68.23641700768302,16.44951236773452 68.22452498236252,16.32482659068208 68.22320364621581,16.269115924339502 68.2099902847486,16.24789281335185 68.21527562933548,16.19483503588273 68.21131162089532,16.1842234803889 68.23245299924285,16.224016813490746 68.23641700768302,16.23462836898457 68.23113166309614,16.269115924339502 68.2350956715363,16.327479479555535 68.24698769685679,16.361967034910467 68.24434502456334,16.351355479416643 68.26812907520433,16.29033903532715 68.25887972217728,16.266463035466046 68.260201058324,16.26381014659259 68.27077174749778,16.21340525799692 68.28002110052482,16.14443014728706 68.28398510896498,16.141777258413605 68.29191312584531,16.173611924895077 68.32098252107318,16.205446591376553 68.32098252107318,16.229322591237658 68.33287454639367,16.25585147997222 68.33155321024695,16.239934146731482 68.31701851263301,16.26381014659259 68.30909049575268,16.29033903532715 68.31305450419285,16.287686146453694 68.31966118492646,16.34604970166973 68.30909049575268,16.335438146175907 68.30116247887236,16.369925701530835 68.29455579813876,16.38053725702466 68.29851980657892,16.364619923783923 68.31305450419285,16.452165256607977 68.29587713428548,16.415024812379592 68.28794911740515,16.47869414534254 68.28794911740515,16.545016367178942 68.26812907520433,16.56889236704005 68.25491571373712,16.571545255913506 68.24434502456334,16.60337992239498 68.23641700768302,16.61664436676226 68.22452498236252,16.60337992239498 68.20206226786827,16.67235503310484 68.18620623410762,16.730718588320876 68.15845817502647,16.81030525452456 68.15053015814614,16.807652365651105 68.16110084731991,16.746635921561612 68.17035020034696,16.738677254941244 68.18092088952073,16.65909058873756 68.20338360401499,16.635214588876455 68.21923963777564,16.648479033243735 68.23113166309614,16.60337992239498 68.24830903300351,16.635214588876455 68.260201058324,16.613991477888803 68.28002110052482,16.44951236773452 68.3038051511658,16.446859478861064 68.31173316804613,16.404413256885768 68.31173316804613,16.34074392392282 68.32362519336662,16.35931414603701 68.32494652951334,16.338091035049363 68.33683855483383,16.300950590820975 68.33155321024695,16.27707459095987 68.33683855483383,16.29829770194752 68.34476657171416,16.269115924339502 68.36062260547482,16.27707459095987 68.37383596694202,16.377884368151204 68.38572799226252,16.407066145759224 68.38044264767564,16.412371923506136 68.38969200070268,16.45747103435489 68.39762001758301,16.49195858970982 68.4095120429035,16.521140367317837 68.40819070675678,16.558280811546226 68.41479738749038,16.579503922533874 68.41083337905022,16.592768366901154 68.42272540437071,16.640520366623367 68.42140406822399,16.66439636648447 68.40554803446334,16.696231032965947 68.41744005978383,16.730718588320876 68.42272540437071,16.78377636579 68.41347605134366,16.773164810296176 68.40158402602317,16.79704081015728 68.40554803446334,16.895197698475158 68.38837066455596,16.903156365095526 68.36987195850186,16.87397458748751 68.3540159247412,16.834181254385665 68.34212389942071,16.842139921006037 68.33683855483383,16.95090836481774 68.35269458859449,17.00661903116032 68.35797993318137,17.027842142147968 68.35665859703465,17.041106586515248 68.36458661391498,17.038453697641792 68.38176398382235,17.099470141731285 68.38572799226252,17.11008169722511 68.38176398382235,17.131304808212757 68.39233467299613,17.187015474555338 68.39365600914284,17.22150302991027 68.37251463079531,17.23476747427755 68.36987195850186,17.245379029771374 68.35005191630104,17.226808807657182 68.340802563274,17.23476747427755 68.3156971764863,17.250684807518287 68.30776915960597,17.332924362595428 68.28002110052482,17.33823014034234 68.26416506676416,17.332924362595428 68.24434502456334,17.309048362734323 68.23245299924285,17.31170125160778 68.22056097392236,17.340883029215796 68.20734761245515,17.31700702935469 68.19017024254778,17.36741191795036 68.20734761245515,17.335577251468884 68.22320364621581,17.362106140203448 68.25887972217728,17.391287917811464 68.24698769685679,17.4072052510522 68.25887972217728,17.391287917811464 68.2786997643781,17.35149458470962 68.29587713428548,17.306395473860867 68.31305450419285,17.258643474138655 68.32362519336662,17.282519473999763 68.32758920180679,17.271907918505935 68.33683855483383,17.279866585126307 68.34873058015432,17.250684807518287 68.36987195850186,17.250684807518287 68.39365600914284,17.26925502963248 68.40158402602317,17.301089696113955 68.40158402602317,17.2984368072405 68.41876139593055,17.35149458470962 68.42536807666416,17.40189947330529 68.41347605134366,17.433734139786765 68.40026268987646,17.574337250079942 68.37251463079531,17.598213249941047 68.38044264767564,17.492097695002798 68.39762001758301,17.423122584292937 68.41347605134366,17.43108125091331 68.42140406822399,17.417816806546025 68.43065342125104,17.383329251191096 68.43065342125104,17.396593695558376 68.4465094550117,17.478833250635518 68.45179479959857,17.545155472471922 68.45443747189202,17.611477694308327 68.44518811886498,17.63004791642252 68.4465094550117,17.693717249385468 68.43329609354448,17.709634582626204 68.43858143813137,17.760039471221873 68.41876139593055,17.82370880418482 68.40554803446334,17.84493191517247 68.41479738749038,17.79717991545026 68.41876139593055,17.688411471638556 68.46236548877235,17.653923916283627 68.46632949721251,17.638006583042888 68.47425751409284,17.598213249941047 68.47557885023956,17.47087458401515 68.46368682491907,17.47618036176206 68.47954285867972,17.53984969472501 68.49936290088054,17.563725694586115 68.51918294308136,17.574337250079942 68.53636031298873,17.545155472471922 68.55089501060267,17.494750583876254 68.53107496840185,17.423122584292937 68.52314695152153,17.35149458470962 68.49539889244038,17.295783918367043 68.47425751409284,17.24803191864483 68.46236548877235,17.08885858623746 68.45047346345186,17.02518925327451 68.45047346345186,17.014577697780688 68.45840148033218,17.05967680862944 68.47557885023956,17.10212303060474 68.47954285867972,17.104775919478197 68.48614953941333,17.072941252996724 68.49539889244038,17.070288364123268 68.5033269093207,17.001313253413407 68.51389759849448,16.99866036453995 68.52446828766824,16.932338142703546 68.51389759849448,16.932338142703546 68.5033269093207,16.868668809740598 68.46765083335923,16.786429254663457 68.46632949721251,16.76255325480235 68.4597228164789,16.66439636648447 68.45179479959857,16.648479033243735 68.47029350565268,16.635214588876455 68.45840148033218,16.563586589293138 68.45047346345186,16.51318170069747 68.45047346345186,16.53175192281166 68.47029350565268,16.523793256191293 68.49143488400021,16.44951236773452 68.50993359005432,16.473388367595625 68.52182561537481,16.4627768121018 68.5403243214289,16.5052230340771 68.54693100216251,16.521140367317837 68.558823027483,16.552975033799314 68.55618035518955,16.58215681140733 68.53636031298873,16.613991477888803 68.53107496840185,16.629908811129543 68.53636031298873,16.627255922256087 68.55618035518955,16.648479033243735 68.558823027483,16.64582614437028 68.56939371665676,16.62195014450917 68.56410837206988,16.56093370041968 68.58128574197725,16.571545255913506 68.61299780949857,16.613991477888803 68.64206720472643,16.68561947747212 68.6526378939002,16.720107032827052 68.6460312131666,16.725412810573964 68.66981526380758,16.799693699030737 68.68302862527479,16.84744569875295 68.68567129756823,16.881933254107878 68.6777432806879,16.90050347622207 68.68170728912807,16.958867031438107 68.71341935664938,17.041106586515248 68.7147406927961,17.041106586515248 68.69492065059528,17.07559414187018 68.67377927224774,17.112734586098565 68.66981526380758,17.133957697086217 68.64470987701988,17.173751030188058 68.64206720472643,17.20823858554299 68.65792323848709,17.12334614159239 68.67377927224774,17.099470141731285 68.68567129756823,17.120693252718933 68.7147406927961,17.187015474555338 68.72134737352971,17.26129636301211 68.73456073499692,17.29047814062013 68.73456073499692,17.301089696113955 68.72663271811659,17.340883029215796 68.72266870967643,17.399246584431832 68.72927539041004,17.417816806546025 68.72266870967643,17.439039917533677 68.68302862527479,17.494750583876254 68.6777432806879,17.531891028104642 68.6777432806879,17.550461250218834 68.68302862527479,17.584948805573767 68.68567129756823,17.667188360650908 68.66981526380758,17.683105693891644 68.67377927224774,17.65922969403054 68.68302862527479,17.60351902768796 68.69359931444856,17.555767027965747 68.69359931444856,17.53984969472501 68.6896353060084,17.481486139508974 68.69888465903544,17.468221695141693 68.71077668435593,17.473527472888605 68.72531138196987,17.46291591739478 68.73456073499692,17.391287917811464 68.74645276031741,17.36741191795036 68.73852474343708,17.322312807101603 68.73720340729037,17.31170125160778 68.74248875187725,17.253337696391743 68.75438077719774,17.26129636301211 68.77155814710511,17.31170125160778 68.77948616398544,17.391287917811464 68.80062754233298,17.42046969541948 68.81648357609363,17.460263028521325 68.81912624838708,17.508015028243538 68.81251956765347,17.58229591670031 68.79137818930593,17.64596524966326 68.77948616398544,17.725551915866944 68.77816482783872,17.746775026854593 68.77155814710511,17.794527026576805 68.74645276031741,17.80513858207063 68.74909543261086,17.79717991545026 68.77420081939856,17.770651026715697 68.78873551701248,17.733510582487312 68.79269952545265,17.656576805157083 68.7953421977461,17.632700805295975 68.79930620618626,17.531891028104642 68.82441159297396,17.473527472888605 68.83101827370757,17.48413902838243 68.8389462905879,17.619436360928695 68.89179973645675,17.669841249524364 68.89576374489691,17.691064360512012 68.89312107260346,17.720246138120032 68.89972775333707,17.717593249246576 68.88387171957642,17.688411471638556 68.87990771113625,17.7282048047404 68.86933702196248,17.744122137981137 68.87330103040264,17.807791470944085 68.86273034122888,17.85289058179284 68.8640516773756,17.778609693336065 68.90501309792396,17.733510582487312 68.91294111480428,17.704328804879292 68.90897710636412,17.720246138120032 68.9327611570051,17.69902302713238 68.93408249315182,17.63535369416943 68.92086913168461,17.529238139231186 68.90897710636412,17.460263028521325 68.89312107260346,17.446998584154045 68.90897710636412,17.452304361900957 68.91822645939116,17.48413902838243 68.93011848471166,17.468221695141693 68.94993852691248,17.49740347274971 68.9578665437928,17.55311413909229 68.95390253535264,17.56637858345957 68.96447322452642,17.54780836134538 68.96843723296658,17.54780836134538 68.9829719305805,17.48413902838243 68.97768658599362,17.47618036176206 68.994863955901,17.48944480612934 68.994863955901,17.529238139231186 69.01468399810182,17.550461250218834 69.03186136800919,17.592907472194135 69.04243205718296,17.693717249385468 69.08603615002477,17.648618138536715 69.09660683919853,17.624742138675607 69.09264283075836,17.640659471916344 69.10849886451902,17.730857693613856 69.12039088983951,17.75473369347496 69.11510554525263,17.786568359956433 69.11642688139935,17.826361693058278 69.12699757057312,17.89533680376814 69.13360425130672,17.929824359123067 69.1441749404805,17.985535025465648 69.15210295736082,18.05981591392242 69.14813894892066,18.05451013617551 69.13228291516,18.131443913505738 69.1441749404805,18.17919591322795 69.12303356213296,18.197766135342142 69.12831890671984,18.147361246746474 69.14813894892066,18.152667024493386 69.1573883019477,18.118179469138457 69.1573883019477,18.112873691391545 69.16531631882803,18.08369191378353 69.1573883019477,18.06777458054279 69.16531631882803,18.08103902491007 69.17720834414853,18.051857247302053 69.18117235258869,18.065121691669333 69.20627773937639,18.086344802656985 69.23006179001737,18.043898580681685 69.23402579845754,17.972270581098368 69.22609778157721,17.974923469971824 69.2379898068977,17.998799469832928 69.2498818322182,17.982882136592192 69.27102321056573,17.996146580959472 69.29877126964688,17.993493692086016 69.30934195882065,18.05451013617551 69.3185913118477,18.08103902491007 69.33973269019523,18.104915024771177 69.3436966986354,18.112873691391545 69.36351674083622,18.094303469277353 69.37937277459687,18.104915024771177 69.38465811918375,18.16593146886067 69.38465811918375,18.176543024354494 69.39522880835753,18.152667024493386 69.40051415294441,18.163278579987214 69.43222622046572,18.131443913505738 69.45336759881326,18.152667024493386 69.46525962413375,18.189807468721774 69.45997427954687,18.232253690697075 69.46658096028047,18.23490657957053 69.4811156578944,18.298575912533476 69.4811156578944,18.301228801406936 69.47318764101408,18.343675023382232 69.46525962413375,18.372856800990252 69.44147557349277,18.35959235662297 69.40051415294441,18.314493245774216 69.36351674083622,18.38877413423099 69.39655014450425,18.48427813367541 69.37540876615671,18.494889689169234 69.36748074927638,18.486931022548866 69.33048333716819,18.500195466916146 69.31991264799441,18.489583911422322 69.28687924432639,18.502848355789602 69.27366588285918,18.500195466916146 69.25913118524524,18.478972355928498 69.24327515148458,18.478972355928498 69.22477644543049,18.492236800295778 69.22213377313705,18.51080702240997 69.2379898068977,18.508154133536515 69.2498818322182,18.524071466777254 69.25780984909852,18.542641688891447 69.29480726120671,18.545294577764903 69.31462730340753,18.529377244524166 69.3318046733149,18.53998880001799 69.35162471551573,18.56651768875255 69.35558872395589,18.590393688613656 69.33973269019523,18.569170577626007 69.3185913118477,18.606311021854395 69.30141394194033,18.691203465804993 69.27102321056573,18.688550576931537 69.25384584065836,18.71242657679264 69.25384584065836,18.715079465666097 69.27895122744606,18.648757243829692 69.30273527808704,18.638145688335868 69.31330596726082,18.664674577070432 69.31330596726082,18.677939021437712 69.31991264799441,18.744261243274117 69.32255532028786,18.760178576514853 69.32651932872803,18.898128797934575 69.31991264799441,18.89547590906112 69.31462730340753,18.855682575959275 69.30537795038049,18.945880797656784 69.29480726120671,18.951186575403696 69.28687924432639,19.006897241746277 69.28687924432639,18.975062575264804 69.29877126964688,18.93526924216296 69.32784066487474,18.815889242857434 69.3318046733149,18.640798577209324 69.36748074927638,18.60365813298094 69.38333678303704,18.59569946636057 69.40447816138457,18.545294577764903 69.42826221202556,18.486931022548866 69.44411824578621,18.476319467055042 69.43619022890589,18.447137689447025 69.44147557349277,18.478972355928498 69.4811156578944,18.444484800573566 69.51018505312227,18.476319467055042 69.51414906156243,18.53468302227108 69.5181130700026,18.5877407997402 69.52604108688293,18.606311021854395 69.53396910376325,18.65671591045006 69.53396910376325,18.746914132147573 69.54189712064358,18.770790132008678 69.54189712064358,18.834459464971626 69.56303849899112,18.85302968708582 69.55378914596407,18.87159990920001 69.5062210446821,18.834459464971626 69.49432901936161,18.855682575959275 69.4811156578944,18.890170131314207 69.4930076832149,18.911393242301855 69.44543958193293,18.996285686252453 69.42033419514523,18.980368353011716 69.39258613606408,19.089136796823418 69.34766070707556,19.13688879654563 69.34237536248868,19.195252351761667 69.34633937092885,19.29075635120609 69.3436966986354,19.319938128814105 69.33576868175507,19.34646701754867 69.31066329496737,19.335855462054845 69.29480726120671,19.285450573459176 69.2815938997395,19.245657240357332 69.25384584065836,19.23239279599005 69.2498818322182,19.237698573736964 69.23270446231082,19.285450573459176 69.22213377313705,19.311979462193737 69.23006179001737,19.35973146191595 69.23666847075098,19.436665239246178 69.22609778157721,19.534822127564055 69.21288442011,19.54012790531097 69.21816976469688,19.48441723896839 69.23006179001737,19.42870657262581 69.24591782377803,19.410136350511618 69.26573786597885,19.40748346163816 69.29084325276655,19.41544212825853 69.3185913118477,19.354425684169037 69.36483807698293,19.37299590628323 69.37540876615671,19.314632351067193 69.37144475771655,19.280144795712264 69.37937277459687,19.237698573736964 69.37937277459687,19.113012796684526 69.37276609386326,19.07321946358268 69.39258613606408,19.0599550192154 69.430904884319,19.03342613048084 69.44015423734605,19.00424435287282 69.44147557349277,18.969756797517892 69.46129561569359,18.996285686252453 69.48640100248129,18.993632797378996 69.50225703624194,19.009550130619733 69.5181130700026,19.03342613048084 69.52075574229605,19.078525241329594 69.54586112908375,19.166070574153647 69.55378914596407,19.17933501852093 69.54057578449687,19.211169685002403 69.53000509532309,19.237698573736964 69.51414906156243,19.250963018104247 69.52075574229605,19.17933501852093 69.55907449055096,19.184640796267843 69.57096651587145,19.168723463027103 69.57096651587145,19.147500352039454 69.5617171628444,19.065260796962313 69.55511048211079,19.036079019354297 69.54586112908375,19.03342613048084 69.53793311220342,19.00424435287282 69.52868375917637,18.96445101977098 69.54057578449687,18.943227908783328 69.55907449055096,18.929963464416048 69.60796392797964,18.945880797656784 69.62778397018046,18.983021241885172 69.65024668467473,19.065260796962313 69.68460142448947,19.089136796823418 69.70442146669029,19.097095463443786 69.73349086191816,19.134235907672174 69.7480255595321,19.144847463166 69.74141887879848,19.174029240774015 69.74538288723865,19.195252351761667 69.7612389209993,19.272186129091896 69.77841629090668,19.293409240079544 69.7731309463198,19.322591017687564 69.77841629090668,19.39421901727088 69.77709495475996,19.42870657262581 69.786344307787,19.447276794740002 69.78238029934684,19.502987461082583 69.79691499696078,19.545433683057883 69.80087900540094,19.569309682918988 69.79691499696078,19.593185682780092 69.80484301384111,19.67011946011032 69.81541370301487,19.731135904199814 69.80748568613454,19.723177237579446 69.77841629090668,19.675425237857233 69.75331090411898,19.69930123771834 69.74009754265177,19.696648348844885 69.72556284503783,19.67011946011032 69.70177879439684,19.662160793489953 69.67667340760914,19.646243460249217 69.6674240545821,19.65685501574304 69.65949603770177,19.691342571097973 69.65553202926161,19.736441681946726 69.64364000394112,19.736441681946726 69.63571198706079,19.709912793212165 69.61985595330013,19.715218570959077 69.60796392797964,19.688689682224517 69.57889453275178,19.69930123771834 69.57493052431161,19.675425237857233 69.55907449055096,19.63828479362885 69.54189712064358,19.627673238135024 69.5062210446821,19.64359057137576 69.4930076832149,19.672772348983777 69.48507966633457,19.65685501574304 69.47318764101408,19.606450127147372 69.4494035903731,19.558698127425163 69.4375115650526,19.53747501643751 69.41901285899851,19.51094612770295 69.40447816138457,19.439318128119634 69.39522880835753,19.434012350372722 69.38862212762392,19.51094612770295 69.39258613606408,19.603797238273916 69.43222622046572,19.640937682502305 69.42033419514523,19.64359057137576 69.40844216982474,19.662160793489953 69.42033419514523,19.640937682502305 69.43619022890589,19.71256568208562 69.47847298560096,19.731135904199814 69.48507966633457,19.731135904199814 69.49432901936161,19.70725990433871 69.49829302780178,19.715218570959077 69.51414906156243,19.739094570820182 69.52604108688293,19.715218570959077 69.55511048211079,19.749706126314006 69.5736091881649,19.760317681807834 69.58814388577882,19.752359015187462 69.5987145749526,19.728483015326358 69.59607190265915,19.736441681946726 69.60664259183292,19.78949945941585 69.6119279364198,19.8107225704035 69.60399991953948,19.842557236884975 69.60267858339276,19.980507458304697 69.58021586889849,20.12376345747133 69.58285854119194,20.10254034648368 69.5868225496321,19.993771902671977 69.59078655807227,19.938061236329396 69.60399991953948,19.837251459138063 69.61985595330013,19.813375459276955 69.64364000394112,19.821334125897323 69.65553202926161,19.800111014909675 69.66874539072882,19.773582126175114 69.67667340760914,19.773582126175114 69.68856543292964,19.80276390378313 69.71631349201078,19.847863014631887 69.72952685347799,19.837251459138063 69.74934689567881,19.842557236884975 69.76520292943947,19.86643323674608 69.77841629090668,19.900920792101008 69.78238029934684,19.93540834745594 69.82202038374848,19.99111901379852 69.84712577053618,19.993771902671977 69.82598439218864,19.95663145844359 69.78238029934684,19.946019902949764 69.75991758485259,19.98581323605161 69.76520292943947,19.99111901379852 69.78502297164029,20.08131723549603 69.87883783805749,20.10784612423059 69.89601520796487,20.129069235218243 69.9356552923665,20.155598123952803 69.94358330924683,20.16355679057317 69.9356552923665,20.16355679057317 69.9105499055788,20.152945235079347 69.89601520796487,20.18477990156082 69.85505378741651,20.208655901421928 69.85505378741651,20.195391457054644 69.87883783805749,20.174168346066995 69.89601520796487,20.203350123675015 69.94094063695339,20.256407901144136 69.96472468759437,20.256407901144136 69.97529537676814,20.285589678752157 69.97661671291486,20.31742434523363 69.96472468759437,20.349259011715105 69.93961930080667,20.37313501157621 69.89997921640503,20.394358122563858 69.8920511995247,20.38639945594349 69.866945812737,20.367829233829298 69.85505378741651,20.354564789462017 69.82202038374848,20.33599456734782 69.80616434998782,20.301507011992893 69.76388159329275,20.285589678752157 69.71631349201078,20.264366567764505 69.71234948357062,20.288242567625613 69.70574280283701,20.24844923452377 69.68063741604931,20.26967234551142 69.67931607990259,20.272325234384876 69.65817470155505,20.35191190058856 69.63571198706079,20.34660612284165 69.61060660027309,20.320077234107085 69.60003591109931,20.314771456360173 69.5868225496321,20.27763101213179 69.58417987733866,20.264366567764505 69.57889453275178,20.221920345789208 69.57757319660506,20.224573234662664 69.54718246523046,20.27763101213179 69.54718246523046,20.221920345789208 69.52868375917637,20.2404905679034 69.5181130700026,20.216614568042296 69.51018505312227,20.208655901421928 69.49829302780178,20.251102123397224 69.49432901936161,20.232531901283032 69.46525962413375,20.198044345928103 69.45336759881326,20.192738568181188 69.4811156578944,20.179474123813907 69.48243699404112,20.15825101282626 69.44808225422638,20.152945235079347 69.40844216982474,20.142333679585523 69.39655014450425,20.09458167986331 69.38069411074359,20.036218124647274 69.3688020854231,19.967243013937413 69.3436966986354,19.980507458304697 69.33576868175507,19.924796791962116 69.30141394194033,19.898267903227552 69.2749872190059,19.903573680974464 69.26970187441901,19.95663145844359 69.2749872190059,19.959284347317045 69.29084325276655,19.993771902671977 69.3066992865272,20.02560656915345 69.33444734560835,20.062747013381838 69.35030337936901,20.19008567930773 69.3873007914772,20.25375501227068 69.37540876615671,20.26701945663796 69.39522880835753,20.25375501227068 69.41637018670507,20.274978123258332 69.4242982035854,20.2829367898787 69.4375115650526,20.32273012298054 69.45733160725342,20.343953233968193 69.49697169165506,20.375787900449666 69.53000509532309,20.39966390031077 69.5868225496321,20.418234122424966 69.59078655807227,20.521696788489756 69.56964517972473,20.534961232857036 69.54453979293703,20.569448788211968 69.54718246523046,20.59597767694653 69.54189712064358,20.617200787934177 69.52075574229605,20.69148167639095 69.51018505312227,20.74188656498662 69.51414906156243,20.789638564708827 69.49697169165506,20.81086167569648 69.50225703624194,20.771068342594635 69.52207707844276,20.74188656498662 69.52604108688293,20.686175898644038 69.52207707844276,20.603936343566897 69.55511048211079,20.577407454832336 69.58285854119194,20.537614121730492 69.60267858339276,20.479250566514455 69.61457060871325,20.458027455526807 69.63967599550095,20.479250566514455 69.66874539072882,20.500473677502107 69.67667340760914,20.527002566236668 69.70838547513046,20.516391010742844 69.73745487035832,20.48190345538791 69.74538288723865,20.49251501088174 69.75331090411898,20.460680344400263 69.76388159329275,20.49251501088174 69.76784560173292,20.542919899477404 69.76520292943947,20.646382565542194 69.79030831622717,20.710051898505142 69.79427232466733,20.776374120341547 69.82202038374848,20.78698567583537 69.84712577053618,20.7551510093539 69.85901779585667,20.749845231606987 69.86958848503045,20.76841545372118 69.88280184649766,20.848002119924864 69.90262188869848,20.8639194531656 69.91847792245913,20.967382119230393 69.93169128392634,21.020439896699518 69.95679667071404,21.06023322980136 69.9607606791542,21.07880345191555 69.95679667071404,21.068191896421727 69.93961930080667,21.031051452193342 69.93301262007306,20.977993674724217 69.91847792245913,20.90105989739399 69.87090982117716,20.842696342177952 69.85505378741651,20.858613675418688 69.84712577053618,20.930241675002005 69.85108977897634,20.95677056373657 69.83919775365585,20.91963011950818 69.83787641750914,20.90105989739399 69.82994840062881,20.92758878612855 69.79691499696078,20.954117674863113 69.79030831622717,20.967382119230393 69.77841629090668,21.004522563458778 69.78105896320012,21.03901011881371 69.79427232466733,20.993911007964954 69.81012835842799,20.98860523021804 69.81805637530832,21.028398563319886 69.83126973677552,21.04696878543408 69.82994840062881,21.054927452054446 69.85108977897634,21.031051452193342 69.85769645970996,21.041663007687166 69.87487382961733,21.076150563042095 69.87883783805749,21.123902562764307 69.87751650191078,21.153084340372324 69.88148051035094,21.182266117980344 69.87487382961733,21.192877673474168 69.86166046815012,21.13451411825813 69.82994840062881,21.126555451637763 69.80616434998782,21.1424727848785 69.80616434998782,21.153084340372324 69.81805637530832,21.214100784461817 69.8418404259493,21.227365228829097 69.85505378741651,21.187571895727256 69.88412318264437,21.1849190068538 69.89601520796487,21.200836340094536 69.9039432248452,21.230018117702553 69.89865788025831,21.314910561653154 69.89997921640503,21.31756345052661 69.91187124172552,21.245935450943293 69.91979925860585,21.1849190068538 69.93301262007306,21.21144789558836 69.98058072135503,21.24062967319638 70.00965011658289,21.2936874506655 70.01229278887634,21.35205100588154 70.02154214190338,21.428984783211767 70.01361412502305,21.442249227579047 70.00040076355585,21.474083894060524 69.9977580912624,21.521835893782733 69.98058072135503,21.51122433828891 69.97133136832798,21.529794560403104 69.95679667071404,21.55897633801112 69.95283266227388,21.577546560125313 69.94094063695339,21.561629226884577 69.93301262007306,21.574893671251857 69.91451391401897,21.720802559291947 69.88280184649766,21.76059589239379 69.87883783805749,21.808347892116 69.85901779585667,21.82426522535674 69.84712577053618,21.87732300282586 69.84316176209602,21.866711447332037 69.83391240906897,21.87732300282586 69.81805637530832,21.917116335927705 69.79427232466733,21.922422113674617 69.77841629090668,21.980785668890654 69.76520292943947,22.015273224245583 69.7731309463198,22.00996744649867 69.76388159329275,22.05241366847397 69.74934689567881,22.03119055748632 69.74406155109193,22.05241366847397 69.73745487035832,21.95425678015609 69.73745487035832,22.007314557625214 69.72556284503783,22.057719446220883 69.72556284503783,22.0869012238289 69.73745487035832,22.12138877918383 69.7361335342116,22.137306112424568 69.7480255595321,22.044455001853603 69.76784560173292,22.07894255720853 69.76916693787963,22.070983890588163 69.78105896320012,21.959562557903002 69.82202038374848,21.943645224662266 69.8114496945747,21.88528166944623 69.83523374521569,21.898546113813513 69.84712577053618,21.951603891282634 69.83787641750914,22.012620335372127 69.8418404259493,22.02323189086595 69.84712577053618,22.007314557625214 69.85901779585667,21.964868335649918 69.866945812737,21.91976922480116 69.87090982117716,21.88528166944623 69.88676585493782,21.88528166944623 69.90658589713864,21.874670113952405 69.9105499055788,21.861405669585125 69.93961930080667,21.87201722507895 69.94490464539355,21.91446344705425 69.947547317687,21.917116335927705 69.95547533456732,21.87732300282586 69.96472468759437,21.87732300282586 69.98322339364847,21.951603891282634 69.99247274667552,21.986091446637566 69.99247274667552,22.012620335372127 69.98454472979519,22.015273224245583 69.96472468759437,21.988744335511022 69.94358330924683,22.033843446359775 69.93301262007306,22.049760779600515 69.94358330924683,22.03119055748632 69.95547533456732,22.041802112980147 69.98850873823535,22.007314557625214 70.01361412502305,22.06567811284125 70.02022080575667,22.076289668335075 70.03211283107716,22.00466166875176 70.02550615034355,21.917116335927705 70.01229278887634,21.842835447470932 70.01229278887634,21.78712478112835 70.028148822637,21.77386033676107 70.03739817566404,21.848141225217844 70.0532542094247,21.86405855845858 70.06250356245174,21.90650478043388 70.06118222630502,21.959562557903002 70.06514623474519,22.002008779878302 70.07439558777223,22.025884779739407 70.09421562997305,22.06037233509434 70.10214364685338,22.07363677946162 70.12328502520091,22.05241366847397 70.12592769749436,22.03119055748632 70.10610765529354,22.00996744649867 70.09817963841321,21.988744335511022 70.10478631914683,21.986091446637566 70.09289429382633,21.943645224662266 70.07703826006568,21.895893224940057 70.0783595962124,21.84548833634439 70.07307425162551,21.829571003103652 70.07439558777223,21.813653669862912 70.09025162153289,21.797736336622176 70.08628761309272,21.797736336622176 70.07703826006568,21.818959447609828 70.0664675708919,21.74733144802651 70.0532542094247,21.723455448165403 70.05061153713125,21.702232337177755 70.05853955401157,21.58550522674568 70.084966276946,21.60142255998642 70.10082231070666,21.58019944899877 70.1100716637337,21.55897633801112 70.09289429382633,21.53244744927656 70.09025162153289,21.45551367194633 70.10082231070666,21.442249227579047 70.1219636890542,21.40776167222412 70.14310506740173,21.44755500532596 70.15103308428206,21.482042560680892 70.16424644574927,21.47673678293398 70.17481713492305,21.38123278348956 70.15896110116239,21.336133672640802 70.15499709272223,21.272464339677853 70.16424644574927,21.251241228690205 70.17481713492305,21.25389411756366 70.18803049639025,21.22471233995564 70.19595851327058,21.21144789558836 70.21049321088452,21.1849190068538 70.19992252171075,21.190224784600712 70.21974256391157,21.20614211784145 70.22370657235173,21.23532389544947 70.2408839422591,21.24062967319638 70.23691993381894,21.296340339538958 70.25673997601976,21.320216339400066 70.24881195913943,21.34409233926117 70.26466799290009,21.367968339122275 70.26466799290009,21.415720338844487 70.27391734592713,21.436943449832135 70.2527759675796,21.4210261165914 70.22370657235173,21.492654116174716 70.19199450483042,21.495307005048172 70.21181454703124,21.46877811631361 70.22238523620501,21.492654116174716 70.2408839422591,21.487348338427804 70.28845204354107,21.471431005187068 70.29770139656812,21.487348338427804 70.30959342188861,21.564282115758033 70.32412811950255,21.56693500463149 70.31355743032877,21.55367056026421 70.28977337968779,21.59346389336605 70.26863200134025,21.68631500393702 70.24484795069927,21.70488522605121 70.23295592537877,21.72610833703886 70.23295592537877,21.715496781545035 70.2157785554714,21.749984336899967 70.21974256391157,21.771207447887615 70.21181454703124,21.784471892254896 70.17878114336321,21.832223891977108 70.16688911804272,21.840182558597476 70.14310506740173,21.861405669585125 70.13914105896157,21.856099891838213 70.1721744626296,21.82426522535674 70.18406648795009,21.811000780989456 70.20388653015091,21.82426522535674 70.21049321088452,21.869364336205493 70.21181454703124,21.869364336205493 70.2157785554714,21.813653669862912 70.21974256391157,21.776513225634528 70.23691993381894,21.784471892254896 70.26202532060664,21.83752966972402 70.27656001822058,21.90119900268697 70.30959342188861,21.948951002409178 70.32941346408943,21.980785668890654 70.32941346408943,22.012620335372127 70.3214854472091,22.00466166875176 70.30562941344844,21.95425678015609 70.28977337968779,21.951603891282634 70.27656001822058,21.988744335511022 70.28580937124762,22.05241366847397 70.31223609418205,22.070983890588163 70.31355743032877,22.09220700157581 70.30430807730173,22.09220700157581 70.28184536280746,22.081595446081987 70.2659893290468,22.084248334955443 70.24484795069927,22.076289668335075 70.23163458923206,22.110777223690008 70.23956260611239,22.105471445943092 70.2659893290468,22.147917667918392 70.28845204354107,22.187711001020237 70.28977337968779,22.291173667085026 70.28052402666074,22.296479444831938 70.27391734592713,22.26729766722392 70.24484795069927,22.27525633384429 70.23559859767222,22.22485144524862 70.21974256391157,22.272603444970834 70.22370657235173,22.26199188947701 70.18803049639025,22.227504334122077 70.15235442042878,22.25138033398318 70.1470690758419,22.203628334260973 70.1351770505214,22.240768778489358 70.12724903364108,22.26729766722392 70.1351770505214,22.333619889060326 70.13121304208124,22.33892566680724 70.13914105896157,22.402594999770187 70.13914105896157,22.439735443998572 70.12989170593453,22.48483455484733 70.12328502520091,22.506057665834977 70.11535700832059,22.53789233231645 70.11403567217387,22.521974999075713 70.12592769749436,22.439735443998572 70.15103308428206,22.386677666529447 70.15499709272223,22.304438111452306 70.15235442042878,22.291173667085026 70.16292510960255,22.30974388919922 70.16688911804272,22.333619889060326 70.19860118556403,22.33096700018687 70.23295592537877,22.34423144455415 70.23559859767222,22.349537222301063 70.26070398445992,22.450346999492396 70.2527759675796,22.50340477696152 70.24484795069927,22.52462788794917 70.22502790849845,22.55380966555719 70.23295592537877,22.612173220773222 70.22370657235173,22.58033855429175 70.20785053859107,22.62278477626705 70.20652920244436,22.6440078872547 70.21974256391157,22.678495442609627 70.21974256391157,22.80318121966207 70.20785053859107,22.906643885726858 70.20785053859107,22.959701663195982 70.19595851327058,22.965007440942895 70.17878114336321,22.935825663334878 70.15631842886894,22.89868521910649 70.16688911804272,22.909296774600314 70.15103308428206,22.882767885865753 70.14310506740173,22.874809219245385 70.13121304208124,22.82971010839663 70.11932101676075,22.80318121966207 70.11403567217387,22.83501588614354 70.1100716637337,22.7952225530417 70.10214364685338,22.723594553458383 70.0968583022665,22.678495442609627 70.08628761309272,22.630743442887418 70.08893028538617,22.60686744302631 70.0783595962124,22.569726998797925 70.07439558777223,22.47687588822696 70.07703826006568,22.44769411061894 70.08232360465256,22.4079007775171 70.06911024318535,22.35749588892143 70.06250356245174,22.35749588892143 70.05457554557141,22.312396778072674 70.04929020098453,22.269950556097378 70.03739817566404,22.293826555958482 70.02154214190338,22.39198344427636 70.05457554557141,22.49809899921461 70.05721821786486,22.646660776128154 70.07439558777223,22.681148331483083 70.07439558777223,22.742164775572576 70.09025162153289,22.78195810867442 70.09025162153289,22.861544774878105 70.10214364685338,22.970313218689807 70.13914105896157,23.002147885171283 70.1351770505214,22.986230551930547 70.12592769749436,22.99153632967746 70.1100716637337,22.98092477418363 70.07439558777223,22.999494996297827 70.05721821786486,22.957048774322526 70.0413621841042,22.999494996297827 70.02947015878371,23.026023885032387 70.0162567973165,23.076428773628056 70.02947015878371,23.102957662362616 70.00040076355585,23.092346106868792 69.98850873823535,23.102957662362616 69.97529537676814,23.132139439970636 69.98058072135503,23.132139439970636 69.96472468759437,23.11356921785644 69.96340335144765,23.04989988489349 69.947547317687,23.012759440665107 69.92376326704601,23.033982551652755 69.92376326704601,23.08704032912188 69.94490464539355,23.110916328982984 69.94490464539355,23.094998995742248 69.93169128392634,23.118874995603353 69.9290486116329,23.132139439970636 69.94094063695339,23.161321217578653 69.95283266227388,23.187850106313213 69.95151132612716,23.2249905505416 69.95943934300749,23.251519439276162 69.97133136832798,23.25947810589653 69.98850873823535,23.304577216745287 69.99247274667552,23.307230105618743 69.97661671291486,23.331106105479847 69.97529537676814,23.368246549708235 69.98058072135503,23.381510994075516 69.96736735988782,23.408039882810076 69.96472468759437,23.429262993797728 69.97661671291486,23.471709215773025 69.98058072135503,23.48232077126685 69.99247274667552,23.52476699324215 70.01361412502305,23.500890993381045 70.02550615034355,23.39212254956934 70.02550615034355,23.35763499421441 70.02022080575667,23.25947810589653 70.03871951181075,23.193155884060126 70.05721821786486,23.1825443285663 70.06911024318535,23.132139439970636 70.08628761309272,23.14275099546446 70.09025162153289,23.19050299518667 70.09421562997305,23.227643439415058 70.10214364685338,23.331106105479847 70.10478631914683,23.347023438720583 70.09817963841321,23.373552327455148 70.12328502520091,23.33641188322676 70.13385571437469,23.29661855012492 70.15235442042878,23.2674367725169 70.15896110116239,23.264783883643442 70.17481713492305,23.37089943858169 70.17613847106976,23.362940771961323 70.18406648795009,23.2674367725169 70.18406648795009,23.198461661807038 70.19992252171075,23.198461661807038 70.21181454703124,23.174585661945933 70.2157785554714,23.21172610617432 70.21974256391157,23.278048328010726 70.21974256391157,23.325800327732935 70.2276705807919,23.402734105063164 70.2276705807919,23.402734105063164 70.23559859767222,23.431915882671184 70.23956260611239,23.5035438822545 70.23691993381894,23.49823810450759 70.24749062299271,23.36559366083478 70.24484795069927,23.317841661112567 70.2408839422591,23.256825217023074 70.24352661455255,23.243560772655794 70.24881195913943,23.27274255026381 70.2593826483132,23.32314743885948 70.26070398445992,23.3523292164675 70.26863200134025,23.408039882810076 70.26070398445992,23.410692771683532 70.26466799290009,23.362940771961323 70.27656001822058,23.445180327038464 70.28580937124762,23.53007277098906 70.28052402666074,23.5884363262051 70.28845204354107,23.60700654831929 70.29770139656812,23.53007277098906 70.29373738812795,23.4610976602792 70.30430807730173,23.51150254887487 70.3214854472091,23.500890993381045 70.32544945564926,23.44783321591192 70.31223609418205,23.429262993797728 70.31223609418205,23.445180327038464 70.32941346408943,23.535378548735974 70.37037488463778,23.58047765958473 70.38226690995828,23.58047765958473 70.3901949268386,23.622923881560027 70.39944427986565,23.62822965930694 70.40737229674598,23.771485658473573 70.44701238114762,23.798014547208137 70.47608177637548,23.853725213550714 70.49325914628285,23.959840768488963 70.50779384389679,23.983716768350067 70.50779384389679,24.042080323566104 70.51307918848367,24.103096767655597 70.49193781013614,24.166766100618545 70.48665246554926,24.222476766961123 70.48665246554926,24.26757587780988 70.47872444866893,24.26757587780988 70.45890440646811,24.304716322038267 70.44701238114762,24.32859232189937 70.44965505344106,24.304716322038267 70.48268845710909,24.25961721118951 70.50382983545663,24.222476766961123 70.51572186077712,24.137584323010525 70.53157789453778,24.097790989908685 70.53289923068449,24.10044387878214 70.55271927288531,24.158807433998177 70.56989664279268,24.174724767238914 70.5897166849935,24.20390654484693 70.601608710314,24.23308832245495 70.59764470187383,24.230435433581494 70.63728478627547,24.243699877948774 70.66239017306317,24.28614609992407 70.65842616462301,24.27288165555679 70.67428219838366,24.291451877670983 70.68353155141071,24.33655098851974 70.68749555985087,24.360426988380844 70.6954235767312,24.355121210633932 70.68617422370416,24.47450120993946 70.67824620682383,24.471848321066005 70.66635418150334,24.562046542763515 70.64653413930252,24.567352320510427 70.63464211398203,24.604492764738815 70.61350073563449,24.63367454234683 70.61350073563449,24.69734387530978 70.63067810554186,24.6840794309425 70.64653413930252,24.62836876459992 70.6703181899435,24.59388120924499 70.69410224058448,24.657550542207936 70.6954235767312,24.57796387600425 70.7139222827853,24.57796387600425 70.70335159361153,24.543476320649322 70.70995827434514,24.562046542763515 70.71656495507874,24.511641654167846 70.72713564425251,24.53817054290241 70.74695568645333,24.527558987408586 70.75488370333366,24.48776565430674 70.74431301415989,24.40022032148269 70.74827702260005,24.344509655140108 70.75224103104021,24.357774099507388 70.7641330563607,24.30206343316481 70.76677572865415,24.238394100201862 70.77866775397464,24.26757587780988 70.81698650222955,24.230435433581494 70.83812788057709,24.352468321760476 70.87644662883201,24.389608765988864 70.86587593965824,24.389608765988864 70.84605589745742,24.410831876976513 70.84869856975087,24.445319432331445 70.83812788057709,24.424096321343793 70.8262358552566,24.519600320788218 70.80773714920251,24.58592254262462 70.78395309856153,24.62041009797955 70.79188111544185,24.62041009797955 70.81698650222955,24.570005209383883 70.82359318296317,24.580616764877707 70.8447345613107,24.556740765016603 70.86587593965824,24.57796387600425 70.87380395653857,24.649591875587568 70.8698399480984,24.673467875448676 70.86587593965824,24.71060831967706 70.8698399480984,24.66285631995485 70.88569598185906,24.548782098396234 70.900230679473,24.554087876143146 70.90551602405988,24.60714565361227 70.9134440409402,24.617757209106095 70.91872938552709,24.55143498726969 70.92269339396725,24.543476320649322 70.95440546148856,24.591228320371535 70.95440546148856,24.638980320093744 70.95969080607544,24.57265809825734 70.96233347836889,24.535517654028954 70.97026149524922,24.59388120924499 70.97951084827626,24.625715875726463 70.99008153745004,24.69734387530978 70.99008153745004,24.67081498657522 70.96761882295577,24.69734387530978 70.97158283139593,24.73979009728508 70.99008153745004,24.77427765264001 70.99008153745004,24.758360319399273 70.9636548145156,24.782236319260377 70.95836946992873,24.7928478747542 70.94383477231479,24.80876520799494 70.94647744460823,24.835294096729502 70.92665740240741,24.790194985880746 70.91476537708692,24.82998831898259 70.9134440409402,24.891004763072083 70.92665740240741,24.92549231842701 70.91740804938037,24.94671542941466 70.91872938552709,24.922839429553555 70.93326408314103,24.959979873781943 70.96233347836889,24.957326984908487 70.9755468398361,25.01038476237761 70.97158283139593,25.04487231773254 70.95440546148856,25.034260762238716 70.93326408314103,24.941409651667747 70.89362399873939,24.875087429831343 70.87380395653857,24.936103873920835 70.88041063727218,24.944062540541204 70.87380395653857,25.018343428997976 70.86587593965824,25.01569054012452 70.8817319734189,25.050178095479453 70.91080136864676,25.119153206189313 70.92665740240741,25.156293650417698 70.9068373602066,25.193434094646086 70.900230679473,25.233227427747927 70.86851861195169,25.235880316621383 70.83284253599021,25.24649187211521 70.82095051066972,25.23057453887447 70.81302249378939,25.233227427747927 70.79716646002873,25.25445053873558 70.81302249378939,25.26771498310286 70.80905848534923,25.291590982963964 70.8262358552566,25.320772760571984 70.80773714920251,25.341995871559632 70.80905848534923,25.328731427192352 70.82887852755005,25.341995871559632 70.83019986369676,25.36321898254728 70.84869856975087,25.320772760571984 70.86059059507136,25.326078538318896 70.86587593965824,25.36321898254728 70.85794792277791,25.35791320480037 70.87776796497873,25.387094982408385 70.8817319734189,25.38444209353493 70.90155201561971,25.341995871559632 70.93458541928774,25.3075083162047 70.93987076387462,25.299549649584332 70.96233347836889,25.312814093951612 70.97422550368938,25.34995453818 70.97422550368938,25.355260315926913 70.9636548145156,25.379136315788017 70.96761882295577,25.437499871004054 70.95969080607544,25.448111426497878 70.94647744460823,25.50912787058737 70.93062141084758,25.511780759460827 70.92269339396725,25.548921203689215 70.9134440409402,25.52239231495465 70.89758800717955,25.40566520452258 70.86191193121807,25.3924007601553 70.85398391433775,25.437499871004054 70.86059059507136,25.429541204383685 70.84605589745742,25.450764315371334 70.8447345613107,25.498516315093546 70.88041063727218,25.50912787058737 70.87776796497873,25.49586342622009 70.85794792277791,25.506474981713914 70.8566265866312,25.533003870448475 70.87380395653857,25.607284758905248 70.9068373602066,25.647078092007092 70.90551602405988,25.708094536096585 70.90551602405988,25.713400313843497 70.89626667103283,25.67625986961511 70.88965999029922,25.72401186933732 70.88437464571234,25.721358980463865 70.86191193121807,25.75054075807188 70.86851861195169,25.742582091451514 70.88965999029922,25.84339186864285 70.90155201561971,25.88318520174469 70.89362399873939,25.85135053526322 70.87644662883201,25.819515868781743 70.8698399480984,25.85135053526322 70.86587593965824,25.909714090479255 70.87380395653857,25.904408312732343 70.86455460351152,25.86992075737741 70.84869856975087,25.848697646389763 70.84605589745742,25.77441675793299 70.82491451910988,25.758499424692253 70.81170115764267,25.76115231356571 70.79188111544185,25.739929202578057 70.78659577085497,25.68421853623548 70.78395309856153,25.62054920327253 70.7760250816812,25.59136742566451 70.74827702260005,25.612590536652164 70.75224103104021,25.623202092145988 70.74299167801317,25.673606980741653 70.76016904792054,25.694830091729305 70.75884771177383,25.68421853623548 70.73109965269268,25.66299542524783 70.72317163581235,25.660342536374372 70.73638499727956,25.64177231426018 70.74034900571972,25.54626831481576 70.70335159361153,25.52239231495465 70.70599426590498,25.50912787058737 70.69410224058448,25.458722981991702 70.67296086223695,25.395053649028757 70.6703181899435,25.40566520452258 70.65710482847629,25.291590982963964 70.59235935728695,25.25445053873558 70.5897166849935,25.233227427747927 70.56593263435252,25.18547542802572 70.55536194517876,25.13507053943005 70.53686323912466,25.09262431745475 70.53289923068449,25.055483873226365 70.50382983545663,25.089971428581293 70.51307918848367,25.219962983380647 70.52893522224433,25.235880316621383 70.521007205364,25.21731009450719 70.49986582701646,25.16159942816461 70.49193781013614,25.076706984214013 70.49722315472302,25.060789650973277 70.48797380169597,25.08466565083438 70.4707964317886,25.222615872254103 70.48004578481564,25.22526876112756 70.46815375949515,25.275673649723227 70.46683242334844,25.23057453887447 70.45890440646811,25.21200431676028 70.43908436426729,25.16159942816461 70.42190699435992,25.18547542802572 70.41397897747959,25.241186094368295 70.41001496903942,25.23853320549484 70.3901949268386,25.21731009450719 70.38623091839844,25.174863872531894 70.3901949268386,25.17751676140535 70.40340828830581,25.14833498379733 70.40605096059926,25.08466565083438 70.36641087619762,25.042219428859084 70.35319751473041,25.06609542872019 70.34923350629025,25.105888761822033 70.36112553161074,25.129764761683138 70.36112553161074,25.082012761960925 70.34262682555664,25.074054095340557 70.32809212794271,25.055483873226365 70.31752143876894,25.0714012064671 70.31355743032877,25.143029206050418 70.33337747252959,25.182822539152262 70.32544945564926,25.16955809478498 70.29373738812795,25.140376317176962 70.28580937124762,25.1138474284424 70.29241605198123,25.116500317315857 70.2778813543673,25.0714012064671 70.26070398445992,25.03160787336526 70.26070398445992,25.02364920674489 70.2527759675796,24.936103873920835 70.23163458923206,24.93875676279429 70.20785053859107,24.917533651806643 70.19992252171075,24.930798096173923 70.18406648795009,24.9626327626554 70.1721744626296,24.928145207300467 70.16424644574927,24.904269207439363 70.15235442042878,24.91222787405973 70.14310506740173,24.914880762933187 70.08100226850584,24.973244318149224 70.0783595962124,24.994467429136872 70.07043157933207,24.983855873643048 70.05457554557141,25.03160787336526 70.05853955401157,25.034260762238716 70.084966276946,24.981202984769592 70.10082231070666,24.98916165138996 70.12724903364108,25.02364920674489 70.15499709272223,25.055483873226365 70.14310506740173,25.087318539707837 70.15896110116239,25.09262431745475 70.13914105896157,25.060789650973277 70.1351770505214,25.060789650973277 70.1219636890542,25.08466565083438 70.12328502520091,25.116500317315857 70.13914105896157,25.145682094923874 70.13385571437469,25.150987872670786 70.12328502520091,25.129764761683138 70.12328502520091,25.105888761822033 70.11403567217387,25.063442539846733 70.11403567217387,25.074054095340557 70.10875032758699,25.082012761960925 70.08232360465256,25.116500317315857 70.0664675708919,25.150987872670786 70.06514623474519,25.180169650278806 70.08100226850584,25.22526876112756 70.09025162153289,25.233227427747927 70.11403567217387,25.25445053873558 70.12989170593453,25.241186094368295 70.13781972281485,25.270367871976315 70.14574773969518,25.283632316343596 70.16292510960255,25.278326538596684 70.1721744626296,25.299549649584332 70.19595851327058,25.320772760571984 70.18803049639025,25.355260315926913 70.19860118556403,25.397706537902213 70.22502790849845,25.40566520452258 70.24881195913943,25.487904759599722 70.26995333748697,25.52239231495465 70.28977337968779,25.493210537346634 70.28845204354107,25.52239231495465 70.31223609418205,25.461375870865158 70.30827208574189,25.42688831551023 70.3214854472091,25.3924007601553 70.3214854472091,25.387094982408385 70.33337747252959,25.429541204383685 70.34262682555664,25.437499871004054 70.3650895400509,25.466681648612074 70.37037488463778,25.493210537346634 70.38226690995828,25.498516315093546 70.39944427986565,25.525045203828107 70.38623091839844,25.55157409256267 70.39548027142548,25.53035098157502 70.40605096059926,25.57279720355032 70.41397897747959,25.580755870170687 70.4271923389468,25.612590536652164 70.43908436426729,25.61524342552562 70.45626173417466,25.64177231426018 70.46022574261482,25.665648314121285 70.49193781013614,25.742582091451514 70.51307918848367,25.8646149796305 70.57253931508613,25.885838090618147 70.56989664279268,25.92563142371999 70.5897166849935,25.981342090062572 70.60557271875416,25.96807764569529 70.6267140971017,25.981342090062572 70.63860612242219,26.013176756544045 70.65842616462301,26.018482534290957 70.68221021526399,26.04235853415206 70.6954235767312,26.02378831203787 70.7073156020517,26.055622978519345 70.72845698039923,26.082151867253906 70.72845698039923,26.108680755988466 70.71920762737219,26.140515422469942 70.75884771177383,26.129903866976118 70.76809706480087,26.17500297782487 70.77866775397464,26.196226088812523 70.77866775397464,26.233366533040908 70.78791710700169,26.220102088673627 70.79320245158857,26.243978088534732 70.81302249378939,26.400498532068646 70.8883386541525,26.42702742080321 70.89230266259267,26.437638976297034 70.90155201561971,26.511919864753807 70.93458541928774,26.567630531096388 70.95176278919512,26.63660564180625 70.95572679763528,26.671093197161177 70.97026149524922,26.70558075251611 70.96629748680905,26.687010530401913 70.95836946992873,26.7241509746303 70.93458541928774,26.700274974769194 70.91872938552709,26.729456752377214 70.91080136864676,26.708233641389565 70.88041063727218,26.665787419414265 70.86191193121807,26.665787419414265 70.82887852755005,26.73210964125067 70.84209188901725,26.73210964125067 70.82359318296317,26.71088653026302 70.82359318296317,26.71884519688339 70.80377314076235,26.681704752655 70.78395309856153,26.673746086034633 70.77206107324103,26.684357641528457 70.75620503948038,26.679051863781545 70.74431301415989,26.623341197438965 70.72317163581235,26.51722564250072 70.69806624902465,26.45355630953777 70.68617422370416,26.400498532068646 70.67956754297055,26.360705198966805 70.66106883691646,26.30764742149768 70.65049814774268,26.336829199105697 70.64653413930252,26.46682075390505 70.66635418150334,26.533142975741455 70.6703181899435,26.58620075321058 70.66106883691646,26.562324753349476 70.67428219838366,26.594159419830948 70.67692487067711,26.618035419692053 70.69013823214432,26.633952752932792 70.68353155141071,26.62068830856551 70.6703181899435,26.59946519757786 70.66899685379678,26.604770975324772 70.65710482847629,26.639258530679705 70.64653413930252,26.615382530818597 70.5897166849935,26.602118086451316 70.57386065123285,26.61272964194514 70.54875526444515,26.551713197855648 70.521007205364,26.54906030898219 70.48929513784269,26.58620075321058 70.48268845710909,26.55701897560256 70.45626173417466,26.527837197994543 70.45097638958778,26.506614087006895 70.42322833050663,26.533142975741455 70.39415893527877,26.501308309259983 70.38755225454516,26.47477942052542 70.36244686775746,26.477432309398875 70.35451885087713,26.51722564250072 70.3465908339968,26.538448753488368 70.37830290151811,26.578242086590212 70.38755225454516,26.610076753071684 70.37830290151811,26.631299864059333 70.37962423766483,26.62599408631242 70.39812294371893,26.580894975463668 70.4020869521591,26.62599408631242 70.43115634738696,26.687010530401913 70.41133630518614,26.721498085756846 70.4153003136263,26.734762530124126 70.42322833050663,26.73210964125067 70.43776302812057,26.763944307732142 70.43908436426729,26.755985641111774 70.45097638958778,26.769250085479054 70.46418975105499,26.74537408561795 70.47872444866893,26.74537408561795 70.48797380169597,26.803737640833987 70.48004578481564,26.817002085201267 70.4959018185763,26.838225196188915 70.48797380169597,26.83557230731546 70.47608177637548,26.9178118623926 70.47872444866893,26.949646528874077 70.48268845710909,26.915158973519144 70.46022574261482,26.962910973241357 70.45494039802794,26.989439861975917 70.4707964317886,27.031886083951218 70.48400979325581,27.076985194799974 70.47476044022876,27.095555416914166 70.46418975105499,27.103514083534535 70.48004578481564,27.084943861420342 70.48665246554926,27.039844750571586 70.48929513784269,27.026580306204306 70.50779384389679,26.99474563972283 70.50911518004351,26.99474563972283 70.52364987765745,26.949646528874077 70.54743392829843,27.01596875071048 70.55536194517876,27.005357195216657 70.56989664279268,26.952299417747533 70.57253931508613,27.008010084090113 70.60557271875416,27.031886083951218 70.60689405490088,27.026580306204306 70.61878608022137,27.076985194799974 70.61878608022137,27.069026528179602 70.61350073563449,27.095555416914166 70.60557271875416,27.20962963847278 70.59632336572712,27.24677008270117 70.58443134040662,27.236158527207344 70.60689405490088,27.13269586114255 70.63332077783531,27.108819861281447 70.63067810554186,27.074332305926518 70.64653413930252,27.076985194799974 70.66106883691646,27.130042972269095 70.6703181899435,27.130042972269095 70.67824620682383,27.084943861420342 70.68221021526399,27.111472750154903 70.68749555985087,27.145960305509835 70.67956754297055,27.172489194244395 70.66899685379678,27.164530527624027 70.68617422370416,27.13269586114255 70.69410224058448,27.06372075043269 70.70203025746481,27.084943861420342 70.71127961049186,27.111472750154903 70.75488370333366,27.14861319438329 70.74827702260005,27.26003452706845 70.7509196948935,27.299827860170293 70.72713564425251,27.326356748904853 70.73506366113284,27.323703860031397 70.74827702260005,27.35553852651287 70.75620503948038,27.270646082562273 70.7641330563607,27.27329897143573 70.79055977929514,27.283910526929553 70.8011304684689,27.27860474918264 70.82491451910988,27.291869193549925 70.83284253599021,27.37145585975361 70.83284253599021,27.41920785947582 70.82491451910988,27.443083859336927 70.81566516608284,27.485530081312223 70.81566516608284,27.506753192299872 70.80773714920251,27.527976303287524 70.80905848534923,27.591645636250473 70.80377314076235,27.708372746682542 70.79980913232218,27.711025635556 70.80377314076235,27.65531496921342 70.81302249378939,27.541240747654804 70.819629174523,27.477571414691855 70.82887852755005,27.45369541483075 70.8447345613107,27.512058970046787 70.85001990589758,27.50940608117333 70.86059059507136,27.53062919216098 70.86587593965824,27.469612748071487 70.8698399480984,27.472265636944943 70.88569598185906,27.374108748627066 70.8817319734189,27.42451363722273 70.9068373602066,27.41124919285545 70.9253360662607,27.3475798598925 70.89362399873939,27.310439415664117 70.88965999029922,27.297174971296837 70.89626667103283,27.25207586044808 70.89362399873939,27.236158527207344 70.90155201561971,27.222894082840064 70.89626667103283,27.164530527624027 70.90419468791316,27.15657186100366 70.9134440409402,27.116778527901815 70.91740804938037,27.10616697240799 70.93458541928774,27.124737194522183 70.9385494277279,27.145960305509835 70.98215352056971,27.193712305232044 70.97951084827626,27.299827860170293 70.94647744460823,27.352885637639414 70.94647744460823,27.318398082284485 70.95572679763528,27.30778652679066 70.97158283139593,27.267993193688817 70.99933089047708,27.222894082840064 71.00329489891725,27.199018082978956 71.01386558809102,27.212282527346236 71.02840028570495,27.275951860309185 71.0442563194656,27.31574519341103 71.03236429414511,27.37145585975361 71.02443627726478,27.374108748627066 71.01386558809102,27.427166526096187 71.02443627726478,27.506753192299872 71.00990157965086,27.504100303426416 70.9755468398361,27.514711858920244 70.95572679763528,27.567769636389365 70.96233347836889,27.554505192022084 70.97026149524922,27.575728303009733 71.01122291579757,27.538587858781348 71.03236429414511,27.498794525679504 71.04029231102544,27.50144741455296 71.08521774001396,27.54389363652826 71.09578842918773,27.551852303148628 71.10503778221478,27.57838119188319 71.10768045450823,27.618174524985033 71.09710976533445,27.644703413719593 71.09710976533445,27.644703413719593 71.10900179065494,27.628786080478857 71.1248578244156,27.644703413719593 71.13278584129593,27.708372746682542 71.11296579909511,27.7534718575313 71.10900179065494,27.718984302176366 71.08521774001396,27.729595857670194 71.08521774001396,27.68184385794798 71.06143368937298,27.72429007992328 71.06407636166642,27.721637191049822 71.05218433634593,27.7534718575313 71.04822032790577,27.795918079506595 71.07200437854675,27.817141190494247 71.06011235322626,27.787959412886227 71.0442563194656,27.82244696824116 71.03236429414511,27.851628745849176 71.05086300019921,27.87019896796337 71.05218433634593,27.867546079089912 71.03500696643856,27.98162030064853 71.08521774001396,27.963050078534337 71.06143368937298,27.98162030064853 71.05350567249265,28.018760744876918 71.07728972313363,28.06385985572567 71.0878604123074,28.05855407797876 71.04822032790577,28.074471411219495 71.04689899175905,28.130182077562075 71.0812537315738,28.156710966296636 71.09182442074757,28.191198521651568 71.09578842918773,28.24690918799415 71.08521774001396,28.26547941010834 71.04822032790577,28.23099185475341 71.03632830258528,28.167322521790464 71.03236429414511,28.20976874376576 71.02707894955823,28.172628299537376 70.99536688203692,28.16997541066392 70.97951084827626,28.191198521651568 70.99800955433037,28.21772741038613 71.00725890735741,28.225686077006497 70.99933089047708,28.180586966157744 70.96233347836889,28.199157188271936 70.95836946992873,28.225686077006497 70.97818951212955,28.23895052137378 70.97158283139593,28.284049632222533 70.99140287359675,28.305272743210182 71.00329489891725,28.408735409274975 71.00329489891725,28.52280963083359 70.98743886515659,28.54403274182124 70.97951084827626,28.549338519568153 70.96761882295577,28.50954518646631 70.9134440409402,28.48832207547866 70.90551602405988,28.47505763111138 70.88965999029922,28.42465274251571 70.88569598185906,28.366289187299675 70.89362399873939,28.347718965185482 70.88569598185906,28.459140297870643 70.87644662883201,28.40608252040152 70.85001990589758,28.326495854197834 70.85266257819103,28.371594965046587 70.84077055287054,28.35037185405894 70.82491451910988,28.331801631944746 70.82359318296317,28.22303318813304 70.8447345613107,28.212421632639217 70.84077055287054,28.313231409830554 70.81170115764267,28.22303318813304 70.78791710700169,28.095694522207147 70.79584512388202,28.10630607770097 70.80509447690906,28.074471411219495 70.79716646002873,28.07712430009295 70.79055977929514,28.018760744876918 70.79716646002873,28.00814918938309 70.81698650222955,27.963050078534337 70.81302249378939,27.957744300787425 70.8011304684689,27.92590963430595 70.79716646002873,27.87815763458374 70.8011304684689,27.78530652401277 70.79716646002873,27.74020741316402 70.8011304684689,27.73224874654365 70.79716646002873,27.80918252387388 70.78791710700169,27.830405634861528 70.78263176241481,27.806529635000423 70.77073973709432,27.7534718575313 70.75224103104021,27.76673630189858 70.74431301415989,27.87019896796337 70.77206107324103,27.902033634444845 70.7760250816812,27.96835585628125 70.77073973709432,28.026719411497286 70.76281172021399,28.000190522762722 70.74034900571972,28.018760744876918 70.74431301415989,28.04528963361148 70.75884771177383,28.098347411080603 70.75224103104021,28.13283496643553 70.74431301415989,28.1407936330559 70.7324209888394,28.108958966574427 70.71920762737219,28.082430077839863 70.71656495507874,28.061206966852215 70.70335159361153,27.984273189521986 70.68749555985087,27.93121541205286 70.68353155141071,27.84897585697572 70.66899685379678,27.88611630120411 70.65710482847629,27.79857096838005 70.63860612242219,27.75877763527821 70.63860612242219,27.729595857670194 70.63067810554186,27.63939763597268 70.62142875251482,27.671232302454158 70.6148220717812,27.742860302037474 70.61746474407465,27.825099857114616 70.63067810554186,27.896727856697932 70.63464211398203,27.936521189799773 70.64653413930252,28.039983855864566 70.66239017306317,28.167322521790464 70.68749555985087,28.201810077145392 70.7073156020517,28.27874385447562 70.7205289635189,28.305272743210182 70.68749555985087,28.289355409969446 70.65446215618284,28.268132298981797 70.63067810554186,28.215074521512673 70.60028737416728,28.079777188966407 70.55536194517876,27.949785634167057 70.52497121380416,27.89938074557139 70.51307918848367,27.88611630120411 70.49986582701646,27.811835412747335 70.48797380169597,27.825099857114616 70.47872444866893,27.851628745849176 70.48004578481564,27.825099857114616 70.4456910450009,27.851628745849176 70.44172703656074,27.854281634722632 70.43115634738696,27.87815763458374 70.42983501124024,27.872851856836828 70.45626173417466,27.88611630120411 70.47872444866893,27.95509141191397 70.49986582701646,27.976314522901617 70.4959018185763,27.928562523179405 70.48004578481564,27.907339412191757 70.46022574261482,27.923256745432493 70.45890440646811,27.978967411775074 70.49193781013614,27.98162030064853 70.48268845710909,28.005496300509634 70.48004578481564,28.02406652262383 70.48929513784269,28.069165633472583 70.49986582701646,28.09038874446023 70.4959018185763,28.15405807742318 70.51175785233696,28.199157188271936 70.50779384389679,28.191198521651568 70.4959018185763,28.130182077562075 70.48929513784269,28.034678078117654 70.45097638958778,28.04528963361148 70.4271923389468,28.05855407797876 70.43115634738696,28.069165633472583 70.45097638958778,28.12752918868862 70.47476044022876,28.177934077284288 70.48797380169597,28.207115854892304 70.48797380169597,28.24690918799415 70.50911518004351,28.2920082988429 70.50911518004351,28.302619854336726 70.50382983545663,28.366289187299675 70.51307918848367,28.366289187299675 70.49986582701646,28.32914874307129 70.48004578481564,28.35567763180585 70.47608177637548,28.39281807603424 70.48797380169597,28.43261140913608 70.49193781013614,28.459140297870643 70.48797380169597,28.44587585350336 70.46418975105499,28.48832207547866 70.44304837270745,28.512198075339764 70.44965505344106,28.506892297592852 70.46418975105499,28.485669186605204 70.4707964317886,28.512198075339764 70.49193781013614,28.546685630694697 70.49986582701646,28.528115408580504 70.50779384389679,28.50954518646631 70.50382983545663,28.46709896449101 70.50911518004351,28.443222964629904 70.52761388609761,28.395470964907695 70.54082724756482,28.408735409274975 70.54875526444515,28.414041187021887 70.56989664279268,28.43791718688299 70.58839534884679,28.46709896449101 70.59764470187383,28.485669186605204 70.63728478627547,28.506892297592852 70.65446215618284,28.50954518646631 70.68353155141071,28.5705616305558 70.67428219838366,28.6130078525311 70.67428219838366,28.623619408024926 70.68353155141071,28.575867408302713 70.68749555985087,28.541379852947784 70.70203025746481,28.51485096421322 70.72713564425251,28.605049185910733 70.76809706480087,28.666065630000222 70.77998909012136,28.658106963379854 70.79320245158857,28.750958073950823 70.85398391433775,28.83585051790142 70.87776796497873,28.976453628194598 70.88569598185906,28.992370961435334 70.8698399480984,29.05073451665137 70.87380395653857,29.09052784975321 70.87380395653857,29.093180738626668 70.85794792277791,29.132974071728512 70.84869856975087,29.201949182438373 70.85398391433775,29.247048293287126 70.84605589745742,29.24970118216058 70.83680654443037,29.27357718202169 70.8262358552566,29.26031273765441 70.819629174523,29.27357718202169 70.80509447690906,29.255006959907494 70.79980913232218,29.278882959768602 70.79188111544185,29.318676292870443 70.79188111544185,29.39030429245376 70.78395309856153,29.358469625972287 70.76281172021399,29.329287848364267 70.75224103104021,29.255006959907494 70.74034900571972,29.27357718202169 70.73638499727956,29.26031273765441 70.72713564425251,29.310717626250074 70.7324209888394,29.331940737237726 70.72449297195907,29.4062216256945 70.73506366113284,29.416833181188323 70.72845698039923,29.284188737515514 70.70995827434514,29.323982070617355 70.69938758517137,29.361122514845743 70.70335159361153,29.37703984808648 70.69938758517137,29.310717626250074 70.68353155141071,29.24439540441367 70.6703181899435,29.30010607075625 70.66503284535662,29.252354071034038 70.65710482847629,29.297453181882794 70.65446215618284,29.345205181605007 70.67956754297055,29.392957181327215 70.69410224058448,29.416833181188323 70.69013823214432,29.451320736543252 70.70203025746481,29.5149900695062 70.70203025746481,29.589270957962974 70.70995827434514,29.66885762416666 70.72845698039923,29.71660962388887 70.73506366113284,29.80150206783947 70.72449297195907,29.7935434012191 70.69938758517137,29.812113623333293 70.69410224058448,29.785584734598732 70.65446215618284,29.69803940177468 70.6267140971017,29.679469179660483 70.6148220717812,29.70334517952159 70.61746474407465,29.743138512623432 70.6267140971017,29.796196290092556 70.63067810554186,29.83333673432094 70.64257013086235,29.904964733904258 70.68353155141071,29.920882067144998 70.68617422370416,29.94741095587956 70.70335159361153,30.011080288842507 70.71127961049186,30.08536117729928 70.7073156020517,30.101278510540016 70.6954235767312,30.178212287870245 70.68353155141071,30.207394065478265 70.67428219838366,30.19412962111098 70.66635418150334,30.11189006603384 70.65446215618284,30.11984873265421 70.64653413930252,30.18882384336407 70.64653413930252,30.247187398580106 70.64124879471564,30.33473273140416 70.61085806334104,30.32146828703688 70.59235935728695,30.28167495393504 70.57386065123285,30.228617176465914 70.56989664279268,30.207394065478265 70.55271927288531,30.156989176882597 70.54875526444515,30.080055399552368 70.54875526444515,30.088014066172736 70.54082724756482,30.146377621388773 70.53289923068449,30.122501621527665 70.52893522224433,30.053526510817804 70.52893522224433,30.024344733209787 70.54082724756482,30.000468733348683 70.53686323912466,30.040262066450524 70.52497121380416,30.114542954907296 70.51704319692384,30.138418954768404 70.50382983545663,30.16229495462951 70.51307918848367,30.21004695435172 70.52497121380416,30.379831842252916 70.5513979367386,30.443501175215864 70.55271927288531,30.475335841697337 70.54743392829843,30.552269619027566 70.54082724756482,30.594715841002866 70.54082724756482,30.61328606311706 70.55271927288531,30.634509174104707 70.54479125600498,30.610633174243603 70.53686323912466,30.61859184086397 70.52497121380416,30.581451396635586 70.50911518004351,30.676955396080007 70.48797380169597,30.740624729042956 70.46815375949515,30.72470739580222 70.43115634738696,30.761847840030605 70.43115634738696,30.77245939552443 70.42190699435992,30.79368250651208 70.42190699435992,30.80164117313245 70.43115634738696,30.85469895060157 70.44304837270745,30.873269172715766 70.43908436426729,30.926326950184887 70.44965505344106,30.955508727792907 70.44304837270745,30.96081450553982 70.42983501124024,30.995302060894748 70.41926432206647,31.037748282870048 70.3901949268386,31.019178060755856 70.36641087619762,31.053665616110784 70.36112553161074,31.045706949490416 70.33337747252959,31.061624282731152 70.32016411106238,31.037748282870048 70.30430807730173,31.06427717160461 70.28845204354107,31.00856650526203 70.28052402666074,30.982037616527467 70.2844880351009,30.94755006117254 70.26863200134025,30.9316327279318 70.27259600978041,30.796335395385537 70.25673997601976,30.761847840030605 70.26070398445992,30.719401618055308 70.25673997601976,30.711442951434936 70.24484795069927,30.666343840586183 70.25145463143288,30.60002161874978 70.24484795069927,30.560228285647934 70.24484795069927,30.554922507901022 70.23691993381894,30.520434952546093 70.2408839422591,30.488600286064617 70.22502790849845,30.48064161944425 70.20785053859107,30.379831842252916 70.19992252171075,30.35595584239181 70.19595851327058,30.329426953657247 70.17613847106976,30.32677406478379 70.16292510960255,30.353302953518355 70.15235442042878,30.36391450901218 70.13914105896157,30.332079842530703 70.1351770505214,30.289633620555406 70.1219636890542,30.21800562097209 70.11403567217387,30.18882384336407 70.10214364685338,30.172906510123333 70.10610765529354,30.122501621527665 70.0968583022665,30.093319843919648 70.084966276946,30.103931399413472 70.0783595962124,30.143724732515317 70.0783595962124,30.172906510123333 70.06911024318535,30.101278510540016 70.0664675708919,30.082708288425824 70.0783595962124,30.00312162222214 70.0664675708919,29.878435845169697 70.05853955401157,29.825378067700573 70.06118222630502,29.785584734598732 70.07307425162551,29.748444290370344 70.07439558777223,29.61314695782408 70.09025162153289,29.54151895824076 70.09289429382633,29.461932292037076 70.10082231070666,29.427444736682148 70.09421562997305,29.339899403858094 70.10214364685338,29.30806473737662 70.11403567217387,29.24439540441367 70.11932101676075,29.19133762694455 70.11403567217387,29.11970962736123 70.12989170593453,29.079916294259387 70.12328502520091,29.018899850169895 70.12328502520091,28.976453628194598 70.1351770505214,28.928701628472385 70.13914105896157,28.902172739737825 70.14839041198861,28.854420740015613 70.14310506740173,28.86237940663598 70.14839041198861,28.809321629166856 70.15631842886894,28.769528296065015 70.17085312648288,28.658106963379854 70.18010247950993,28.562602963935433 70.1721744626296,28.589131852669993 70.1602824373091,28.73769362958354 70.16292510960255,28.764222518318103 70.15896110116239,28.73769362958354 70.14839041198861,28.663412741126766 70.13121304208124,28.575867408302713 70.1219636890542,28.57852029717617 70.11139299988042,28.64749540788603 70.10214364685338,28.674024296620594 70.09421562997305,28.71116474084898 70.10610765529354,28.756263851697735 70.10478631914683,28.796057184799576 70.10875032758699,28.838503406774876 70.10214364685338,28.851767851142156 70.09025162153289,28.83585051790142 70.08628761309272,28.727082074089715 70.09025162153289,28.769528296065015 70.0783595962124,28.833197629027964 70.0783595962124,28.84380918452179 70.07307425162551,28.90482562861128 70.07439558777223,28.955230517206946 70.06250356245174,29.010941183549527 70.06118222630502,29.069304738765563 70.0532542094247,29.106445182993948 70.05721821786486,29.106445182993948 70.04532619254437,29.14889140496925 70.04664752869108,29.18072607145072 70.03343416722387,29.117056738487776 70.01361412502305,29.146238516095792 70.00832878043617,29.178073182577265 70.01757813346322,29.21786651567911 70.00965011658289,29.239089626666757 70.01757813346322,29.276230070895146 70.00965011658289,29.31337051512353 70.02022080575667,29.379692736959935 70.00568610814273,29.39030429245376 70.00965011658289,29.461932292037076 70.00040076355585,29.504378514012377 70.00040076355585,29.493766958518552 69.98850873823535,29.644981624305554 69.97529537676814,29.66089895754629 69.9607606791542,29.637022957685186 69.94886865383371,29.55213051373459 69.92772727548618,29.48315540302473 69.91583525016569,29.464585180910532 69.89997921640503,29.430097625555604 69.89997921640503,29.400915847947584 69.88412318264437,29.41152740344141 69.87090982117716,29.35581673709883 69.87355249347061,29.353163848225375 69.86298180429684,29.42479184780869 69.85505378741651,29.438056292175972 69.866945812737,29.504378514012377 69.90658589713864,29.52825451387348 69.91583525016569,29.60518829120371 69.91451391401897,29.644981624305554 69.9039432248452,29.68742784628085 69.89997921640503,29.684774957407395 69.91187124172552,29.708650957268503 69.91451391401897,29.73783273487652 69.9039432248452,29.72987406825615 69.89469387181815,29.759055845864168 69.88676585493782,29.753750068117256 69.85901779585667,29.743138512623432 69.85108977897634,29.78027895685182 69.83126973677552,29.740485623749976 69.82202038374848,29.759055845864168 69.81409236686815,29.72987406825615 69.80616434998782,29.695386512901223 69.78898698008045,29.68212206853394 69.7731309463198,29.615799846697534 69.76388159329275,29.631717179938274 69.75595357641242,29.658246068672835 69.75727491255914,29.650287402052466 69.74538288723865,29.626411402191362 69.74538288723865,29.562742069228413 69.70045745825013,29.525601625000025 69.70442146669029,29.512337180632745 69.70045745825013,29.4062216256945 69.70045745825013,29.42479184780869 69.69649344980996,29.49641984739201 69.6925294413698,29.533560291620393 69.69781478595668,29.538866069367305 69.6925294413698,29.499072736265465 69.66478138228865,29.4725438475309 69.65949603770177,29.499072736265465 69.65156802082144,29.549477624861133 69.66874539072882,29.57070073584878 69.68856543292964,29.623758513317906 69.70442146669029,29.64763451317901 69.72556284503783,29.679469179660483 69.73745487035832,29.774973179104908 69.7480255595321,29.851906956435137 69.74406155109193,29.886394511790066 69.73216952577144,29.91822917827154 69.75727491255914,29.971286955740663 69.76916693787963,30.05617939969126 69.78105896320012,30.077402510678912 69.76916693787963,30.037609177577067 69.73745487035832,29.99516295560177 69.72556284503783,29.94741095587956 69.71631349201078,29.920882067144998 69.70574280283701,29.894353178410434 69.70442146669029,29.894353178410434 69.68460142448947,29.920882067144998 69.6674240545821,29.91822917827154 69.65156802082144,29.934146511512278 69.59078655807227,29.95271673362647 69.5868225496321,29.928840733765366 69.69649344980996,30.04291495532398 69.72820551733128,30.082708288425824 69.72952685347799,30.069443844058544 69.7176348281575,30.08536117729928 69.70574280283701,30.11189006603384 69.67270939916898,30.127807399274577 69.67270939916898,30.11189006603384 69.70838547513046,30.130460288148033 69.72556284503783,30.109237177160384 69.73216952577144,30.09862562166656 69.75595357641242,30.20208828773135 69.76916693787963,30.191476732237525 69.79030831622717,30.15433628800914 69.80748568613454,30.172906510123333 69.82202038374848,30.133113177021492 69.84976844282963,30.14903051026223 69.87090982117716,30.199435398857894 69.87883783805749,30.225964287592458 69.87487382961733,30.268410509567754 69.88148051035094,30.30024517604923 69.87883783805749,30.33473273140416 69.86562447659028,30.310856731543055 69.85373245126979,30.233922954212826 69.84316176209602,30.233922954212826 69.83391240906897,30.329426953657247 69.8418404259493,30.353302953518355 69.84712577053618,30.371873175632548 69.84316176209602,30.387790508873284 69.81409236686815,30.387790508873284 69.78238029934684,30.401054953240564 69.78238029934684,30.409013619860932 69.7480255595321,30.406360730987476 69.72027750045095,30.419625175354756 69.68856543292964,30.35595584239181 69.67667340760914,30.305550953796143 69.67138806302226,30.38248473112637 69.66478138228865,30.44615406408932 69.67535207146243,30.456765619583145 69.68460142448947,30.443501175215864 69.6925294413698,30.435542508595496 69.72556284503783,30.443501175215864 69.7361335342116,30.46737717507697 69.73349086191816,30.462071397330057 69.7480255595321,30.43288961972204 69.7612389209993,30.44084828634241 69.78238029934684,30.419625175354756 69.80220034154766,30.422278064228212 69.81409236686815,30.504517619305357 69.8233417198952,30.533699396913374 69.8114496945747,30.554922507901022 69.81409236686815,30.602674507623234 69.79691499696078,30.602674507623234 69.81409236686815,30.63185628523125 69.81012835842799,30.671649618333095 69.81012835842799,30.650426507345447 69.7982363331075,30.66899672945964 69.79030831622717,30.6955256181942 69.80220034154766,30.732666062422588 69.7982363331075,30.722054506928764 69.786344307787,30.684914062700376 69.78238029934684,30.68226117382692 69.76388159329275,30.71674872918185 69.7612389209993,30.727360284675676 69.77180961017308,30.796335395385537 69.79030831622717,30.822864284120097 69.79030831622717,30.873269172715766 69.75595357641242,30.873269172715766 69.74141887879848,30.889186505956502 69.73745487035832,30.889186505956502 69.72027750045095,30.873269172715766 69.71367081971734,30.928979839058343 69.68460142448947,30.944897172299083 69.68328008834276,30.92367406131143 69.66874539072882,30.95285583891945 69.6304266424739,30.950202950045995 69.60003591109931,30.93959139455217 69.59475056651243,30.94755006117254 69.57493052431161,30.9316327279318 69.55907449055096,30.817558506373185 69.52868375917637,30.692872729320744 69.53793311220342,30.51512917479918 69.54057578449687,30.4169722864813 69.58814388577882,30.233922954212826 69.65024668467473,30.151683399135685 69.66874539072882,30.08536117729928 69.65817470155505,30.090666955046192 69.6423186677944,30.138418954768404 69.64364000394112,30.151683399135685 69.60796392797964,30.18882384336407 69.56700250743128,30.17555939899679 69.53793311220342,30.122501621527665 69.5181130700026,30.117195843780753 69.46922363257391,30.053526510817804 69.43619022890589,30.00842739996905 69.41637018670507,29.936799400385734 69.40447816138457,29.91822917827154 69.41637018670507,29.859865623055505 69.4242982035854,29.796196290092556 69.40712083367802,29.782931845725276 69.39655014450425,29.72456829050924 69.38862212762392,29.695386512901223 69.36351674083622,29.57070073584878 69.31726997570098,29.533560291620393 69.3185913118477,29.52294873612657 69.32784066487474,29.4725438475309 69.31991264799441,29.416833181188323 69.3185913118477,29.39561007020067 69.32387665643458,29.289494515262426 69.29480726120671,29.276230070895146 69.25780984909852,29.289494515262426 69.24591782377803,29.31337051512353 69.2379898068977,29.305411848503162 69.20892041166984,29.294800293009338 69.20495640322967,29.28684162638897 69.17588700800181,29.24970118216058 69.16135231038787,29.257659848780953 69.15342429350754,29.239089626666757 69.13624692360017,29.241742515540214 69.11246287295918,29.16746162708344 69.07150145241083,29.093180738626668 69.03978938488952,29.056040294398283 69.01468399810182,29.042775850031003 69.01071998966165,29.018899850169895 69.02393335112886,28.928701628472385 69.05168141021001,28.85707362888907 69.07546546085099,28.8066687402934 69.11114153681247,28.830544740154508 69.17192299956164,28.833197629027964 69.22477644543049,29.05869318327174 69.32387665643458,29.220519404552565 69.39655014450425,29.33724651498464 69.47715164945424,29.28684162638897 69.52604108688293,29.20460207131183 69.60796392797964,29.170114515956897 69.63967599550095,29.132974071728512 69.69385077751652,28.894214073117457 69.73349086191816,28.644842519012574 69.77841629090668,28.403429631528063 69.81805637530832,28.32914874307129 69.84976844282963,28.345066076312026 69.87883783805749,28.162016744043548 69.91979925860585,28.032025189244198 69.98718740208864,27.984273189521986 70.01361412502305,27.976314522901617 70.0532542094247,27.96039718966088 70.09025162153289,27.883463412330652 70.08628761309272,27.787959412886227 70.07439558777223,27.742860302037474 70.06250356245174,27.700414080062174 70.07439558777223,27.61286874723812 70.07439558777223,27.559810969768996 70.05853955401157,27.525323414414068 70.02154214190338,27.427166526096187 70.01757813346322,27.358191415386326 69.9911514105288,27.30778652679066 69.98850873823535,27.275951860309185 69.97529537676814,27.305133637917205 69.9607606791542,27.29452208242338 69.95283266227388,27.236158527207344 69.94886865383371,27.167183416497483 69.93301262007306,27.13269586114255 69.93169128392634,27.10086119466108 69.91583525016569,27.058414972685778 69.91583525016569,27.03719186169813 69.9105499055788,26.98678697310246 69.9356552923665,26.94168786225371 69.93961930080667,26.87801852929076 69.93169128392634,26.859448307176567 69.94094063695339,26.8514896405562 69.9607606791542,26.785167418719794 69.95679667071404,26.716192308009933 69.94358330924683,26.679051863781545 69.96472468759437,26.551713197855648 69.947547317687,26.488043864892703 69.94358330924683,26.464167865031595 69.93961930080667,26.456209198411226 69.91847792245913,26.408457198689014 69.89997921640503,26.416415865309386 69.88676585493782,26.387234087701366 69.85505378741651,26.241325199661276 69.81409236686815,26.246630977408188 69.79427232466733,26.228060755293995 69.79295098852062,26.214796310926715 69.77841629090668,26.18826742219215 69.77709495475996,26.180308755571783 69.75991758485259,26.151126977963767 69.75595357641242,26.13520964472303 69.73745487035832,26.045011423025517 69.72027750045095,26.01052386767059 69.72159883659766,25.949507423581096 69.69649344980996,25.941548756960728 69.68460142448947,25.89114386836506 69.66478138228865,25.899102534985428 69.65817470155505,25.93359009034036 69.65421069311489,25.954813201328008 69.64364000394112,25.96011897907492 69.61985595330013,25.97603631231566 69.61060660027309,25.936242979213816 69.57096651587145,25.875226535124323 69.55378914596407,25.840738979769394 69.55114647367063,25.840738979769394 69.54189712064358,25.86992075737741 69.53264776761654,25.87787942399778 69.52207707844276,25.846044757516307 69.49036501092145,25.8646149796305 69.4745089771608,25.835433202022482 69.46922363257391,25.8221687576552 69.44808225422638,25.792986980047182 69.42033419514523,25.819515868781743 69.41637018670507,25.811557202161374 69.40447816138457,25.832780313149026 69.40712083367802,25.846044757516307 69.39258613606408,25.811557202161374 69.37540876615671,25.816862979908286 69.35955273239605,25.782375424553358 69.35294605166244,25.758499424692253 69.33973269019523,25.758499424692253 69.32784066487474,25.7372763137046 69.31066329496737,25.74523498032497 69.28555790817967,25.721358980463865 69.25780984909852,25.702788758349673 69.25384584065836,25.713400313843497 69.21024174781655,25.69217720285585 69.19570705020263,25.73197053595769 69.15342429350754,25.742582091451514 69.13756825974689,25.721358980463865 69.11114153681247,25.73197053595769 69.10321351993214,25.72401186933732 69.07942946929116,25.747887869198426 69.05960942709034,25.747887869198426 69.03054003186247,25.777069646806446 69.01864800654198,25.763805202439165 69.00279197278132,25.716053202716953 68.98165059443379,25.713400313843497 68.96579456067313,25.69217720285585 68.94993852691248,25.65503675862746 68.90501309792396,25.59932609228488 68.88519305572314,25.53035098157502 68.88783572801658,25.48259898185281 68.90501309792396,25.397706537902213 68.8891570641633,25.397706537902213 68.88519305572314,25.26771498310286 68.85083831590839,25.235880316621383 68.8389462905879,25.196086983519542 68.8085555592133,25.156293650417698 68.79930620618626,25.124458983936226 68.75041676875757,25.12180609506277 68.73059672655675,25.129764761683138 68.7147406927961,25.111194539568945 68.70152733132889,25.10854165069549 68.6777432806879,25.119153206189313 68.64206720472643,25.068748317593645 68.6209258263789,25.01569054012452 68.6209258263789,24.991814540263416 68.61299780949857,24.957326984908487 68.61696181793873,24.917533651806643 68.60506979261824,24.90692209631282 68.57996440583054,24.904269207439363 68.55485901904284,24.85651720771715 68.56146569977643,24.782236319260377 68.63678186013955,24.60714565361227 68.68170728912807,24.466542543319093 68.69888465903544,24.30206343316481 68.71738336508955,24.251658544569143 68.72663271811659,24.209212322593842 68.7451314241707,24.153501656251265 68.75173810490429,24.158807433998177 68.78873551701248,24.073914990047577 68.77948616398544,23.983716768350067 68.8270542652674,23.87229543566491 68.83630361829445,23.77413854734703 68.81912624838708,23.731692325371732 68.75041676875757,23.673328770155695 68.70549133976905,23.439874549291552 68.69095664215511,23.33641188322676 68.66981526380758,23.166626995325565 68.62885384325922,23.04459410714658 68.6896353060084,22.800528330788612 68.68567129756823,22.59360299865903 68.72927539041004,22.535239443442993 68.7451314241707,22.373413222162167 68.7147406927961,22.3654545555418 68.75041676875757,22.341578555680695 68.8270542652674,22.19301677876715 68.91690512324445,22.171793667779497 68.95654520764609,22.02323189086595 69.04771740176984,21.975479891143742 69.07810813314444,21.84548833634439 69.1441749404805,21.723455448165403 69.21420575625672,21.62795144872098 69.2749872190059,21.529794560403104 69.28555790817967,21.277770117424765 69.31066329496737,21.097373674029747 69.25913118524524,21.004522563458778 69.22213377313705,20.98860523021804 69.19174304176246,21.04696878543408 69.13756825974689,21.054927452054446 69.12039088983951,21.10798522952357 69.10453485607886,21.057580340927903 69.03450404030264,20.834737675557584 69.09000015846493,20.715357676252054 69.12039088983951,20.55353145497123 69.05960942709034,20.473944788767543 69.05828809094362,20.195391457054644 69.04771740176984,20.06009412450838 69.04639606562313,20.26171367889105 68.9446531823256,20.306812789739805 68.92615447627149,20.33599456734782 68.80062754233298,20.245796345650312 68.71077668435593,20.203350123675015 68.66585125536741,20.160903901699715 68.64470987701988,20.052135457888014 68.58921375885758,19.938061236329396 68.55618035518955,20.02560656915345 68.53107496840185,20.22722612353612 68.49143488400021,19.97785456943124 68.38837066455596,19.92214390308866 68.35665859703465,19.82398701477078 68.37251463079531,19.778887903922026 68.38176398382235,19.343814128675213 68.45443747189202,19.17933501852093 68.48350686711989,18.983021241885172 68.5152189346412,18.62222835509513 68.50729091776087,18.465707911561218 68.56146569977643,18.404691467471725 68.57996440583054,18.126138135758826 68.53636031298873,18.10226213589772 68.40554803446334,18.126138135758826 68.29455579813876,18.152667024493386 68.19941959557482,18.09695635815081 68.14656614970598,18.051857247302053 68.10692606530434,17.90064258151505 67.96818576989861,17.78922124882989 67.99989783741992,17.71228747149966 68.0236818880609,17.638006583042888 68.04482326640844,17.282519473999763 68.11749675447811,17.240073252024462 68.09371270383713,17.181709696808426 68.0487872748486,17.080899919617092 68.02103921576746,16.94294969819737 67.9800777952191,16.738677254941244 67.91401098788305,16.669702144231383 67.80962543229207,16.63786747774991 67.76602133945026,16.600727033521522 67.71052522128798,16.55562792267277 67.64710108624536,16.49195858970982 67.59028363193634,16.407066145759224 67.53346617762733,16.28503325758024 67.52818083304045,16.15769459165434 67.51761014386668,16.08871948094448 67.43568730276996,16.33013236842899 67.26127093140276,16.404413256885768 67.20445347709375,16.388495923645028 67.06967719012819,16.388495923645028 67.0458931394872,16.335438146175907 67.02607309728639,16.27707459095987 67.01021706352573,16.19483503588273 66.98114766829787,16.03831459234881 66.91243818866836,15.993215481500059 66.87147676812,15.87383548219453 66.78294724628968,15.767719927256284 66.70498841363313,15.621811039216194 66.59399617730855,15.44937326244154 66.5226440253856,15.375092373984767 66.4843252771307,15.4095799293397 66.4288291589684,15.452026151314996 66.34426364557824,15.483860817796472 66.28216084668234,15.30346437440145 66.23327140925366,15.213266152703941 66.20552335017251,15.035522598182379 66.15266990430366,14.743704822102199 66.14077787898317,14.515556378984968 66.13284986210284,14.539432378846072 66.06414038247334,14.550043934339897 66.02185762577827,14.573919934201001 65.95843349073564,14.584531489694829 65.89765202798647,14.595143045188653 65.8804746580791,14.62432482279667 65.81176517844959,14.542085267719528 65.69945160597828,14.53412660109916 65.67302488304387,14.515556378984968 65.58449536121354,14.499639045744228 65.5197498900242,14.499639045744228 65.43518437663404,14.499639045744228 65.41932834287338,14.499639045744228 65.35722554397749,14.50494482349114 65.30965744269552,14.377606157565246 65.24755464379963,14.327201268969578 65.11806370142095,14.244961713892437 65.06124624711194,14.109664381346171 64.96082469996112,14.064565270497415 64.93175530473326,13.931920826824609 64.8220844045554,13.85498704949438 64.76130294180622,13.817846605265991 64.72826953813819,13.706425272580834 64.63974001630787,13.65336749511171 64.57895855355869,13.841722605127096 64.52214109924968,13.892127493722764 64.50628506548902,14.085788381485067 64.47721567026116,14.114970159093083 64.4613596365005,14.11762304796654 64.43493291356609,14.149457714448015 64.25787386990544,14.157416381068384 64.1931283987161,14.05395371500359 64.09138551541857,13.966408382179537 64.0068200020284,13.717036828074658 64.04646008643005,13.41726038537411 64.07552948165791,13.36154971903153 64.07949349009807,13.210335053244528 64.09534952385873,13.175847497889595 64.09006417927185,12.926475943784716 64.05835211175054,12.74873238926315 63.99757064900136,12.67975727855329 63.97378659836038,12.61078216784343 63.916969144051365,12.49936083515827 63.832403630661204,12.422427057828042 63.776907512498916,12.329575947257077 63.7134833774563,12.2977412807756 63.67120062076122,12.231419058939196 63.6328818725063,12.149179503862054 63.59456312425139,12.212848836825003 63.47828554333992,12.080204393152194 63.355401281694846,12.035105282303439 63.31576119729321,11.974088838213948 63.26951443215797,12.077551504278738 63.15191551509978,12.175708392596617 63.048851295655524,12.218154614571915 62.99996185822684,12.074898615405282 62.90218298336947,12.135915059494774 62.74758665420309,12.096121726392932 62.681519846867026,12.05632839329109 62.61016769494408,12.06959283765837 62.594311661183426,12.186319948090443 62.42518063440311,12.2977412807756 62.26662029679656,12.276518169787952 62.19658948102034,12.27121239204104 62.170162758085915,12.234071947812652 62.06181319405478,12.212848836825003 61.97724768066462,12.202237281331179 61.933643587822814,12.170402614849705 61.83454337681873,12.159791059355879 61.79886730085725,12.13856794836823 61.723551140494145,12.276518169787952 61.64030696325071,12.3401875027509 61.61520157646301,12.419774168954586 61.561026794447436,12.44365016881569 61.566312139034316,12.568335945868132 61.568954811327764,12.61078216784343 61.538564079953176,12.655881278692185 61.50817334857859,12.70893905616131 61.46985460032367,12.815054611099555 61.39850244840073,12.870765277442135 61.35621969170565,12.857500833074855 61.31525827115729,12.823013277719923 61.23994211079418,12.79117861123845 61.1976593540991,12.706286167287853 61.142163235936806,12.706286167287853 61.136877891349926,12.67975727855329 61.05759772254665,12.65853416756564 61.05099104181304,12.613435056716886 61.047027033372885,12.488749279664447 61.049669705666325,12.44365016881569 61.049669705666325,12.321617280636707 61.03117099961223,12.239377725559565 61.01927897429174,12.220807503445371 61.01267229355813,12.234071947812652 60.99813759594419,12.332228836130533 60.889788031913056,12.334881725003989 60.852790619804864,12.348146169371269 60.81843587999011,12.39589816909348 60.732549030453235,12.459567502056428 60.68630226531799,12.509972390652095 60.64137683632947,12.512625279525551 60.59909407963439,12.581600390235412 60.550204642205706,12.605476390096518 60.51188589395079,12.605476390096518 60.406179002213094,12.547112834880481 60.34936154790408,12.49936083515827 60.32293482496966,12.504666612905183 60.27668805983441,12.523236835019375 60.223834613965565,12.54180705713357 60.19344388259098,12.525889723892831 60.16437448736311,12.502013724031727 60.09962901617377,12.446303057689146 60.038847553424596,12.39589816909348 60.01506350278361,12.3401875027509 59.96617406535493,12.22876617006574 59.92785531710001,12.17305550372316 59.88821523269837,12.15183239273551 59.886893896551655,12.117344837380582 59.892179241138535,12.053675504417633 59.884251224258215,11.984700393707772 59.89878592187215,11.928989727365192 59.886893896551655,11.915725282997911 59.87235919893772,11.883890616516437 59.87235919893772,11.88919639426335 59.85782450132379,11.838791505667682 59.83932579526969,11.852055950034963 59.83007644224264,11.875931949896069 59.8274337699492,11.926336838491736 59.79307903013445,11.931642616238648 59.7587242903197,11.92368394961828 59.74815360114592,11.931642616238648 59.73890424811888,11.93694839398556 59.69397881913036,11.88919639426335 59.69133614683691,11.878584838769525 59.68340812995659,11.867973283275699 59.66094541546232,11.854708838908419 59.647732053995114,11.788386617072014 59.64376804555495,11.727370172982523 59.62659067564758,11.698188395374505 59.608091969593474,11.690229728754137 59.58827192739266,11.727370172982523 59.51163443088283,11.753899061717085 59.4786010272148,11.761857728337453 59.42574758134595,11.775122172704734 59.41385555602546,11.780427950451646 59.38478616079759,11.817568394680032 59.345146076395956,11.82022128355349 59.29625663896727) \ No newline at end of file +LINESTRING(11.82022128355349 59.29625663896727,11.830832839047314 59.240760520804976,11.804303950312752 59.22754715933777,11.783080839325102 59.206405780990224,11.775122172704734 59.17601504961564,11.77777506157819 59.136374965214,11.76451061721091 59.11523358686647,11.775122172704734 59.10730556998614,11.77777506157819 59.08880686393204,11.748593283970173 59.066344149437775,11.737981728476347 59.050488115677126,11.708799950868329 59.030668073476306,11.706147061994873 59.01349070356893,11.690229728754137 58.98970665292795,11.684923951007224 58.971207946873854,11.690229728754137 58.9553519131132,11.663700840019574 58.934210534765654,11.650436395652292 58.90646247568451,11.6318661735381 58.909105147977954,11.589419951562801 58.89060644192386,11.573502618322063 58.89589178651074,11.570849729448607 58.88796376963042,11.557585285081327 58.898534458804185,11.544320840714047 58.89457045036402,11.539015062967135 58.88003575275009,11.525750618599853 58.876071744309925,11.483304396624554 58.89192777807058,11.456775507889994 58.88796376963042,11.456775507889994 58.91703316485828,11.464734174510362 58.93288919861894,11.45942839676345 58.951387904673034,11.462081285636906 58.971207946873854,11.454122619016537 58.985742644487786,11.470039952257274 58.98177863604762,11.464734174510362 59.00027734210172,11.448816841269624 59.01216936742221,11.43024661915543 59.03595341806319,11.419635063661605 59.043881434943515,11.432899508028886 59.06238014099762,11.419635063661605 59.066344149437775,11.419635063661605 59.05445212411729,11.406370619294325 59.05709479641073,11.406370619294325 59.072950830171386,11.393106174927045 59.07691483861155,11.385147508306677 59.09541354466565,11.37453595281285 59.103341561545975,11.387800397180133 59.11523358686647,11.355965730698657 59.11919759530663,11.321478175343728 59.11787625915991,11.276379064494972 59.10069888925253,11.223321287025849 59.08880686393204,11.199445287164743 59.09144953622548,11.204751064911655 59.10730556998614,11.231279953646217 59.13373229292056,11.22862706477276 59.13769630136073,11.199445287164743 59.1112695784263,11.199445287164743 59.11919759530663,11.183527953924006 59.11787625915991,11.172916398430182 59.1297682844804,11.178222176177094 59.14166030980089,11.212709731532023 59.145624318241055,11.175569287303638 59.15223099897466,11.172916398430182 59.16015901585499,11.188833731670918 59.17865772190908,11.186180842797462 59.19715642796318,11.178222176177094 59.18658573878941,11.1596519540629 59.183943066495964,11.164957731809814 59.16015901585499,11.130470176454882 59.153552335121375,11.119858620961057 59.145624318241055,11.114552843214145 59.168087032735315,11.098635509973409 59.183943066495964,11.090676843353041 59.17865772190908,11.11189995434069 59.14166030980089,11.109247065467233 59.13373229292056,11.072106621238847 59.12184026760007,11.072106621238847 59.14033897365417,11.027007510390092 59.1297682844804,11.037619065883916 59.14033897365417,11.042924843630828 59.1614803520017,11.027007510390092 59.148266990534495,11.005784399402442 59.17601504961564,11.011090177149354 59.18658573878941,10.99251995503516 59.17865772190908,10.989867066161704 59.18790707493613,10.976602621794424 59.18658573878941,10.968643955174056 59.17601504961564,10.950073733059863 59.17205104117548,10.950073733059863 59.153552335121375,10.931503510945669 59.136374965214,10.907627511084563 59.13769630136073,10.918239066578387 59.14958832668121,10.90232173333765 59.148266990534495,10.897015955590739 59.15619500741482,10.907627511084563 59.168087032735315,10.899668844464195 59.18262173034925,10.883751511223458 59.17601504961564,10.886404400096914 59.190549747229575,10.86783417798272 59.17601504961564,10.857222622488896 59.18658573878941,10.859875511362352 59.17205104117548,10.825387956007422 59.15223099897466,10.825387956007422 59.17205104117548,10.80681773389323 59.19715642796318,10.790900400652491 59.18658573878941,10.788247511779035 59.19451375566974,10.804164845019773 59.20508444484351,10.761718623044473 59.232832503924655,10.793553289525947 59.25925922685908,10.772330178538297 59.255295218418915,10.745801289803737 59.232832503924655,10.729883956563 59.23151116777793,10.735189734309913 59.26586590759268,10.74314840093028 59.255295218418915,10.748454178677193 59.28172194135334,10.74314840093028 59.2856859497935,10.790900400652491 59.31475534502137,10.780288845158667 59.31871935346153,10.759065734171017 59.30814866428776,10.751107067550649 59.31607668116809,10.753759956424105 59.342503404102516,10.732536845436456 59.345146076395956,10.716619512195718 59.32400469804841,10.698049290081524 59.31871935346153,10.690090623461156 59.30154198355415,10.658255956979684 59.33457538722219,10.663561734726596 59.37950081621071,10.650297290359314 59.37157279933038,10.647644401485858 59.39403551382464,10.655603068106227 59.432354262079556,10.6874377345877 59.47199434648119,10.682131956840788 59.50899175858939,10.6874377345877 59.52484779235004,10.666214623600052 59.52352645620332,10.650297290359314 59.55391718757791,10.655603068106227 59.5843079189525,10.652950179232771 59.614698650327085,10.61846262387784 59.67415877692954,10.629074179371663 59.69794282757052,10.621115512751295 59.70058549986396,10.613156846130927 59.682086793809866,10.586627957396367 59.7217268782115,10.591933735143279 59.732297567385274,10.581322179649455 59.7402255842656,10.581322179649455 59.76136696261314,10.607851068384015 59.80364971930822,10.642338623738945 59.841968467563134,10.655603068106227 59.87235919893772,10.6874377345877 59.84989648444346,10.692743512334612 59.83404045068281,10.713966623322262 59.74815360114592,10.72192528994263 59.72833355894511,10.732536845436456 59.72833355894511,10.724578178816088 59.75079627343937,10.735189734309913 59.766652307200026,10.729883956563 59.77854433252051,10.735189734309913 59.797043038574614,10.753759956424105 59.82346976150904,10.767024400791385 59.83139777838936,10.780288845158667 59.864431182057395,10.751107067550649 59.89482191343198,10.751107067550649 59.906713938752475,10.740495512056825 59.90142859416559,10.732536845436456 59.91067794719264,10.711313734448806 59.906713938752475,10.690090623461156 59.91728462792624,10.695396401208068 59.90274993031231,10.67417329022042 59.89482191343198,10.663561734726596 59.90274993031231,10.668867512473508 59.91728462792624,10.642338623738945 59.91067794719264,10.626421290498207 59.88028721581805,10.602545290637103 59.87235919893772,10.591933735143279 59.88821523269837,10.610503957257471 59.90274993031231,10.570710624155629 59.886893896551655,10.530917291053786 59.886893896551655,10.509694180066138 59.87632320737789,10.501735513445768 59.853860492883626,10.491123957951944 59.841968467563134,10.469900846964293 59.83536178682952,10.47255373583775 59.83007644224264,10.499082624572312 59.83139777838936,10.47255373583775 59.819505753068874,10.501735513445768 59.80100704701478,10.501735513445768 59.7587242903197,10.51499995781305 59.76268829875986,10.512347068939594 59.734940239678714,10.520305735559962 59.72833355894511,10.522958624433418 59.709834852891014,10.517652846686506 59.69397881913036,10.533570179927242 59.6781227853697,10.538875957674154 59.68340812995659,10.581322179649455 59.66358808775577,10.599892401763647 59.664909423902486,10.615809735004383 59.59619994427299,10.615809735004383 59.569773221338565,10.589280846269823 59.55127451528446,10.536223068800698 59.53145447308365,10.4937768468254 59.51956244776316,10.480512402458118 59.52352645620332,10.464595069217381 59.51691977546972,10.448677735976645 59.52352645620332,10.419495958368627 59.52352645620332,10.4088844028748 59.53938248996398,10.427454624988995 59.56184520445824,10.440719069356277 59.60677063344676,10.41684306949517 59.61073464188692,10.443371958229733 59.62262666720741,10.43010751386245 59.6345186925279,10.427454624988995 59.653017398582,10.43806618048282 59.667552096195934,10.427454624988995 59.67415877692954,10.43010751386245 59.68605080225003,10.41684306949517 59.68340812995659,10.366438180899504 59.71379886133118,10.361132403152592 59.709834852891014,10.316033292303835 59.71644153362462,10.286851514695817 59.73626157582544,10.286851514695817 59.74815360114592,10.244405292720518 59.746832264999206,10.233793737226694 59.7402255842656,10.186041737504482 59.744189592705766,10.26297551483471 59.72040554206478,10.27093418145508 59.70851351674429,10.31338040343038 59.690014810690194,10.345215069911854 59.690014810690194,10.374396847519872 59.6781227853697,10.387661291887152 59.659624079315606,10.392967069634064 59.64376804555495,10.406231514001345 59.62659067564758,10.400925736254433 59.59619994427299,10.390314180760608 59.58034391051233,10.406231514001345 59.56448787675168,10.398272847380976 59.56052386831151,10.390314180760608 59.53541848152381,10.363785292026048 59.527490464643485,10.305421736810011 59.53938248996398,10.26297551483471 59.56448787675168,10.252363959340887 59.56052386831151,10.244405292720518 59.569773221338565,10.231140848353238 59.5658092128984,10.244405292720518 59.55788119601807,10.260322625961255 59.53145447308365,10.278892848075449 59.53145447308365,10.302768847936555 59.4970997332689,10.318686181177291 59.48917171638857,10.342562181038398 59.468030338041025,10.350520847658766 59.4786010272148,10.358479514279134 59.460102321160704,10.38235551414024 59.43763960666644,10.400925736254433 59.45085296813365,10.427454624988995 59.440282278959884,10.443371958229733 59.452174304280376,10.456636402597013 59.44424628740005,10.45928929147047 59.42839025363939,10.475206624711205 59.42839025363939,10.4937768468254 59.43631827051972,10.496429735698856 59.417819564465624,10.475206624711205 59.395356849971364,10.475206624711205 59.380822152357425,10.461942180343925 59.372894135477104,10.469900846964293 59.35043142098284,10.4937768468254 59.333254051075464,10.496429735698856 59.322683361901696,10.522958624433418 59.32004068960825,10.52826440218033 59.30814866428776,10.520305735559962 59.293613966673824,10.501735513445768 59.29229263052711,10.4937768468254 59.26982991603285,10.501735513445768 59.255295218418915,10.488471069078487 59.263223235299236,10.47255373583775 59.25925922685908,10.467247958090837 59.24340319309842,10.432760402735907 59.271151252179564,10.427454624988995 59.25925922685908,10.400925736254433 59.26586590759268,10.398272847380976 59.27643659676645,10.377049736393328 59.277757932913175,10.371743958646416 59.24340319309842,10.379702625266784 59.235475176218095,10.358479514279134 59.21036978943039,10.345215069911854 59.216976470164,10.329297736671116 59.193192419523015,10.32664484779766 59.168087032735315,10.308074625683467 59.145624318241055,10.321339070050747 59.145624318241055,10.32664484779766 59.1297682844804,10.31338040343038 59.125804276040235,10.310727514556923 59.13373229292056,10.278892848075449 59.14033897365417,10.308074625683467 59.09937755310581,10.305421736810011 59.080878847051714,10.316033292303835 59.06898682173122,10.300115959063099 59.05313078797057,10.302768847936555 59.06502281329106,10.292157292442731 59.0742721663181,10.289504403569275 59.09541354466565,10.26297551483471 59.12316160374679,10.257669737087799 59.10994824227958,10.273587070328537 59.09673488081236,10.281545736948905 59.04784544338368,10.27093418145508 59.03991742650335,10.257669737087799 59.06502281329106,10.252363959340887 59.09937755310581,10.241752403847062 59.09541354466565,10.233793737226694 59.12184026760007,10.22318218173287 59.125804276040235,10.225835070606326 59.09144953622548,10.217876403985958 59.0742721663181,10.233793737226694 59.058416132557454,10.228487959479782 59.038596090356634,10.20195907074522 59.02009738430254,10.15420707102301 59.005562686688606,10.130331071161903 59.005562686688606,10.127678182288447 59.0240613927427,10.175430182010658 59.038596090356634,10.16747151539029 59.05445212411729,10.148901293276097 59.0425600987968,10.117066626794621 59.03463208191647,10.109107960174253 59.0240613927427,10.074620404819324 59.01349070356893,10.064008849325498 59.03198940962303,10.042785738337848 59.0425600987968,10.016256849603288 59.04652410723696,10.026868405097112 59.03198940962303,10.018909738476744 59.028025401182866,10.03482707171748 59.016133375862374,10.042785738337848 59.00159867824844,10.03482707171748 58.97781462760746,10.016256849603288 58.979135963754175,10.002992405236007 58.96988661072713,9.981769294248357 58.98309997219434,9.963199072134163 58.97781462760746,9.971157738754531 58.965922602286966,9.957893294387251 58.96063725770008,9.93136440565269 58.965922602286966,9.923405739032322 58.973850619167294,9.883612405930478 58.96724393843369,9.867695072689742 58.97517195531402,9.857083517195917 58.956673249259914,9.81994307296753 58.971207946873854,9.854430628322461 58.98970665292795,9.84116618395518 59.01745471200909,9.84116618395518 59.03991742650335,9.822595961840985 59.03198940962303,9.806678628600249 59.03595341806319,9.79871996197988 59.066344149437775,9.806678628600249 59.09144953622548,9.790761295359513 59.09144953622548,9.788108406486057 59.066344149437775,9.772191073245319 59.05445212411729,9.772191073245319 59.03991742650335,9.737703517890388 59.072950830171386,9.72974485127002 59.06502281329106,9.71648040690274 59.06898682173122,9.711174629155828 59.09144953622548,9.719133295776196 59.10466289769269,9.700563073662002 59.10730556998614,9.697910184788546 59.07691483861155,9.689951518168177 59.06898682173122,9.705868851408916 59.05445212411729,9.69525729591509 59.050488115677126,9.658116851686703 59.058416132557454,9.644852407319423 59.083521519345155,9.650158185066335 59.103341561545975,9.63954662957251 59.1112695784263,9.586488852103386 59.12316160374679,9.589141740976842 59.11523358686647,9.530778185760806 59.131089620627115,9.509555074773157 59.125804276040235,9.562612852242282 59.11787625915991,9.559959963368826 59.10730556998614,9.581183074356474 59.103341561545975,9.626282185205229 59.080878847051714,9.626282185205229 59.06238014099762,9.644852407319423 59.058416132557454,9.650158185066335 59.04652410723696,9.671381296053983 59.050488115677126,9.697910184788546 59.04652410723696,9.735050629016932 59.028025401182866,9.7430092956373 59.01216936742221,9.748315073384212 58.98970665292795,9.732397740143476 58.993670661368114,9.721786184649652 59.008205358982046,9.700563073662002 59.00159867824844,9.713827518029284 58.993670661368114,9.705868851408916 58.985742644487786,9.671381296053983 58.996313333661554,9.652811073939791 58.98970665292795,9.671381296053983 58.98177863604762,9.700563073662002 58.979135963754175,9.689951518168177 58.96724393843369,9.676687073800895 58.973850619167294,9.663422629433615 58.96724393843369,9.647505296192879 58.971207946873854,9.650158185066335 58.96063725770008,9.623629296331773 58.9553519131132,9.631587962952143 58.94742389623287,9.623629296331773 58.93949587935254,9.607711963091035 58.951387904673034,9.589141740976842 58.94478122393943,9.613017740837948 58.93288919861894,9.581183074356474 58.92496118173861,9.552001296748456 58.93288919861894,9.549348407875 58.928925190178774,9.517513741393525 58.928925190178774,9.480373297165139 58.9368532070591,9.467108852797859 58.93288919861894,9.501596408152789 58.926282517885326,9.469761741671315 58.90249846724435,9.453844408430577 58.88664243348369,9.435274186316384 58.90646247568451,9.374257742226892 58.898534458804185,9.366299075606523 58.89192777807058,9.36895196447998 58.88003575275009,9.387522186594172 58.89457045036402,9.408745297581822 58.90249846724435,9.42466263082256 58.898534458804185,9.416703964202192 58.8681437274296,9.406092408708366 58.86417971898943,9.358340408986155 58.86153704669599,9.321199964757769 58.87210773586976,9.30528263151703 58.88003575275009,9.294671076023207 58.853609029815665,9.299976853770119 58.847002349082054,9.276100853909014 58.833788987614845,9.30528263151703 58.839074332201726,9.302629742643575 58.831146315321405,9.329158631378137 58.83775299605501,9.371604853353436 58.847002349082054,9.408745297581822 58.8496450213755,9.443232852936752 58.84568101293534,9.467108852797859 58.82718230688124,9.43792707518984 58.81925429000091,9.390175075467628 58.81529028156075,9.406092408708366 58.808683600827145,9.371604853353436 58.79943424780009,9.379563519973804 58.79282756706649,9.435274186316384 58.811326273120585,9.435274186316384 58.80075558394682,9.38221640884726 58.78489955018616,9.384869297720716 58.78225687789271,9.347728853492331 58.75450881881157,9.286712409402838 58.73997412119764,9.233654631933714 58.74261679349108,9.204472854325697 58.74790213807797,9.18855552108496 58.74261679349108,9.183249743338047 58.74790213807797,9.167332410097309 58.73997412119764,9.135497743615836 58.74261679349108,9.114274632628186 58.75054481037141,9.082439966146712 58.75054481037141,9.0771341883998 58.75979416339845,9.066522632905976 58.75583015495829,9.082439966146712 58.743938129637804,9.058563966285607 58.7254394235837,9.095704410513992 58.724118087436985,9.124886188122012 58.71751140670338,9.199167076578785 58.71619007055666,9.19651418770533 58.724118087436985,9.15937374347694 58.724118087436985,9.106315966007818 58.73204610431731,9.106315966007818 58.743938129637804,9.164679521223853 58.73336744046403,9.225695965313346 58.73865278505092,9.207125743199153 58.721475415143544,9.238960409680626 58.72808209587715,9.241613298554082 58.724118087436985,9.225695965313346 58.70561938138289,9.130191965868924 58.69504869220912,9.11162174375473 58.69769136450256,9.103663077134362 58.68712067532879,9.204472854325697 58.69504869220912,9.225695965313346 58.68712067532879,9.204472854325697 58.66465796083453,9.164679521223853 58.656729943954204,9.162026632350397 58.66730063312797,9.116927521501642 58.65012326322059,9.140803521362749 58.648801927073876,9.0771341883998 58.62501787643289,9.032035077551045 58.611804514965684,9.032035077551045 58.619732531846005,8.994894633322659 58.5880204643247,8.976324411208466 58.589341800471416,8.971018633461552 58.60255516193863,8.947142633600446 58.61048317881896,8.952448411347358 58.62501787643289,8.933878189233166 58.61841119569929,8.939183966980078 58.59991248964519,8.923266633739342 58.57348576671077,8.963059966841184 58.59594848120503,8.968365744588096 58.5880204643247,8.957754189094272 58.569521758270604,8.968365744588096 58.56291507753699,8.949795522473902 58.549701716069784,8.886126189510955 58.52459632928208,8.878167522890585 58.49816960634766,8.86225018964985 58.5008122786411,8.851638634156025 58.48892025332061,8.81980396767455 58.474385555706675,8.75082885696469 58.45588684965258,8.713688412736303 58.44003081589192,8.718994190483215 58.41888943754438,8.700423968369023 58.39114137846324,8.726952857103583 58.392462714609955,8.713688412736303 58.37924935314275,8.687159524001743 58.364714655528815,8.668589301887549 58.36867866396898,8.671242190761005 58.354143966355046,8.65267196864681 58.354143966355046,8.644713302026442 58.342251941034554,8.620837302165338 58.33960926874111,8.631448857659162 58.33168125186078,8.607572857798056 58.32771724342062,8.6049199689246 58.33828793259439,8.623490191038794 58.35678663864849,8.6049199689246 58.36075064708865,8.57043241356967 58.311861209659966,8.530639080467827 58.289398495165706,8.509415969480177 58.299969184339474,8.517374636100547 58.289398495165706,8.490845747365984 58.277506469845214,8.490845747365984 58.27354246140505,8.535944858214739 58.28543448672554,8.530639080467827 58.269578452964886,8.461663969757966 58.25900776379112,8.435135081023404 58.266935780671446,8.443093747643774 58.29336250360587,8.408606192288843 58.26561444452472,8.42452352552958 58.266935780671446,8.432482192149948 58.25107974691079,8.427176414403036 58.24315173003046,8.400647525668475 58.247115738470626,8.387383081301193 58.255043755350954,8.371465748060457 58.23654504929686,8.318407970591332 58.212760998655874,8.305143526224052 58.21672500709604,8.27861463748949 58.212760998655874,8.297184859603684 58.202190309482106,8.25208574875493 58.20615431792227,8.246779971008015 58.20086897333538,8.281267526362946 58.19161962030833,8.275961748616034 58.19822630104194,8.305143526224052 58.19161962030833,8.283920415236402 58.18369160342801,8.270655970869122 58.159907552787026,8.241474193261103 58.157264880493585,8.241474193261103 58.16783556966735,8.222903971146911 58.17576358654768,8.233515526640735 58.182370267281286,8.20168086015926 58.190298284161614,8.209639526779629 58.17179957810752,8.233515526640735 58.16387156122719,8.233515526640735 58.15330087205342,8.257391526501841 58.1334808298526,8.241474193261103 58.12555281297227,8.217598193399997 58.12158880453211,8.206986637906173 58.11233945150506,8.199027971285805 58.14140884673293,8.204333749032717 58.16387156122719,8.185763526918524 58.16387156122719,8.191069304665437 58.15330087205342,8.172499082551242 58.13480216599932,8.180457749171612 58.12951682141244,8.14597019381668 58.126874149119,8.164540415930874 58.12291014067883,8.15392886043705 58.10705410691818,8.135358638322856 58.10309009847801,8.130052860575944 58.12158880453211,8.124747082829032 58.108375443064894,8.087606638600645 58.12158880453211,8.087606638600645 58.1334808298526,8.063730638739539 58.11894613223867,8.058424860992627 58.12291014067883,8.071689305359907 58.14140884673293,8.058424860992627 58.137444838292765,8.047813305498803 58.14537285517309,8.058424860992627 58.16122888893374,8.076995083106821 58.16783556966735,8.087606638600645 58.18633427572145,8.071689305359907 58.19426229260178,8.058424860992627 58.2140823348026,8.034548861131523 58.23654504929686,8.02128441676424 58.232581040856694,8.050466194372259 58.2140823348026,8.053119083245715 58.202190309482106,8.037201750004979 58.19822630104194,8.050466194372259 58.182370267281286,8.037201750004979 58.179727594987845,8.047813305498803 58.16387156122719,8.026590194511153 58.157264880493585,8.034548861131523 58.14537285517309,7.997408416903135 58.14140884673293,8.013325750143872 58.130838157559154,7.997408416903135 58.12951682141244,7.984143972535854 58.14405151902637,7.962920861548205 58.13480216599932,7.978838194788942 58.126874149119,7.954962194927836 58.11233945150506,7.970879528168574 58.114982123798505,7.978838194788942 58.10309009847801,7.976185305915486 58.08723406471736,7.949656417180924 58.07402070325014,7.9443506394340115 58.07666337554359,7.933739083940187 58.10044742618457,7.915168861825993 58.070056694809985,7.875375528724151 58.072699367103425,7.8568053066099575 58.070056694809985,7.84088797336922 58.07402070325014,7.838235084495764 58.0647713502231,7.817011973508115 58.06609268636982,7.822317751255028 58.08062738398375,7.803747529140834 58.08062738398375,7.79313597364701 58.06609268636982,7.7825244181531845 58.06609268636982,7.7851773070266415 58.077984711690306,7.748036862798254 58.070056694809985,7.721507974063693 58.05155798875588,7.687020418708762 58.06873535866326,7.708243529696412 58.050236652609165,7.68171464096185 58.04759398031572,7.68171464096185 58.04362997187556,7.655185752227288 58.050236652609165,7.6604915299742 58.0396659634354,7.68171464096185 58.03570195499523,7.671103085468025 58.03173794655507,7.668450196594569 58.01323924050097,7.631309752366183 58.01720324894113,7.6206981968723575 58.027773938114905,7.6233510857458135 58.0396659634354,7.610086641378533 58.04362997187556,7.6206981968723575 58.007953895914085,7.594169308137796 58.00927523206081,7.583557752643971 57.99870454288703,7.575599086023603 58.007953895914085,7.549070197289041 58.00927523206081,7.517235530807566 58.005311223620645,7.498665308693374 58.005311223620645,7.503971086440286 58.01984592123458,7.456219086718074 58.01984592123458,7.429690197983513 58.01588191279441,7.429690197983513 58.027773938114905,7.442954642350793 58.03570195499523,7.41111997586932 58.04362997187556,7.424384420236601 58.03570195499523,7.403161309248951 58.02513126582146,7.419078642489688 58.02380992967474,7.403161309248951 58.005311223620645,7.3819381982613015 58.01720324894113,7.33418619853909 58.027773938114905,7.331533309665634 58.03570195499523,7.318268865298354 58.04362997187556,7.318268865298354 58.02513126582146,7.278475532196511 58.027773938114905,7.275822643323055 58.04362997187556,7.286434198816879 58.050236652609165,7.278475532196511 58.05816466948949,7.267863976702686 58.04759398031572,7.243987976841581 58.04362997187556,7.2227648658539305 58.03173794655507,7.20950042148665 58.030416610408345,7.198888865992825 58.04759398031572,7.177665755005176 58.05816466948949,7.169707088384808 58.0396659634354,7.156442644017527 58.04362997187556,7.124607977536052 58.03834462728867,7.121955088662596 58.02513126582146,7.111343533168771 58.03834462728867,7.106037755421859 58.027773938114905,7.113996422042227 58.01588191279441,7.108690644295315 58.005311223620645,7.076855977813841 57.98681251756655,7.055632866826192 57.97888450068622,7.02910397809163 57.99474053444687,7.034409755838542 58.00398988747392,7.037062644711998 58.02116725738129,7.0662444223200165 58.04362997187556,7.135219533029877 58.06873535866326,7.1458310885237015 58.06609268636982,7.140525310776789 58.05420066104933,7.148483977397158 58.050236652609165,7.17501286613172 58.10309009847801,7.185624421625544 58.11233945150506,7.182971532752088 58.1334808298526,7.177665755005176 58.13480216599932,7.180318643878632 58.11101811535834,7.167054199511352 58.108375443064894,7.1458310885237015 58.092519409304245,7.1458310885237015 58.072699367103425,7.124607977536052 58.072699367103425,7.103384866548403 58.08062738398375,7.106037755421859 58.06873535866326,7.092773311054579 58.07402070325014,7.074203088940385 58.05816466948949,7.050327089079279 58.055521997196045,7.039715533585454 58.046272644169,7.015839533724349 58.03438061884851,6.984004867242875 58.027773938114905,6.978699089495962 58.046272644169,7.002575089357068 58.05420066104933,7.013186644850893 58.06873535866326,7.002575089357068 58.072699367103425,7.013186644850893 58.08459139242392,7.058285755699648 58.11233945150506,7.060938644573104 58.11894613223867,7.02910397809163 58.108375443064894,7.023798200344718 58.09912609003785,6.986657756116331 58.070056694809985,6.97339331174905 58.070056694809985,6.976046200622506 58.05420066104933,6.960128867381769 58.04759398031572,6.93890575639412 58.050236652609165,6.933599978647207 58.06080734178293,6.952170200761401 58.06873535866326,6.933599978647207 58.07402070325014,6.960128867381769 58.08062738398375,6.930947089773751 58.08062738398375,6.946864423014489 58.09912609003785,6.928294200900295 58.092519409304245,6.920335534279927 58.072699367103425,6.891153756671908 58.070056694809985,6.9097239787861024 58.07666337554359,6.816872868215135 58.09119807315752,6.814219979341679 58.09912609003785,6.854013312443522 58.10441143462473,6.854013312443522 58.11101811535834,6.901765312165733 58.12555281297227,6.949517311887945 58.12158880453211,6.954823089634857 58.11233945150506,6.976046200622506 58.12291014067883,6.9946164227367 58.12158880453211,7.034409755838542 58.12951682141244,7.02910397809163 58.137444838292765,7.047674200205823 58.13876617443948,7.02910397809163 58.14537285517309,6.986657756116331 58.130838157559154,6.960128867381769 58.126874149119,6.930947089773751 58.12951682141244,6.888500867798452 58.137444838292765,6.888500867798452 58.14537285517309,6.854013312443522 58.1519795359067,6.832790201455873 58.17179957810752,6.867277756810803 58.187655611868166,6.859319090190434 58.190298284161614,6.819525757088591 58.17576358654768,6.814219979341679 58.18633427572145,6.79299686835403 58.18369160342801,6.814219979341679 58.165192897373906,6.803608423847855 58.15594354434686,6.843401756949698 58.14537285517309,6.867277756810803 58.1334808298526,6.851360423570066 58.117624796091945,6.8274844237089605 58.108375443064894,6.803608423847855 58.11101811535834,6.777079535113293 58.10044742618457,6.750550646378731 58.11101811535834,6.7452448686318185 58.130838157559154,6.7585093129991 58.14537285517309,6.7452448686318185 58.16915690581407,6.755856424125644 58.187655611868166,6.7452448686318185 58.19161962030833,6.734633313137994 58.18369160342801,6.739939090884906 58.14140884673293,6.721368868770713 58.130838157559154,6.73728620201145 58.12951682141244,6.739939090884906 58.10309009847801,6.7585093129991 58.09648341774441,6.806261312721311 58.09648341774441,6.806261312721311 58.09119807315752,6.771773757366381 58.077984711690306,6.811567090468223 58.08459139242392,6.816872868215135 58.0647713502231,6.79299686835403 58.0647713502231,6.785038201733661 58.05420066104933,6.771773757366381 58.072699367103425,6.763815090746013 58.0647713502231,6.713410202150344 58.06873535866326,6.694839980036152 58.06609268636982,6.660352424681221 58.07666337554359,6.639129313693571 58.06609268636982,6.620559091579379 58.07402070325014,6.615253313832466 58.08855540086408,6.596683091718273 58.08459139242392,6.55688975861643 58.11101811535834,6.554236869742974 58.11894613223867,6.586071536224448 58.12555281297227,6.623211980452835 58.157264880493585,6.623211980452835 58.17840625884112,6.694839980036152 58.17576358654768,6.6709639801750455 58.190298284161614,6.700145757783064 58.202190309482106,6.742591979758362 58.2140823348026,6.7452448686318185 58.22201035168292,6.769120868492925 58.232581040856694,6.811567090468223 58.24315173003046,6.877889312304628 58.266935780671446,6.869930645684259 58.27089978911161,6.814219979341679 58.26165043608456,6.814219979341679 58.255043755350954,6.777079535113293 58.24447306617718,6.731980424264538 58.224653023976366,6.708104424403432 58.2206890155362,6.686881313415783 58.25107974691079,6.684228424542327 58.26297177223128,6.6709639801750455 58.255043755350954,6.660352424681221 58.27089978911161,6.6709639801750455 58.28147047828538,6.663005313554677 58.29336250360587,6.64708798031394 58.29336250360587,6.64708798031394 58.26561444452472,6.6683110913015895 58.24050905773702,6.649740869187396 58.23654504929686,6.525055092134956 58.247115738470626,6.519749314388044 58.25900776379112,6.493220425653481 58.25240108305751,6.477303092412745 58.255043755350954,6.461385759172008 58.269578452964886,6.456079981425095 58.26297177223128,6.41098087057634 58.266935780671446,6.381799092968322 58.27354246140505,6.4322039815639895 58.28543448672554,6.424245314943621 58.289398495165706,6.368534648601042 58.277506469845214,6.336699982119567 58.289398495165706,6.323435537752286 58.30129052048619,6.3526173153603045 58.3263959072739,6.315476871131918 58.30921853736652,6.26507198253625 58.319789226540294,6.259766204789338 58.342251941034554,6.249154649295513 58.322431898833734,6.169567983091828 58.33828793259439,6.100592872381967 58.36075064708865,6.100592872381967 58.37132133626242,6.068758205900493 58.37264267240914,6.063452428153581 58.384534697729634,6.0501879837863 58.37528534470258,6.023659095051738 58.38849870616979,6.015700428431369 58.40303340378373,6.005088872937545 58.41096142066406,6.023659095051738 58.41888943754438,6.013047539557913 58.429460126718155,5.99447731744372 58.41888943754438,5.986518650823352 58.47042154726651,5.93876665110114 58.47042154726651,5.8777502070116485 58.46381486653291,5.861832873770911 58.47174288341323,5.880403095885105 58.47570689185339,5.824692429542525 58.482313572587,5.787551985314138 58.49024158946733,5.782246207567226 58.5008122786411,5.7955106519345065 58.502133614787816,5.7928577630610505 58.51534697625503,5.768981763199945 58.52856033772224,5.726535541224646 58.53516701845585,5.70265954136354 58.53516701845585,5.649601763894417 58.55498706065667,5.6389902084005925 58.584056455884536,5.625725764033311 58.59330580891158,5.572667986564188 58.648801927073876,5.551444875576538 58.656729943954204,5.538180431209257 58.671264641568136,5.548791986703082 58.693727356062396,5.516957320221608 58.70958338982305,5.519610209095064 58.72015407899682,5.503692875854327 58.743938129637804,5.48777554261359 58.75186614651813,5.501039986980871 58.76375817183862,5.532874653462345 58.77829286945256,5.543486208956169 58.79679157550665,5.538180431209257 58.82057562614763,5.5567506533234505 58.83511032376157,5.559403542196907 58.84568101293534,5.543486208956169 58.85228769366894,5.570015097690732 58.87342907201648,5.601849764172206 58.87739308045664,5.596543986425293 58.89060644192386,5.575320875437644 58.898534458804185,5.575320875437644 58.91703316485828,5.607155541919118 58.92496118173861,5.572667986564188 58.93024652632549,5.559403542196907 58.940817215499266,5.580626653184556 58.96063725770008,5.607155541919118 58.9553519131132,5.623072875159855 58.940817215499266,5.625725764033311 58.91306915641812,5.61246131966603 58.90646247568451,5.644295986147505 58.898534458804185,5.641643097274049 58.903819803391066,5.660213319388242 58.91042648412468,5.684089319249347 58.928925190178774,5.66817198600861 58.940817215499266,5.646948875020961 58.93024652632549,5.6336844306536795 58.93288919861894,5.628378652906767 58.95270924081975,5.591238208678381 58.96988661072713,5.609808430792574 58.97517195531402,5.604502653045662 58.985742644487786,5.56470931994382 58.979135963754175,5.56470931994382 59.016133375862374,5.591238208678381 59.02009738430254,5.575320875437644 59.028025401182866,5.580626653184556 59.03595341806319,5.604502653045662 59.0240613927427,5.625725764033311 59.02009738430254,5.654907541641329 59.00952669512876,5.660213319388242 58.99763466980828,5.681436430375891 58.99763466980828,5.731841318971559 58.97517195531402,5.761023096579576 58.96988661072713,5.763675985453032 58.956673249259914,5.747758652212296 58.951387904673034,5.755717318832664 58.928925190178774,5.737147096718471 58.91439049256484,5.753064429959208 58.89589178651074,5.74510576333884 58.87210773586976,5.753064429959208 58.856251702109105,5.774287540946857 58.88399976119025,5.774287540946857 58.926282517885326,5.787551985314138 58.93949587935254,5.819386651795613 58.92496118173861,5.84856842940363 58.93024652632549,5.851221318277086 58.9553519131132,5.8697915403912795 58.965922602286966,5.893667540252386 58.96724393843369,5.898973317999298 58.95931592155336,5.933460873354228 58.94742389623287,5.936113762227684 58.9553519131132,5.975907095329527 58.9368532070591,5.981212873076439 58.928925190178774,5.965295539835703 58.918354501005005,5.967948428709159 58.90249846724435,5.99447731744372 58.89457045036402,6.010394650684457 58.90249846724435,6.042229317165932 58.89192777807058,6.0501879837863 58.89457045036402,6.121815983369617 58.85228769366894,6.135080427736898 58.856251702109105,6.150997760977635 58.84171700449517,6.17487376083874 58.83511032376157,6.185485316332565 58.84171700449517,6.238543093801688 58.84171700449517,6.2783364269035316 58.83775299605501,6.280989315776988 58.84568101293534,6.246501760422057 58.8496450213755,6.172220871965284 58.847002349082054,6.119163094496161 58.87342907201648,6.103245761255423 58.89457045036402,6.087328428014686 58.8998557949509,6.103245761255423 58.90646247568451,6.103245761255423 58.920997173298446,6.121815983369617 58.93024652632549,6.121815983369617 58.940817215499266,6.143039094357266 58.94874523237959,6.148344872104179 58.9553519131132,6.169567983091828 58.956673249259914,6.1934439829529335 58.971207946873854,6.222625760560952 58.97781462760746,6.257113315915882 58.993670661368114,6.283642204650444 59.00027734210172,6.302212426764637 58.99763466980828,6.368534648601042 59.00424135054188,6.5064848700207625 59.028025401182866,6.527707981008412 59.028025401182866,6.641782202567027 59.050488115677126,6.641782202567027 59.05709479641073,6.525055092134956 59.038596090356634,6.50117909227385 59.03991742650335,6.371187537474498 59.02274005659598,6.342005759866479 59.016133375862374,6.2677248714097065 59.01216936742221,6.201402649573302 58.98970665292795,6.14038620548381 58.956673249259914,6.100592872381967 58.940817215499266,6.097939983508511 58.926282517885326,6.079369761394318 58.918354501005005,6.074063983647406 58.903819803391066,6.047535094912844 58.928925190178774,6.0289648727986505 58.93024652632549,5.99447731744372 58.96724393843369,6.015700428431369 58.98970665292795,6.052840872659756 59.00027734210172,6.087328428014686 58.985742644487786,6.066105317027037 59.005562686688606,6.015700428431369 59.0240613927427,5.991824428570264 59.02009738430254,5.9467253177215085 59.02274005659598,5.914890651240035 59.050488115677126,5.909584873493122 59.06502281329106,5.896320429125842 59.06502281329106,5.885708873632017 59.08484285549188,5.9546839843418775 59.11523358686647,5.981212873076439 59.12184026760007,5.997130206317176 59.11523358686647,6.0395764282924755 59.11523358686647,6.068758205900493 59.131089620627115,6.092634205761598 59.1297682844804,6.089981316888142 59.13769630136073,6.111204427875792 59.14033897365417,6.161609316471459 59.136374965214,6.17487376083874 59.13769630136073,6.161609316471459 59.148266990534495,6.100592872381967 59.145624318241055,6.089981316888142 59.15223099897466,6.076716872520862 59.14430298209433,6.047535094912844 59.13769630136073,6.023659095051738 59.14430298209433,6.0501879837863 59.170729705028755,6.0501879837863 59.17601504961564,6.068758205900493 59.17865772190908,6.068758205900493 59.193192419523015,6.097939983508511 59.1984777641099,6.103245761255423 59.22094047860416,6.1165102056227045 59.213012461723835,6.14038620548381 59.23151116777793,6.177526649712196 59.235475176218095,6.17487376083874 59.24736720153859,6.219972871687496 59.26586590759268,6.2677248714097065 59.2671872437394,6.304865315638093 59.280400605206616,6.323435537752286 59.26982991603285,6.323435537752286 59.2856859497935,6.37649331522141 59.30154198355415,6.416286648323252 59.31211267272793,6.517096425514588 59.31607668116809,6.461385759172008 59.322683361901696,6.424245314943621 59.32400469804841,6.3446586487399355 59.31607668116809,6.328741315499199 59.300220647407436,6.212014205067127 59.27379392447301,6.188138205206021 59.26982991603285,6.153650649851091 59.25925922685908,6.14038620548381 59.27379392447301,6.119163094496161 59.2856859497935,6.1138573167492485 59.30154198355415,6.127121761116529 59.30814866428776,6.172220871965284 59.3041846558476,6.182832427459109 59.30814866428776,6.249154649295513 59.31211267272793,6.2677248714097065 59.29757797511399,6.26507198253625 59.322683361901696,6.246501760422057 59.33457538722219,6.235890204928232 59.34911008483612,6.222625760560952 59.35703810171645,6.214667093940583 59.34911008483612,6.235890204928232 59.327968706488576,6.227931538307864 59.322683361901696,6.1907910940794775 59.31607668116809,6.19609687182639 59.333254051075464,6.214667093940583 59.34118206795579,6.1907910940794775 59.34118206795579,6.17487376083874 59.31475534502137,6.135080427736898 59.31475534502137,6.100592872381967 59.322683361901696,6.100592872381967 59.353074093276284,6.121815983369617 59.36893012703694,6.111204427875792 59.36893012703694,6.082022650267774 59.34646741254268,6.087328428014686 59.33457538722219,6.079369761394318 59.327968706488576,6.0395764282924755 59.330611378782024,6.015700428431369 59.34118206795579,6.023659095051738 59.353074093276284,6.0395764282924755 59.36100211015661,6.047535094912844 59.375536807770544,6.063452428153581 59.38478616079759,6.076716872520862 59.38346482465087,6.089981316888142 59.39403551382464,6.14038620548381 59.40328486685169,6.135080427736898 59.41385555602546,6.177526649712196 59.420462236759064,6.201402649573302 59.440282278959884,6.214667093940583 59.440282278959884,6.209361316193671 59.41517689217218,6.251807538168969 59.468030338041025,6.246501760422057 59.47727969106808,6.251807538168969 59.4970997332689,6.2677248714097065 59.505027750149225,6.3526173153603045 59.51956244776316,6.392410648462147 59.52484779235004,6.405675092829428 59.53409714537709,6.4322039815639895 59.53806115381725,6.469344425792376 59.5473105068443,6.517096425514588 59.5473105068443,6.562195536363342 59.55391718757791,6.538319536502237 59.55788119601807,6.479955981286201 59.555238523724626,6.464038648045464 59.56052386831151,6.4322039815639895 59.555238523724626,6.392410648462147 59.54598917069758,6.368534648601042 59.54598917069758,6.357923093107217 59.53806115381725,6.32078264887883 59.527490464643485,6.2677248714097065 59.51956244776316,6.296906649017725 59.55788119601807,6.307518204511549 59.56448787675168,6.331394204372655 59.58166524665905,6.328741315499199 59.62262666720741,6.342005759866479 59.62659067564758,6.365881759727586 59.64376804555495,6.342005759866479 59.64905339014184,6.336699982119567 59.64376804555495,6.304865315638093 59.63848270096806,6.2862950935239 59.614698650327085,6.294253760144269 59.60412796115331,6.2862950935239 59.592235935832825,6.304865315638093 59.5909145996861,6.304865315638093 59.57637990207217,6.280989315776988 59.5658092128984,6.26507198253625 59.55127451528446,6.2677248714097065 59.53541848152381,6.249154649295513 59.51956244776316,6.201402649573302 59.49842106941561,6.198749760699846 59.482565035654964,6.214667093940583 59.47199434648119,6.182832427459109 59.452174304280376,6.158956427598003 59.42574758134595,6.121815983369617 59.417819564465624,6.119163094496161 59.40592753914513,6.08467553914123 59.409891547585296,6.052840872659756 59.40592753914513,6.044882206039388 59.395356849971364,6.015700428431369 59.40328486685169,6.018353317304825 59.37950081621071,5.99447731744372 59.37685814391726,5.973254206456071 59.35703810171645,5.957336873215334 59.34911008483612,5.941419539974596 59.358359437863164,5.93876665110114 59.37950081621071,5.917543540113491 59.39932085841153,5.909584873493122 59.429711589786116,5.922849317860403 59.43631827051972,5.914890651240035 59.44821029584021,5.930807984480772 59.452174304280376,5.93876665110114 59.44688895969349,5.970601317582615 59.4416036151066,5.997130206317176 59.44821029584021,6.013047539557913 59.44424628740005,6.0501879837863 59.45613831272054,6.158956427598003 59.47067301033447,6.1934439829529335 59.47463701877464,6.19609687182639 59.482565035654964,6.158956427598003 59.48652904409513,6.156303538724547 59.48124369950824,6.063452428153581 59.47199434648119,6.0501879837863 59.47727969106808,5.922849317860403 59.47199434648119,5.885708873632017 59.48124369950824,5.901626206872754 59.48652904409513,5.901626206872754 59.49445706097545,5.880403095885105 59.49445706097545,5.867138651517823 59.505027750149225,5.867138651517823 59.54202516225742,5.84856842940363 59.54334649840414,5.837956873909805 59.52088378390987,5.8140808740487 59.51956244776316,5.84856842940363 59.48652904409513,5.859179984897455 59.46670900189431,5.835303985036349 59.45613831272054,5.774287540946857 59.43631827051972,5.763675985453032 59.440282278959884,5.755717318832664 59.460102321160704,5.739799985591927 59.47463701877464,5.731841318971559 59.47463701877464,5.739799985591927 59.460102321160704,5.737147096718471 59.452174304280376,5.750411541085752 59.44424628740005,5.750411541085752 59.429711589786116,5.70265954136354 59.40724887529185,5.684089319249347 59.40592753914513,5.684089319249347 59.395356849971364,5.774287540946857 59.42442624519923,5.843262651656718 59.43631827051972,5.845915540530174 59.42178357290579,5.867138651517823 59.39403551382464,5.896320429125842 59.37950081621071,5.89101465137893 59.34911008483612,5.8724444292647355 59.33457538722219,5.8697915403912795 59.342503404102516,5.835303985036349 59.342503404102516,5.822039540669069 59.327968706488576,5.811427985175244 59.34646741254268,5.7955106519345065 59.34646741254268,5.798163540807963 59.32664737034186,5.787551985314138 59.322683361901696,5.771634652073401 59.33457538722219,5.755717318832664 59.327968706488576,5.74510576333884 59.342503404102516,5.747758652212296 59.327968706488576,5.726535541224646 59.31475534502137,5.692047985869715 59.300220647407436,5.684089319249347 59.30154198355415,5.660213319388242 59.2856859497935,5.660213319388242 59.26586590759268,5.644295986147505 59.26190189915252,5.6310315417802235 59.26982991603285,5.646948875020961 59.2856859497935,5.641643097274049 59.288328622086944,5.644295986147505 59.31871935346153,5.684089319249347 59.322683361901696,5.686742208122803 59.327968706488576,5.660213319388242 59.342503404102516,5.662866208261698 59.353074093276284,5.6389902084005925 59.38346482465087,5.617767097412942 59.45613831272054,5.609808430792574 59.47067301033447,5.61246131966603 59.490493052535285,5.6336844306536795 59.49313572482873,5.617767097412942 59.49842106941561,5.575320875437644 59.49842106941561,5.559403542196907 59.48917171638857,5.5567506533234505 59.47463701877464,5.538180431209257 59.47199434648119,5.530221764588889 59.44821029584021,5.516957320221608 59.44424628740005,5.463899542752484 59.460102321160704,5.463899542752484 59.432354262079556,5.4718582093728525 59.440282278959884,5.511651542474696 59.42839025363939,5.538180431209257 59.43631827051972,5.543486208956169 59.44821029584021,5.5567506533234505 59.45085296813365,5.5567506533234505 59.468030338041025,5.591238208678381 59.47463701877464,5.591238208678381 59.45613831272054,5.609808430792574 59.44821029584021,5.615114208539486 59.40724887529185,5.591238208678381 59.41385555602546,5.591238208678381 59.40328486685169,5.617767097412942 59.39932085841153,5.625725764033311 59.38346482465087,5.607155541919118 59.375536807770544,5.61246131966603 59.353074093276284,5.609808430792574 59.32664737034186,5.593891097551837 59.322683361901696,5.588585319804925 59.300220647407436,5.56470931994382 59.277757932913175,5.548791986703082 59.26982991603285,5.530221764588889 59.27643659676645,5.519610209095064 59.26982991603285,5.46655243162594 59.277757932913175,5.4692053204993964 59.29229263052711,5.461246653879028 59.32004068960825,5.46655243162594 59.31607668116809,5.48777554261359 59.32664737034186,5.482469764866678 59.333254051075464,5.463899542752484 59.322683361901696,5.458593765005572 59.327968706488576,5.4771639871197655 59.36364478245005,5.4798168759932215 59.3913928415312,5.463899542752484 59.3913928415312,5.463899542752484 59.36100211015661,5.445329320638291 59.33721805951563,5.458593765005572 59.293613966673824,5.426759098524098 59.293613966673824,5.413494654156817 59.28964995823367,5.3922715431691675 59.31475534502137,5.3922715431691675 59.342503404102516,5.381659987675343 59.372894135477104,5.3922715431691675 59.380822152357425,5.405535987536449 59.37685814391726,5.384312876548799 59.40328486685169,5.386965765422255 59.42178357290579,5.368395543308062 59.40724887529185,5.373701321054974 59.387428833091036,5.365742654434606 59.37685814391726,5.365742654434606 59.364966118596776,5.373701321054974 59.33853939566235,5.349825321193869 59.327968706488576,5.333907987953132 59.330611378782024,5.299420432598201 59.364966118596776,5.294114654851289 59.3913928415312,5.283503099357464 59.3913928415312,5.249015544002534 59.432354262079556,5.2384039885087095 59.432354262079556,5.246362655129078 59.44424628740005,5.23044532188834 59.45613831272054,5.249015544002534 59.468030338041025,5.227792433014884 59.468030338041025,5.222486655267972 59.50106374170906,5.243709766255622 59.50106374170906,5.27289154386364 59.48652904409513,5.264932877243271 59.4786010272148,5.302073321471657 59.4786010272148,5.312684876965482 59.49445706097545,5.280850210484008 59.49313572482873,5.227792433014884 59.51691977546972,5.256974210622903 59.51691977546972,5.278197321610552 59.50899175858939,5.278197321610552 59.52352645620332,5.2410568773821655 59.52352645620332,5.2410568773821655 59.54598917069758,5.280850210484008 59.56184520445824,5.28615598823092 59.58827192739266,5.323296432459307 59.60016395271315,5.3153377658389385 59.61866265876725,5.325949321332763 59.62659067564758,5.373701321054974 59.63319735638118,5.371048432181518 59.64508938170167,5.408188876409905 59.653017398582,5.410841765283361 59.61866265876725,5.421453320777186 59.62659067564758,5.440023542891379 59.614698650327085,5.429411987397554 59.61205597803364,5.429411987397554 59.58166524665905,5.445329320638291 59.58166524665905,5.442676431764835 59.60677063344676,5.461246653879028 59.608091969593474,5.4771639871197655 59.62262666720741,5.463899542752484 59.63319735638118,5.41880043190373 59.65566007087544,5.445329320638291 59.66358808775577,5.447982209511747 59.6715161046361,5.429411987397554 59.679444121516426,5.450635098385203 59.690014810690194,5.461246653879028 59.704549508304126,5.4718582093728525 59.69133614683691,5.4798168759932215 59.709834852891014,5.498387098107415 59.71379886133118,5.527568875715433 59.732297567385274,5.535527542335801 59.73097623123855,5.519610209095064 59.71644153362462,5.540833320082713 59.709834852891014,5.535527542335801 59.6715161046361,5.52226309796852 59.659624079315606,5.532874653462345 59.64905339014184,5.511651542474696 59.6345186925279,5.527568875715433 59.62526933950085,5.519610209095064 59.61866265876725,5.519610209095064 59.585629255099214,5.538180431209257 59.569773221338565,5.514304431348152 59.55788119601807,5.506345764727783 59.5473105068443,5.493081320360503 59.55788119601807,5.503692875854327 59.54202516225742,5.506345764727783 59.52484779235004,5.498387098107415 59.51956244776316,5.4692053204993964 59.52352645620332,5.461246653879028 59.54334649840414,5.447982209511747 59.53938248996398,5.455940876132116 59.52352645620332,5.445329320638291 59.51295576702955,5.461246653879028 59.48124369950824,5.46655243162594 59.48917171638857,5.463899542752484 59.51163443088283,5.493081320360503 59.50899175858939,5.514304431348152 59.51691977546972,5.52226309796852 59.53541848152381,5.548791986703082 59.52484779235004,5.540833320082713 59.54202516225742,5.567362208817276 59.55788119601807,5.56470931994382 59.58166524665905,5.585932430931469 59.58827192739266,5.5540977644499945 59.60016395271315,5.5567506533234505 59.61073464188692,5.5540977644499945 59.62923334794102,5.559403542196907 59.63055468408774,5.5540977644499945 59.647732053995114,5.56470931994382 59.66358808775577,5.591238208678381 59.68605080225003,5.609808430792574 59.68340812995659,5.6336844306536795 59.667552096195934,5.665519097135154 59.66358808775577,5.678783541502435 59.667552096195934,5.737147096718471 59.653017398582,5.771634652073401 59.64905339014184,5.790204874187594 59.62130533106069,5.774287540946857 59.608091969593474,5.737147096718471 59.59884261656643,5.800816429681419 59.60280662500659,5.822039540669069 59.61073464188692,5.800816429681419 59.61866265876725,5.7928577630610505 59.64112537326151,5.859179984897455 59.64905339014184,5.893667540252386 59.64112537326151,5.920196428986947 59.64376804555495,5.896320429125842 59.64905339014184,5.930807984480772 59.6715161046361,5.917543540113491 59.67548011307626,5.867138651517823 59.659624079315606,5.859179984897455 59.659624079315606,5.819386651795613 59.64905339014184,5.7928577630610505 59.64905339014184,5.784899096440682 59.66358808775577,5.782246207567226 59.68340812995659,5.808775096301788 59.69133614683691,5.8140808740487 59.701906836010686,5.851221318277086 59.70851351674429,5.867138651517823 59.71644153362462,5.856527096023999 59.724369550504946,5.909584873493122 59.7402255842656,5.928155095607316 59.732297567385274,5.93876665110114 59.734940239678714,5.933460873354228 59.744189592705766,5.9467253177215085 59.75079627343937,5.930807984480772 59.757402954172974,5.936113762227684 59.769294979493466,5.95998976208879 59.754760281879534,5.957336873215334 59.744189592705766,5.981212873076439 59.732297567385274,6.007741761811001 59.7402255842656,6.044882206039388 59.744189592705766,6.087328428014686 59.73626157582544,6.1165102056227045 59.746832264999206,6.14038620548381 59.78118700481396,6.177526649712196 59.789115021694286,6.212014205067127 59.80364971930822,6.227931538307864 59.819505753068874,6.249154649295513 59.83007644224264,6.2783364269035316 59.83007644224264,6.315476871131918 59.83800445912297,6.3552702042337605 59.853860492883626,6.365881759727586 59.871037862791,6.336699982119567 59.853860492883626,6.288947982397356 59.841968467563134,6.2703777602831625 59.841968467563134,6.227931538307864 59.83404045068281,6.188138205206021 59.811577736188546,6.158956427598003 59.80364971930822,6.148344872104179 59.791757693987726,6.1138573167492485 59.77854433252051,6.092634205761598 59.78515101325412,6.08467553914123 59.7587242903197,6.063452428153581 59.76136696261314,6.052840872659756 59.754760281879534,6.015700428431369 59.75211760958609,5.975907095329527 59.76268829875986,5.957336873215334 59.789115021694286,5.978559984202983 59.804971055454935,5.989171539696808 59.82611243380248,5.978559984202983 59.84857514829674,5.99447731744372 59.85782450132379,5.965295539835703 59.853860492883626,5.970601317582615 59.83404045068281,5.957336873215334 59.811577736188546,5.936113762227684 59.79572170242789,5.909584873493122 59.791757693987726,5.883055984758561 59.769294979493466,5.827345318415981 59.789115021694286,5.798163540807963 59.819505753068874,5.75837020770612 59.83404045068281,5.710618207983909 59.82346976150904,5.7159239857308215 59.83007644224264,5.678783541502435 59.83800445912297,5.678783541502435 59.84989648444346,5.700006652490084 59.8459324760033,5.689395096996259 59.853860492883626,5.739799985591927 59.864431182057395,5.750411541085752 59.87632320737789,5.755717318832664 59.86575251820411,5.774287540946857 59.88292988811149,5.763675985453032 59.89085790499182,5.771634652073401 59.91067794719264,5.7928577630610505 59.92521264480657,5.819386651795613 59.931819325540175,5.851221318277086 59.929176653246735,5.8697915403912795 59.94371135086067,5.920196428986947 59.95296070388771,5.9520310954684215 59.945032687007384,5.991824428570264 59.95296070388771,5.997130206317176 59.974102082235255,6.010394650684457 59.97806609067542,5.989171539696808 59.98863677984919,5.981212873076439 60.00052880516968,5.997130206317176 60.02431285581066,6.018353317304825 60.038847553424596,6.015700428431369 60.05073957874509,6.0369235394190195 60.06527427635902,6.087328428014686 60.083772982413116,6.1138573167492485 60.09566500773361,6.135080427736898 60.09302233544016,6.185485316332565 60.103593024613936,6.212014205067127 60.103593024613936,6.235890204928232 60.11548504993442,6.2677248714097065 60.11812772222787,6.315476871131918 60.126055739108196,6.310171093385005 60.1326624198418,6.283642204650444 60.1326624198418,6.283642204650444 60.14983978974917,6.296906649017725 60.16437448736311,6.2783364269035316 60.16437448736311,6.26507198253625 60.15248246204262,6.251807538168969 60.133983755988524,6.198749760699846 60.114163713787704,6.169567983091828 60.11152104149426,6.148344872104179 60.1075570330541,6.135080427736898 60.11019970534754,6.156303538724547 60.11548504993442,6.164262205344915 60.126055739108196,6.124468872243073 60.14191177286885,6.121815983369617 60.15512513433606,6.092634205761598 60.17230250424343,6.092634205761598 60.18287319341721,6.082022650267774 60.190801210297536,6.1058986501288794 60.201371899471305,6.121815983369617 60.2198706055254,6.153650649851091 60.21722793323196,6.156303538724547 60.2132639247918,6.19609687182639 60.22515595011228,6.1934439829529335 60.23704797543277,6.206708427320215 60.246297328459825,6.201402649573302 60.25818935378032,6.233237316054776 60.25818935378032,6.233237316054776 60.27404538754097,6.249154649295513 60.27668805983441,6.238543093801688 60.288580085154905,6.225278649434408 60.29254409359507,6.273030649156619 60.307078791209,6.283642204650444 60.30443611891556,6.323435537752286 60.31500680808933,6.3446586487399355 60.33746952258359,6.37649331522141 60.34143353102375,6.3552702042337605 60.34936154790408,6.3552702042337605 60.3691815901049,6.395063537335603 60.36786025395818,6.453427092551639 60.37182426239834,6.493220425653481 60.38371628771883,6.5117906477676755 60.41014301065326,6.5224022032615 60.4127856829467,6.559542647489886 60.43656973358768,6.578112869604079 60.43656973358768,6.623211980452835 60.42599904441391,6.6683110913015895 60.408821674506534,6.6683110913015895 60.40221499377293,6.641782202567027 60.386358960012274,6.641782202567027 60.37314559854506,6.625864869326291 60.35728956478441,6.625864869326291 60.33746952258359,6.607294647212098 60.32954150570326,6.61260042495901 60.308400127355725,6.5887244250979045 60.27404538754097,6.578112869604079 60.27008137910081,6.562195536363342 60.23704797543277,6.572807091857167 60.223834613965565,6.543625314249149 60.17230250424343,6.548931091996062 60.15248246204262,6.540972425375693 60.14455444516229,6.527707981008412 60.07716630167951,6.540972425375693 60.069238284799184,6.551583980869518 60.07980897397295,6.543625314249149 60.09566500773361,6.55688975861643 60.11019970534754,6.559542647489886 60.1326624198418,6.572807091857167 60.14191177286885,6.572807091857167 60.170981168096716,6.599335980591729 60.20533590791147,6.599335980591729 60.223834613965565,6.620559091579379 60.23704797543277,6.615253313832466 60.25158267304671,6.623211980452835 60.25951068992703,6.615253313832466 60.27668805983441,6.633823535946659 60.29254409359507,6.657699535807765 60.32293482496966,6.652393758060852 60.33746952258359,6.684228424542327 60.386358960012274,6.708104424403432 60.37314559854506,6.724021757644169 60.37710960698522,6.705451535529976 60.398250985332766,6.734633313137994 60.406179002213094,6.755856424125644 60.43260572514752,6.774426646239837 60.433927061294234,6.779732423986749 60.443176414321286,6.806261312721311 60.451104431201614,6.814219979341679 60.46035378422866,6.840748868076242 60.4748884818426,6.888500867798452 60.46696046496227,6.941558645267576 60.470924473402434,6.9919635338632435 60.482816498722926,7.031756866965086 60.47753115413604,7.058285755699648 60.462996456522106,7.079508866687297 60.47885249028276,7.135219533029877 60.496029860190134,7.132566644156421 60.50131520477702,7.076855977813841 60.485459171016366,7.060938644573104 60.48678050716308,7.015839533724349 60.50131520477702,6.986657756116331 60.50395787707046,6.957475978508313 60.4999938686303,6.941558645267576 60.48942317945653,6.9123768676595585 60.496029860190134,6.949517311887945 60.51981391083112,6.944211534141032 60.52642059156472,7.034409755838542 60.583238045873735,7.015839533724349 60.5872020543139,6.965434645128681 60.558132659086034,6.928294200900295 60.53170593615161,6.922988423153383 60.558132659086034,6.944211534141032 60.566060675966355,6.944211534141032 60.57398869284668,6.9070710899126455 60.56473933981964,6.9123768676595585 60.55681132293931,6.9070710899126455 60.53434860844505,6.917682645406471 60.51981391083112,6.888500867798452 60.493387187896694,6.875236423431172 60.482816498722926,6.864624867937347 60.48942317945653,6.832790201455873 60.48942317945653,6.79299686835403 60.4748884818426,6.755856424125644 60.46960313725571,6.7478977575052745 60.45506843964178,6.705451535529976 60.440533742027846,6.70279864665652 60.42996305285407,6.6683110913015895 60.43260572514752,6.660352424681221 60.44449775046801,6.633823535946659 60.448461758908174,6.631170647073203 60.462996456522106,6.663005313554677 60.482816498722926,6.692187091162696 60.493387187896694,6.718715979897257 60.51981391083112,6.700145757783064 60.51981391083112,6.673616869048502 60.49735119633686,6.657699535807765 60.496029860190134,6.636476424820115 60.47885249028276,6.609947536085554 60.470924473402434,6.599335980591729 60.45903244808194,6.559542647489886 60.45506843964178,6.527707981008412 60.456389775788494,6.498526203400394 60.44449775046801,6.4322039815639895 60.428641716707354,6.41098087057634 60.43260572514752,6.395063537335603 60.41410701909342,6.357923093107217 60.4127856829467,6.342005759866479 60.39957232147948,6.296906649017725 60.39164430459916,6.273030649156619 60.3942869768926,6.235890204928232 60.42599904441391,6.243848871548601 60.440533742027846,6.214667093940583 60.470924473402434,6.201402649573302 60.465639128815546,6.222625760560952 60.440533742027846,6.227931538307864 60.418071027533585,6.2783364269035316 60.38371628771883,6.249154649295513 60.3691815901049,6.23058442718132 60.37975227927867,6.198749760699846 60.386358960012274,6.201402649573302 60.3691815901049,6.172220871965284 60.36389624551801,6.14038620548381 60.37182426239834,6.177526649712196 60.346718875610634,6.212014205067127 60.34539753946392,6.219972871687496 60.32954150570326,6.177526649712196 60.32029215267621,6.164262205344915 60.31236413579589,6.17487376083874 60.28461607671474,6.19609687182639 60.28065206827458,6.161609316471459 60.25554668148688,6.153650649851091 60.24233332001966,6.137733316610354 60.25158267304671,6.087328428014686 60.24761866460655,6.047535094912844 60.26215336222048,6.0316177616721065 60.27404538754097,6.013047539557913 60.27008137910081,6.015700428431369 60.25554668148688,6.005088872937545 60.25026133689999,6.005088872937545 60.229119958552445,5.965295539835703 60.2132639247918,5.957336873215334 60.18683720185737,5.9520310954684215 60.1762665126836,5.9546839843418775 60.16437448736311,5.93876665110114 60.15248246204262,5.920196428986947 60.14983978974917,5.922849317860403 60.16437448736311,5.901626206872754 60.16041047892295,5.901626206872754 60.14455444516229,5.896320429125842 60.133983755988524,5.909584873493122 60.114163713787704,5.920196428986947 60.07980897397295,5.914890651240035 60.05866759562541,5.920196428986947 60.061310267918856,5.909584873493122 60.03091953654427,5.896320429125842 60.01506350278361,5.867138651517823 60.001850141316396,5.867138651517823 59.993922124436075,5.824692429542525 59.98203009911558,5.811427985175244 60.00052880516968,5.829998207289437 60.016384838930335,5.800816429681419 60.00845682205001,5.776940429820313 59.979387426822136,5.761023096579576 59.97806609067542,5.755717318832664 60.009778158196724,5.739799985591927 60.00052880516968,5.726535541224646 60.001850141316396,5.721229763477734 60.026955528104104,5.7132710968573654 60.04677557030492,5.7159239857308215 60.071880957092624,5.721229763477734 60.07584496553279,5.753064429959208 60.05734625947869,5.750411541085752 60.066595612505736,5.782246207567226 60.066595612505736,5.7928577630610505 60.05073957874509,5.819386651795613 60.07716630167951,5.837956873909805 60.091700999293444,5.829998207289437 60.091700999293444,5.800816429681419 60.07716630167951,5.7928577630610505 60.091700999293444,5.782246207567226 60.07584496553279,5.755717318832664 60.07320229323935,5.734494207845015 60.09566500773361,5.74510576333884 60.106235696907376,5.72388265235119 60.10227168846721,5.737147096718471 60.12209173066803,5.755717318832664 60.1326624198418,5.72388265235119 60.15512513433606,5.721229763477734 60.17230250424343,5.763675985453032 60.18287319341721,5.75837020770612 60.18947987415081,5.739799985591927 60.18287319341721,5.70265954136354 60.178909184977044,5.697353763616628 60.190801210297536,5.684089319249347 60.16041047892295,5.646948875020961 60.148518453602456,5.609808430792574 60.14455444516229,5.572667986564188 60.15248246204262,5.591238208678381 60.178909184977044,5.604502653045662 60.18551586571065,5.591238208678381 60.20533590791147,5.623072875159855 60.20269323561802,5.665519097135154 60.229119958552445,5.726535541224646 60.23176263084589,5.750411541085752 60.23704797543277,5.737147096718471 60.24761866460655,5.721229763477734 60.243654656166385,5.662866208261698 60.243654656166385,5.623072875159855 60.23572663928606,5.665519097135154 60.266117370660645,5.66817198600861 60.27800939598114,5.660213319388242 60.281973404421294,5.628378652906767 60.25554668148688,5.596543986425293 60.23572663928606,5.596543986425293 60.25026133689999,5.585932430931469 60.25158267304671,5.604502653045662 60.2634746983672,5.6310315417802235 60.27008137910081,5.6336844306536795 60.27800939598114,5.662866208261698 60.3004721104754,5.649601763894417 60.30443611891556,5.654907541641329 60.33482685029015,5.684089319249347 60.34539753946392,5.697353763616628 60.3691815901049,5.74510576333884 60.3691815901049,5.768981763199945 60.39032296845244,5.755717318832664 60.398250985332766,5.739799985591927 60.39164430459916,5.721229763477734 60.403536329919646,5.7132710968573654 60.39560831303932,5.7185768746042775 60.37975227927867,5.686742208122803 60.37314559854506,5.676130652628979 60.36389624551801,5.665519097135154 60.34539753946392,5.652254652767873 60.34275486717047,5.660213319388242 60.37182426239834,5.644295986147505 60.37314559854506,5.641643097274049 60.34275486717047,5.623072875159855 60.3255774972631,5.628378652906767 60.32293482496966,5.623072875159855 60.293865429741786,5.61246131966603 60.28593741286146,5.559403542196907 60.25818935378032,5.575320875437644 60.243654656166385,5.5567506533234505 60.223834613965565,5.535527542335801 60.206657244058185,5.543486208956169 60.206657244058185,5.527568875715433 60.1947652187377,5.501039986980871 60.190801210297536,5.46655243162594 60.18287319341721,5.450635098385203 60.16701715965655,5.463899542752484 60.16437448736311,5.445329320638291 60.133983755988524,5.440023542891379 60.13001974754836,5.426759098524098 60.14455444516229,5.426759098524098 60.16041047892295,5.3922715431691675 60.14983978974917,5.381659987675343 60.13794776442869,5.352478210067325 60.1326624198418,5.360436876687693 60.14455444516229,5.405535987536449 60.16041047892295,5.3949244320426235 60.178909184977044,5.371048432181518 60.17494517653688,5.331255099079676 60.19344388259098,5.336560876826588 60.20533590791147,5.352478210067325 60.20929991635163,5.360436876687693 60.201371899471305,5.384312876548799 60.21722793323196,5.355131098940781 60.229119958552445,5.339213765700044 60.22779862240573,5.3153377658389385 60.21722793323196,5.28615598823092 60.221191941672124,5.280850210484008 60.20533590791147,5.264932877243271 60.201371899471305,5.243709766255622 60.20929991635163,5.246362655129078 60.221191941672124,5.262279988369815 60.22779862240573,5.280850210484008 60.22779862240573,5.28615598823092 60.23704797543277,5.333907987953132 60.25818935378032,5.325949321332763 60.27008137910081,5.299420432598201 60.25818935378032,5.280850210484008 60.27008137910081,5.262279988369815 60.266117370660645,5.275544432737096 60.25818935378032,5.262279988369815 60.24233332001966,5.235751099635253 60.246297328459825,5.2384039885087095 60.26215336222048,5.206569322027235 60.27404538754097,5.203916433153779 60.288580085154905,5.209222210900691 60.31500680808933,5.246362655129078 60.32029215267621,5.296767543724745 60.31500680808933,5.299420432598201 60.30443611891556,5.325949321332763 60.31236413579589,5.325949321332763 60.32689883340982,5.339213765700044 60.32954150570326,5.333907987953132 60.34275486717047,5.3179906547123945 60.32954150570326,5.28615598823092 60.32293482496966,5.278197321610552 60.32689883340982,5.25166843287599 60.32293482496966,5.2384039885087095 60.34143353102375,5.235751099635253 60.35993223707785,5.214527988647603 60.33482685029015,5.203916433153779 60.32689883340982,5.180040433292673 60.34143353102375,5.203916433153779 60.353325556344245,5.193304877659954 60.35993223707785,5.174734655545761 60.353325556344245,5.172081766672305 60.37182426239834,5.219833766394516 60.39164430459916,5.2410568773821655 60.398250985332766,5.259627099496359 60.39032296845244,5.264932877243271 60.3942869768926,5.310031988092026 60.38371628771883,5.302073321471657 60.398250985332766,5.3179906547123945 60.40221499377293,5.3179906547123945 60.41014301065326,5.280850210484008 60.43260572514752,5.278197321610552 60.44714042276145,5.3153377658389385 60.43656973358768,5.3179906547123945 60.443176414321286,5.267585766116727 60.45903244808194,5.278197321610552 60.46696046496227,5.25166843287599 60.4748884818426,5.259627099496359 60.50395787707046,5.299420432598201 60.52642059156472,5.336560876826588 60.51981391083112,5.371048432181518 60.507921885510626,5.39757732091608 60.48942317945653,5.455940876132116 60.443176414321286,5.461246653879028 60.45242576734833,5.511651542474696 60.42203503597375,5.5567506533234505 60.42203503597375,5.5779737643111 60.428641716707354,5.623072875159855 60.42996305285407,5.644295986147505 60.45506843964178,5.665519097135154 60.46035378422866,5.692047985869715 60.451104431201614,5.734494207845015 60.45506843964178,5.739799985591927 60.470924473402434,5.734494207845015 60.47885249028276,5.7185768746042775 60.53963395303194,5.737147096718471 60.55284731449915,5.721229763477734 60.558132659086034,5.737147096718471 60.59645140734095,5.737147096718471 60.65723287009012,5.768981763199945 60.65987554238357,5.7955106519345065 60.65326886164996,5.800816429681419 60.64005550018275,5.829998207289437 60.61362877724832,5.880403095885105 60.62155679412865,5.8724444292647355 60.630806147155695,5.896320429125842 60.625520802568815,5.9546839843418775 60.64005550018275,5.9467253177215085 60.645340844769635,5.901626206872754 60.63609149174258,5.867138651517823 60.63741282788931,5.837956873909805 60.62155679412865,5.800816429681419 60.65987554238357,5.768981763199945 60.667803559263895,5.739799985591927 60.66648222311717,5.739799985591927 60.68233825687783,5.774287540946857 60.70480097137209,5.7955106519345065 60.72858502201307,5.7928577630610505 60.735191702746675,5.771634652073401 60.72065700513274,5.753064429959208 60.70083696293192,5.686742208122803 60.70480097137209,5.676130652628979 60.70083696293192,5.665519097135154 60.72065700513274,5.70265954136354 60.74444105577372,5.70265954136354 60.75369040880077,5.721229763477734 60.755011744947495,5.763675985453032 60.780117131735196,5.774287540946857 60.799937173936016,5.800816429681419 60.81182919925651,5.790204874187594 60.81579320769667,5.768981763199945 60.807865190816344,5.737147096718471 60.76954644256143,5.70265954136354 60.765582434121264,5.662866208261698 60.72726368586635,5.654907541641329 60.73122769430651,5.607155541919118 60.70480097137209,5.575320875437644 60.69687295449176,5.551444875576538 60.70083696293192,5.567362208817276 60.670446231557335,5.575320875437644 60.65987554238357,5.575320875437644 60.64137683632947,5.540833320082713 60.625520802568815,5.519610209095064 60.62948481100898,5.498387098107415 60.62948481100898,5.4771639871197655 60.62155679412865,5.463899542752484 60.60702209651472,5.426759098524098 60.59513007119423,5.3922715431691675 60.603058088074555,5.408188876409905 60.58455938202046,5.3922715431691675 60.58455938202046,5.360436876687693 60.59909407963439,5.368395543308062 60.580595373580294,5.386965765422255 60.57002468440652,5.37635420992843 60.56473933981964,5.336560876826588 60.5620966675262,5.312684876965482 60.55416865064587,5.296767543724745 60.54227662532538,5.278197321610552 60.53963395303194,5.275544432737096 60.55284731449915,5.235751099635253 60.5620966675262,5.227792433014884 60.5872020543139,5.201263544280323 60.61759278568849,5.206569322027235 60.62155679412865,5.172081766672305 60.63344881944914,5.116371100329725 60.66119687853028,5.116371100329725 60.67573157614422,5.12698265582355 60.67837424843766,5.174734655545761 60.66648222311717,5.19595776653341 60.6559115339434,5.209222210900691 60.64005550018275,5.246362655129078 60.61891412183521,5.264932877243271 60.61891412183521,5.227792433014884 60.64401950862291,5.227792433014884 60.6559115339434,5.243709766255622 60.65987554238357,5.1057595448359 60.71669299669258,5.129635544697006 60.71405032439913,5.129635544697006 60.72462101357291,5.190651988786498 60.69819429063848,5.166775988925393 60.72462101357291,5.206569322027235 60.71669299669258,5.209222210900691 60.72462101357291,5.148205766811199 60.732549030453235,5.1057595448359 60.72858502201307,5.063313322860601 60.75104773650733,5.044743100746408 60.777474459441756,4.989032434403828 60.799937173936016,4.986379545530372 60.79200915705569,4.965156434542723 60.79597316549585,4.949239101301986 60.807865190816344,4.970462212289635 60.807865190816344,4.989032434403828 60.81843587999011,5.023519989758759 60.81447187154995,5.012908434264934 60.822399888430276,5.042090211872952 60.81579320769667,5.039437322999496 60.810507863109784,5.060660433987145 60.80125851008273,5.0818835449747946 60.780117131735196,5.1057595448359 60.76293976182782,5.087189322721707 60.78936648476225,5.100453767088988 60.78936648476225,5.129635544697006 60.76690377026799,5.121676878076637 60.78143846788192,5.1561644334315675 60.77615312329503,5.172081766672305 60.76293976182782,5.246362655129078 60.73915571118684,5.2410568773821655 60.74708372806717,5.262279988369815 60.74708372806717,5.278197321610552 60.73915571118684,5.278197321610552 60.73122769430651,5.294114654851289 60.735191702746675,5.3179906547123945 60.73122769430651,5.349825321193869 60.70612230751881,5.349825321193869 60.69819429063848,5.331255099079676 60.69687295449176,5.355131098940781 60.667803559263895,5.357783987814237 60.65326886164996,5.3922715431691675 60.63741282788931,5.39757732091608 60.64005550018275,5.373701321054974 60.6559115339434,5.357783987814237 60.67969558458438,5.381659987675343 60.67176756770406,5.445329320638291 60.63344881944914,5.463899542752484 60.64137683632947,5.386965765422255 60.67969558458438,5.389618654295711 60.69819429063848,5.410841765283361 60.69423028219832,5.440023542891379 60.67176756770406,5.463899542752484 60.65723287009012,5.4692053204993964 60.67176756770406,5.445329320638291 60.68233825687783,5.445329320638291 60.690266273758155,5.424106209650642 60.70215829907865,5.447982209511747 60.70612230751881,5.450635098385203 60.71669299669258,5.41880043190373 60.70876497981225,5.37635420992843 60.732549030453235,5.386965765422255 60.74972640036061,5.368395543308062 60.73915571118684,5.347172432320413 60.74444105577372,5.352478210067325 60.765582434121264,5.339213765700044 60.765582434121264,5.323296432459307 60.74972640036061,5.296767543724745 60.75104773650733,5.267585766116727 60.76293976182782,5.264932877243271 60.76954644256143,5.299420432598201 60.799937173936016,5.3179906547123945 60.799937173936016,5.331255099079676 60.81579320769667,5.357783987814237 60.81843587999011,5.37635420992843 60.81447187154995,5.355131098940781 60.83429191375077,5.352478210067325 60.84618393907126,5.368395543308062 60.864682645125356,5.41880043190373 60.864682645125356,5.4692053204993964 60.875253334299124,5.493081320360503 60.872610662005684,5.511651542474696 60.85411195595158,5.538180431209257 60.86864665356552,5.585932430931469 60.86864665356552,5.591238208678381 60.872610662005684,5.570015097690732 60.87657467044585,5.519610209095064 60.872610662005684,5.485122653740134 60.88450268732617,5.530221764588889 60.91357208255404,5.519610209095064 60.91489341870076,5.463899542752484 60.887145359619616,5.405535987536449 60.87657467044585,5.368395543308062 60.87657467044585,5.3418666545735 60.867325317418796,5.336560876826588 60.82768523301716,5.310031988092026 60.830327905310604,5.312684876965482 60.81579320769667,5.280850210484008 60.81182919925651,5.283503099357464 60.823721224577,5.262279988369815 60.832970577604044,5.214527988647603 60.823721224577,5.209222210900691 60.832970577604044,5.214527988647603 60.85675462824503,5.23044532188834 60.864682645125356,5.203916433153779 60.864682645125356,5.201263544280323 60.830327905310604,5.172081766672305 60.81182919925651,5.1535115445581114 60.81579320769667,5.1535115445581114 60.83429191375077,5.169428877798849 60.842219930631096,5.137594211317374 60.83825592219093,5.116371100329725 60.82768523301716,5.100453767088988 60.830327905310604,5.063313322860601 60.842219930631096,5.058007545113689 60.872610662005684,5.031478656379127 60.895073376499944,5.03678443412604 60.929428116314696,5.020867100885303 60.929428116314696,5.004949767644566 60.951890830808956,5.007602656518022 60.96642552842289,5.039437322999496 60.962461519982725,5.044743100746408 60.95849751154256,5.119023989203181 60.95849751154256,5.116371100329725 60.91489341870076,5.113718211456269 60.89903738494011,5.116371100329725 60.87657467044585,5.134941322443918 60.87921734273929,5.12698265582355 60.89375204035322,5.129635544697006 60.92810678016797,5.134941322443918 60.939998805488464,5.132288433570462 60.962461519982725,5.1535115445581114 60.96642552842289,5.209222210900691 60.962461519982725,5.267585766116727 60.97038953686305,5.3179906547123945 60.99020957906387,5.299420432598201 60.99020957906387,5.246362655129078 60.97038953686305,5.190651988786498 60.96642552842289,5.172081766672305 60.98888824291715,5.185346211039586 60.99285225135731,5.185346211039586 61.007386948971245,5.1641231000519365 60.99020957906387,5.1641231000519365 60.97435354530322,5.116371100329725 60.96378285612944,5.087189322721707 60.97435354530322,5.087189322721707 60.982281562183545,5.042090211872952 60.97831755374338,5.026172878632215 61.01135095741141,5.042090211872952 61.0166363019983,5.026172878632215 61.02456431887862,5.047395989619864 61.02852832731878,5.023519989758759 61.03117099961223,5.044743100746408 61.049669705666325,5.042090211872952 61.06024039484009,5.068619100607513 61.06420440328026,5.0818835449747946 61.069489747867145,5.14024710019083 61.072132420160585,5.1561644334315675 61.08138177318763,5.166775988925393 61.069489747867145,5.185346211039586 61.069489747867145,5.203916433153779 61.077417764747466,5.23044532188834 61.06552573942698,5.294114654851289 61.06552573942698,5.296767543724745 61.047027033372885,5.325949321332763 61.03909901649256,5.3179906547123945 61.03117099961223,5.360436876687693 61.03381367190567,5.408188876409905 61.0232429827319,5.421453320777186 61.027206991172065,5.434717765144466 61.0232429827319,5.463899542752484 61.03117099961223,5.458593765005572 61.01531496585157,5.46655243162594 61.00870828511797,5.4718582093728525 60.98888824291715,5.482469764866678 60.98624557062371,5.482469764866678 61.00870828511797,5.493081320360503 61.01927897429174,5.4798168759932215 61.047027033372885,5.503692875854327 61.05363371410649,5.519610209095064 61.06552573942698,5.559403542196907 61.06420440328026,5.609808430792574 61.08006043704091,5.660213319388242 61.05759772254665,5.681436430375891 61.06024039484009,5.617767097412942 61.085345781627794,5.6389902084005925 61.09988047924173,5.66817198600861 61.10648715997534,5.665519097135154 61.09591647080157,5.731841318971559 61.09855914309501,5.771634652073401 61.107808496122054,5.774287540946857 61.11837918529583,5.800816429681419 61.12630720217616,5.822039540669069 61.11837918529583,5.819386651795613 61.08402444548108,5.798163540807963 61.072132420160585,5.7928577630610505 61.05099104181304,5.808775096301788 61.049669705666325,5.811427985175244 61.069489747867145,5.832651096162893 61.077417764747466,5.845915540530174 61.09591647080157,5.8724444292647355 61.091952462361405,5.880403095885105 61.09988047924173,5.851221318277086 61.1104511684155,5.885708873632017 61.11837918529583,5.89101465137893 61.1289498744696,5.989171539696808 61.1289498744696,6.042229317165932 61.10648715997534,6.060799539280125 61.114415176855665,6.08467553914123 61.10648715997534,6.132427538863442 61.11837918529583,6.188138205206021 61.114415176855665,6.214667093940583 61.09988047924173,6.273030649156619 61.09988047924173,6.323435537752286 61.08006043704091,6.299559537891181 61.04570569722616,6.26507198253625 61.03909901649256,6.2862950935239 61.03381367190567,6.310171093385005 61.041741688786,6.315476871131918 61.049669705666325,6.342005759866479 61.072132420160585,6.41098087057634 61.069489747867145,6.41098087057634 61.05363371410649,6.381799092968322 61.027206991172065,6.381799092968322 61.0166363019983,6.3473115376133915 61.01135095741141,6.413633759449796 61.007386948971245,6.397716426209059 61.0232429827319,6.418939537196708 61.03909901649256,6.4322039815639895 61.069489747867145,6.456079981425095 61.08006043704091,6.5064848700207625 61.08402444548108,6.540972425375693 61.1038444876819,6.575459980730623 61.09988047924173,6.5887244250979045 61.09063112621468,6.607294647212098 61.12630720217616,6.628517758199747 61.15273392511058,6.631170647073203 61.17387530345812,6.641782202567027 61.17519663960484,6.6656582024281334 61.16066194199091,6.700145757783064 61.14876991667042,6.766467979619469 61.14876991667042,6.777079535113293 61.142163235936806,6.816872868215135 61.147448580523694,6.851360423570066 61.14480590823025,6.877889312304628 61.11837918529583,6.875236423431172 61.091952462361405,6.944211534141032 61.07609642860075,6.946864423014489 61.08798845392124,6.976046200622506 61.08402444548108,7.005227978230524 61.06552573942698,7.013186644850893 61.03117099961223,7.02910397809163 61.0166363019983,7.034409755838542 60.99681625979748,7.013186644850893 60.97831755374338,6.930947089773751 60.959818847689284,6.928294200900295 60.94792682236879,6.891153756671908 60.94132014163518,6.869930645684259 60.93207078860814,6.859319090190434 60.90696540182043,6.840748868076242 60.87921734273929,6.875236423431172 60.90168005723355,6.888500867798452 60.929428116314696,6.928294200900295 60.939998805488464,6.978699089495962 60.962461519982725,6.9946164227367 60.959818847689284,7.031756866965086 60.97171087300977,7.047674200205823 60.98624557062371,7.092773311054579 60.9545335031024,7.1458310885237015 60.939998805488464,7.156442644017527 60.91357208255404,7.124607977536052 60.875253334299124,7.121955088662596 60.86071863668519,7.140525310776789 60.867325317418796,7.169707088384808 60.90168005723355,7.180318643878632 60.90300139338027,7.196235977119369 60.92150009943437,7.193583088245913 60.937356133195024,7.180318643878632 60.95056949466223,7.161748421764439 60.95585483924912,7.124607977536052 60.95585483924912,7.08481464443421 60.97435354530322,7.058285755699648 61.020600310438454,7.039715533585454 61.03381367190567,7.034409755838542 61.047027033372885,7.047674200205823 61.06024039484009,7.034409755838542 61.08402444548108,7.026451089218174 61.08798845392124,7.039715533585454 61.1038444876819,7.0662444223200165 61.1104511684155,7.079508866687297 61.10648715997534,7.137872421903333 61.1104511684155,7.159095532890983 61.11837918529583,7.217459088107018 61.11837918529583,7.236029310221212 61.13291388290976,7.241335087968125 61.147448580523694,7.259905310082317 61.14480590823025,7.326227531918722 61.12102185758927,7.358062198400196 61.12630720217616,7.3819381982613015 61.12234319373599,7.392549753755127 61.1104511684155,7.421731531363145 61.10252315153517,7.450913308971162 61.1038444876819,7.472136419958812 61.09988047924173,7.453566197844618 61.11177250456222,7.424384420236601 61.1104511684155,7.416425753616232 61.13291388290976,7.371326642767476 61.14480590823025,7.421731531363145 61.15537659740402,7.456219086718074 61.17519663960484,7.472136419958812 61.17783931189828,7.517235530807566 61.19105267336549,7.578251974897059 61.19369534565894,7.604780863631621 61.19105267336549,7.64722708560692 61.20558737097943,7.657838641100744 61.224086077033526,7.673755974341481 61.21747939629992,7.6976319742025865 61.22012206859336,7.710896418569868 61.22805008547369,7.69497908532913 61.23597810235402,7.68171464096185 61.232014093913854,7.649879974480376 61.24258478308762,7.633962641239639 61.23069275776713,7.6233510857458135 61.21351538785976,7.5437644195421285 61.20823004327287,7.50131819756683 61.209551379419594,7.48009508657918 61.201623362539266,7.432343086856969 61.1976593540991,7.392549753755127 61.20558737097943,7.379285309387845 61.26504749758188,7.360715087273652 61.27033284216877,7.35540930952674 61.28090353134254,7.3129630875514415 61.29543822895647,7.3129630875514415 61.299402237396635,7.360715087273652 61.31129426271713,7.397855531502039 61.3350783133581,7.392549753755127 61.35621969170565,7.437648864603881 61.39453843996056,7.477442197705724 61.40510912913433,7.493359530946462 61.43549986050892,7.511929753060654 61.44871322197613,7.538458641795216 61.451355894269575,7.594169308137796 61.477782617204,7.599475085884708 61.48835330637777,7.583557752643971 61.49760265940482,7.549070197289041 61.473818608763835,7.503971086440286 61.45267723041629,7.442954642350793 61.44078520509581,7.437648864603881 61.41039447372122,7.405814198122407 61.406430465281055,7.36867375389402 61.391895767667116,7.360715087273652 61.38000374234663,7.33418619853909 61.3905744315204,7.3076573098045285 61.39453843996056,7.283781309943423 61.40510912913433,7.294392865437247 61.383967750786795,7.342144865159459 61.36811171702614,7.350103531779828 61.34564900253188,7.32092175417181 61.32715029647778,7.26521108782923 61.3033662458368,7.246640865715037 61.299402237396635,7.291739976563791 61.27297551446221,7.326227531918722 61.266368833728606,7.339491976286003 61.25051279996795,7.347450642906372 61.209551379419594,7.35540930952674 61.19369534565894,7.395202642628583 61.181803320338446,7.363367976147108 61.167268622724514,7.326227531918722 61.156697933550745,7.278475532196511 61.16330461428435,7.257252421208861 61.16858995887123,7.26521108782923 61.17783931189828,7.236029310221212 61.181803320338446,7.243987976841581 61.17123263116468,7.188277310499 61.167268622724514,7.172359977258264 61.156697933550745,7.17501286613172 61.142163235936806,7.1458310885237015 61.14480590823025,7.076855977813841 61.13291388290976,7.06359153344656 61.136877891349926,6.999922200483612 61.124985866029434,6.9946164227367 61.10648715997534,6.968087534002137 61.11177250456222,6.944211534141032 61.11177250456222,6.944211534141032 61.12630720217616,6.925641312026839 61.14084189979009,6.960128867381769 61.15273392511058,6.9919635338632435 61.14876991667042,7.047674200205823 61.18708866492533,7.074203088940385 61.1976593540991,7.113996422042227 61.19898069024582,7.169707088384808 61.1976593540991,7.172359977258264 61.204266034832706,7.121955088662596 61.209551379419594,7.11930219978914 61.21351538785976,7.137872421903333 61.246548791527786,7.161748421764439 61.25051279996795,7.17501286613172 61.25844081684828,7.167054199511352 61.269011506022046,7.156442644017527 61.25844081684828,7.140525310776789 61.25844081684828,7.111343533168771 61.2478701276745,7.111343533168771 61.23597810235402,7.095426199928035 61.21351538785976,7.058285755699648 61.20558737097943,7.055632866826192 61.1976593540991,7.021145311471262 61.189731337218774,7.015839533724349 61.181803320338446,6.997269311610156 61.17123263116468,6.9893106449897875 61.159340605844186,6.9097239787861024 61.16066194199091,6.888500867798452 61.17387530345812,6.869930645684259 61.17123263116468,6.840748868076242 61.18576732877861,6.731980424264538 61.179160648045006,6.710757313276888 61.18312465648517,6.697492868909608 61.1976593540991,6.633823535946659 61.209551379419594,6.596683091718273 61.20558737097943,6.580765758477535 61.22805008547369,6.5887244250979045 61.23994211079418,6.625864869326291 61.25051279996795,6.649740869187396 61.266368833728606,6.676269757921958 61.276939522902374,6.676269757921958 61.299402237396635,6.718715979897257 61.3350783133581,6.734633313137994 61.33904232179827,6.742591979758362 61.35225568326548,6.7585093129991 61.40510912913433,6.755856424125644 61.42096516289499,6.734633313137994 61.406430465281055,6.73728620201145 61.39453843996056,6.721368868770713 61.34961301097204,6.692187091162696 61.33772098565155,6.663005313554677 61.31129426271713,6.655046646934309 61.2848675397827,6.572807091857167 61.25183413611467,6.562195536363342 61.266368833728606,6.562195536363342 61.296759565103194,6.551583980869518 61.299402237396635,6.540972425375693 61.27297551446221,6.527707981008412 61.27033284216877,6.498526203400394 61.274296850608934,6.538319536502237 61.26240482528844,6.554236869742974 61.246548791527786,6.543625314249149 61.23069275776713,6.562195536363342 61.212194051713034,6.490567536780025 61.224086077033526,6.493220425653481 61.21351538785976,6.535666647628781 61.20823004327287,6.525055092134956 61.19369534565894,6.543625314249149 61.159340605844186,6.538319536502237 61.15273392511058,6.540972425375693 61.136877891349926,6.477303092412745 61.13027121061632,6.474650203539289 61.114415176855665,6.4295510926905335 61.11177250456222,6.413633759449796 61.11837918529583,6.37649331522141 61.1104511684155,6.299559537891181 61.13423521905648,6.2703777602831625 61.13291388290976,6.222625760560952 61.16066194199091,6.206708427320215 61.16330461428435,6.227931538307864 61.18576732877861,6.214667093940583 61.189731337218774,6.19609687182639 61.17783931189828,6.182832427459109 61.16066194199091,6.14038620548381 61.15273392511058,6.119163094496161 61.156697933550745,6.055493761533212 61.14480590823025,6.007741761811001 61.164625950431066,6.0289648727986505 61.17519663960484,6.047535094912844 61.17519663960484,6.068758205900493 61.18312465648517,6.082022650267774 61.1976593540991,6.079369761394318 61.21351538785976,6.060799539280125 61.2161580601532,6.0501879837863 61.19369534565894,6.002435984064089 61.18312465648517,5.978559984202983 61.16858995887123,5.930807984480772 61.16066194199091,5.901626206872754 61.16330461428435,5.8724444292647355 61.159340605844186,5.851221318277086 61.167268622724514,5.824692429542525 61.164625950431066,5.819386651795613 61.189731337218774,5.829998207289437 61.20558737097943,5.819386651795613 61.20823004327287,5.7928577630610505 61.19105267336549,5.800816429681419 61.159340605844186,5.771634652073401 61.16066194199091,5.755717318832664 61.167268622724514,5.72388265235119 61.167268622724514,5.7185768746042775 61.16066194199091,5.72388265235119 61.14480590823025,5.70265954136354 61.136877891349926,5.673477763755523 61.147448580523694,5.649601763894417 61.14876991667042,5.628378652906767 61.14084189979009,5.615114208539486 61.15273392511058,5.609808430792574 61.14084189979009,5.588585319804925 61.12630720217616,5.52226309796852 61.10252315153517,5.503692875854327 61.1038444876819,5.41880043190373 61.072132420160585,5.3922715431691675 61.069489747867145,5.373701321054974 61.09063112621468,5.347172432320413 61.09988047924173,5.349825321193869 61.12630720217616,5.3418666545735 61.13819922749664,5.325949321332763 61.12234319373599,5.283503099357464 61.1104511684155,5.27289154386364 61.12234319373599,5.267585766116727 61.11177250456222,5.249015544002534 61.1038444876819,5.227792433014884 61.10648715997534,5.227792433014884 61.12630720217616,5.19595776653341 61.13291388290976,5.193304877659954 61.14480590823025,5.243709766255622 61.142163235936806,5.262279988369815 61.13027121061632,5.288808877104376 61.136877891349926,5.211875099774147 61.16330461428435,5.185346211039586 61.156697933550745,5.177387544419217 61.147448580523694,5.166775988925393 61.147448580523694,5.111065322582813 61.164625950431066,5.0765777672278825 61.167268622724514,5.0765777672278825 61.17783931189828,5.097800878215532 61.201623362539266,5.148205766811199 61.20558737097943,5.222486655267972 61.18576732877861,5.256974210622903 61.167268622724514,5.299420432598201 61.17123263116468,5.296767543724745 61.17519663960484,5.262279988369815 61.181803320338446,5.25166843287599 61.19369534565894,5.280850210484008 61.189731337218774,5.299420432598201 61.181803320338446,5.3153377658389385 61.18576732877861,5.262279988369815 61.20558737097943,5.180040433292673 61.224086077033526,5.063313322860601 61.21747939629992,5.010255545391478 61.22012206859336,5.007602656518022 61.224086077033526,5.028825767505671 61.23597810235402,5.087189322721707 61.23597810235402,5.100453767088988 61.232014093913854,5.111065322582813 61.24390611923434,5.100453767088988 61.25844081684828,5.09249510046862 61.24258478308762,5.042090211872952 61.23994211079418,5.007602656518022 61.24258478308762,5.026172878632215 61.257119480701554,5.026172878632215 61.27297551446221,5.007602656518022 61.266368833728606,4.9943382121507405 61.25051279996795,4.98107376778346 61.26108348914172,4.98107376778346 61.2848675397827,5.05004887849332 61.2848675397827,5.055354656240233 61.29147422051631,5.028825767505671 61.29543822895647,5.060660433987145 61.299402237396635,5.116371100329725 61.296759565103194,5.129635544697006 61.288831548222866,5.150858655684655 61.299402237396635,5.132288433570462 61.299402237396635,5.129635544697006 61.30865159042368,5.150858655684655 61.31790094345073,5.1561644334315675 61.30733025427696,5.206569322027235 61.30072357354335,5.225139544141428 61.304687581983515,5.201263544280323 61.31525827115729,5.219833766394516 61.32715029647778,5.19595776653341 61.331114304917946,5.201263544280323 61.34564900253188,5.227792433014884 61.344327666385155,5.235751099635253 61.34961301097204,5.278197321610552 61.34829167482532,5.333907987953132 61.319222279597454,5.355131098940781 61.31790094345073,5.333907987953132 61.33375697721139,5.294114654851289 61.35225568326548,5.355131098940781 61.34961301097204,5.368395543308062 61.36018370014581,5.408188876409905 61.36546904473269,5.4028830986629925 61.3720757254663,5.426759098524098 61.37603973390647,5.442676431764835 61.3720757254663,5.4798168759932215 61.3720757254663,5.532874653462345 61.37075438931958,5.559403542196907 61.36018370014581,5.644295986147505 61.36811171702614,5.660213319388242 61.36018370014581,5.676130652628979 61.36018370014581,5.652254652767873 61.37603973390647,5.570015097690732 61.37075438931958,5.530221764588889 61.38000374234663,5.4771639871197655 61.38000374234663,5.463899542752484 61.37868240619991,5.440023542891379 61.383967750786795,5.39757732091608 61.38264641464007,5.389618654295711 61.3720757254663,5.312684876965482 61.3720757254663,5.28615598823092 61.364147708585975,5.185346211039586 61.35754102785236,5.172081766672305 61.34961301097204,5.169428877798849 61.331114304917946,5.1057595448359 61.32715029647778,5.0765777672278825 61.321864951890895,5.068619100607513 61.33772098565155,5.111065322582813 61.33772098565155,5.111065322582813 61.36811171702614,5.100453767088988 61.36811171702614,5.097800878215532 61.344327666385155,5.047395989619864 61.34564900253188,5.031478656379127 61.36018370014581,5.026172878632215 61.37868240619991,5.031478656379127 61.391895767667116,5.055354656240233 61.40246645684089,5.09249510046862 61.39850244840073,5.100453767088988 61.37603973390647,5.1057595448359 61.38000374234663,5.103106655962444 61.41039447372122,5.166775988925393 61.42757184362859,5.1641231000519365 61.431535852068755,5.121676878076637 61.42492917133515,5.087189322721707 61.42492917133515,5.047395989619864 61.41303714601466,4.9943382121507405 61.40510912913433,4.973115101163091 61.41700115445482,5.004949767644566 61.428893179775315,5.047395989619864 61.43946386894908,5.073924878354426 61.44871322197613,5.121676878076637 61.45267723041629,5.235751099635253 61.45531990270974,5.246362655129078 61.46985460032367,5.235751099635253 61.48174662564416,5.262279988369815 61.48174662564416,5.278197321610552 61.47117593647039,5.349825321193869 61.4592839111499,5.381659987675343 61.46324791959007,5.323296432459307 61.477782617204,5.368395543308062 61.477782617204,5.421453320777186 61.473818608763835,5.429411987397554 61.45796257500318,5.450635098385203 61.4592839111499,5.46655243162594 61.44474921353597,5.538180431209257 61.43946386894908,5.585932430931469 61.44078520509581,5.5567506533234505 61.44474921353597,5.596543986425293 61.45796257500318,5.6336844306536795 61.45531990270974,5.662866208261698 61.46721192803023,5.662866208261698 61.477782617204,5.684089319249347 61.477782617204,5.689395096996259 61.48967464252449,5.7132710968573654 61.493638650964655,5.755717318832664 61.49231731481793,5.763675985453032 61.48571063408433,5.7928577630610505 61.48174662564416,5.7955106519345065 61.46721192803023,5.832651096162893 61.45531990270974,5.856527096023999 61.4592839111499,5.811427985175244 61.473818608763835,5.811427985175244 61.48835330637777,5.761023096579576 61.50156666784498,5.721229763477734 61.50156666784498,5.7159239857308215 61.50553067628514,5.6310315417802235 61.484389297937604,5.625725764033311 61.47117593647039,5.591238208678381 61.46589059188351,5.482469764866678 61.45267723041629,5.445329320638291 61.46985460032367,5.461246653879028 61.473818608763835,5.4771639871197655 61.46589059188351,5.4692053204993964 61.48174662564416,5.495734209233959 61.48571063408433,5.501039986980871 61.493638650964655,5.4692053204993964 61.493638650964655,5.440023542891379 61.48571063408433,5.41880043190373 61.48967464252449,5.355131098940781 61.48571063408433,5.296767543724745 61.49760265940482,5.246362655129078 61.49760265940482,5.219833766394516 61.50553067628514,5.222486655267972 61.51213735701875,5.190651988786498 61.51213735701875,5.169428877798849 61.516101365458915,5.187999099913042 61.52270804619252,5.1588173223050235 61.53460007151301,5.180040433292673 61.531957399219564,5.172081766672305 61.55706278600727,5.214527988647603 61.55442011371383,5.2384039885087095 61.54252808839334,5.296767543724745 61.538564079953176,5.280850210484008 61.55045610527367,5.320643543585851 61.546492096833504,5.3418666545735 61.55706278600727,5.3922715431691675 61.546492096833504,5.39757732091608 61.55045610527367,5.352478210067325 61.56234813059415,5.331255099079676 61.558384122153996,5.262279988369815 61.57291881976793,5.27289154386364 61.57688282820809,5.227792433014884 61.583489508941696,5.203916433153779 61.580846836648256,5.174734655545761 61.59273886196874,5.209222210900691 61.59934554270235,5.2410568773821655 61.59538153426219,5.246362655129078 61.605952223435956,5.299420432598201 61.60727355958268,5.360436876687693 61.59934554270235,5.3949244320426235 61.591417525822024,5.349825321193869 61.583489508941696,5.347172432320413 61.591417525822024,5.333907987953132 61.580846836648256,5.355131098940781 61.57291881976793,5.357783987814237 61.57688282820809,5.450635098385203 61.571597483621204,5.463899542752484 61.58745351738186,5.426759098524098 61.59538153426219,5.389618654295711 61.60727355958268,5.336560876826588 61.613880240316284,5.3153377658389385 61.60991623187612,5.28615598823092 61.611237568022844,5.227792433014884 61.611237568022844,5.1641231000519365 61.603309551142516,5.100453767088988 61.59802420655563,5.09249510046862 61.59273886196874,5.044743100746408 61.58877485352858,5.03678443412604 61.583489508941696,4.9969911010241965 61.580846836648256,4.9943382121507405 61.59802420655563,5.068619100607513 61.603309551142516,5.0765777672278825 61.611237568022844,5.132288433570462 61.611237568022844,5.137594211317374 61.60727355958268,5.19595776653341 61.61520157646301,5.275544432737096 61.61784424875645,5.3179906547123945 61.62973627407694,5.365742654434606 61.625772265636776,5.41880043190373 61.641628299397425,5.336560876826588 61.64030696325071,5.304726210345113 61.636342954810544,5.280850210484008 61.625772265636776,5.222486655267972 61.625772265636776,5.2384039885087095 61.633700282517104,5.148205766811199 61.62973627407694,5.097800878215532 61.63766429095727,4.989032434403828 61.625772265636776,5.007602656518022 61.648234980131036,4.970462212289635 61.6706976946253,4.970462212289635 61.68258971994579,4.986379545530372 61.69448174526628,4.970462212289635 61.71298045132038,4.98107376778346 61.72487247664087,5.007602656518022 61.71694445976054,5.007602656518022 61.723551140494145,4.983726656656916 61.72883648508103,4.991685323277284 61.7394071742548,5.020867100885303 61.74733519113513,5.031478656379127 61.7579058803089,5.05004887849332 61.7579058803089,5.084536433848251 61.75394187186873,5.103106655962444 61.73676450196135,5.1057595448359 61.70505243444005,5.119023989203181 61.706373770586765,5.116371100329725 61.743371182694965,5.148205766811199 61.73147915737447,5.166775988925393 61.71958713205398,5.1561644334315675 61.7024097621466,5.169428877798849 61.701088425999885,5.177387544419217 61.723551140494145,5.193304877659954 61.71958713205398,5.222486655267972 61.72751514893431,5.190651988786498 61.73544316581464,5.148205766811199 61.7394071742548,5.150858655684655 61.75394187186873,5.169428877798849 61.76186988874906,5.19595776653341 61.7579058803089,5.222486655267972 61.76186988874906,5.267585766116727 61.76186988874906,5.299420432598201 61.76979790562939,5.262279988369815 61.77772592250972,5.206569322027235 61.77244057792283,5.190651988786498 61.768476569482665,5.1535115445581114 61.77244057792283,5.132288433570462 61.7579058803089,5.121676878076637 61.76319122489578,5.097800878215532 61.75922721645561,5.097800878215532 61.77640458636299,5.150858655684655 61.80415264544414,5.177387544419217 61.810759326177745,5.219833766394516 61.810759326177745,5.235751099635253 61.816044670764626,5.3179906547123945 61.8266153599384,5.320643543585851 61.830579368378565,5.296767543724745 61.83454337681873,5.323296432459307 61.8451140659925,5.386965765422255 61.84247139369906,5.386965765422255 61.84907807443266,5.299420432598201 61.85700609131299,5.331255099079676 61.875504797367086,5.339213765700044 61.88739682268758,5.386965765422255 61.90721686488839,5.43206487627101 61.917787554062166,5.463899542752484 61.905895528741674,5.511651542474696 61.905895528741674,5.540833320082713 61.90193152030151,5.530221764588889 61.89400350342118,5.543486208956169 61.88739682268758,5.580626653184556 61.897967511861346,5.609808430792574 61.89928884800807,5.646948875020961 61.88739682268758,5.705312430236996 61.88343281424741,5.737147096718471 61.85700609131299,5.776940429820313 61.853042082872825,5.692047985869715 61.84247139369906,5.6336844306536795 61.81208066232446,5.665519097135154 61.810759326177745,5.678783541502435 61.82529402379168,5.70265954136354 61.83454337681873,5.787551985314138 61.84247139369906,5.819386651795613 61.84247139369906,5.859179984897455 61.853042082872825,5.909584873493122 61.85964876360643,5.936113762227684 61.853042082872825,5.978559984202983 61.84907807443266,5.978559984202983 61.830579368378565,5.967948428709159 61.82000867920479,5.970601317582615 61.808116653884305,5.95998976208879 61.788296611683485,5.941419539974596 61.765833897189225,5.909584873493122 61.746013854988405,5.920196428986947 61.73147915737447,5.928155095607316 61.743371182694965,5.9520310954684215 61.75129919957529,5.967948428709159 61.76319122489578,5.99447731744372 61.83718604911217,6.0316177616721065 61.8451140659925,6.127121761116529 61.77640458636299,6.177526649712196 61.76319122489578,6.212014205067127 61.77376191406955,6.214667093940583 61.77772592250972,6.177526649712196 61.78433260324332,6.150997760977635 61.80415264544414,6.082022650267774 61.83454337681873,6.082022650267774 61.8451140659925,6.124468872243073 61.82925803223184,6.161609316471459 61.83454337681873,6.1934439829529335 61.833222040672005,6.251807538168969 61.8451140659925,6.294253760144269 61.8451140659925,6.336699982119567 61.83850738525889,6.379146204094866 61.816044670764626,6.479955981286201 61.80283130929742,6.527707981008412 61.808116653884305,6.562195536363342 61.82925803223184,6.607294647212098 61.8451140659925,6.615253313832466 61.853042082872825,6.578112869604079 61.863612772046594,6.586071536224448 61.86757678048676,6.636476424820115 61.87154078892692,6.686881313415783 61.87154078892692,6.7585093129991 61.863612772046594,6.787691090607117 61.85039941057938,6.806261312721311 61.83454337681873,6.819525757088591 61.86757678048676,6.846054645823154 61.86493410819332,6.84870753469661 61.87154078892692,6.819525757088591 61.875504797367086,6.795649757227486 61.86757678048676,6.766467979619469 61.8768261335138,6.710757313276888 61.87946880580725,6.700145757783064 61.89928884800807,6.673616869048502 61.886075486540854,6.628517758199747 61.89003949498102,6.564848425236798 61.88211147810069,6.540972425375693 61.868898116633474,6.530360869881868 61.85700609131299,6.5224022032615 61.833222040672005,6.413633759449796 61.830579368378565,6.371187537474498 61.84247139369906,6.336699982119567 61.86097009975315,6.315476871131918 61.863612772046594,6.26507198253625 61.85964876360643,6.235890204928232 61.86097009975315,6.177526649712196 61.85039941057938,6.137733316610354 61.846435402139214,6.047535094912844 61.875504797367086,5.957336873215334 61.87154078892692,5.909584873493122 61.88211147810069,5.851221318277086 61.87286212507364,5.829998207289437 61.86097009975315,5.808775096301788 61.85700609131299,5.798163540807963 61.87154078892692,5.771634652073401 61.87154078892692,5.763675985453032 61.87946880580725,5.731841318971559 61.89400350342118,5.811427985175244 61.89928884800807,5.84856842940363 61.895324839567905,5.90427909574621 61.90193152030151,5.973254206456071 61.897967511861346,5.989171539696808 61.90193152030151,5.981212873076439 61.91250220947528,5.896320429125842 61.920430226355606,5.859179984897455 61.91250220947528,5.843262651656718 61.91646621791544,5.806122207428332 61.91646621791544,5.7928577630610505 61.920430226355606,5.721229763477734 61.91250220947528,5.678783541502435 61.90985953718184,5.617767097412942 61.917787554062166,5.604502653045662 61.92175156250233,5.548791986703082 61.92175156250233,5.516957320221608 61.92439423479577,5.501039986980871 61.9323222516761,5.485122653740134 61.92571557094249,5.455940876132116 61.928358243235934,5.458593765005572 61.9389289324097,5.442676431764835 61.940250268556426,5.384312876548799 61.928358243235934,5.3179906547123945 61.90721686488839,5.304726210345113 61.913823545622,5.2410568773821655 61.90721686488839,5.222486655267972 61.913823545622,5.201263544280323 61.89928884800807,5.174734655545761 61.895324839567905,5.150858655684655 61.90985953718184,5.187999099913042 61.91250220947528,5.190651988786498 61.917787554062166,5.166775988925393 61.91646621791544,5.119023989203181 61.917787554062166,5.1561644334315675 61.95610630231708,5.1535115445581114 61.97724768066462,5.172081766672305 61.985175697544946,5.193304877659954 61.98649703369166,5.187999099913042 61.978569016811335,5.193304877659954 61.950820957730194,5.209222210900691 61.94685694929003,5.214527988647603 61.9323222516761,5.227792433014884 61.9323222516761,5.222486655267972 61.948178285436754,5.209222210900691 61.95478496617036,5.203916433153779 61.97724768066462,5.235751099635253 61.97724768066462,5.243709766255622 61.9825330252515,5.280850210484008 61.95610630231708,5.28615598823092 61.948178285436754,5.302073321471657 61.95610630231708,5.275544432737096 61.97724768066462,5.299420432598201 61.985175697544946,5.3179906547123945 61.97460500837118,5.3179906547123945 61.98913970598511,5.333907987953132 61.993103714425274,5.336560876826588 62.01688776506625,5.3418666545735 62.02349444579986,5.389618654295711 62.02349444579986,5.408188876409905 62.012923756626094,5.426759098524098 62.0195304373597,5.41880043190373 62.027458454240026,5.3922715431691675 62.03406513497363,5.336560876826588 62.03538647112035,5.349825321193869 62.04595716029412,5.3418666545735 62.057849185614614,5.310031988092026 62.07634789166871,5.262279988369815 62.08427590854904,5.2410568773821655 62.102774614603135,5.116371100329725 62.10013194230969,5.113718211456269 62.12655866524412,5.1535115445581114 62.12127332065723,5.1588173223050235 62.125237329097395,5.137594211317374 62.145057371298215,5.103106655962444 62.14902137973837,5.095147989342076 62.16619874964575,5.111065322582813 62.16355607735231,5.1057595448359 62.17941211111297,5.095147989342076 62.18337611955313,5.097800878215532 62.1939468087269,5.14024710019083 62.2005534894605,5.1561644334315675 62.18601879184657,5.177387544419217 62.1939468087269,5.180040433292673 62.21376685092771,5.209222210900691 62.205838834047384,5.225139544141428 62.20848150634083,5.227792433014884 62.1939468087269,5.249015544002534 62.17809077496624,5.280850210484008 62.1754481026728,5.283503099357464 62.1569493966187,5.299420432598201 62.1569493966187,5.294114654851289 62.17148409423264,5.325949321332763 62.167520085792475,5.323296432459307 62.152985388178536,5.310031988092026 62.12920133753756,5.325949321332763 62.11466663992363,5.349825321193869 62.11070263148346,5.355131098940781 62.09881060616297,5.3922715431691675 62.09088258928264,5.39757732091608 62.080311900108875,5.429411987397554 62.069741210935106,5.442676431764835 62.07238388322855,5.445329320638291 62.060491857908055,5.4718582093728525 62.057849185614614,5.4692053204993964 62.049921168734286,5.48777554261359 62.03406513497363,5.4718582093728525 62.015566428919534,5.450635098385203 62.00895974818593,5.46655243162594 62.0010317313056,5.493081320360503 62.012923756626094,5.516957320221608 62.04199315185396,5.527568875715433 62.04595716029412,5.519610209095064 62.060491857908055,5.519610209095064 62.07634789166871,5.543486208956169 62.07634789166871,5.572667986564188 62.06577720249494,5.588585319804925 62.07238388322855,5.607155541919118 62.049921168734286,5.617767097412942 62.049921168734286,5.617767097412942 62.07238388322855,5.604502653045662 62.080311900108875,5.572667986564188 62.08427590854904,5.567362208817276 62.09484659772281,5.543486208956169 62.09881060616297,5.482469764866678 62.10013194230969,5.461246653879028 62.09881060616297,5.434717765144466 62.102774614603135,5.429411987397554 62.1133453037769,5.4028830986629925 62.12920133753756,5.434717765144466 62.15562806047198,5.434717765144466 62.17412676652608,5.463899542752484 62.189982800286735,5.485122653740134 62.2005534894605,5.516957320221608 62.18734012799329,5.5567506533234505 62.167520085792475,5.609808430792574 62.16619874964575,5.6389902084005925 62.17412676652608,5.676130652628979 62.13712935441789,5.673477763755523 62.11863064836379,5.721229763477734 62.08691858084248,5.747758652212296 62.09484659772281,5.689395096996259 62.122594656803955,5.697353763616628 62.13580801827116,5.66817198600861 62.17412676652608,5.710618207983909 62.167520085792475,5.737147096718471 62.17941211111297,5.771634652073401 62.17941211111297,5.798163540807963 62.18734012799329,5.798163540807963 62.19791081716706,5.819386651795613 62.19658948102034,5.851221318277086 62.20187482560723,5.883055984758561 62.2005534894605,5.914890651240035 62.18601879184657,5.9520310954684215 62.1569493966187,5.936113762227684 62.13712935441789,5.941419539974596 62.122594656803955,5.933460873354228 62.102774614603135,5.8777502070116485 62.049921168734286,5.843262651656718 62.012923756626094,5.856527096023999 62.004995739745766,5.885708873632017 62.03538647112035,5.901626206872754 62.04199315185396,5.93876665110114 62.07899056396215,5.970601317582615 62.102774614603135,5.975907095329527 62.122594656803955,5.95998976208879 62.13580801827116,5.981212873076439 62.14109336285805,6.010394650684457 62.13977202671133,6.044882206039388 62.10938129533674,6.066105317027037 62.1067386230433,6.087328428014686 62.09088258928264,6.068758205900493 62.069741210935106,6.0501879837863 62.06577720249494,6.0316177616721065 62.04595716029412,6.052840872659756 62.049921168734286,6.066105317027037 62.06181319405478,6.082022650267774 62.05388517717445,6.089981316888142 62.069741210935106,6.1138573167492485 62.07899056396215,6.153650649851091 62.07634789166871,6.177526649712196 62.08427590854904,6.214667093940583 62.07370521937526,6.23058442718132 62.07899056396215,6.246501760422057 62.06841987478838,6.2677248714097065 62.06577720249494,6.2783364269035316 62.07899056396215,6.299559537891181 62.069741210935106,6.288947982397356 62.06445586634822,6.310171093385005 62.057849185614614,6.32078264887883 62.07238388322855,6.310171093385005 62.080311900108875,6.283642204650444 62.08427590854904,6.249154649295513 62.082954572402315,6.249154649295513 62.0882399169892,6.219972871687496 62.08691858084248,6.177526649712196 62.09881060616297,6.150997760977635 62.09088258928264,6.124468872243073 62.10938129533674,6.076716872520862 62.130522673684276,6.074063983647406 62.14109336285805,6.0395764282924755 62.15959206891215,6.007741761811001 62.167520085792475,5.981212873076439 62.189982800286735,5.9520310954684215 62.20187482560723,5.965295539835703 62.20451749790067,5.930807984480772 62.22037353166132,5.970601317582615 62.23094422083509,5.986518650823352 62.22698021239493,5.99447731744372 62.205838834047384,6.018353317304825 62.19658948102034,6.042229317165932 62.20187482560723,6.079369761394318 62.189982800286735,6.119163094496161 62.18734012799329,6.121815983369617 62.2005534894605,6.0395764282924755 62.212445514780995,6.013047539557913 62.21376685092771,6.005088872937545 62.23622956542198,5.95998976208879 62.25076426303591,5.986518650823352 62.26926296909001,6.005088872937545 62.27322697753017,6.233237316054776 62.35647115477361,6.2677248714097065 62.36043516321377,6.318129760005374 62.374969860827704,6.3446586487399355 62.372327188534264,6.3526173153603045 62.352507146333444,6.395063537335603 62.322116414958856,6.418939537196708 62.28908301129083,6.426898203817077 62.26133495220968,6.469344425792376 62.24944292688919,6.487914647906569 62.217730859367876,6.474650203539289 62.212445514780995,6.479955981286201 62.20187482560723,6.498526203400394 62.20451749790067,6.5224022032615 62.18337611955313,6.538319536502237 62.17941211111297,6.55688975861643 62.15959206891215,6.578112869604079 62.145057371298215,6.575459980730623 62.13316534597772,6.543625314249149 62.125237329097395,6.540972425375693 62.1067386230433,6.55688975861643 62.1067386230433,6.559542647489886 62.11730931221707,6.594030202844817 62.122594656803955,6.61260042495901 62.13316534597772,6.5887244250979045 62.167520085792475,6.55688975861643 62.1939468087269,6.596683091718273 62.20187482560723,6.652393758060852 62.189982800286735,6.639129313693571 62.20187482560723,6.594030202844817 62.212445514780995,6.527707981008412 62.20451749790067,6.538319536502237 62.212445514780995,6.498526203400394 62.262656288356396,6.469344425792376 62.27322697753017,6.464038648045464 62.29304701973099,6.445468425931271 62.31154572578509,6.4322039815639895 62.33797244871951,6.397716426209059 62.357792490920325,6.424245314943621 62.3683631800941,6.405675092829428 62.38421921385475,6.418939537196708 62.3934685668818,6.464038648045464 62.40139658376213,6.498526203400394 62.40139658376213,6.551583980869518 62.39082589458836,6.554236869742974 62.364399171653936,6.572807091857167 62.35647115477361,6.575459980730623 62.33797244871951,6.5887244250979045 62.33400844027935,6.5887244250979045 62.35382848248017,6.570154202983711 62.3683631800941,6.578112869604079 62.40139658376213,6.543625314249149 62.406681928349016,6.607294647212098 62.429144642843276,6.676269757921958 62.44103666816376,6.710757313276888 62.45160735733754,6.742591979758362 62.44764334889737,6.742591979758362 62.43310865128343,6.785038201733661 62.429144642843276,6.808914201594767 62.43575132357688,6.859319090190434 62.43178731513672,6.9123768676595585 62.41328860908262,6.88319509005154 62.37893386926787,6.893806645545364 62.3683631800941,6.888500867798452 62.364399171653936,6.901765312165733 62.349864474040004,6.917682645406471 62.34590046559984,6.917682645406471 62.32343775110557,6.954823089634857 62.307581717344924,6.962781756255225 62.28908301129083,7.005227978230524 62.285119002850664,6.997269311610156 62.270584305236724,7.005227978230524 62.24283624615558,6.999922200483612 62.21376685092771,7.015839533724349 62.19791081716706,7.015839533724349 62.18205478340641,6.9893106449897875 62.167520085792475,6.933599978647207 62.13316534597772,6.928294200900295 62.12127332065723,6.867277756810803 62.0882399169892,6.875236423431172 62.080311900108875,6.93890575639412 62.1067386230433,6.986657756116331 62.09484659772281,7.005227978230524 62.08427590854904,7.06359153344656 62.08691858084248,7.098079088801491 62.09484659772281,7.121955088662596 62.1133453037769,7.140525310776789 62.11466663992363,7.177665755005176 62.1067386230433,7.196235977119369 62.09616793386952,7.206847532613194 62.10013194230969,7.188277310499 62.11466663992363,7.148483977397158 62.125237329097395,7.113996422042227 62.122594656803955,7.074203088940385 62.09881060616297,7.034409755838542 62.09484659772281,6.960128867381769 62.11466663992363,6.986657756116331 62.14109336285805,7.034409755838542 62.16619874964575,7.039715533585454 62.18601879184657,7.034409755838542 62.20451749790067,7.039715533585454 62.22037353166132,7.034409755838542 62.27322697753017,7.04236842245891 62.277190985970336,7.076855977813841 62.279833658263776,7.106037755421859 62.27454831367689,7.129913755282965 62.2811549944105,7.172359977258264 62.26133495220968,7.217459088107018 62.26133495220968,7.2227648658539305 62.25340693532935,7.259905310082317 62.28379766670394,7.3076573098045285 62.2811549944105,7.32092175417181 62.287761675144104,7.350103531779828 62.26926296909001,7.363367976147108 62.26926296909001,7.392549753755127 62.25076426303591,7.41111997586932 62.232265556981815,7.429690197983513 62.234908229275256,7.416425753616232 62.2441575823023,7.429690197983513 62.25076426303591,7.363367976147108 62.2811549944105,7.344797754032915 62.29304701973099,7.3076573098045285 62.29568969202443,7.283781309943423 62.29172568358427,7.246640865715037 62.297011028171156,7.217459088107018 62.285119002850664,7.17501286613172 62.285119002850664,7.1458310885237015 62.29568969202443,7.124607977536052 62.297011028171156,7.092773311054579 62.29304701973099,7.087467533307666 62.30097503661131,7.060938644573104 62.307581717344924,7.005227978230524 62.307581717344924,6.9893106449897875 62.31154572578509,6.962781756255225 62.32608042339902,6.930947089773751 62.374969860827704,6.984004867242875 62.374969860827704,6.986657756116331 62.38289787770803,6.957475978508313 62.386861886148196,6.941558645267576 62.42518063440311,6.885847978924996 62.44764334889737,6.869930645684259 62.459535374217865,6.832790201455873 62.45821403807114,6.811567090468223 62.462178046511305,6.771773757366381 62.459535374217865,6.774426646239837 62.46614205495147,6.808914201594767 62.47010606339163,6.811567090468223 62.481998088712125,6.705451535529976 62.4740700718318,6.694839980036152 62.484640761005565,6.652393758060852 62.46349938265803,6.633823535946659 62.459535374217865,6.609947536085554 62.46614205495147,6.596683091718273 62.45160735733754,6.564848425236798 62.44764334889737,6.535666647628781 62.43310865128343,6.485261759033113 62.429144642843276,6.4295510926905335 62.43178731513672,6.395063537335603 62.417252617522784,6.381799092968322 62.42121662596295,6.392410648462147 62.429144642843276,6.342005759866479 62.43575132357688,6.3552702042337605 62.44367934045721,6.342005759866479 62.45160735733754,6.3526173153603045 62.45821403807114,6.318129760005374 62.462178046511305,6.249154649295513 62.4555713657777,6.227931538307864 62.46746339109819,6.371187537474498 62.47671274412524,6.373840426347954 62.484640761005565,6.403022203955972 62.48860476944573,6.450774203678183 62.49256877788589,6.477303092412745 62.504460803206385,6.5064848700207625 62.49785412247277,6.5224022032615 62.504460803206385,6.540972425375693 62.49653278632606,6.572807091857167 62.49653278632606,6.594030202844817 62.50181813091294,6.601988869465185 62.49389011403261,6.628517758199747 62.49653278632606,6.641782202567027 62.481998088712125,6.6709639801750455 62.484640761005565,6.6656582024281334 62.48860476944573,6.718715979897257 62.49256877788589,6.710757313276888 62.49653278632606,6.660352424681221 62.50181813091294,6.615253313832466 62.504460803206385,6.599335980591729 62.51238882008671,6.623211980452835 62.51899550082032,6.609947536085554 62.52295950926048,6.527707981008412 62.51503149238015,6.525055092134956 62.51635282852688,6.474650203539289 62.51238882008671,6.46669153691892 62.51635282852688,6.519749314388044 62.526923517700645,6.540972425375693 62.524280845407205,6.586071536224448 62.53088752614081,6.575459980730623 62.5427795514613,6.538319536502237 62.5427795514613,6.448121314804727 62.53088752614081,6.371187537474498 62.53485153458097,6.342005759866479 62.53088752614081,6.251807538168969 62.52824485384736,6.2862950935239 62.54145821531458,6.2703777602831625 62.549386232194905,6.273030649156619 62.5612782575154,6.251807538168969 62.58109829971622,6.304865315638093 62.59959700577031,6.334047093246111 62.614131703384245,6.379146204094866 62.60356101421047,6.434856870437446 62.614131703384245,6.450774203678183 62.59034765274326,6.450774203678183 62.567884938249,6.461385759172008 62.567884938249,6.469344425792376 62.58374097200966,6.453427092551639 62.614131703384245,6.525055092134956 62.61809571182441,6.564848425236798 62.624702392558014,6.570154202983711 62.594311661183426,6.601988869465185 62.59034765274326,6.609947536085554 62.58374097200966,6.596683091718273 62.5612782575154,6.61260042495901 62.554671576781786,6.633823535946659 62.591668988889985,6.631170647073203 62.60356101421047,6.609947536085554 62.61016769494408,6.631170647073203 62.6299877371449,6.649740869187396 62.6299877371449,6.657699535807765 62.60620368650392,6.6709639801750455 62.602239678063754,6.663005313554677 62.633951745585065,6.771773757366381 62.6550931239326,6.798302646100942 62.65245045163916,6.8221786459620475 62.636594417878506,6.877889312304628 62.6114890310908,6.9150297565330145 62.58770498044982,6.9123768676595585 62.57317028283589,6.930947089773751 62.58770498044982,6.917682645406471 62.59959700577031,6.93890575639412 62.614131703384245,6.925641312026839 62.6299877371449,6.9097239787861024 62.633951745585065,6.9070710899126455 62.647165107052274,6.960128867381769 62.65245045163916,6.9946164227367 62.65112911549244,7.047674200205823 62.6550931239326,7.08481464443421 62.6550931239326,7.08481464443421 62.62866640099818,7.0662444223200165 62.6299877371449,7.026451089218174 62.62205972026457,7.023798200344718 62.614131703384245,7.076855977813841 62.61809571182441,7.090120422181122 62.62205972026457,7.106037755421859 62.57977696356949,7.124607977536052 62.57581295512933,7.132566644156421 62.55731424907523,7.121955088662596 62.5427795514613,7.124607977536052 62.526923517700645,7.140525310776789 62.52031683696704,7.148483977397158 62.53749420687441,7.1458310885237015 62.57977696356949,7.124607977536052 62.591668988889985,7.124607977536052 62.60620368650392,7.1458310885237015 62.614131703384245,7.1431781996502455 62.62602372870474,7.167054199511352 62.6299877371449,7.198888865992825 62.62205972026457,7.233376421347756 62.61016769494408,7.254599532335405 62.62205972026457,7.286434198816879 62.607525022650634,7.326227531918722 62.60620368650392,7.331533309665634 62.61016769494408,7.360715087273652 62.60620368650392,7.379285309387845 62.57317028283589,7.416425753616232 62.5612782575154,7.434995975730425 62.549386232194905,7.448260420097706 62.53088752614081,7.474789308832268 62.53485153458097,7.474789308832268 62.54542222375474,7.525194197427935 62.53353019843425,7.546417308415585 62.49653278632606,7.564987530529778 62.49653278632606,7.559681752782866 62.53353019843425,7.586210641517427 62.5427795514613,7.657838641100744 62.54674355990146,7.663144418847656 62.56392092980884,7.687020418708762 62.569206274395725,7.748036862798254 62.56524226595556,7.7851773070266415 62.571848946689165,7.7825244181531845 62.57713429127605,7.750689751671711 62.57713429127605,7.732119529557517 62.58374097200966,7.6604915299742 62.57713429127605,7.655185752227288 62.571848946689165,7.549070197289041 62.55335024063507,7.5437644195421285 62.55731424907523,7.493359530946462 62.56524226595556,7.474789308832268 62.56524226595556,7.456219086718074 62.57713429127605,7.469483531085356 62.58374097200966,7.429690197983513 62.58770498044982,7.405814198122407 62.60620368650392,7.395202642628583 62.6299877371449,7.474789308832268 62.64055842631867,7.496012419819918 62.633951745585065,7.496012419819918 62.61809571182441,7.511929753060654 62.60356101421047,7.503971086440286 62.58374097200966,7.530499975174848 62.58770498044982,7.538458641795216 62.57317028283589,7.546417308415585 62.591668988889985,7.5437644195421285 62.62073838411785,7.506623975313742 62.633951745585065,7.50131819756683 62.66302114081293,7.527847086301391 62.666985149253094,7.549070197289041 62.67491316613342,7.599475085884708 62.678877174573586,7.6206981968723575 62.69341187218752,7.687020418708762 62.69737588062768,7.710896418569868 62.70794656980145,7.832929306748852 62.731730620442434,7.8674168621037825 62.7356946288826,7.907210195205625 62.731730620442434,7.925780417319818 62.723802603562106,7.9416977505605555 62.723802603562106,7.931086195066731 62.73833730117604,7.95230930605438 62.743622645762926,7.997408416903135 62.73965863732276,8.031895972258067 62.72908794814899,8.037201750004979 62.723802603562106,8.08495374972719 62.709267905948174,8.095565305221013 62.709267905948174,8.10617686071484 62.69737588062768,8.116788416208664 62.701339889067846,8.122094193955576 62.686805191453914,8.143317304943224 62.68284118301375,8.140664416069768 62.70530389750801,8.130052860575944 62.71587458668178,8.111482638461752 62.72115993126866,8.108829749588295 62.72908794814899,8.018631527890784 62.75022932649653,8.018631527890784 62.75551467108341,8.066383527612995 62.77004936869735,8.066383527612995 62.776656049430954,7.968226639295118 62.766085360257186,7.928433306193274 62.77004936869735,7.671103085468025 62.72115993126866,7.55702886390941 62.6986972167744,7.50131819756683 62.686805191453914,7.450913308971162 62.68284118301375,7.440301753477337 62.69737588062768,7.413772864742776 62.69076919989408,7.352756420653284 62.69076919989408,7.347450642906372 62.6986972167744,7.384591087134758 62.70794656980145,7.419078642489688 62.70794656980145,7.413772864742776 62.71983859512194,7.392549753755127 62.71983859512194,7.416425753616232 62.72776661200227,7.36867375389402 62.731730620442434,7.366020865020564 62.73833730117604,7.413772864742776 62.746265318056366,7.450913308971162 62.75551467108341,7.594169308137796 62.77797738557767,7.679061752088394 62.776656049430954,7.721507974063693 62.79251208319161,7.668450196594569 62.78458406631128,7.671103085468025 62.79251208319161,7.633962641239639 62.79251208319161,7.6206981968723575 62.788548074751446,7.503971086440286 62.77797738557767,7.450913308971162 62.77004936869735,7.376632420514389 62.76212135181702,7.251946643461949 62.743622645762926,7.1431781996502455 62.734373292735874,7.06359153344656 62.72908794814899,7.015839533724349 62.723802603562106,6.984004867242875 62.723802603562106,6.968087534002137 62.7356946288826,6.986657756116331 62.73965863732276,6.9946164227367 62.75815734337686,6.968087534002137 62.77797738557767,6.9893106449897875 62.78722673860472,6.978699089495962 62.79251208319161,7.015839533724349 62.81101078924571,7.015839533724349 62.81761746997931,7.0688973111934725 62.8295094952998,7.092773311054579 62.8295094952998,7.108690644295315 62.8229028145662,7.076855977813841 62.821581478419475,7.076855977813841 62.81497479768587,7.106037755421859 62.81233212539242,7.156442644017527 62.818938806126035,7.159095532890983 62.80704678080554,7.198888865992825 62.80308277236538,7.233376421347756 62.8044041085121,7.241335087968125 62.81101078924571,7.20950042148665 62.81101078924571,7.177665755005176 62.8229028145662,7.206847532613194 62.83347350373997,7.185624421625544 62.83347350373997,7.151136866270614 62.841401520620295,7.17501286613172 62.84932953750062,7.140525310776789 62.85197220979406,7.103384866548403 62.8480082013539,7.060938644573104 62.83743751218013,6.9893106449897875 62.83875884832685,7.010533755977437 62.8480082013539,7.005227978230524 62.85725755438095,6.9893106449897875 62.85990022667439,6.9946164227367 62.87179225199488,6.962781756255225 62.87443492428832,6.978699089495962 62.89425496648914,6.952170200761401 62.88764828575553,6.960128867381769 62.89821897492931,6.9070710899126455 62.90218298336947,6.89645953441882 62.9101110002498,6.922988423153383 62.91407500868996,7.021145311471262 62.95239375694487,7.060938644573104 62.970892462998975,7.090120422181122 62.95900043767848,7.100731977674947 62.961643109971924,7.079508866687297 62.973535135292416,7.103384866548403 62.98806983290635,7.121955088662596 62.98146315217274,7.151136866270614 62.98542716061291,7.151136866270614 62.9973191859334,7.17501286613172 62.993355177493235,7.20950042148665 62.993355177493235,7.236029310221212 62.99996185822684,7.2970457543107035 63.00788987510717,7.283781309943423 62.99996185822684,7.246640865715037 62.98939116905307,7.286434198816879 62.9788204798793,7.278475532196511 62.98939116905307,7.3076573098045285 62.99996185822684,7.323574643045266 62.98939116905307,7.315615976424898 62.970892462998975,7.331533309665634 62.973535135292416,7.376632420514389 62.96692845455881,7.384591087134758 62.95900043767848,7.413772864742776 62.95503642923832,7.416425753616232 62.94842974850471,7.442954642350793 62.93653772318422,7.456219086718074 62.92068168942357,7.448260420097706 62.906146991809635,7.429690197983513 62.906146991809635,7.432343086856969 62.89821897492931,7.469483531085356 62.89821897492931,7.485400864326093 62.906146991809635,7.517235530807566 62.906146991809635,7.564987530529778 62.92464569786373,7.588863530390883 62.92464569786373,7.583557752643971 62.93653772318422,7.68171464096185 62.96692845455881,7.718855085190237 62.970892462998975,7.79313597364701 62.95900043767848,7.748036862798254 62.94314440391783,7.710896418569868 62.92464569786373,7.673755974341481 62.89425496648914,7.687020418708762 62.89425496648914,7.721507974063693 62.91275367254324,7.753342640545167 62.92068168942357,7.84088797336922 62.951072420798155,7.8647639732303265 62.944465740064544,7.885987084217976 62.95900043767848,7.939044861687099 62.961643109971924,7.97353241704203 62.970892462998975,8.02128441676424 62.96296444611865,8.034548861131523 62.96560711841209,8.04250752775189 62.951072420798155,8.061077749866083 62.951072420798155,8.071689305359907 62.93653772318422,8.10617686071484 62.928609706303895,8.095565305221013 62.92068168942357,8.11944130508212 62.92068168942357,8.087606638600645 62.88764828575553,8.111482638461752 62.886326949608815,8.10617686071484 62.87972026887521,8.111482638461752 62.85725755438095,8.135358638322856 62.818938806126035,8.172499082551242 62.808368116952266,8.169846193677786 62.80044010007194,8.262697304248753 62.77797738557767,8.310449303970964 62.78458406631128,8.329019526085158 62.766085360257186,8.384730192427737 62.754193334936694,8.400647525668475 62.74758665420309,8.419217747782668 62.717195922828495,8.429829303276492 62.71983859512194,8.429829303276492 62.731730620442434,8.45901108088451 62.72776661200227,8.496151525112897 62.71587458668178,8.501457302859809 62.71983859512194,8.517374636100547 62.67755583842686,8.525333302720915 62.67094915769326,8.549209302582021 62.67491316613342,8.562473746949301 62.69473320833424,8.554515080328933 62.717195922828495,8.52798619159437 62.734373292735874,8.443093747643774 62.75815734337686,8.408606192288843 62.77269204099079,8.339631081578982 62.788548074751446,8.323713748338246 62.8044041085121,8.24412708213456 62.808368116952266,8.222903971146911 62.821581478419475,8.193722193538893 62.82686682300636,8.172499082551242 62.8480082013539,8.156581749310506 62.85725755438095,8.16719330480433 62.86782824355472,8.151275971563594 62.89029095804898,8.16719330480433 62.89821897492931,8.204333749032717 62.906146991809635,8.20168086015926 62.91407500868996,8.156581749310506 62.9101110002498,8.159234638183962 62.91407500868996,8.135358638322856 62.944465740064544,8.053119083245715 62.97485647143914,8.02128441676424 62.9973191859334,7.994755528029679 62.99996185822684,7.997408416903135 63.03167392574815,7.976185305915486 63.03960194262847,7.949656417180924 63.01978190042766,7.981491083662398 63.02770991730799,7.989449750282766 63.0224245727211,7.981491083662398 63.01185388354733,7.949656417180924 62.9973191859334,7.891292861964888 62.98939116905307,7.885987084217976 63.001283194373556,7.899251528585257 63.01185388354733,7.885987084217976 63.023745908867824,7.915168861825993 63.04224461492192,7.954962194927836 63.03960194262847,7.978838194788942 63.048851295655524,7.968226639295118 63.080563363176836,7.978838194788942 63.088491380057164,8.069036416486451 63.110954094551424,8.108829749588295 63.103026077671096,8.111482638461752 63.088491380057164,8.127399971702488 63.088491380057164,8.138011527196312 63.068671337856344,8.124747082829032 63.05281530409569,8.087606638600645 63.05017263180225,8.087606638600645 63.04224461492192,8.130052860575944 63.046208623362084,8.130052860575944 63.03431659804159,8.15392886043705 63.023745908867824,8.172499082551242 63.023745908867824,8.191069304665437 63.01185388354733,8.257391526501841 62.995997849786676,8.241474193261103 62.98146315217274,8.254738637628385 62.970892462998975,8.275961748616034 62.98278448831946,8.302490637350596 62.97749914373258,8.33432530383207 62.96296444611865,8.283920415236402 62.928609706303895,8.289226192983314 62.92068168942357,8.31310219284442 62.91275367254324,8.336978192705526 62.89029095804898,8.29983774847714 62.863864235114555,8.31310219284442 62.863864235114555,8.368812859187 62.886326949608815,8.419217747782668 62.86782824355472,8.45901108088451 62.844044192913735,8.485539969619072 62.84536552906046,8.496151525112897 62.83479483988668,8.517374636100547 62.83743751218013,8.51472174722709 62.85725755438095,8.456358192011054 62.87179225199488,8.42452352552958 62.886326949608815,8.416564858909211 62.90218298336947,8.45901108088451 62.883684277315375,8.490845747365984 62.87972026887521,8.509415969480177 62.86518557126128,8.546556413708565 62.863864235114555,8.578391080190038 62.86782824355472,8.618184413291882 62.83743751218013,8.636754635406074 62.8295094952998,8.650019079773354 62.8295094952998,8.697771079495567 62.81761746997931,8.700423968369023 62.82686682300636,8.65267196864681 62.83875884832685,8.634101746532618 62.83875884832685,8.62614307991225 62.84932953750062,8.628795968785706 62.86518557126128,8.610225746671512 62.87972026887521,8.589002635683864 62.883684277315375,8.541250635961653 62.87839893272849,8.535944858214739 62.886326949608815,8.520027524974003 62.886326949608815,8.49349863623944 62.90086164722275,8.472275525251792 62.90218298336947,8.45901108088451 62.92200302557029,8.429829303276492 62.93257371474406,8.416564858909211 62.95503642923832,8.474928414125248 62.961643109971924,8.50676308060672 62.95767910153176,8.657977746393723 62.970892462998975,8.650019079773354 62.98939116905307,8.607572857798056 62.98939116905307,8.567779524696213 62.98542716061291,8.50676308060672 62.96692845455881,8.461663969757966 62.970892462998975,8.490845747365984 62.99203384134651,8.522680413847459 62.9973191859334,8.594308413430776 63.01978190042766,8.565126635822757 63.01978190042766,8.485539969619072 62.9973191859334,8.419217747782668 62.97485647143914,8.368812859187 62.96692845455881,8.344936859325895 62.98542716061291,8.318407970591332 62.993355177493235,8.34758974819935 63.00788987510717,8.43778796989686 63.00788987510717,8.49349863623944 63.015817891987496,8.469622636378336 63.0224245727211,8.432482192149948 63.015817891987496,8.382077303554281 63.01449655584077,8.34758974819935 63.01978190042766,8.307796415097508 63.00788987510717,8.217598193399997 63.02770991730799,8.214945304526541 63.03431659804159,8.236168415514191 63.05017263180225,8.230862637767279 63.0660286655629,8.191069304665437 63.07924202703011,8.177804860298156 63.088491380057164,8.183110638045068 63.096419396937485,8.159234638183962 63.105668749964536,8.156581749310506 63.12284611987191,8.222903971146911 63.14002348977929,8.241474193261103 63.125488792165356,8.257391526501841 63.110954094551424,8.275961748616034 63.09906206923093,8.307796415097508 63.09245538849733,8.283920415236402 63.084527371617,8.283920415236402 63.07263534629651,8.323713748338246 63.07659935473667,8.326366637211702 63.09509806079077,8.31310219284442 63.103026077671096,8.326366637211702 63.1096327584047,8.273308859742578 63.11756077528503,8.241474193261103 63.14134482592601,8.275961748616034 63.147951506659616,8.33432530383207 63.14398749821945,8.368812859187 63.13209547289896,8.403300414541931 63.133416809045684,8.427176414403036 63.14134482592601,8.432482192149948 63.136059481339124,8.464316858631422 63.133416809045684,8.496151525112897 63.14002348977929,8.504110191733265 63.12945280060552,8.535944858214739 63.136059481339124,8.565126635822757 63.12152478372519,8.589002635683864 63.118882111431745,8.607572857798056 63.09509806079077,8.628795968785706 63.09509806079077,8.62614307991225 63.11491810299158,8.602267080051144 63.1281314644588,8.562473746949301 63.136059481339124,8.567779524696213 63.147951506659616,8.549209302582021 63.158522195833385,8.57043241356967 63.167771548860436,8.644713302026442 63.17173555730059,8.665936413014093 63.17966357418092,8.726952857103583 63.18627025491453,8.742870190344322 63.18230624647437,8.801233745560356 63.18627025491453,8.830415523168377 63.19419827179486,8.936531078106622 63.1968409440883,8.981630188955378 63.20212628867519,8.98693596670229 63.20873296940879,8.838374189788745 63.200804952528465,8.73756441259741 63.19287693564814,8.687159524001743 63.19419827179486,8.676547968507917 63.198162280235024,8.644713302026442 63.18891292720797,8.6049199689246 63.19419827179486,8.6049199689246 63.20609029711535,8.58369685793695 63.200804952528465,8.581043969063494 63.22458900316945,8.57043241356967 63.23515969234322,8.549209302582021 63.24176637307682,8.551862191455477 63.25365839839731,8.52798619159437 63.25497973454404,8.517374636100547 63.27347844059813,8.49349863623944 63.2774424490383,8.496151525112897 63.29197714665223,8.530639080467827 63.28933447435878,8.522680413847459 63.29990516353256,8.57043241356967 63.31179718885305,8.596961302304232 63.310475852706325,8.63940752427953 63.31972520573338,8.657977746393723 63.31576119729321,8.665936413014093 63.32236787802682,8.705729746115935 63.32633188646698,8.713688412736303 63.330295894907145,8.75082885696469 63.33425990334731,8.766746190205428 63.34086658408091,8.8410270786622 63.34483059252108,8.8410270786622 63.352758609401405,8.75082885696469 63.34483059252108,8.708382634989391 63.346151928667794,8.692465301748655 63.36861464316206,8.67389507963446 63.375221323895666,8.665936413014093 63.38711334921616,8.644713302026442 63.3897560215096,8.647366190899898 63.40164804683009,8.660630635267179 63.40957606371042,8.711035523862847 63.417504080590746,8.740217301470866 63.41354007215058,8.732258634850496 63.42146808903091,8.817151078801094 63.42939610591124,8.848985745282569 63.425432097471074,8.864903078523305 63.428074769764514,8.878167522890585 63.417504080590746,8.870208856270217 63.405612055270254,8.891431967257867 63.38711334921616,8.907349300498606 63.38711334921616,8.907349300498606 63.39504136609648,8.8834733006375 63.40957606371042,8.90469641162515 63.408254727563694,8.93122530035971 63.425432097471074,8.960407077967728 63.41354007215058,8.96571285571464 63.402969382976806,9.02142352205722 63.41221873600386,8.978977300081922 63.42146808903091,9.00020041106957 63.428074769764514,8.971018633461552 63.439966795085006,9.00020041106957 63.447894811965334,8.994894633322659 63.462429509579266,9.018770633183763 63.462429509579266,9.02938218867759 63.44657347581861,9.093051521640536 63.439966795085006,9.085092855020168 63.428074769764514,9.095704410513992 63.420146752884186,9.135497743615836 63.420146752884186,9.151415076856573 63.39372002994976,9.148762187983117 63.37654266004239,9.175291076717679 63.37918533233583,9.177943965591135 63.372578651602225,9.130191965868924 63.35672261784157,9.116927521501642 63.34483059252108,9.138150632489292 63.34086658408091,9.095704410513992 63.31840386958665,9.085092855020168 63.29197714665223,9.093051521640536 63.2840491297719,9.130191965868924 63.302547835826,9.127539076995468 63.310475852706325,9.143456410236205 63.31972520573338,9.183249743338047 63.32633188646698,9.204472854325697 63.34086658408091,9.238960409680626 63.330295894907145,9.23630752080717 63.346151928667794,9.268142187288646 63.34879460096124,9.29201818714975 63.36068662628173,9.363646186733067 63.36068662628173,9.469761741671315 63.380506668482546,9.501596408152789 63.39372002994976,9.493637741532421 63.397684038389926,9.453844408430577 63.38711334921616,9.371604853353436 63.375221323895666,9.321199964757769 63.375221323895666,9.25753063179482 63.36729330701534,9.228348854186802 63.372578651602225,9.231001743060258 63.39107735765632,9.215084409819521 63.383149340775994,9.18855552108496 63.39504136609648,9.177943965591135 63.41354007215058,9.18855552108496 63.42939610591124,9.217737298692978 63.4333601143514,9.225695965313346 63.425432097471074,9.233654631933714 63.43600278664484,9.25753063179482 63.4333601143514,9.270795076162102 63.442609467378446,9.284059520529382 63.4333601143514,9.302629742643575 63.439966795085006,9.358340408986155 63.447894811965334,9.371604853353436 63.44657347581861,9.443232852936752 63.46639351801943,9.498943519279333 63.45978683728582,9.501596408152789 63.482249551780086,9.440579964063296 63.473000198753034,9.398133742087998 63.45978683728582,9.376910631100348 63.462429509579266,9.366299075606523 63.455822828845655,9.342423075745419 63.455822828845655,9.347728853492331 63.46903619031287,9.323852853631225 63.47432153489976,9.284059520529382 63.495462913247295,9.273447965035558 63.495462913247295,9.281406631655926 63.47828554333992,9.297323964896663 63.47828554333992,9.284059520529382 63.465072181872706,9.329158631378137 63.465072181872706,9.329158631378137 63.45450149269894,9.297323964896663 63.44657347581861,9.286712409402838 63.455822828845655,9.241613298554082 63.447894811965334,9.225695965313346 63.447894811965334,9.225695965313346 63.455822828845655,9.175291076717679 63.4584655011391,9.180596854464591 63.46639351801943,9.167332410097309 63.482249551780086,9.14610929910966 63.48621356022025,9.201819965452241 63.50339093012762,9.217737298692978 63.515282955448114,9.231001743060258 63.51660429159483,9.254877742921364 63.50339093012762,9.249571965174452 63.490177568660414,9.262836409541732 63.490177568660414,9.27875374278247 63.5086762747145,9.262836409541732 63.50735493856779,9.244266187427538 63.52321097232844,9.29201818714975 63.527174980768606,9.294671076023207 63.515282955448114,9.315894187010855 63.52321097232844,9.323852853631225 63.53378166150221,9.360993297859611 63.55360170370303,9.400786630961454 63.55624437599647,9.384869297720716 63.515282955448114,9.408745297581822 63.49678424939402,9.427315519696016 63.50339093012762,9.408745297581822 63.52585364462188,9.443232852936752 63.537745669942375,9.445885741810208 63.55624437599647,9.485679074912053 63.57210040975713,9.504249297026245 63.5641723928768,9.533431074634262 63.56945773746368,9.562612852242282 63.56152972058336,9.573224407736106 63.53113898920877,9.586488852103386 63.53378166150221,9.575877296609562 63.5641723928768,9.559959963368826 63.57210040975713,9.567918629989194 63.580028426637455,9.544042630128088 63.58399243507762,9.520166630266981 63.580028426637455,9.493637741532421 63.580028426637455,9.517513741393525 63.58663510737106,9.525472408013893 63.599848468838275,9.567918629989194 63.60645514957188,9.599753296470666 63.62098984718581,9.650158185066335 63.62098984718581,9.689951518168177 63.63684588094647,9.724439073523108 63.644773897826795,9.750967962257668 63.644773897826795,9.737703517890388 63.624953855625975,9.71648040690274 63.61438316645221,9.737703517890388 63.61702583874565,9.761579517751494 63.59059911581122,9.753620851131124 63.582671098930895,9.7854555176126 63.57606441819729,9.788108406486057 63.56152972058336,9.809331517473705 63.557565712143195,9.833207517334811 63.5390670060891,9.822595961840985 63.527174980768606,9.804025739726793 63.515282955448114,9.851777739449005 63.50074825783418,9.843819072828635 63.484892224073526,9.904835516918128 63.470357526459594,9.907488405791584 63.45978683728582,9.979116405374901 63.442609467378446,9.957893294387251 63.40164804683009,9.941975961146515 63.372578651602225,9.907488405791584 63.34879460096124,9.880959517057022 63.34483059252108,9.814637295220617 63.31972520573338,9.86238929494283 63.31179718885305,9.891571072550846 63.32633188646698,9.949934627766883 63.34086658408091,9.960546183260707 63.34879460096124,10.000339516362551 63.34483059252108,10.03482707171748 63.34879460096124,10.05605018270513 63.34483059252108,10.074620404819324 63.323689214173534,10.101149293553885 63.32897455876042,10.148901293276097 63.31972520573338,10.16747151539029 63.310475852706325,10.209917737365588 63.32236787802682,10.231140848353238 63.34483059252108,10.146248404402641 63.34483059252108,10.125025293414991 63.352758609401405,10.106455071300797 63.352758609401405,10.085231960313148 63.3712573154555,10.071967515945868 63.3712573154555,10.05605018270513 63.385792013069434,10.064008849325498 63.402969382976806,10.114413737921165 63.425432097471074,10.140942626655727 63.42411076132435,10.18073595975757 63.447894811965334,10.233793737226694 63.45450149269894,10.300115959063099 63.4584655011391,10.34786795878531 63.447894811965334,10.355826625405678 63.43203877820468,10.4088844028748 63.439966795085006,10.443371958229733 63.455822828845655,10.467247958090837 63.45185882040549,10.469900846964293 63.439966795085006,10.499082624572312 63.4333601143514,10.557446179788347 63.42939610591124,10.602545290637103 63.44393080352517,10.615809735004383 63.43864545893828,10.63968573486549 63.44393080352517,10.666214623600052 63.43600278664484,10.767024400791385 63.42939610591124,10.782941734032123 63.41354007215058,10.809470622766685 63.417504080590746,10.804164845019773 63.4333601143514,10.838652400374702 63.4333601143514,10.862528400235808 63.44393080352517,10.899668844464195 63.44657347581861,10.907627511084563 63.45185882040549,10.907627511084563 63.46903619031287,10.897015955590739 63.473000198753034,10.883751511223458 63.465072181872706,10.878445733476546 63.47432153489976,10.838652400374702 63.470357526459594,10.812123511640142 63.470357526459594,10.774983067411753 63.484892224073526,10.756412845297561 63.50074825783418,10.756412845297561 63.51924696388828,10.772330178538297 63.537745669942375,10.835999511501246 63.5390670060891,10.894363066717283 63.5456736868227,10.934156399819125 63.56152972058336,10.907627511084563 63.560208384436635,10.915586177704931 63.56813640131696,10.859875511362352 63.56152972058336,10.870487066856178 63.57210040975713,10.849263955868526 63.57342174590384,10.873139955729634 63.58795644351778,10.899668844464195 63.58399243507762,10.918239066578387 63.58663510737106,10.891710177843827 63.59192045195795,10.934156399819125 63.61041915801204,10.897015955590739 63.61041915801204,10.843958178121614 63.59192045195795,10.80681773389323 63.58399243507762,10.82008217826051 63.580028426637455,10.790900400652491 63.57870709049073,10.767024400791385 63.56813640131696,10.748454178677193 63.565493729023515,10.737842623183369 63.57342174590384,10.72192528994263 63.56152972058336,10.70866084557535 63.56152972058336,10.682131956840788 63.5456736868227,10.647644401485858 63.537745669942375,10.623768401624751 63.54699502296942,10.647644401485858 63.557565712143195,10.666214623600052 63.55624437599647,10.676826179093876 63.580028426637455,10.70070217895498 63.59192045195795,10.70070217895498 63.60645514957188,10.72192528994263 63.62098984718581,10.740495512056825 63.62098984718581,10.780288845158667 63.63684588094647,10.804164845019773 63.6328818725063,10.841305289248158 63.63684588094647,10.857222622488896 63.65534458700056,10.870487066856178 63.65666592314729,10.907627511084563 63.68177130993499,10.931503510945669 63.689699326815315,10.955379510806775 63.70159135213581,11.00047862165553 63.70159135213581,11.011090177149354 63.7134833774563,11.045577732504285 63.709519369016135,11.045577732504285 63.69366333525548,11.11189995434069 63.70819803286941,11.151693287442532 63.70423402442925,11.149040398569076 63.71612604974974,11.186180842797462 63.712162041309575,11.210056842658567 63.7200900581899,11.204751064911655 63.754444798004656,11.239238620266587 63.754444798004656,11.27107328674806 63.76633682332515,11.286990619988796 63.75048078956449,11.329436841964096 63.754444798004656,11.345354175204832 63.76237281488498,11.329436841964096 63.77030083176531,11.371883063939395 63.77294350405875,11.390453286053589 63.78087152093908,11.422287952535061 63.76633682332515,11.440858174649255 63.784835529379244,11.432899508028886 63.79540621855301,11.462081285636906 63.80333423543334,11.4382052857758 63.81126225231367,11.401064841547413 63.81522626075383,11.401064841547413 63.82315427763416,11.432899508028886 63.821832941487436,11.4382052857758 63.832403630661204,11.419635063661605 63.83372496680793,11.3957590638005 63.84825966442186,11.369230175065939 63.83372496680793,11.316172397596816 63.83768897524809,11.30556084210299 63.84825966442186,11.316172397596816 63.852223672862024,11.300255064356078 63.864115698182516,11.334742619711008 63.857509017448905,11.355965730698657 63.864115698182516,11.377188841686307 63.87997173194317,11.348007064078288 63.89318509341038,11.358618619572113 63.91036246331775,11.377188841686307 63.91036246331775,11.369230175065939 63.92093315249153,11.385147508306677 63.94603853927923,11.37453595281285 63.95000254771939,11.342701286331376 63.936789186252184,11.342701286331376 63.92357582478497,11.318825286470272 63.9130051356112,11.329436841964096 63.894506429557104,11.30556084210299 63.87997173194317,11.300255064356078 63.87072237891612,11.268420397874603 63.86807970662268,11.244544398013499 63.86015168974235,11.231279953646217 63.87072237891612,11.220668398152393 63.86279436203579,11.191486620544374 63.85618768130219,11.178222176177094 63.84561699212842,11.13842884307525 63.83768897524809,11.093329732226497 63.83768897524809,11.082718176732671 63.841652983688256,11.072106621238847 63.86279436203579,11.074759510112303 63.883935740383336,11.114552843214145 63.89847043799727,11.127817287581426 63.90639845487759,11.154346176315988 63.90507711873087,11.186180842797462 63.916969144051365,11.204751064911655 63.919611816344805,11.20740395378511 63.936789186252184,11.255155953507323 63.95132388386612,11.279031953368428 63.97642927065382,11.310866619849904 63.96982258992021,11.316172397596816 63.961894573039885,11.3533128418252 63.97378659836038,11.38249461943322 63.967179917626765,11.38249461943322 63.98039327909398,11.401064841547413 63.97775060680054,11.483304396624554 64.0068200020284,11.43024661915543 64.01342668276202,11.443511063522712 64.02135469964234,11.43024661915543 64.02928271652267,11.37453595281285 64.0187120273489,11.363924397319026 64.03853206954972,11.318825286470272 64.03060405266939,11.316172397596816 64.03853206954972,11.279031953368428 64.03456806110955,11.263114620127691 64.02664004422923,11.241891509140043 64.02664004422923,11.233932842519673 64.07156547321775,11.279031953368428 64.07552948165791,11.350659952951744 64.09799219615218,11.387800397180133 64.10327754073906,11.385147508306677 64.11120555761939,11.334742619711008 64.11120555761939,11.310866619849904 64.11516956605955,11.302907953229534 64.10327754073906,11.318825286470272 64.0993135322989,11.30556084210299 64.09138551541857,11.265767509001147 64.07949349009807,11.218015509278937 64.0742081455112,11.204751064911655 64.05174543101693,11.220668398152393 64.02267603578906,11.202098176038199 64.0068200020284,11.164957731809814 63.9936066405612,11.109247065467233 63.984357287534145,11.016395954896268 63.95528789230628,11.011090177149354 63.94603853927923,10.989867066161704 63.94339586698579,10.939462177566037 63.916969144051365,10.920891955451843 63.90507711873087,10.849263955868526 63.88261440423661,10.711313734448806 63.84825966442186,10.6874377345877 63.84561699212842,10.605198179510559 63.809940916166944,10.594586624016735 63.79672755469973,10.647644401485858 63.81522626075383,10.666214623600052 63.81522626075383,10.695396401208068 63.84033164754153,10.753759956424105 63.84825966442186,10.767024400791385 63.84561699212842,10.812123511640142 63.852223672862024,10.849263955868526 63.864115698182516,10.85456973361544 63.87072237891612,10.963338177427143 63.90507711873087,10.971296844047512 63.894506429557104,11.042924843630828 63.87865039579645,11.04823062137774 63.857509017448905,11.066800843491933 63.841652983688256,11.064147954618477 63.83768897524809,10.995172843908616 63.81786893304727,11.008437288275898 63.79540621855301,10.955379510806775 63.74651678112433,10.944767955312951 63.738588764244,10.796206178399403 63.70819803286941,10.774983067411753 63.70819803286941,10.711313734448806 63.69366333525548,10.679479067967332 63.68177130993499,10.626421290498207 63.67516462920138,10.610503957257471 63.66591527617433,10.607851068384015 63.64873790626696,10.557446179788347 63.624953855625975,10.530917291053786 63.62231118333253,10.507041291192682 63.61041915801204,10.45928929147047 63.599848468838275,10.45928929147047 63.59192045195795,10.419495958368627 63.58795644351778,10.419495958368627 63.56813640131696,10.355826625405678 63.57342174590384,10.305421736810011 63.55360170370303,10.233793737226694 63.55624437599647,10.209917737365588 63.54963769526287,10.209917737365588 63.5390670060891,10.156859959896465 63.52321097232844,10.119719515668077 63.50074825783418,10.101149293553885 63.492820240953854,10.045438627211304 63.490177568660414,10.018909738476744 63.492820240953854,9.989727960868725 63.48621356022025,9.98707507199527 63.495462913247295,9.949934627766883 63.495462913247295,9.934017294526146 63.50074825783418,9.907488405791584 63.535102997648934,9.923405739032322 63.54303101452926,9.894223961424302 63.56152972058336,9.899529739171214 63.57342174590384,9.926058627905778 63.582671098930895,9.918099961285408 63.59192045195795,9.854430628322461 63.58663510737106,9.817290184094073 63.61041915801204,9.806678628600249 63.62891786406614,9.859736406069374 63.64080988938663,9.822595961840985 63.647416570120235,9.822595961840985 63.65666592314729,9.801372850853337 63.660629931587444,9.825248850714441 63.67120062076122,9.811984406347161 63.683092646081704,9.851777739449005 63.689699326815315,9.865042183816286 63.67780730149482,9.873000850436654 63.689699326815315,9.918099961285408 63.70159135213581,9.918099961285408 63.69762734369564,9.960546183260707 63.69630600754892,9.936670183399603 63.70819803286941,9.979116405374901 63.7200900581899,9.979116405374901 63.70819803286941,10.07727329369278 63.73066074736367,10.082579071439692 63.738588764244,10.130331071161903 63.75312346185793,10.07727329369278 63.74915945341777,10.037479960590936 63.731982083510395,10.013603960729831 63.72801807507023,10.018909738476744 63.738588764244,10.03482707171748 63.74651678112433,10.040132849464392 63.757087470298096,10.07727329369278 63.76237281488498,10.071967515945868 63.76897949561859,10.117066626794621 63.776907512498916,10.117066626794621 63.784835529379244,10.064008849325498 63.77558617635219,10.029521293970568 63.76237281488498,9.981769294248357 63.754444798004656,9.934017294526146 63.754444798004656,9.91014129466504 63.742552772684164,9.87565373931011 63.734624755803836,9.880959517057022 63.72801807507023,9.846471961702091 63.71876872204318,9.827901739587897 63.722732730483344,9.804025739726793 63.709519369016135,9.748315073384212 63.70423402442925,9.737703517890388 63.69630600754892,9.67403418492744 63.70159135213581,9.663422629433615 63.69366333525548,9.663422629433615 63.67516462920138,9.636893740699055 63.67780730149482,9.591794629850298 63.67384329305466,9.565265741115738 63.65534458700056,9.544042630128088 63.660629931587444,9.575877296609562 63.68573531837515,9.575877296609562 63.709519369016135,9.549348407875 63.7200900581899,9.620976407458317 63.72801807507023,9.623629296331773 63.731982083510395,9.668728407180527 63.738588764244,9.697910184788546 63.754444798004656,9.766885295498406 63.76237281488498,9.804025739726793 63.76105147873826,9.79871996197988 63.76897949561859,9.753620851131124 63.76897949561859,9.71648040690274 63.76237281488498,9.613017740837948 63.757087470298096,9.581183074356474 63.76237281488498,9.562612852242282 63.77294350405875,9.589141740976842 63.787478201672684,9.607711963091035 63.79144221011285,9.607711963091035 63.799370226993176,9.658116851686703 63.809940916166944,9.67403418492744 63.81786893304727,9.663422629433615 63.82315427763416,9.623629296331773 63.81522626075383,9.634240851825599 63.829760958367764,9.666075518307071 63.83372496680793,9.676687073800895 63.844295655981696,9.72974485127002 63.852223672862024,9.721786184649652 63.85618768130219,9.753620851131124 63.864115698182516,9.76423240662495 63.85618768130219,9.804025739726793 63.86015168974235,9.814637295220617 63.857509017448905,9.79871996197988 63.841652983688256,9.697910184788546 63.827118286074324,9.69525729591509 63.81522626075383,9.735050629016932 63.82315427763416,9.769538184371862 63.821832941487436,9.780149739865688 63.829760958367764,9.817290184094073 63.83768897524809,9.817290184094073 63.84825966442186,9.835860406208267 63.852223672862024,9.851777739449005 63.844295655981696,9.865042183816286 63.852223672862024,9.883612405930478 63.852223672862024,9.886265294803934 63.87072237891612,9.859736406069374 63.85618768130219,9.827901739587897 63.872043715062844,9.88891818367739 63.89318509341038,9.923405739032322 63.89847043799727,9.93136440565269 63.89054242111694,9.957893294387251 63.894506429557104,9.926058627905778 63.88261440423661,9.934017294526146 63.872043715062844,10.029521293970568 63.90904112717104,10.111760849047709 63.92357582478497,10.109107960174253 63.92753983322513,10.156859959896465 63.93282517781202,10.186041737504482 63.94075319469235,10.188694626377938 63.92886116937186,10.215223515112502 63.92357582478497,10.220529292859414 63.936789186252184,10.204611959618676 63.93546785010546,10.204611959618676 63.94735987542595,10.225835070606326 63.94735987542595,10.22318218173287 63.959251900746445,10.183388848631026 63.95000254771939,10.188694626377938 63.959251900746445,10.140942626655727 63.94603853927923,10.106455071300797 63.94075319469235,10.10380218242734 63.95793056459972,10.22318218173287 63.99757064900136,10.20195907074522 63.99757064900136,10.106455071300797 63.9632159091866,10.079926182566236 63.96585858148005,10.119719515668077 63.98039327909398,10.098496404680429 63.97775060680054,10.042785738337848 63.961894573039885,10.026868405097112 63.961894573039885,9.955240405513795 63.95000254771939,9.952587516640339 63.959251900746445,9.981769294248357 63.97642927065382,10.002992405236007 63.97642927065382,10.000339516362551 63.99889198514808,10.050744404958218 63.984357287534145,10.050744404958218 63.9936066405612,10.005645294109463 64.0068200020284,10.005645294109463 64.0187120273489,10.029521293970568 64.02664004422923,10.05605018270513 64.01474801890873,10.064008849325498 64.02267603578906,10.03482707171748 64.03456806110955,10.064008849325498 64.03853206954972,10.082579071439692 64.05042409487021,10.061355960452042 64.05438810331037,10.018909738476744 64.08213616239152,10.037479960590936 64.07949349009807,10.026868405097112 64.09799219615218,10.071967515945868 64.10724154917922,10.143595515529185 64.07817215395136,10.252363959340887 64.10063486844561,10.252363959340887 64.11516956605955,10.207264848492132 64.10327754073906,10.175430182010658 64.10327754073906,10.132983960035359 64.11120555761939,10.119719515668077 64.12838292752676,10.156859959896465 64.14556029743413,10.183388848631026 64.1561309866079,10.220529292859414 64.14423896128741,10.228487959479782 64.14820296972758,10.215223515112502 64.16141633119479,10.22318218173287 64.17595102880873,10.186041737504482 64.18387904568905,10.196653292998308 64.20105641559643,10.228487959479782 64.20105641559643,10.252363959340887 64.18520038183577,10.265628403708167 64.18520038183577,10.247058181593975 64.20502042403659,10.281545736948905 64.20502042403659,10.284198625822361 64.19180706256938,10.300115959063099 64.18520038183577,10.308074625683467 64.20105641559643,10.300115959063099 64.2116271047702,10.350520847658766 64.20502042403659,10.36909106977296 64.19180706256938,10.358479514279134 64.17727236495544,10.374396847519872 64.17727236495544,10.39561995850752 64.20105641559643,10.342562181038398 64.21691244935708,10.292157292442731 64.22484046623741,10.273587070328537 64.23408981926445,10.297463070189643 64.24598184458495,10.323991958924204 64.24598184458495,10.358479514279134 64.25787386990544,10.331950625544572 64.26580188678577,10.36909106977296 64.28297925669314,10.406231514001345 64.25390986146527,10.424801736115539 64.25390986146527,10.39561995850752 64.27769391210626,10.406231514001345 64.28165792054642,10.403578625127889 64.29487128201363,10.435413291609365 64.2988352904538,10.435413291609365 64.28562192898659,10.451330624850101 64.27769391210626,10.467247958090837 64.28165792054642,10.448677735976645 64.29090727357347,10.467247958090837 64.29751395430708,10.491123957951944 64.2869432651333,10.507041291192682 64.3054419711874,10.475206624711205 64.2988352904538,10.451330624850101 64.30676330733412,10.45928929147047 64.31469132421445,10.446024847103189 64.32261934109478,10.469900846964293 64.3305473579751,10.451330624850101 64.33979671100215,10.446024847103189 64.35168873632264,10.483165291331574 64.35829541705625,10.565404846408716 64.32790468568166,10.581322179649455 64.33186869412182,10.512347068939594 64.3556527447628,10.509694180066138 64.37283011467018,10.578669290775998 64.3675447700833,10.615809735004383 64.33979671100215,10.650297290359314 64.3556527447628,10.682131956840788 64.36225942549642,10.63968573486549 64.35961675320297,10.610503957257471 64.36622343393658,10.626421290498207 64.37150877852346,10.602545290637103 64.38736481228412,10.573363513029085 64.38340080384395,10.56275195753526 64.38868614843084,10.581322179649455 64.39529282916445,10.56275195753526 64.40322084604477,10.499082624572312 64.39529282916445,10.483165291331574 64.38736481228412,10.451330624850101 64.40718485448494,10.536223068800698 64.4362542497128,10.56275195753526 64.42039821595215,10.586627957396367 64.41643420751198,10.607851068384015 64.392650156871,10.63968573486549 64.39132882072428,10.615809735004383 64.40850619063166,10.642338623738945 64.4111488629251,10.626421290498207 64.41643420751198,10.607851068384015 64.41643420751198,10.605198179510559 64.42436222439231,10.581322179649455 64.42436222439231,10.549487513167978 64.43889692200625,10.570710624155629 64.44153959429968,10.589280846269823 64.4362542497128,10.599892401763647 64.45607429191362,10.615809735004383 64.45739562806034,10.650297290359314 64.44021825815297,10.682131956840788 64.41247019907182,10.751107067550649 64.41511287136527,10.751107067550649 64.38736481228412,10.759065734171017 64.37679412311034,10.796206178399403 64.38472213999067,10.82008217826051 64.3675447700833,10.841305289248158 64.37150877852346,10.822735067133966 64.38868614843084,10.782941734032123 64.40454218219149,10.82008217826051 64.41511287136527,10.801511956146317 64.42832623283248,10.809470622766685 64.4362542497128,10.761718623044473 64.43229024127264,10.745801289803737 64.44418226659313,10.740495512056825 64.42832623283248,10.70070217895498 64.42436222439231,10.695396401208068 64.4362542497128,10.658255956979684 64.44418226659313,10.655603068106227 64.45607429191362,10.690090623461156 64.45739562806034,10.692743512334612 64.47721567026116,10.70866084557535 64.47721567026116,10.735189734309913 64.46532364494067,10.737842623183369 64.45739562806034,10.756412845297561 64.45607429191362,10.764371511917929 64.46532364494067,10.759065734171017 64.473251661821,10.769677289664841 64.48117967870132,10.812123511640142 64.473251661821,10.828040844880878 64.45343161962018,10.862528400235808 64.45343161962018,10.822735067133966 64.473251661821,10.838652400374702 64.47721567026116,10.793553289525947 64.49703571246198,10.788247511779035 64.51024907392919,10.835999511501246 64.50628506548902,10.873139955729634 64.4983570486087,10.894363066717283 64.46796631723412,10.907627511084563 64.47193032567428,10.891710177843827 64.49307170402182,10.88905728897037 64.50628506548902,10.907627511084563 64.50099972090214,10.907627511084563 64.5168557546628,10.950073733059863 64.50628506548902,10.973949732920968 64.49703571246198,10.947420844186407 64.52081976310296,10.976602621794424 64.53271178842346,10.960685288553687 64.5419611414505,10.934156399819125 64.57103053667836,10.918239066578387 64.5670665282382,10.907627511084563 64.57895855355869,10.944767955312951 64.58688657043902,10.947420844186407 64.59877859575951,10.9659910663006 64.60670661263984,11.00047862165553 64.59481458731935,11.00047862165553 64.5855652342923,11.02170173264318 64.58688657043902,11.072106621238847 64.56574519209148,11.072106621238847 64.53799713301034,11.082718176732671 64.53403312457017,11.072106621238847 64.51421308236935,11.090676843353041 64.51421308236935,11.098635509973409 64.52610510768984,11.1596519540629 64.49307170402182,11.16761062068327 64.49439304016853,11.188833731670918 64.48117967870132,11.191486620544374 64.46928765338083,11.1596519540629 64.44418226659313,11.191486620544374 64.43889692200625,11.223321287025849 64.45211028347346,11.244544398013499 64.4481462750333,11.29229639773571 64.46400230879395,11.342701286331376 64.46003830035379,11.342701286331376 64.44153959429968,11.294949286609166 64.4481462750333,11.294949286609166 64.44021825815297,11.34004839745792 64.4362542497128,11.31351950872336 64.38736481228412,11.279031953368428 64.37547278696363,11.223321287025849 64.3305473579751,11.212709731532023 64.31336998806773,11.23658573139313 64.31336998806773,11.27107328674806 64.35433140861609,11.332089730837552 64.37283011467018,11.337395508584464 64.39132882072428,11.37453595281285 64.39661416531116,11.393106174927045 64.37943679540379,11.377188841686307 64.37943679540379,11.358618619572113 64.36622343393658,11.387800397180133 64.36358076164314,11.409023508167781 64.3675447700833,11.387800397180133 64.40454218219149,11.371883063939395 64.40454218219149,11.350659952951744 64.41907687980543,11.385147508306677 64.42832623283248,11.38249461943322 64.43493291356609,11.406370619294325 64.44418226659313,11.446163952396168 64.43229024127264,11.52044484085294 64.4481462750333,11.517791951979484 64.4613596365005,11.49922172986529 64.46003830035379,11.480651507751098 64.46796631723412,11.462081285636906 64.45343161962018,11.440858174649255 64.45211028347346,11.443511063522712 64.46928765338083,11.424940841408517 64.47589433411444,11.443511063522712 64.48514368714149,11.462081285636906 64.5168557546628,11.512486174232572 64.51421308236935,11.536362174093679 64.51817709080952,11.52044484085294 64.53403312457017,11.509833285359116 64.52610510768984,11.491263063244922 64.52610510768984,11.49922172986529 64.53667579686362,11.48595728549801 64.5419611414505,11.523097729726397 64.54592514989066,11.52044484085294 64.55781717521116,11.573502618322063 64.55517450291771,11.544320840714047 64.53403312457017,11.557585285081327 64.53403312457017,11.621254618044276 64.56574519209148,11.72206439523561 64.58160122585214,11.783080839325102 64.58688657043902,11.780427950451646 64.59085057887918,11.716758617488697 64.58952924273247,11.692882617627593 64.59481458731935,11.650436395652292 64.57895855355869,11.639824840158468 64.58292256199886,11.610643062550452 64.57103053667836,11.621254618044276 64.58688657043902,11.610643062550452 64.5855652342923,11.629213284664644 64.61463462952017,11.602684395930083 64.61859863796033,11.546973729587503 64.60274260419968,11.552279507334415 64.59877859575951,11.589419951562801 64.60406394034639,11.602684395930083 64.5974572596128,11.594725729309713 64.58292256199886,11.552279507334415 64.56574519209148,11.536362174093679 64.56574519209148,11.491263063244922 64.57763721741198,11.48595728549801 64.5855652342923,11.4382052857758 64.60406394034639,11.432899508028886 64.61463462952017,11.398411952673957 64.63181199942754,11.3957590638005 64.64238268860132,11.411676397041237 64.6476680331882,11.385147508306677 64.65427471392181,11.379841730559763 64.66880941153573,11.393106174927045 64.68730811758984,11.41698217478815 64.67938010070951,11.4382052857758 64.69127212603,11.427593730281973 64.69920014291033,11.406370619294325 64.70052147905704,11.403717730420869 64.71241350437754,11.427593730281973 64.70844949593737,11.52044484085294 64.72826953813819,11.533709285220223 64.73751889116524,11.52840350747331 64.74941091648573,11.546973729587503 64.75601759721934,11.581461284942433 64.74412557189885,11.600031507056627 64.7414828996054,11.634519062411556 64.7533749249259,11.623907506917732 64.76130294180622,11.581461284942433 64.75601759721934,11.565543951701695 64.76130294180622,11.600031507056627 64.77187363098,11.629213284664644 64.76790962253983,11.650436395652292 64.77583763942016,11.663700840019574 64.76923095868655,11.708799950868329 64.77319496712671,11.72206439523561 64.7850869924472,11.740634617349803 64.77319496712671,11.793692394818926 64.77319496712671,11.849403061161507 64.7969790177677,11.783080839325102 64.80490703464802,11.780427950451646 64.79433634547425,11.740634617349803 64.79301500932753,11.745940395096717 64.80887104308819,11.703494173121417 64.80490703464802,11.676965284386856 64.81812039611523,11.639824840158468 64.81415638767507,11.639824840158468 64.8220844045554,11.796345283692382 64.83794043831605,11.775122172704734 64.84190444675622,11.809609728059664 64.85908181666359,11.796345283692382 64.8656884973972,11.756551950590541 64.84322578290293,11.719411506362153 64.83794043831605,11.655742173399206 64.8352977660226,11.671659506639942 64.85908181666359,11.708799950868329 64.86304582510375,11.690229728754137 64.87097384198408,11.897155060883719 64.91457793482589,11.952865727226298 64.9343979770267,12.021840837936159 64.9277912962931,12.037758171176897 64.94364733005375,12.064287059911457 64.94761133849391,12.074898615405282 64.95553935537424,12.096121726392932 64.9528966830808,12.106733281886756 64.9595033638144,12.146526614988598 64.96082469996112,12.175708392596617 64.95553935537424,12.191625725837355 64.9410046577603,12.167749725976249 64.93175530473326,12.199584392457723 64.93175530473326,12.242030614433022 64.93836198546687,12.247336392179934 64.9343979770267,12.287129725281776 64.9343979770267,12.295088391902144 64.9277912962931,12.372022169232373 64.91854194326605,12.440997279942234 64.88550853959802,12.456914613182972 64.88947254803819,12.390592391346567 64.92382728785293,12.316311502889794 64.93968332161359,12.300394169649056 64.94496866620047,12.252642169926846 64.94893267464063,12.24998928105339 64.94496866620047,12.199584392457723 64.94761133849391,12.188972836963899 64.95553935537424,12.15183239273551 64.96743138069473,12.117344837380582 64.9713953891349,12.085510170899106 64.96478870840129,12.05632839329109 64.9713953891349,12.024493726809615 64.96082469996112,12.029799504556527 64.95553935537424,12.00592350469542 64.94496866620047,11.952865727226298 64.94893267464063,11.910419505251 64.9277912962931,11.796345283692382 64.90400724565211,11.68757683988068 64.8775805227177,11.613295951423908 64.8656884973972,11.621254618044276 64.85908181666359,11.655742173399206 64.86172448895704,11.639824840158468 64.83794043831605,11.613295951423908 64.82604841299556,11.565543951701695 64.8220844045554,11.552279507334415 64.81283505152835,11.52044484085294 64.81679905996852,11.509833285359116 64.80887104308819,11.45942839676345 64.80887104308819,11.467387063383818 64.79301500932753,11.393106174927045 64.75205358877918,11.3533128418252 64.74544690804557,11.332089730837552 64.74544690804557,11.249850175760411 64.72826953813819,11.218015509278937 64.72562686584475,11.191486620544374 64.74412557189885,11.25780884238078 64.7533749249259,11.279031953368428 64.74808958033901,11.308213730976448 64.7599816056595,11.34004839745792 64.76130294180622,11.366577286192483 64.77319496712671,11.414329285914693 64.80094302620786,11.446163952396168 64.80887104308819,11.443511063522712 64.81415638767507,11.411676397041237 64.80622837079474,11.342701286331376 64.80490703464802,11.310866619849904 64.8101923792349,11.329436841964096 64.8220844045554,11.294949286609166 64.81679905996852,11.29229639773571 64.80887104308819,11.244544398013499 64.80622837079474,11.265767509001147 64.82472707684884,11.260461731254235 64.83133375758244,11.308213730976448 64.83794043831605,11.27107328674806 64.83926177446277,11.276379064494972 64.84586845519638,11.409023508167781 64.8656884973972,11.525750618599853 64.86304582510375,11.531056396346766 64.86965250583737,11.565543951701695 64.87097384198408,11.570849729448607 64.86700983354392,11.60533728480354 64.87890185886441,11.66635372889303 64.88682987574474,11.703494173121417 64.9026859095054,11.684923951007224 64.90664991794556,11.637171951285012 64.89475789262507,11.560238173954783 64.87890185886441,11.454122619016537 64.87097384198408,11.411676397041237 64.87361651427753,11.281684842241884 64.85379647207671,11.276379064494972 64.86700983354392,11.329436841964096 64.8907938841849,11.3533128418252 64.89475789262507,11.3533128418252 64.9026859095054,11.45942839676345 64.93571931317342,11.480651507751098 64.92646996014638,11.54166795184059 64.88682987574474,11.568196840575151 64.89211522033162,11.560238173954783 64.89872190106523,11.59737861818317 64.92382728785293,11.565543951701695 64.91854194326605,11.539015062967135 64.9026859095054,11.52044484085294 64.9158992709726,11.475345730004186 64.93571931317342,11.509833285359116 64.94893267464063,11.565543951701695 64.95686069152096,11.570849729448607 64.94364733005375,11.589419951562801 64.9595033638144,11.60533728480354 64.96082469996112,11.629213284664644 64.94496866620047,11.626560395791188 64.9343979770267,11.655742173399206 64.9343979770267,11.647783506778836 64.94364733005375,11.613295951423908 64.96478870840129,11.650436395652292 64.96875271684145,11.6743123955134 64.96082469996112,11.655742173399206 64.95157534693408,11.727370172982523 64.9528966830808,11.732675950729435 64.96743138069473,11.783080839325102 64.98328741445539,11.716758617488697 64.9846087506021,11.719411506362153 64.97535939757506,11.70084128424796 64.98328741445539,11.639824840158468 64.98064474216194,11.61860172917082 64.97668073372178,11.592072840436257 64.97668073372178,11.613295951423908 64.9965007759226,11.637171951285012 65.00442879280293,11.6743123955134 65.0097141373898,11.669006617766486 65.00046478436276,11.684923951007224 65.00046478436276,11.698188395374505 65.01632081812342,11.711452839741785 65.01632081812342,11.730023061855979 65.00046478436276,11.748593283970173 64.9965007759226,11.775122172704734 65.00310745665621,11.772469283831278 64.99253676748243,11.793692394818926 64.99517943977588,11.788386617072014 65.00839280124309,11.809609728059664 65.02028482656358,11.836138616794226 65.02028482656358,11.928989727365192 65.05728223867177,11.952865727226298 65.05860357481849,11.947559949479386 65.07313827243243,11.921031060744824 65.06653159169882,11.84675017228805 65.03746219647095,11.780427950451646 65.01632081812342,11.748593283970173 65.0097141373898,11.737981728476347 65.02424883500375,11.756551950590541 65.04539021335128,11.793692394818926 65.07049560013898,11.836138616794226 65.08635163389964,11.814915505806576 65.08635163389964,11.854708838908419 65.11409969298079,11.899807949757175 65.127313054448,11.905113727504087 65.13788374362177,11.984700393707772 65.16166779426275,11.990006171454684 65.1709171472898,12.019187949062703 65.16298913040947,12.035105282303439 65.14713309664882,12.003270615821965 65.11277835683407,11.990006171454684 65.11409969298079,11.950212838352842 65.1022076676603,11.995311949201596 65.10617167610046,11.990006171454684 65.08635163389964,12.013882171315789 65.09427965077997,12.043063948923809 65.0771022808726,12.066939948784913 65.07842361701931,12.06959283765837 65.08899430619309,12.053675504417633 65.10617167610046,12.08285728202565 65.1339197351816,12.088163059772562 65.11409969298079,12.1040803930133 65.11277835683407,12.13856794836823 65.11938503756767,12.114691948507126 65.12599171830128,12.109386170760212 65.13788374362177,12.119997726254038 65.15109710508898,12.11203905963367 65.17884516417013,12.117344837380582 65.18677318105046,12.154485281608967 65.19470119793078,12.159791059355879 65.20262921481111,12.202237281331179 65.21187856783816,12.226113281192283 65.21187856783816,12.242030614433022 65.19998654251766,12.265906614294128 65.19073718949062,12.276518169787952 65.1709171472898,12.295088391902144 65.16695313884964,12.2977412807756 65.15506111352914,12.234071947812652 65.11013568454062,12.300394169649056 65.11806370142095,12.337534613877445 65.11277835683407,12.329575947257077 65.09824365922013,12.300394169649056 65.08635163389964,12.234071947812652 65.0652102555521,12.17305550372316 65.05331823023161,12.12530350400095 65.05331823023161,12.093468837519476 65.06917426399227,11.976741727087404 65.07049560013898,11.960824393846666 65.0652102555521,12.077551504278738 65.06124624711194,12.117344837380582 65.04935422179145,12.098774615266388 65.04142620491112,12.133262170621318 65.04539021335128,12.159791059355879 65.04539021335128,12.181014170343529 65.03614086032424,12.19427861471081 65.01632081812342,12.175708392596617 64.9846087506021,12.210195947951547 64.99517943977588,12.212848836825003 65.02028482656358,12.181014170343529 65.04803288564473,12.247336392179934 65.05860357481849,12.252642169926846 65.05331823023161,12.321617280636707 65.06653159169882,12.326923058383619 65.08106628931276,12.385286613599655 65.0903156423398,12.411815502334218 65.08899430619309,12.427732835574954 65.0771022808726,12.459567502056428 65.0771022808726,12.480790613044078 65.08635163389964,12.494055057411359 65.10485033995374,12.480790613044078 65.10617167610046,12.44365016881569 65.08899430619309,12.401203946840392 65.09824365922013,12.43038572444841 65.1022076676603,12.448955946562602 65.11277835683407,12.483443501917534 65.11409969298079,12.502013724031727 65.12202770986111,12.539154168260113 65.13127706288816,12.586906167982324 65.12995572674144,12.586906167982324 65.13920507976849,12.655881278692185 65.16166779426275,12.671798611932921 65.17488115572996,12.714244833908221 65.19470119793078,12.738120833769326 65.1960225340775,12.77791416687117 65.21848524857177,12.793831500111907 65.21187856783816,12.79117861123845 65.22377059315865,12.825666166593379 65.25283998838651,12.857500833074855 65.27266003058733,12.93708749927854 65.30569343425536,12.960963499139645 65.30965744269552,12.966269276886557 65.31758545957585,12.942393277025452 65.33212015718979,12.83362483321375 65.27794537517421,12.801790166732275 65.25283998838651,12.76464972250389 65.23698395462586,12.751385278136606 65.2264132654521,12.677104389679833 65.1960225340775,12.639963945451449 65.18677318105046,12.502013724031727 65.1339197351816,12.41712128008113 65.13920507976849,12.353451947118181 65.15770378582259,12.369369280358917 65.17620249187668,12.409162613460762 65.18809451719717,12.440997279942234 65.18280917261029,12.472831946423709 65.18413050875701,12.509972390652095 65.1960225340775,12.475484835297166 65.1960225340775,12.459567502056428 65.20791455939799,12.425079946701498 65.20659322325128,12.422427057828042 65.2145212401316,12.44365016881569 65.21980658471848,12.422427057828042 65.23169861003898,12.387939502473111 65.22377059315865,12.342840391624357 65.22244925701193,12.334881725003989 65.23169861003898,12.353451947118181 65.23301994618569,12.401203946840392 65.24887597994635,12.46487327980334 65.2396266269193,12.507319501778639 65.2396266269193,12.509972390652095 65.2515186522398,12.462220390929884 65.24491197150618,12.414468391207674 65.25283998838651,12.419774168954586 65.25680399682668,12.462220390929884 65.25548266067996,12.422427057828042 65.26869602214717,12.372022169232373 65.25680399682668,12.390592391346567 65.26869602214717,12.361410613738549 65.26737468600045,12.345493280497813 65.25680399682668,12.321617280636707 65.25680399682668,12.295088391902144 65.24359063535947,12.276518169787952 65.22773460159881,12.247336392179934 65.23037727389226,12.326923058383619 65.26869602214717,12.329575947257077 65.28587339205454,12.364063502612005 65.30833610654881,12.385286613599655 65.30965744269552,12.419774168954586 65.30569343425536,12.446303057689146 65.31362145113569,12.451608835436058 65.32419214030946,12.472831946423709 65.32419214030946,12.470179057550252 65.33608416562996,12.425079946701498 65.31758545957585,12.40385683571385 65.3202281318693,12.422427057828042 65.33740550177667,12.422427057828042 65.345333518657,12.475484835297166 65.36251088856437,12.467526168676796 65.3704389054447,12.433038613321866 65.36118955241766,12.425079946701498 65.36251088856437,12.3401875027509 65.32419214030946,12.273865280914496 65.31758545957585,12.268559503167584 65.31230011498897,12.247336392179934 65.31758545957585,12.244683503306478 65.32815614874963,12.226113281192283 65.32947748489634,12.223460392318827 65.31758545957585,12.234071947812652 65.30040808966848,12.27121239204104 65.2898374004947,12.263253725420672 65.27266003058733,12.252642169926846 65.27266003058733,12.199584392457723 65.23698395462586,12.13856794836823 65.23037727389226,12.074898615405282 65.20791455939799,12.053675504417633 65.21055723169144,12.048369726670721 65.21848524857177,12.1040803930133 65.23698395462586,12.088163059772562 65.2396266269193,12.117344837380582 65.25680399682668,12.1040803930133 65.26341067756029,12.135915059494774 65.28058804746766,12.11203905963367 65.28455205590782,12.13856794836823 65.29644408122832,12.13856794836823 65.30833610654881,12.085510170899106 65.30437209810864,12.085510170899106 65.31362145113569,12.127956392874406 65.32551347645618,12.12530350400095 65.34665485480372,12.13856794836823 65.35061886324388,12.149179503862054 65.3704389054447,12.186319948090443 65.36515356085782,12.19427861471081 65.345333518657,12.218154614571915 65.35061886324388,12.196931503584267 65.36647489700454,12.223460392318827 65.37440291388486,12.231419058939196 65.36647489700454,12.27121239204104 65.38100959461848,12.265906614294128 65.39025894764552,12.212848836825003 65.37836692232503,12.178361281470073 65.37440291388486,12.165096837102793 65.38629493920536,12.186319948090443 65.40611498140618,12.247336392179934 65.43122036819388,12.348146169371269 65.46028976342174,12.353451947118181 65.46689644415535,12.326923058383619 65.46689644415535,12.342840391624357 65.49068049479634,12.27121239204104 65.46689644415535,12.273865280914496 65.4761457971824,12.252642169926846 65.46689644415535,12.24998928105339 65.48010980562256,12.268559503167584 65.48407381406273,12.287129725281776 65.49596583938322,12.231419058939196 65.48275247791601,12.22876617006574 65.4642537718619,12.178361281470073 65.4391483850742,12.19427861471081 65.46689644415535,12.234071947812652 65.49596583938322,12.234071947812652 65.50389385626355,12.260600836547216 65.5448552768119,12.239377725559565 65.5448552768119,12.226113281192283 65.55542596598568,12.263253725420672 65.57656734433321,12.289782614155232 65.58581669736026,12.324270169510163 65.57656734433321,12.324270169510163 65.54089126837174,12.366716391485461 65.5197498900242,12.37467505810583 65.5197498900242,12.448955946562602 65.47878846947584,12.451608835436058 65.46293243571519,12.435691502195322 65.45368308268814,12.44365016881569 65.41932834287338,12.475484835297166 65.41536433443322,12.48609639079099 65.40215097296601,12.509972390652095 65.39818696452585,12.504666612905183 65.37308157773815,12.54180705713357 65.3704389054447,12.536501279386657 65.39025894764552,12.512625279525551 65.38497360305864,12.52058394614592 65.40215097296601,12.496707946284815 65.40611498140618,12.49936083515827 65.4140429982865,12.470179057550252 65.43386304048732,12.456914613182972 65.45368308268814,12.48609639079099 65.45896842727502,12.478137724170622 65.44311239351437,12.502013724031727 65.44971907424798,12.536501279386657 65.4391483850742,12.539154168260113 65.44575506580782,12.515278168399007 65.45764709112831,12.54976572375394 65.4510404103947,12.568335945868132 65.4391483850742,12.552418612627395 65.40611498140618,12.565683056994676 65.41007898984634,12.592211945729236 65.40611498140618,12.578947501361956 65.41536433443322,12.581600390235412 65.4391483850742,12.592211945729236 65.44179105736765,12.63200527883108 65.41007898984634,12.666492834186009 65.39158028379224,12.706286167287853 65.36251088856437,12.698327500667485 65.38629493920536,12.613435056716886 65.43518437663404,12.639963945451449 65.42725635975371,12.653228389818729 65.43386304048732,12.64526972319836 65.44575506580782,12.759343944756978 65.45764709112831,12.77791416687117 65.4642537718619,12.65853416756564 65.45896842727502,12.626699501084168 65.45500441883486,12.602823501223062 65.4642537718619,12.663839945312553 65.48010980562256,12.653228389818729 65.48407381406273,12.592211945729236 65.47482446103568,12.581600390235412 65.49068049479634,12.552418612627395 65.50785786470371,12.581600390235412 65.51710721773075,12.592211945729236 65.51578588158404,12.624046612210712 65.52107122617092,12.626699501084168 65.52767790690453,12.586906167982324 65.52503523461108,12.568335945868132 65.55542596598568,12.5762946124885 65.58449536121354,12.56303016812122 65.5884593696537,12.54976572375394 65.56467531901272,12.552418612627395 65.53296325149141,12.533848390513201 65.51710721773075,12.49936083515827 65.50785786470371,12.459567502056428 65.51710721773075,12.517931057272463 65.55542596598568,12.536501279386657 65.57260333589305,12.539154168260113 65.58449536121354,12.52058394614592 65.58053135277338,12.504666612905183 65.56071131057256,12.446303057689146 65.52767790690453,12.440997279942234 65.52107122617092,12.398551057966936 65.53692725993157,12.385286613599655 65.54881928525207,12.379980835852741 65.56863932745289,12.401203946840392 65.57260333589305,12.414468391207674 65.58978070580042,12.385286613599655 65.57656734433321,12.366716391485461 65.60167273112091,12.366716391485461 65.6254567817619,12.350799058244725 65.62677811790861,12.440997279942234 65.69813026983157,12.507319501778639 65.73909169037992,12.581600390235412 65.71795031203239,12.58955905685578 65.69945160597828,12.605476390096518 65.69945160597828,12.570988834741588 65.67831022763075,12.581600390235412 65.67434621919058,12.61078216784343 65.6941662613914,12.634658167704536 65.69152358909795,12.64526972319836 65.68227423607091,12.602823501223062 65.66641820231025,12.613435056716886 65.6505621685496,12.624046612210712 65.66245419387009,12.642616834324905 65.67038221075042,12.637311056577992 65.64527682396272,12.706286167287853 65.64263415166927,12.74873238926315 65.63470613478894,12.743426611516238 65.61752876488157,12.775261277997714 65.60563673956108,12.783219944618082 65.59374471424059,12.807095944479187 65.60167273112091,12.759343944756978 65.61752876488157,12.761996833630434 65.63074212634878,12.793831500111907 65.63338479864223,12.751385278136606 65.64659816010943,12.743426611516238 65.64263415166927,12.700980389540941 65.65320484084305,12.653228389818729 65.6505621685496,12.655881278692185 65.67038221075042,12.671798611932921 65.68755958065779,12.63200527883108 65.69813026983157,12.626699501084168 65.71398630359222,12.608129278969974 65.71134363129877,12.608129278969974 65.72191432047255,12.539154168260113 65.75230505184713,12.581600390235412 65.76419707716762,12.602823501223062 65.78401711936844,12.61078216784343 65.80383716156926,12.671798611932921 65.81176517844959,12.685063056300205 65.78005311092828,12.714244833908221 65.7747677663414,12.72220350052859 65.78269578322173,12.690368834047117 65.79855181698238,12.693021722920573 65.80383716156926,12.719550611655134 65.79855181698238,12.730162167148958 65.80383716156926,12.693021722920573 65.81705052303647,12.685063056300205 65.84479858211762,12.677104389679833 65.81969319532992,12.663839945312553 65.8249785399168,12.629352389957624 65.82365720377008,12.608129278969974 65.81572918688975,12.597517723476148 65.8249785399168,12.605476390096518 65.84479858211762,12.629352389957624 65.85272659899795,12.642616834324905 65.89765202798647,12.663839945312553 65.92143607862745,12.716897722781678 65.9372921123881,12.716897722781678 65.92936409550778,12.740773722642782 65.94257745697499,12.801790166732275 65.96239749917581,12.809748833352643 65.96768284376269,12.844236388707575 65.9742895244963,12.86811238856868 65.97164685220285,12.86811238856868 65.95711215458893,12.899947055050152 65.95843349073564,12.921170166037804 65.94125612082827,12.939740388151996 65.93861344853482,12.93708749927854 65.9306854316545,12.960963499139645 65.92540008706762,13.02728572097605 65.92540008706762,13.045855943090242 65.91747207018729,13.053814609710614 65.90029470027991,13.072384831824806 65.88972401110614,13.093607942812454 65.88576000266598,13.128095498167387 65.89633069183975,13.141359942534667 65.86990396890532,13.18645905338342 65.82894254835696,13.183806164509964 65.86461862431844,13.165235942395771 65.87386797734548,13.157277275775403 65.8936880195463,13.162583053522315 65.90954405330696,13.133401275914299 65.918793406334,13.136054164787755 65.93861344853482,13.12544260929393 65.94257745697499,13.09626083168591 65.93332810394794,13.064426165204438 65.9372921123881,13.051161720837158 65.94654146541515,13.021979943229137 65.94522012926844,12.987492387874209 65.94654146541515,12.93708749927854 65.97032551605614,12.897294166176696 65.97032551605614,12.897294166176696 65.98353887752334,12.934434610405084 65.99410956669712,12.953004832519277 66.00732292816433,12.93708749927854 66.02185762577827,12.953004832519277 66.03507098724548,12.95035194364582 66.04696301256597,12.990145276747665 66.06017637403318,13.024632832102593 66.06414038247334,13.045855943090242 66.07735374394055,12.95035194364582 66.06281904632662,12.897294166176696 66.05092702100613,12.857500833074855 66.04828434871268,12.846889277581031 66.0548910294463,12.807095944479187 66.05224835715285,12.655881278692185 66.0297856426586,12.653228389818729 66.03507098724548,12.83362483321375 66.0681043909135,12.714244833908221 66.05224835715285,12.746079500389694 66.06281904632662,12.677104389679833 66.06017637403318,12.674451500806377 66.0681043909135,12.703633278414397 66.08131775238071,12.759343944756978 66.10113779458153,12.823013277719923 66.11963650063564,12.823013277719923 66.12756451751596,12.918517277164348 66.14077787898317,12.998103943368033 66.14474188742334,12.99279816562112 66.15002723201022,13.067079054077894 66.15795524889054,13.075037720698262 66.14077787898317,13.093607942812454 66.14606322357005,13.08299638731863 66.15266990430366,13.09626083168591 66.16191925733071,13.191764831130332 66.18173929953153,13.247475497472912 66.18966731641186,13.22890527535872 66.19495266099874,13.29788038606858 66.22137938393317,13.321756385929685 66.22666472852005,13.356243941284617 66.22666472852005,13.377467052272266 66.21873671163972,13.462359496222863 66.23062873696021,13.504805718198163 66.23062873696021,13.5207230514389 66.2425207622807,13.579086606654936 66.23459274540038,13.584392384401848 66.217415375493,13.57643371778148 66.20684468631923,13.549904829046916 66.20684468631923,13.499499940451251 66.19098865255857,13.526028829185812 66.19098865255857,13.608268384262953 66.1989166694389,13.597656828769129 66.1738112826512,13.549904829046916 66.14606322357005,13.539293273553092 66.13549253439629,13.536640384679636 66.10906581146186,13.560516384540744 66.1051018030217,13.565822162287656 66.1236005090758,13.597656828769129 66.14606322357005,13.642755939617885 66.16191925733071,13.682549272719726 66.15795524889054,13.714383939201202 66.16191925733071,13.74887149455613 66.16984727421104,13.801929272025255 66.15399124045038,13.815193716392535 66.14077787898317,13.841722605127096 66.16191925733071,13.788664827657975 66.18306063567825,13.754177272303043 66.18570330797169,13.682549272719726 66.1738112826512,13.66663193947899 66.19098865255857,13.616227050883321 66.17777529109136,13.618879939756777 66.19363132485202,13.650714606238253 66.20684468631923,13.626838606377145 66.21345136705284,13.640103050744429 66.22137938393317,13.597656828769129 66.22666472852005,13.658673272858621 66.23327140925366,13.717036828074658 66.2425207622807,13.793970605404887 66.2425207622807,13.820499494139447 66.23062873696021,13.770094605543779 66.20552335017251,13.76213593892341 66.19363132485202,13.783359049911063 66.18966731641186,13.791317716531431 66.20684468631923,13.847028382874008 66.22270072007989,13.966408382179537 66.24648477072087,13.966408382179537 66.26234080448152,13.982325715420274 66.27159015750857,14.030077715142486 66.27555416594873,14.045995048383222 66.29008886356267,14.088441270358523 66.29141019970939,14.128234603460363 66.3046235611766,14.122928825713451 66.31519425035037,14.149457714448015 66.33633562869791,14.122928825713451 66.34029963713807,14.11762304796654 66.33237162025775,14.019466159648662 66.3046235611766,13.992937270914098 66.31123024191021,13.93722660457152 66.30330222502988,13.910697715836957 66.28744619126923,13.905391938090045 66.27026882136185,13.873557271608572 66.27555416594873,13.844375494000552 66.27159015750857,13.809887938645623 66.27555416594873,13.740912827935762 66.25837679604136,13.74887149455613 66.27159015750857,13.770094605543779 66.27423282980202,13.770094605543779 66.29141019970939,13.743565716809218 66.2927315358561,13.754177272303043 66.27819683824218,13.72234260582157 66.27423282980202,13.727648383568482 66.25837679604136,13.616227050883321 66.23855675384054,13.573780828908024 66.2544127876012,13.579086606654936 66.26630481292169,13.640103050744429 66.28744619126923,13.565822162287656 66.29008886356267,13.552557717920372 66.27159015750857,13.512764384818531 66.25837679604136,13.4782768294636 66.2544127876012,13.462359496222863 66.24516343457415,13.380119941145722 66.23723541769382,13.364202607904986 66.24912744301432,13.316450608182773 66.25044877916103,13.244822608599456 66.21873671163972,13.15993016464886 66.19363132485202,13.035244387596418 66.1738112826512,13.019327054355681 66.17645395494465,13.008715498861857 66.20155934173235,13.02728572097605 66.20155934173235,13.101566609432822 66.23459274540038,13.18645905338342 66.25837679604136,13.183806164509964 66.26234080448152,13.114831053800103 66.24912744301432,13.133401275914299 66.25969813218808,13.199723497750703 66.2795181743889,13.252781275219824 66.28348218282906,13.321756385929685 66.29669554429627,13.382772830019178 66.30330222502988,13.414607496500654 66.30065955273643,13.4782768294636 66.30330222502988,13.499499940451251 66.30726623347005,13.555210606793828 66.30330222502988,13.5631692734142 66.30726623347005,13.502152829324707 66.31915825879054,13.446442162982127 66.31915825879054,13.427871940867934 66.32840761181758,13.483582607210511 66.34426364557824,13.45705371847595 66.34294230943152,13.427871940867934 66.3482276540184,13.403995941006826 66.33633562869791,13.366855496778442 66.3350142925512,13.36154971903153 66.32708627567087,13.236863941979088 66.30726623347005,13.133401275914299 66.30065955273643,13.112178164926647 66.3046235611766,13.144012831408123 66.31123024191021,13.165235942395771 66.32840761181758,13.144012831408123 66.33237162025775,13.104219498306279 66.32047959493725,13.098913720559366 66.31123024191021,13.000756832241489 66.33105028411103,12.990145276747665 66.3482276540184,13.003409721114945 66.3601196793389,13.085649276192086 66.37597571309955,13.133401275914299 66.39711709144709,13.157277275775403 66.40108109988725,13.141359942534667 66.4288291589684,13.149318609155035 66.43675717584873,13.088302165065542 66.45261320960938,13.08299638731863 66.46450523492987,13.114831053800103 66.45789855419626,13.165235942395771 66.46186256263643,13.151971498028491 66.46979057951675,13.101566609432822 66.47375458795692,13.098913720559366 66.49489596630445,13.043203054216786 66.49093195786429,13.02728572097605 66.5094306639184,12.971575054633469 66.5226440253856,12.995451054494577 66.53189337841265,13.024632832102593 66.52792936997248,13.090955053938998 66.5477494121733,13.12544260929393 66.55039208446675,13.122789720420474 66.53850005914626,13.210335053244528 66.51471600850527,13.218293719864896 66.49093195786429,13.239516830852544 66.48961062171757,13.250128386346368 66.48036126869053,13.236863941979088 66.46054122648971,13.21564083099144 66.45261320960938,13.250128386346368 66.4539345457561,13.25543416409328 66.44600652887577,13.350938163537705 66.46186256263643,13.419913274247566 66.46979057951675,13.33236794142351 66.47375458795692,13.295227497195125 66.46450523492987,13.260739941840193 66.46846924337004,13.281963052827845 66.4724332518102,13.274004386207476 66.48564661327741,13.311144830435861 66.50546665547823,13.292574608321669 66.50678799162495,13.258087052966737 66.52660803382577,13.33236794142351 66.53057204226593,13.350938163537705 66.54246406758642,13.37481416339881 66.53850005914626,13.425219051994478 66.53982139529298,13.438483496361759 66.54642807602659,13.549904829046916 66.54246406758642,13.613574162009865 66.52792936997248,13.634797272997517 66.51868001694544,13.66663193947899 66.51471600850527,13.661326161732077 66.5345360507061,13.552557717920372 66.55567742905363,13.472971051716687 66.5596414374938,13.50745860707162 66.58342548813478,13.53398749580618 66.58342548813478,13.560516384540744 66.59531751345527,13.656020383985165 66.6032455303356,13.717036828074658 66.59928152189543,13.732954161315394 66.60853087492248,13.701119494833918 66.61249488336264,13.58969816214876 66.60853087492248,13.560516384540744 66.60720953877576,13.496847051577795 66.5913535050151,13.454400829602495 66.56360544593396,13.433177718614846 66.5596414374938,13.337673719170422 66.5596414374938,13.292574608321669 66.5477494121733,13.223599497611808 66.55832010134708,13.207682164371072 66.55567742905363,13.18645905338342 66.56756945437412,13.212987942117984 66.57549747125445,13.218293719864896 66.59796018574872,13.247475497472912 66.59531751345527,13.25543416409328 66.59928152189543,13.22890527535872 66.61117354721593,13.258087052966737 66.62438690868314,13.276657275080932 66.61117354721593,13.289921719448213 66.61645889180281,13.281963052827845 66.6283509171233,13.313797719309317 66.62306557253642,13.303186163815493 66.63231492556346,13.372161274525354 66.63099358941675,13.380119941145722 66.63627893400363,13.321756385929685 66.64420695088396,13.289921719448213 66.64420695088396,13.274004386207476 66.63760027015034,13.223599497611808 66.63231492556346,13.189111942256876 66.65213496776428,13.165235942395771 66.65742031235116,13.197070608877247 66.6719550099651,13.223599497611808 66.67724035455198,13.260739941840193 66.66799100152494,13.313797719309317 66.66931233767166,13.335020830296965 66.66534832923149,13.369508385651898 66.66931233767166,13.36154971903153 66.64949229547084,13.390731496639546 66.64552828703067,13.385425718892634 66.66006298464461,13.406648829880282 66.653456303911,13.425219051994478 66.66138432079133,13.523375940312356 66.65609897620445,13.518070162565444 66.64552828703067,13.555210606793828 66.64420695088396,13.536640384679636 66.66799100152494,13.49419416270434 66.67724035455198,13.45705371847595 66.67591901840527,13.451747940729039 66.6838470352856,13.390731496639546 66.68913237987248,13.289921719448213 66.69573906060609,13.274004386207476 66.70498841363313,13.295227497195125 66.70763108592658,13.25543416409328 66.71291643051346,13.268698608460564 66.71688043895362,13.21564083099144 66.72084444739379,13.226252386485264 66.72612979198067,13.281963052827845 66.73273647271428,13.324409274803141 66.73009380042083,13.380119941145722 66.734057808861,13.425219051994478 66.72612979198067,13.454400829602495 66.73009380042083,13.472971051716687 66.71820177510034,13.50745860707162 66.72612979198067,13.531334606932724 66.72480845583395,13.528681718059268 66.70366707748641,13.568475051161112 66.69309638831264,13.592351051022217 66.69309638831264,13.640103050744429 66.6970603967528,13.714383939201202 66.69970306904625,13.714383939201202 66.70763108592658,13.687855050466638 66.71291643051346,13.72234260582157 66.71688043895362,13.807235049772167 66.72084444739379,13.902739049216589 66.72612979198067,13.902739049216589 66.73009380042083,13.764788827796867 66.73273647271428,13.72234260582157 66.73009380042083,13.69316082821355 66.72084444739379,13.671937717225902 66.72480845583395,13.671937717225902 66.71688043895362,13.600309717642585 66.7089524220733,13.57643371778148 66.7089524220733,13.552557717920372 66.72480845583395,13.5631692734142 66.74594983418149,13.54725194017346 66.75387785106182,13.592351051022217 66.7591631956487,13.743565716809218 66.75123517876837,13.76213593892341 66.75387785106182,13.613574162009865 66.77105522096919,13.53398749580618 66.76312720408886,13.54725194017346 66.77369789326264,13.510111495945075 66.77501922940935,13.523375940312356 66.78558991858313,13.496847051577795 66.78955392702329,13.502152829324707 66.8027672884905,13.610921273136409 66.80540996078395,13.62418571750369 66.81069530537083,13.701119494833918 66.81333797766428,13.719689716948114 66.80540996078395,13.759483050049955 66.8027672884905,13.820499494139447 66.79483927161017,13.998243048661013 66.79748194390362,13.982325715420274 66.80673129693066,13.945185271191889 66.81069530537083,13.905391938090045 66.80673129693066,13.823152383012903 66.80937396922411,13.743565716809218 66.83183668371836,13.767441716670323 66.83580069215853,13.740912827935762 66.84372870903886,13.706425272580834 66.83051534757165,13.66663193947899 66.83051534757165,13.70907816145429 66.83976470059869,13.695813717087006 66.85165672591918,13.717036828074658 66.85958474279951,13.701119494833918 66.87147676812,13.658673272858621 66.88072612114705,13.648061717364797 66.90054616334787,13.629491495250601 66.9084741802282,13.571127940034568 66.90715284408148,13.54725194017346 66.89922482720115,13.53398749580618 66.90318883564132,13.544599051300004 66.93225823086918,13.496847051577795 66.93490090316263,13.483582607210511 66.94943560077655,13.504805718198163 66.95604228151016,13.54725194017346 66.95339960921672,13.555210606793828 66.94547159233639,13.536640384679636 66.94018624774951,13.555210606793828 66.93622223930934,13.610921273136409 66.95339960921672,13.727648383568482 66.94415025618967,13.801929272025255 66.96132762609705,13.793970605404887 66.96925564297737,13.740912827935762 66.96793430683066,13.72234260582157 66.97454098756425,13.746218605682675 66.98114766829787,13.81254082751908 66.98511167673803,13.862945716114748 66.98246900444458,13.873557271608572 67.00096771049868,13.902739049216589 67.00096771049868,13.92130927133078 67.00889572737901,13.992937270914098 67.01021706352573,14.003548826407926 67.00096771049868,13.963755493306081 66.98246900444458,13.945185271191889 66.96793430683066,13.89478038259622 66.97189831527082,13.905391938090045 66.96132762609705,13.905391938090045 66.94547159233639,13.945185271191889 66.95207827307,13.982325715420274 66.98114766829787,14.01416038190175 66.98643301288475,13.992937270914098 66.96925564297737,14.011507493028294 66.96132762609705,14.038036381762854 66.98114766829787,14.02742482626903 66.9890756851782,14.061912381623959 66.99039702132491,14.024771937395574 67.01814508040606,14.016813270775206 67.03267977802,14.022119048522118 67.04985714792737,14.04068927063631 67.04192913104704,14.038036381762854 67.06703451783474,14.051300826130134 67.08156921544868,14.077829714864698 67.06307050939458,14.101705714725803 67.0577851648077,14.11762304796654 67.03796512260688,14.125581714586907 67.0141810719659,14.138846158954188 66.99436102976507,14.157416381068384 67.00625305508557,14.16006926994184 66.98643301288475,14.183945269802944 66.99700370205852,14.21312704741096 66.99039702132491,14.239655936145525 67.00096771049868,14.226391491778244 67.00625305508557,14.255573269386261 67.02210908884622,14.274143491500453 67.05382115636753,14.237003047272069 67.07760520700852,14.279449269247365 67.07760520700852,14.308631046855385 67.06703451783474,14.353730157704138 67.07760520700852,14.428011046160911 67.07892654315523,14.481068823630036 67.06307050939458,14.486374601376948 67.05514249251425,14.52086215673188 67.0577851648077,14.531473712225704 67.06307050939458,14.571267045327545 67.04985714792737,14.584531489694829 67.03267977802,14.613713267302845 67.03400111416671,14.603101711809021 67.04192913104704,14.61106037842939 67.05117848407409,14.584531489694829 67.0709985262749,14.54739104546644 67.0709985262749,14.499639045744228 67.07496253471507,14.489027490250404 67.06967719012819,14.446581268275107 67.07892654315523,14.446581268275107 67.08685456003556,14.406787935173263 67.09478257691589,14.343118602210314 67.07892654315523,14.303325269108473 67.09213990462244,14.282102158120821 67.08685456003556,14.250267491639349 67.08685456003556,14.247614602765893 67.09213990462244,14.274143491500453 67.09874658535605,14.27679638037391 67.11063861067655,14.300672380235017 67.10006792150277,14.308631046855385 67.1264946444372,14.340465713336858 67.14763602278474,14.31924260234921 67.15952804810523,14.337812824463402 67.17274140957244,14.396176379679439 67.1767054180126,14.438622601654739 67.1952041240667,14.483721712503492 67.19652546021342,14.462498601515843 67.18066942645277,14.502291934617684 67.18331209874621,14.571267045327545 67.17934809030605,14.571267045327545 67.18727610718638,14.621671933923214 67.19652546021342,14.642895044910862 67.18066942645277,14.709217266747267 67.17934809030605,14.727787488861463 67.1885974433331,14.648200822657774 67.19124011562654,14.616366156176301 67.20445347709375,14.544738156592985 67.19916813250687,14.515556378984968 67.20445347709375,14.542085267719528 67.20973882168063,14.62432482279667 67.2203095108544,14.66677104477197 67.21766683856096,14.703911489000355 67.21238149397408,14.73574615548183 67.21634550241424,14.751663488722567 67.22823752773473,14.794109710697864 67.24012955305523,14.823291488305884 67.24012955305523,14.841861710420076 67.22823752773473,14.902878154509569 67.22955886388145,14.974506154092886 67.24937890608227,14.979811931839798 67.24012955305523,15.006340820574358 67.24012955305523,14.940018598737954 67.2203095108544,14.950630154231781 67.20445347709375,14.897572376762657 67.17934809030605,14.886960821268833 67.15952804810523,14.921448376623761 67.1516000312249,14.947977265358325 67.1516000312249,14.955935931978694 67.12781598058392,14.97185326521943 67.11592395526343,15.001035042827446 67.11988796370359,14.974506154092886 67.15556403966507,14.926754154370673 67.16217072039868,14.918795487750305 67.16745606498556,14.94532437648487 67.19256145177326,14.966547487472518 67.2018108048003,15.008993709447815 67.21238149397408,15.02756393156201 67.22823752773473,15.003687931700902 67.22955886388145,15.019605264941642 67.23748688076178,15.09123326452496 67.23616554461506,15.123067931006432 67.22823752773473,15.133679486500256 67.20973882168063,15.15755548636136 67.20841748553391,15.207960374957029 67.2203095108544,15.255712374679241 67.20841748553391,15.266323930173066 67.19916813250687,15.298158596654538 67.19256145177326,15.388356818352051 67.1885974433331,15.420191484833524 67.16745606498556,15.377745262858223 67.12781598058392,15.385703929478595 67.12385197214375,15.417538595960067 67.13574399746425,15.385703929478595 67.10271059379622,15.420191484833524 67.09874658535605,15.433455929200804 67.10271059379622,15.457331929061912 67.09213990462244,15.467943484555736 67.10271059379622,15.438761706947716 67.11063861067655,15.452026151314996 67.11988796370359,15.444067484694628 67.13045865287737,15.44937326244154 67.14763602278474,15.47855504004956 67.16481339269211,15.481207928923016 67.18463343489293,15.467943484555736 67.19256145177326,15.441414595821172 67.19916813250687,15.43610881807426 67.20841748553391,15.396315484972419 67.21238149397408,15.401621262719331 67.22163084700112,15.375092373984767 67.21766683856096,15.351216374123663 67.22163084700112,15.42284437370698 67.24409356149539,15.444067484694628 67.23748688076178,15.430803040327348 67.22559485544129,15.494472373290296 67.23352287232161,15.486513706669928 67.2454148976421,15.44937326244154 67.24409356149539,15.430803040327348 67.25994959525605,15.385703929478595 67.2573069229626,15.351216374123663 67.24805756993555,15.329993263136014 67.23616554461506,15.295505707781082 67.22823752773473,15.27693548566689 67.23352287232161,15.239795041438505 67.23352287232161,15.27693548566689 67.2454148976421,15.314075929895278 67.24145088920194,15.343257707503295 67.24937890608227,15.348563485250207 67.26391360369621,15.231836374818133 67.26787761213637,15.226530597071221 67.2573069229626,15.1734728196021 67.25334291452243,15.115109264386064 67.27316295672325,15.04082837592929 67.26919894828309,15.04082837592929 67.2758056290167,15.077968820157675 67.2824123097503,15.085927486778044 67.27844830131014,15.120415042132976 67.28637631819046,15.1734728196021 67.29034032663063,15.20000170833666 67.30619636039128,15.226530597071221 67.30619636039128,15.258365263552697 67.31412437727161,15.258365263552697 67.34187243635276,15.229183485944677 67.34187243635276,15.229183485944677 67.32998041103227,15.207960374957029 67.32998041103227,15.197348819463205 67.31808838571177,15.160208375234816 67.29430433507079,15.141638153120624 67.29430433507079,15.168167041855188 67.3260164025921,15.154902597487904 67.32733773873882,15.112456375512608 67.32205239415194,15.038175487055835 67.31808838571177,14.987770598460166 67.29694700736424,15.019605264941642 67.29430433507079,14.990423487333622 67.28901899048391,14.974506154092886 67.29430433507079,14.92940704324413 67.29034032663063,14.8949194878892 67.29694700736424,14.815332821685516 67.29430433507079,14.791456821824408 67.28637631819046,14.86573771028118 67.2824123097503,14.83920882154662 67.26787761213637,14.794109710697864 67.26391360369621,14.722481711114547 67.24145088920194,14.69329993350653 67.24937890608227,14.690647044633074 67.25598558681588,14.719828822241091 67.26127093140276,14.717175933367635 67.29430433507079,14.733093266608375 67.30223235195112,14.722481711114547 67.3128030411249,14.714523044494179 67.30487502424457,14.669423933645426 67.29430433507079,14.605754600682477 67.28901899048391,14.632283489417038 67.28505498204375,14.56065548983372 67.27316295672325,14.526167934478792 67.27712696516342,14.4651514903893 67.27316295672325,14.428011046160911 67.26523493984293,14.414746601793631 67.26919894828309,14.316589713475754 67.25202157837572,14.311283935728841 67.26523493984293,14.337812824463402 67.26919894828309,14.404135046299807 67.28637631819046,14.382911935312158 67.29430433507079,14.398829268552895 67.31016036883145,14.430663935034367 67.30619636039128,14.473110157009668 67.31940972185849,14.489027490250404 67.33526575561915,14.565961267580633 67.35904980626013,14.568614156454089 67.3696204954339,14.632283489417038 67.38547652919456,14.640242156037406 67.40001122680849,14.61106037842939 67.39604721836832,14.573919934201001 67.40397523524865,14.589837267441741 67.41190325212898,14.629630600543582 67.41058191598226,14.640242156037406 67.43568730276996,14.685341266886162 67.44361531965029,14.709217266747267 67.43965131121013,14.738399044355287 67.44361531965029,14.727787488861463 67.43304463047652,14.791456821824408 67.43700863891668,14.794109710697864 67.44493665579701,14.860431932534269 67.43568730276996,14.86573771028118 67.42908062203635,14.8524732659139 67.40793924368882,14.820638599432428 67.38679786534128,14.86573771028118 67.38679786534128,14.863084821407725 67.39868989066177,14.910836821129937 67.4317232943298,14.947977265358325 67.42908062203635,14.974506154092886 67.44757932809046,15.056745709170027 67.45154333653062,15.051439931423115 67.4568286811175,14.98511770958671 67.45550734497078,14.940018598737954 67.44757932809046,14.82594437717934 67.46079268955766,14.767580821963303 67.45154333653062,14.703911489000355 67.45550734497078,14.65350660040469 67.47664872331832,14.658812378151602 67.48061273175848,14.775539488583671 67.525538160747,14.932059932117586 67.57442759817569,15.054092820296571 67.59028363193634,15.093886153398415 67.58631962349618,15.125720819879888 67.5625355728552,15.149596819740992 67.56517824514864,15.154902597487904 67.55460755597487,15.136332375373712 67.54139419450766,15.083274597904587 67.54139419450766,15.032869709308923 67.57046358973552,15.001035042827446 67.57707027046914,14.990423487333622 67.5625355728552,14.99838215395399 67.55725022826832,15.02756393156201 67.55460755597487,15.030216820435466 67.54139419450766,15.077968820157675 67.52818083304045,15.030216820435466 67.5123247992798,15.008993709447815 67.49911143781259,14.92940704324413 67.49118342093226,14.977159042966342 67.48457674019865,15.01164659832127 67.48854074863881,15.054092820296571 67.50836079083963,15.083274597904587 67.50968212698635,15.15755548636136 67.53214484148062,15.202654597210117 67.52950216918717,15.202654597210117 67.51628880771996,15.239795041438505 67.50836079083963,15.239795041438505 67.50439678239947,15.18673726396938 67.49646876551914,15.15755548636136 67.5004327739593,15.141638153120624 67.48854074863881,15.176125708475556 67.48325540405193,15.165514152981732 67.46739937029128,15.128373708753344 67.45947135341095,15.138985264247168 67.44757932809046,15.133679486500256 67.43304463047652,15.146943930867536 67.4317232943298,15.15755548636136 67.45286467267734,15.20000170833666 67.46343536185111,15.226530597071221 67.47664872331832,15.218571930450853 67.4872194124921,15.239795041438505 67.49646876551914,15.279588374540346 67.49646876551914,15.29019993003417 67.50439678239947,15.401621262719331 67.49646876551914,15.44937326244154 67.48854074863881,15.473249262302648 67.48061273175848,15.47855504004956 67.46872070643799,15.473249262302648 67.44361531965029,15.518348373151401 67.42775928588964,15.539571484139053 67.40793924368882,15.544877261885965 67.37094183158062,15.584670594987806 67.37358450387407,15.58201770611435 67.34980045323309,15.589976372734718 67.34715778093964,15.635075483583474 67.3696204954339,15.61119948372237 67.37358450387407,15.592629261608174 67.40001122680849,15.65099281682421 67.40793924368882,15.68017459443223 67.42379527744947,15.722620816407527 67.43700863891668,15.696091927672967 67.43700863891668,15.658951483444579 67.42775928588964,15.661604372318035 67.41983126900931,15.63772837245693 67.41190325212898,15.584670594987806 67.40793924368882,15.571406150620525 67.41190325212898,15.542224373012509 67.43700863891668,15.521001262024857 67.43965131121013,15.515695484277945 67.46079268955766,15.55548881737979 67.46475669799783,15.584670594987806 67.47664872331832,15.552835928506333 67.47136337873144,15.528959928645229 67.47664872331832,15.53426570639214 67.4872194124921,15.58201770611435 67.51761014386668,15.68017459443223 67.55328621982815,15.765067038382828 67.5625355728552,15.81016614923158 67.57310626202897,15.844653704586513 67.57046358973552,15.892405704308722 67.57839160661585,15.865876815574161 67.58631962349618,15.918934593043286 67.59424764037651,15.88709992656181 67.59424764037651,15.847306593459969 67.59028363193634,15.844653704586513 67.58631962349618,15.78363726049702 67.5810342789093,15.778331482750108 67.57442759817569,15.733232371901352 67.57046358973552,15.666910150064947 67.5625355728552,15.587323483861262 67.5374301860675,15.518348373151401 67.50836079083963,15.473249262302648 67.525538160747,15.46529059568228 67.53346617762733,15.433455929200804 67.52818083304045,15.385703929478595 67.53610884992078,15.356522151870575 67.53214484148062,15.284894152287258 67.5374301860675,15.223877708197765 67.54932221138799,15.213266152703941 67.56121423670848,15.226530597071221 67.58235561505602,15.213266152703941 67.59028363193634,15.237142152565049 67.59028363193634,15.215919041577397 67.59821164881667,15.253059485805785 67.606139665697,15.242447930311961 67.61671035487078,15.30346437440145 67.61935302716421,15.393662596098963 67.59821164881667,15.425497262580436 67.59689031266996,15.441414595821172 67.57442759817569,15.452026151314996 67.59028363193634,15.433455929200804 67.60878233799045,15.398968373845875 67.60878233799045,15.29019993003417 67.63785173321831,15.268976819046522 67.63917306936503,15.226530597071221 67.62331703560437,15.194695930589749 67.62331703560437,15.15755548636136 67.6312450524847,15.231836374818133 67.68409849835355,15.279588374540346 67.69070517908716,15.324687485389102 67.68409849835355,15.33264615200947 67.69863319596749,15.26367104129961 67.69863319596749,15.247753708058873 67.6999545321142,15.26367104129961 67.71845323816831,15.282241263413802 67.72241724660847,15.311423041021822 67.7369519442224,15.348563485250207 67.73166659963552,15.401621262719331 67.7118465574347,15.398968373845875 67.70391854055437,15.462637706808824 67.69599052367404,15.526307039771769 67.68013448991339,15.536918595265597 67.68277716220683,15.502431039910665 67.6999545321142,15.544877261885965 67.71052522128798,15.627116816963106 67.686741170647,15.653645705697667 67.69070517908716,15.616505261469282 67.69863319596749,15.571406150620525 67.71581056587486,15.547530150759421 67.71977457431503,15.473249262302648 67.71581056587486,15.446720373568084 67.73166659963552,15.406927040466243 67.74752263339617,15.4095799293397 67.75280797798305,15.444067484694628 67.7554506502765,15.53426570639214 67.76866401174371,15.613852372595826 67.76073599486338,15.674868816685319 67.7369519442224,15.712009260913703 67.7303452634888,15.75710837176246 67.7303452634888,15.759761260635916 67.7118465574347,15.778331482750108 67.6999545321142,15.834042149092689 67.68013448991339,15.855265260080337 67.71052522128798,15.818124815851949 67.70391854055437,15.78363726049702 67.71448922972814,15.78363726049702 67.74091595266256,15.72792659415444 67.74884396954289,15.661604372318035 67.77262802018387,15.61119948372237 67.7805560370642,15.571406150620525 67.7805560370642,15.43610881807426 67.80962543229207,15.412232818213155 67.82151745761256,15.420191484833524 67.83340948293305,15.430803040327348 67.82548146605272,15.44937326244154 67.83340948293305,15.452026151314996 67.8492655166937,15.425497262580436 67.87304956733469,15.428150151453892 67.8492655166937,15.404274151592787 67.84133749981338,15.383051040605139 67.8743709034814,15.372439485111311 67.86908555889453,15.375092373984767 67.83737349137321,15.396315484972419 67.83340948293305,15.375092373984767 67.80169741541174,15.306117263274906 67.78980539009125,15.29019993003417 67.77791336477075,15.237142152565049 67.76073599486338,15.197348819463205 67.7554506502765,15.192043041716293 67.74752263339617,15.207960374957029 67.7369519442224,15.168167041855188 67.71845323816831,15.146943930867536 67.71845323816831,15.115109264386064 67.70391854055437,15.101844820018783 67.70788254899453,15.054092820296571 67.68806250679371,14.98511770958671 67.67617048147322,14.947977265358325 67.66295712000601,14.860431932534269 67.65502910312568,14.764927933089847 67.65899311156585,14.786151044077496 67.66427845615273,14.733093266608375 67.66692112844618,14.73574615548183 67.6748491453265,14.791456821824408 67.69070517908716,14.873696376901552 67.70391854055437,14.8949194878892 67.71052522128798,14.884307932395377 67.71977457431503,14.79941548844478 67.71581056587486,14.804721266191692 67.72770259119535,14.762275044216391 67.72373858275519,14.788803932950952 67.73959461651584,14.889613710142289 67.73563060807568,14.977159042966342 67.75148664183634,15.038175487055835 67.74487996110273,15.09123326452496 67.75148664183634,15.14429104199408 67.76337866715683,15.083274597904587 67.76337866715683,15.01164659832127 67.75941465871666,15.030216820435466 67.76998534789043,14.993076376207078 67.76866401174371,14.995729265080534 67.77659202862404,15.04082837592929 67.78584138165108,15.043481264802747 67.7924480623847,14.97185326521943 67.78584138165108,14.82594437717934 67.76866401174371,14.820638599432428 67.77659202862404,14.873696376901552 67.78452004550437,14.833903043799708 67.78848405394453,14.836555932673164 67.8056614238519,14.79941548844478 67.7924480623847,14.75696926646948 67.80169741541174,14.78349815520404 67.82548146605272,14.77023371083676 67.82944547449289,14.810027043938604 67.83340948293305,14.802068377318236 67.84133749981338,14.817985710558972 67.84662284440026,14.876349265775008 67.82944547449289,14.897572376762657 67.83340948293305,14.884307932395377 67.84133749981338,15.067357264663851 67.86644288660108,15.085927486778044 67.85322952513387,15.10449770889224 67.86512155045436,15.138985264247168 67.86908555889453,15.107150597765695 67.8743709034814,14.849820377040444 67.85455086128059,14.828597266052796 67.8611575420142,14.892266599015745 67.86908555889453,14.879002154648465 67.87701357577485,14.900225265636113 67.8862629288019,14.995729265080534 67.90344029870927,15.093886153398415 67.90608297100272,15.085927486778044 67.8994762902691,15.136332375373712 67.89154827338878,15.229183485944677 67.90344029870927,15.20000170833666 67.89022693724206,15.247753708058873 67.89022693724206,15.25040659693233 67.8862629288019,15.194695930589749 67.86644288660108,15.178778597349012 67.85058685284042,15.194695930589749 67.85058685284042,15.27693548566689 67.8862629288019,15.27693548566689 67.89815495412239,15.324687485389102 67.91533232402976,15.35917504074403 67.91929633246993,15.327340374262558 67.90608297100272,15.335299040882926 67.8994762902691,15.42284437370698 67.92326034091009,15.531612817518685 67.9417590469642,15.560794595126701 67.93515236623058,15.526307039771769 67.91533232402976,15.542224373012509 67.9113683155896,15.59528215048163 67.93911637467075,15.59528215048163 67.94704439155107,15.65099281682421 67.94968706384452,15.648339927950754 67.95893641687157,15.725273705280983 67.96818576989861,15.778331482750108 67.9668644337519,15.815471926978493 67.95365107228469,15.849959482333425 67.91533232402976,15.868529704447617 67.9113683155896,15.892405704308722 67.91929633246993,15.884447037688354 67.9417590469642,15.932199037410566 67.96290042531173,15.88709992656181 67.97214977833877,15.905670148676005 67.9800777952191,15.940157704030934 67.97214977833877,15.979951037132778 67.97611378677894,15.953422148398214 67.98404180365927,15.950769259524758 67.9919698205396,15.990562592626603 67.9919698205396,15.987909703753147 67.99725516512648,15.961380815018583 67.99593382897976,15.948116370651302 68.0051831820068,15.977298148259322 68.00782585430025,15.95607503727167 68.0236818880609,15.924240370790198 68.03293124108795,15.860571037827249 68.03689524952811,15.834042149092689 68.05539395558222,15.794248815990844 68.0487872748486,15.778331482750108 68.05671529172893,15.75710837176246 68.04350193026173,15.807513260358125 68.04350193026173,15.820777704725408 68.0355739133814,15.743843927395176 68.03293124108795,15.709356372040247 68.04746593870189,15.619158150342738 68.04746593870189,15.58201770611435 68.04482326640844,15.58201770611435 68.06332197246255,15.59528215048163 68.07257132548959,15.53426570639214 68.08974869539696,15.518348373151401 68.09767671227729,15.521001262024857 68.06464330860926,15.446720373568084 68.04482326640844,15.396315484972419 68.03953792182156,15.404274151592787 68.03293124108795,15.35917504074403 68.02896723264779,15.385703929478595 68.0236818880609,15.428150151453892 68.02500322420762,15.441414595821172 68.01575387118058,15.42284437370698 68.00782585430025,15.414885707086611 67.99593382897976,15.367133707364399 68.0051831820068,15.377745262858223 68.01971787962074,15.335299040882926 68.01178986274041,15.30346437440145 68.0170752073273,15.279588374540346 68.04482326640844,15.27693548566689 68.0606793001691,15.298158596654538 68.06464330860926,15.353869262997119 68.06464330860926,15.314075929895278 68.07653533392975,15.34591059637675 68.1042833930109,15.398968373845875 68.11749675447811,15.391009707225507 68.13071011594532,15.412232818213155 68.14260214126581,15.475902151176104 68.15317283043959,15.515695484277945 68.14920882199942,15.507736817657577 68.13071011594532,15.49181948441684 68.12674610750516,15.497125262163753 68.11353274603795,15.521001262024857 68.10692606530434,15.531612817518685 68.13335278823877,15.55548881737979 68.1293887797986,15.587323483861262 68.13335278823877,15.58201770611435 68.14920882199942,15.627116816963106 68.1412808051191,15.62446392808965 68.17431420878712,15.592629261608174 68.18092088952073,15.627116816963106 68.19017024254778,15.674868816685319 68.18224222566745,15.672215927811859 68.17431420878712,15.717315038660615 68.17035020034696,15.725273705280983 68.14920882199942,15.698744816546423 68.15053015814614,15.685480372179143 68.14524481355926,15.71466214978716 68.13731679667893,15.725273705280983 68.11749675447811,15.704050594293335 68.1042833930109,15.66425726119149 68.10560472915762,15.603240817102002 68.11485408218466,15.597935039355086 68.10956873759778,15.643034150203842 68.09767671227729,15.648339927950754 68.0857846869568,15.61119948372237 68.07257132548959,15.635075483583474 68.06860731704943,15.629769705836562 68.05671529172893,15.658951483444579 68.05935796402238,15.66425726119149 68.07124998934287,15.65099281682421 68.07653533392975,15.669563038938403 68.08842735925025,15.74119103852172 68.0857846869568,15.72792659415444 68.09767671227729,15.762414149509372 68.10692606530434,15.767719927256284 68.09767671227729,15.807513260358125 68.09635537613057,15.7969017048643 68.10956873759778,15.815471926978493 68.11749675447811,15.842000815713057 68.1108900737445,15.897711482055637 68.13335278823877,15.87383548219453 68.13863813282565,15.940157704030934 68.1544941665863,15.868529704447617 68.16242218346663,15.889752815435266 68.17035020034696,15.852612371206881 68.17695688108057,15.849959482333425 68.19941959557482,15.879141259941441 68.20734761245515,15.892405704308722 68.19545558713466,15.92954614853711 68.19545558713466,15.964033703892039 68.20734761245515,15.95607503727167 68.23113166309614,15.940157704030934 68.24302368841663,15.937504815157478 68.25623704988384,15.974645259385866 68.26416506676416,16.046273258969183 68.25623704988384,16.064843481083376 68.22716765465597,16.104636814185216 68.20734761245515,16.01974437023462 68.18620623410762,16.046273258969183 68.17827821722729,16.059537703336463 68.18224222566745,16.091372369817936 68.17827821722729,16.115248369679044 68.19941959557482,16.141777258413605 68.18620623410762,16.14443014728706 68.16242218346663,16.128512814046324 68.1544941665863,16.107289703058672 68.12146076291828,16.1179012585525 68.11749675447811,16.099331036438304 68.08974869539696,16.115248369679044 68.0857846869568,16.064843481083376 68.04746593870189,16.086066592071024 68.0487872748486,16.133818591793236 68.02500322420762,16.155041702780885 68.02764589650107,16.181570591515445 67.99989783741992,16.2266697023642 67.96818576989861,16.229322591237658 67.96025775301828,16.192182147009273 67.90608297100272,16.210752369123465 67.89419094568223,16.237281257858026 67.89022693724206,16.261157257719134 67.89419094568223,16.3115621463148 67.86644288660108,16.3540083682901 67.86644288660108,16.377884368151204 67.8492655166937,16.48665281196291 67.81226810458551,16.51848747844438 67.82019612146584,16.47869414534254 67.82548146605272,16.438900812240696 67.83737349137321,16.438900812240696 67.84530150825354,16.468082589848713 67.85851486972075,16.412371923506136 67.86512155045436,16.36727281265738 67.87965624806829,16.295644813074063 67.89022693724206,16.271768813212958 67.90211896256255,16.242587035604938 67.90211896256255,16.28503325758024 67.95893641687157,16.266463035466046 67.98272046751255,16.29033903532715 67.98800581209943,16.197487924756185 68.01575387118058,16.192182147009273 68.02103921576746,16.231975480111114 68.0236818880609,16.229322591237658 68.03953792182156,16.261157257719134 68.02896723264779,16.279727479833326 68.02896723264779,16.338091035049363 67.97214977833877,16.364619923783923 67.96290042531173,16.43624792336724 67.91797499632321,16.465429700975257 67.91533232402976,16.441553701114152 67.93118835779042,16.468082589848713 67.9549724084314,16.396454590265396 67.95365107228469,16.327479479555535 68.00386184586009,16.31686792406171 68.02896723264779,16.3540083682901 68.02896723264779,16.383190145898116 68.01575387118058,16.388495923645028 68.02896723264779,16.420330590126504 68.01311119888713,16.452165256607977 67.97479245063222,16.4627768121018 67.9668644337519,16.523793256191293 67.96290042531173,16.537057700558574 67.97611378677894,16.489305700836365 67.97611378677894,16.45747103435489 68.00386184586009,16.49195858970982 68.00782585430025,16.510528811824013 68.02896723264779,16.465429700975257 68.03160990494123,16.399107479138852 68.03953792182156,16.356661257163555 68.03953792182156,16.35931414603701 68.0606793001691,16.391148812518484 68.07389266163631,16.401760368012308 68.08974869539696,16.43624792336724 68.08974869539696,16.433595034493784 68.10164072071746,16.454818145481433 68.10560472915762,16.454818145481433 68.12146076291828,16.47869414534254 68.12146076291828,16.515834589570925 68.09371270383713,16.552975033799314 68.08049934236992,16.635214588876455 68.08049934236992,16.65909058873756 68.06332197246255,16.69092525521903 68.07257132548959,16.66439636648447 68.07389266163631,16.648479033243735 68.08446335081008,16.709495477333228 68.08049934236992,16.72806569944742 68.08974869539696,16.606032811268435 68.08974869539696,16.563586589293138 68.09635537613057,16.537057700558574 68.10560472915762,16.53175192281166 68.12146076291828,16.489305700836365 68.13335278823877,16.446859478861064 68.1293887797986,16.420330590126504 68.1108900737445,16.364619923783923 68.09239136769041,16.338091035049363 68.09371270383713,16.279727479833326 68.11749675447811,16.300950590820975 68.11749675447811,16.28503325758024 68.13071011594532,16.24789281335185 68.13335278823877,16.245239924478394 68.13863813282565,16.274421702086414 68.15053015814614,16.29829770194752 68.13863813282565,16.34074392392282 68.14260214126581,16.34074392392282 68.16242218346663,16.36727281265738 68.17035020034696,16.401760368012308 68.13863813282565,16.417677701253048 68.13863813282565,16.420330590126504 68.1663861919068,16.38053725702466 68.17035020034696,16.383190145898116 68.17827821722729,16.452165256607977 68.17695688108057,16.465429700975257 68.1663861919068,16.481347034215997 68.16902886420024,16.473388367595625 68.18752757025433,16.420330590126504 68.19413425098794,16.39380170139194 68.20338360401499,16.407066145759224 68.20734761245515,16.5052230340771 68.19017024254778,16.547669256052398 68.17695688108057,16.587462589154242 68.17695688108057,16.58215681140733 68.18224222566745,16.47604125646908 68.20602627630844,16.47869414534254 68.21923963777564,16.465429700975257 68.22716765465597,16.47604125646908 68.24302368841663,16.452165256607977 68.23641700768302,16.44951236773452 68.22452498236252,16.32482659068208 68.22320364621581,16.269115924339502 68.2099902847486,16.24789281335185 68.21527562933548,16.19483503588273 68.21131162089532,16.1842234803889 68.23245299924285,16.224016813490746 68.23641700768302,16.23462836898457 68.23113166309614,16.269115924339502 68.2350956715363,16.327479479555535 68.24698769685679,16.361967034910467 68.24434502456334,16.351355479416643 68.26812907520433,16.29033903532715 68.25887972217728,16.266463035466046 68.260201058324,16.26381014659259 68.27077174749778,16.21340525799692 68.28002110052482,16.14443014728706 68.28398510896498,16.141777258413605 68.29191312584531,16.173611924895077 68.32098252107318,16.205446591376553 68.32098252107318,16.229322591237658 68.33287454639367,16.25585147997222 68.33155321024695,16.239934146731482 68.31701851263301,16.26381014659259 68.30909049575268,16.29033903532715 68.31305450419285,16.287686146453694 68.31966118492646,16.34604970166973 68.30909049575268,16.335438146175907 68.30116247887236,16.369925701530835 68.29455579813876,16.38053725702466 68.29851980657892,16.364619923783923 68.31305450419285,16.452165256607977 68.29587713428548,16.415024812379592 68.28794911740515,16.47869414534254 68.28794911740515,16.545016367178942 68.26812907520433,16.56889236704005 68.25491571373712,16.571545255913506 68.24434502456334,16.60337992239498 68.23641700768302,16.61664436676226 68.22452498236252,16.60337992239498 68.20206226786827,16.67235503310484 68.18620623410762,16.730718588320876 68.15845817502647,16.81030525452456 68.15053015814614,16.807652365651105 68.16110084731991,16.746635921561612 68.17035020034696,16.738677254941244 68.18092088952073,16.65909058873756 68.20338360401499,16.635214588876455 68.21923963777564,16.648479033243735 68.23113166309614,16.60337992239498 68.24830903300351,16.635214588876455 68.260201058324,16.613991477888803 68.28002110052482,16.44951236773452 68.3038051511658,16.446859478861064 68.31173316804613,16.404413256885768 68.31173316804613,16.34074392392282 68.32362519336662,16.35931414603701 68.32494652951334,16.338091035049363 68.33683855483383,16.300950590820975 68.33155321024695,16.27707459095987 68.33683855483383,16.29829770194752 68.34476657171416,16.269115924339502 68.36062260547482,16.27707459095987 68.37383596694202,16.377884368151204 68.38572799226252,16.407066145759224 68.38044264767564,16.412371923506136 68.38969200070268,16.45747103435489 68.39762001758301,16.49195858970982 68.4095120429035,16.521140367317837 68.40819070675678,16.558280811546226 68.41479738749038,16.579503922533874 68.41083337905022,16.592768366901154 68.42272540437071,16.640520366623367 68.42140406822399,16.66439636648447 68.40554803446334,16.696231032965947 68.41744005978383,16.730718588320876 68.42272540437071,16.78377636579 68.41347605134366,16.773164810296176 68.40158402602317,16.79704081015728 68.40554803446334,16.895197698475158 68.38837066455596,16.903156365095526 68.36987195850186,16.87397458748751 68.3540159247412,16.834181254385665 68.34212389942071,16.842139921006037 68.33683855483383,16.95090836481774 68.35269458859449,17.00661903116032 68.35797993318137,17.027842142147968 68.35665859703465,17.041106586515248 68.36458661391498,17.038453697641792 68.38176398382235,17.099470141731285 68.38572799226252,17.11008169722511 68.38176398382235,17.131304808212757 68.39233467299613,17.187015474555338 68.39365600914284,17.22150302991027 68.37251463079531,17.23476747427755 68.36987195850186,17.245379029771374 68.35005191630104,17.226808807657182 68.340802563274,17.23476747427755 68.3156971764863,17.250684807518287 68.30776915960597,17.332924362595428 68.28002110052482,17.33823014034234 68.26416506676416,17.332924362595428 68.24434502456334,17.309048362734323 68.23245299924285,17.31170125160778 68.22056097392236,17.340883029215796 68.20734761245515,17.31700702935469 68.19017024254778,17.36741191795036 68.20734761245515,17.335577251468884 68.22320364621581,17.362106140203448 68.25887972217728,17.391287917811464 68.24698769685679,17.4072052510522 68.25887972217728,17.391287917811464 68.2786997643781,17.35149458470962 68.29587713428548,17.306395473860867 68.31305450419285,17.258643474138655 68.32362519336662,17.282519473999763 68.32758920180679,17.271907918505935 68.33683855483383,17.279866585126307 68.34873058015432,17.250684807518287 68.36987195850186,17.250684807518287 68.39365600914284,17.26925502963248 68.40158402602317,17.301089696113955 68.40158402602317,17.2984368072405 68.41876139593055,17.35149458470962 68.42536807666416,17.40189947330529 68.41347605134366,17.433734139786765 68.40026268987646,17.574337250079942 68.37251463079531,17.598213249941047 68.38044264767564,17.492097695002798 68.39762001758301,17.423122584292937 68.41347605134366,17.43108125091331 68.42140406822399,17.417816806546025 68.43065342125104,17.383329251191096 68.43065342125104,17.396593695558376 68.4465094550117,17.478833250635518 68.45179479959857,17.545155472471922 68.45443747189202,17.611477694308327 68.44518811886498,17.63004791642252 68.4465094550117,17.693717249385468 68.43329609354448,17.709634582626204 68.43858143813137,17.760039471221873 68.41876139593055,17.82370880418482 68.40554803446334,17.84493191517247 68.41479738749038,17.79717991545026 68.41876139593055,17.688411471638556 68.46236548877235,17.653923916283627 68.46632949721251,17.638006583042888 68.47425751409284,17.598213249941047 68.47557885023956,17.47087458401515 68.46368682491907,17.47618036176206 68.47954285867972,17.53984969472501 68.49936290088054,17.563725694586115 68.51918294308136,17.574337250079942 68.53636031298873,17.545155472471922 68.55089501060267,17.494750583876254 68.53107496840185,17.423122584292937 68.52314695152153,17.35149458470962 68.49539889244038,17.295783918367043 68.47425751409284,17.24803191864483 68.46236548877235,17.08885858623746 68.45047346345186,17.02518925327451 68.45047346345186,17.014577697780688 68.45840148033218,17.05967680862944 68.47557885023956,17.10212303060474 68.47954285867972,17.104775919478197 68.48614953941333,17.072941252996724 68.49539889244038,17.070288364123268 68.5033269093207,17.001313253413407 68.51389759849448,16.99866036453995 68.52446828766824,16.932338142703546 68.51389759849448,16.932338142703546 68.5033269093207,16.868668809740598 68.46765083335923,16.786429254663457 68.46632949721251,16.76255325480235 68.4597228164789,16.66439636648447 68.45179479959857,16.648479033243735 68.47029350565268,16.635214588876455 68.45840148033218,16.563586589293138 68.45047346345186,16.51318170069747 68.45047346345186,16.53175192281166 68.47029350565268,16.523793256191293 68.49143488400021,16.44951236773452 68.50993359005432,16.473388367595625 68.52182561537481,16.4627768121018 68.5403243214289,16.5052230340771 68.54693100216251,16.521140367317837 68.558823027483,16.552975033799314 68.55618035518955,16.58215681140733 68.53636031298873,16.613991477888803 68.53107496840185,16.629908811129543 68.53636031298873,16.627255922256087 68.55618035518955,16.648479033243735 68.558823027483,16.64582614437028 68.56939371665676,16.62195014450917 68.56410837206988,16.56093370041968 68.58128574197725,16.571545255913506 68.61299780949857,16.613991477888803 68.64206720472643,16.68561947747212 68.6526378939002,16.720107032827052 68.6460312131666,16.725412810573964 68.66981526380758,16.799693699030737 68.68302862527479,16.84744569875295 68.68567129756823,16.881933254107878 68.6777432806879,16.90050347622207 68.68170728912807,16.958867031438107 68.71341935664938,17.041106586515248 68.7147406927961,17.041106586515248 68.69492065059528,17.07559414187018 68.67377927224774,17.112734586098565 68.66981526380758,17.133957697086217 68.64470987701988,17.173751030188058 68.64206720472643,17.20823858554299 68.65792323848709,17.12334614159239 68.67377927224774,17.099470141731285 68.68567129756823,17.120693252718933 68.7147406927961,17.187015474555338 68.72134737352971,17.26129636301211 68.73456073499692,17.29047814062013 68.73456073499692,17.301089696113955 68.72663271811659,17.340883029215796 68.72266870967643,17.399246584431832 68.72927539041004,17.417816806546025 68.72266870967643,17.439039917533677 68.68302862527479,17.494750583876254 68.6777432806879,17.531891028104642 68.6777432806879,17.550461250218834 68.68302862527479,17.584948805573767 68.68567129756823,17.667188360650908 68.66981526380758,17.683105693891644 68.67377927224774,17.65922969403054 68.68302862527479,17.60351902768796 68.69359931444856,17.555767027965747 68.69359931444856,17.53984969472501 68.6896353060084,17.481486139508974 68.69888465903544,17.468221695141693 68.71077668435593,17.473527472888605 68.72531138196987,17.46291591739478 68.73456073499692,17.391287917811464 68.74645276031741,17.36741191795036 68.73852474343708,17.322312807101603 68.73720340729037,17.31170125160778 68.74248875187725,17.253337696391743 68.75438077719774,17.26129636301211 68.77155814710511,17.31170125160778 68.77948616398544,17.391287917811464 68.80062754233298,17.42046969541948 68.81648357609363,17.460263028521325 68.81912624838708,17.508015028243538 68.81251956765347,17.58229591670031 68.79137818930593,17.64596524966326 68.77948616398544,17.725551915866944 68.77816482783872,17.746775026854593 68.77155814710511,17.794527026576805 68.74645276031741,17.80513858207063 68.74909543261086,17.79717991545026 68.77420081939856,17.770651026715697 68.78873551701248,17.733510582487312 68.79269952545265,17.656576805157083 68.7953421977461,17.632700805295975 68.79930620618626,17.531891028104642 68.82441159297396,17.473527472888605 68.83101827370757,17.48413902838243 68.8389462905879,17.619436360928695 68.89179973645675,17.669841249524364 68.89576374489691,17.691064360512012 68.89312107260346,17.720246138120032 68.89972775333707,17.717593249246576 68.88387171957642,17.688411471638556 68.87990771113625,17.7282048047404 68.86933702196248,17.744122137981137 68.87330103040264,17.807791470944085 68.86273034122888,17.85289058179284 68.8640516773756,17.778609693336065 68.90501309792396,17.733510582487312 68.91294111480428,17.704328804879292 68.90897710636412,17.720246138120032 68.9327611570051,17.69902302713238 68.93408249315182,17.63535369416943 68.92086913168461,17.529238139231186 68.90897710636412,17.460263028521325 68.89312107260346,17.446998584154045 68.90897710636412,17.452304361900957 68.91822645939116,17.48413902838243 68.93011848471166,17.468221695141693 68.94993852691248,17.49740347274971 68.9578665437928,17.55311413909229 68.95390253535264,17.56637858345957 68.96447322452642,17.54780836134538 68.96843723296658,17.54780836134538 68.9829719305805,17.48413902838243 68.97768658599362,17.47618036176206 68.994863955901,17.48944480612934 68.994863955901,17.529238139231186 69.01468399810182,17.550461250218834 69.03186136800919,17.592907472194135 69.04243205718296,17.693717249385468 69.08603615002477,17.648618138536715 69.09660683919853,17.624742138675607 69.09264283075836,17.640659471916344 69.10849886451902,17.730857693613856 69.12039088983951,17.75473369347496 69.11510554525263,17.786568359956433 69.11642688139935,17.826361693058278 69.12699757057312,17.89533680376814 69.13360425130672,17.929824359123067 69.1441749404805,17.985535025465648 69.15210295736082,18.05981591392242 69.14813894892066,18.05451013617551 69.13228291516,18.131443913505738 69.1441749404805,18.17919591322795 69.12303356213296,18.197766135342142 69.12831890671984,18.147361246746474 69.14813894892066,18.152667024493386 69.1573883019477,18.118179469138457 69.1573883019477,18.112873691391545 69.16531631882803,18.08369191378353 69.1573883019477,18.06777458054279 69.16531631882803,18.08103902491007 69.17720834414853,18.051857247302053 69.18117235258869,18.065121691669333 69.20627773937639,18.086344802656985 69.23006179001737,18.043898580681685 69.23402579845754,17.972270581098368 69.22609778157721,17.974923469971824 69.2379898068977,17.998799469832928 69.2498818322182,17.982882136592192 69.27102321056573,17.996146580959472 69.29877126964688,17.993493692086016 69.30934195882065,18.05451013617551 69.3185913118477,18.08103902491007 69.33973269019523,18.104915024771177 69.3436966986354,18.112873691391545 69.36351674083622,18.094303469277353 69.37937277459687,18.104915024771177 69.38465811918375,18.16593146886067 69.38465811918375,18.176543024354494 69.39522880835753,18.152667024493386 69.40051415294441,18.163278579987214 69.43222622046572,18.131443913505738 69.45336759881326,18.152667024493386 69.46525962413375,18.189807468721774 69.45997427954687,18.232253690697075 69.46658096028047,18.23490657957053 69.4811156578944,18.298575912533476 69.4811156578944,18.301228801406936 69.47318764101408,18.343675023382232 69.46525962413375,18.372856800990252 69.44147557349277,18.35959235662297 69.40051415294441,18.314493245774216 69.36351674083622,18.38877413423099 69.39655014450425,18.48427813367541 69.37540876615671,18.494889689169234 69.36748074927638,18.486931022548866 69.33048333716819,18.500195466916146 69.31991264799441,18.489583911422322 69.28687924432639,18.502848355789602 69.27366588285918,18.500195466916146 69.25913118524524,18.478972355928498 69.24327515148458,18.478972355928498 69.22477644543049,18.492236800295778 69.22213377313705,18.51080702240997 69.2379898068977,18.508154133536515 69.2498818322182,18.524071466777254 69.25780984909852,18.542641688891447 69.29480726120671,18.545294577764903 69.31462730340753,18.529377244524166 69.3318046733149,18.53998880001799 69.35162471551573,18.56651768875255 69.35558872395589,18.590393688613656 69.33973269019523,18.569170577626007 69.3185913118477,18.606311021854395 69.30141394194033,18.691203465804993 69.27102321056573,18.688550576931537 69.25384584065836,18.71242657679264 69.25384584065836,18.715079465666097 69.27895122744606,18.648757243829692 69.30273527808704,18.638145688335868 69.31330596726082,18.664674577070432 69.31330596726082,18.677939021437712 69.31991264799441,18.744261243274117 69.32255532028786,18.760178576514853 69.32651932872803,18.898128797934575 69.31991264799441,18.89547590906112 69.31462730340753,18.855682575959275 69.30537795038049,18.945880797656784 69.29480726120671,18.951186575403696 69.28687924432639,19.006897241746277 69.28687924432639,18.975062575264804 69.29877126964688,18.93526924216296 69.32784066487474,18.815889242857434 69.3318046733149,18.640798577209324 69.36748074927638,18.60365813298094 69.38333678303704,18.59569946636057 69.40447816138457,18.545294577764903 69.42826221202556,18.486931022548866 69.44411824578621,18.476319467055042 69.43619022890589,18.447137689447025 69.44147557349277,18.478972355928498 69.4811156578944,18.444484800573566 69.51018505312227,18.476319467055042 69.51414906156243,18.53468302227108 69.5181130700026,18.5877407997402 69.52604108688293,18.606311021854395 69.53396910376325,18.65671591045006 69.53396910376325,18.746914132147573 69.54189712064358,18.770790132008678 69.54189712064358,18.834459464971626 69.56303849899112,18.85302968708582 69.55378914596407,18.87159990920001 69.5062210446821,18.834459464971626 69.49432901936161,18.855682575959275 69.4811156578944,18.890170131314207 69.4930076832149,18.911393242301855 69.44543958193293,18.996285686252453 69.42033419514523,18.980368353011716 69.39258613606408,19.089136796823418 69.34766070707556,19.13688879654563 69.34237536248868,19.195252351761667 69.34633937092885,19.29075635120609 69.3436966986354,19.319938128814105 69.33576868175507,19.34646701754867 69.31066329496737,19.335855462054845 69.29480726120671,19.285450573459176 69.2815938997395,19.245657240357332 69.25384584065836,19.23239279599005 69.2498818322182,19.237698573736964 69.23270446231082,19.285450573459176 69.22213377313705,19.311979462193737 69.23006179001737,19.35973146191595 69.23666847075098,19.436665239246178 69.22609778157721,19.534822127564055 69.21288442011,19.54012790531097 69.21816976469688,19.48441723896839 69.23006179001737,19.42870657262581 69.24591782377803,19.410136350511618 69.26573786597885,19.40748346163816 69.29084325276655,19.41544212825853 69.3185913118477,19.354425684169037 69.36483807698293,19.37299590628323 69.37540876615671,19.314632351067193 69.37144475771655,19.280144795712264 69.37937277459687,19.237698573736964 69.37937277459687,19.113012796684526 69.37276609386326,19.07321946358268 69.39258613606408,19.0599550192154 69.430904884319,19.03342613048084 69.44015423734605,19.00424435287282 69.44147557349277,18.969756797517892 69.46129561569359,18.996285686252453 69.48640100248129,18.993632797378996 69.50225703624194,19.009550130619733 69.5181130700026,19.03342613048084 69.52075574229605,19.078525241329594 69.54586112908375,19.166070574153647 69.55378914596407,19.17933501852093 69.54057578449687,19.211169685002403 69.53000509532309,19.237698573736964 69.51414906156243,19.250963018104247 69.52075574229605,19.17933501852093 69.55907449055096,19.184640796267843 69.57096651587145,19.168723463027103 69.57096651587145,19.147500352039454 69.5617171628444,19.065260796962313 69.55511048211079,19.036079019354297 69.54586112908375,19.03342613048084 69.53793311220342,19.00424435287282 69.52868375917637,18.96445101977098 69.54057578449687,18.943227908783328 69.55907449055096,18.929963464416048 69.60796392797964,18.945880797656784 69.62778397018046,18.983021241885172 69.65024668467473,19.065260796962313 69.68460142448947,19.089136796823418 69.70442146669029,19.097095463443786 69.73349086191816,19.134235907672174 69.7480255595321,19.144847463166 69.74141887879848,19.174029240774015 69.74538288723865,19.195252351761667 69.7612389209993,19.272186129091896 69.77841629090668,19.293409240079544 69.7731309463198,19.322591017687564 69.77841629090668,19.39421901727088 69.77709495475996,19.42870657262581 69.786344307787,19.447276794740002 69.78238029934684,19.502987461082583 69.79691499696078,19.545433683057883 69.80087900540094,19.569309682918988 69.79691499696078,19.593185682780092 69.80484301384111,19.67011946011032 69.81541370301487,19.731135904199814 69.80748568613454,19.723177237579446 69.77841629090668,19.675425237857233 69.75331090411898,19.69930123771834 69.74009754265177,19.696648348844885 69.72556284503783,19.67011946011032 69.70177879439684,19.662160793489953 69.67667340760914,19.646243460249217 69.6674240545821,19.65685501574304 69.65949603770177,19.691342571097973 69.65553202926161,19.736441681946726 69.64364000394112,19.736441681946726 69.63571198706079,19.709912793212165 69.61985595330013,19.715218570959077 69.60796392797964,19.688689682224517 69.57889453275178,19.69930123771834 69.57493052431161,19.675425237857233 69.55907449055096,19.63828479362885 69.54189712064358,19.627673238135024 69.5062210446821,19.64359057137576 69.4930076832149,19.672772348983777 69.48507966633457,19.65685501574304 69.47318764101408,19.606450127147372 69.4494035903731,19.558698127425163 69.4375115650526,19.53747501643751 69.41901285899851,19.51094612770295 69.40447816138457,19.439318128119634 69.39522880835753,19.434012350372722 69.38862212762392,19.51094612770295 69.39258613606408,19.603797238273916 69.43222622046572,19.640937682502305 69.42033419514523,19.64359057137576 69.40844216982474,19.662160793489953 69.42033419514523,19.640937682502305 69.43619022890589,19.71256568208562 69.47847298560096,19.731135904199814 69.48507966633457,19.731135904199814 69.49432901936161,19.70725990433871 69.49829302780178,19.715218570959077 69.51414906156243,19.739094570820182 69.52604108688293,19.715218570959077 69.55511048211079,19.749706126314006 69.5736091881649,19.760317681807834 69.58814388577882,19.752359015187462 69.5987145749526,19.728483015326358 69.59607190265915,19.736441681946726 69.60664259183292,19.78949945941585 69.6119279364198,19.8107225704035 69.60399991953948,19.842557236884975 69.60267858339276,19.980507458304697 69.58021586889849,20.12376345747133 69.58285854119194,20.10254034648368 69.5868225496321,19.993771902671977 69.59078655807227,19.938061236329396 69.60399991953948,19.837251459138063 69.61985595330013,19.813375459276955 69.64364000394112,19.821334125897323 69.65553202926161,19.800111014909675 69.66874539072882,19.773582126175114 69.67667340760914,19.773582126175114 69.68856543292964,19.80276390378313 69.71631349201078,19.847863014631887 69.72952685347799,19.837251459138063 69.74934689567881,19.842557236884975 69.76520292943947,19.86643323674608 69.77841629090668,19.900920792101008 69.78238029934684,19.93540834745594 69.82202038374848,19.99111901379852 69.84712577053618,19.993771902671977 69.82598439218864,19.95663145844359 69.78238029934684,19.946019902949764 69.75991758485259,19.98581323605161 69.76520292943947,19.99111901379852 69.78502297164029,20.08131723549603 69.87883783805749,20.10784612423059 69.89601520796487,20.129069235218243 69.9356552923665,20.155598123952803 69.94358330924683,20.16355679057317 69.9356552923665,20.16355679057317 69.9105499055788,20.152945235079347 69.89601520796487,20.18477990156082 69.85505378741651,20.208655901421928 69.85505378741651,20.195391457054644 69.87883783805749,20.174168346066995 69.89601520796487,20.203350123675015 69.94094063695339,20.256407901144136 69.96472468759437,20.256407901144136 69.97529537676814,20.285589678752157 69.97661671291486,20.31742434523363 69.96472468759437,20.349259011715105 69.93961930080667,20.37313501157621 69.89997921640503,20.394358122563858 69.8920511995247,20.38639945594349 69.866945812737,20.367829233829298 69.85505378741651,20.354564789462017 69.82202038374848,20.33599456734782 69.80616434998782,20.301507011992893 69.76388159329275,20.285589678752157 69.71631349201078,20.264366567764505 69.71234948357062,20.288242567625613 69.70574280283701,20.24844923452377 69.68063741604931,20.26967234551142 69.67931607990259,20.272325234384876 69.65817470155505,20.35191190058856 69.63571198706079,20.34660612284165 69.61060660027309,20.320077234107085 69.60003591109931,20.314771456360173 69.5868225496321,20.27763101213179 69.58417987733866,20.264366567764505 69.57889453275178,20.221920345789208 69.57757319660506,20.224573234662664 69.54718246523046,20.27763101213179 69.54718246523046,20.221920345789208 69.52868375917637,20.2404905679034 69.5181130700026,20.216614568042296 69.51018505312227,20.208655901421928 69.49829302780178,20.251102123397224 69.49432901936161,20.232531901283032 69.46525962413375,20.198044345928103 69.45336759881326,20.192738568181188 69.4811156578944,20.179474123813907 69.48243699404112,20.15825101282626 69.44808225422638,20.152945235079347 69.40844216982474,20.142333679585523 69.39655014450425,20.09458167986331 69.38069411074359,20.036218124647274 69.3688020854231,19.967243013937413 69.3436966986354,19.980507458304697 69.33576868175507,19.924796791962116 69.30141394194033,19.898267903227552 69.2749872190059,19.903573680974464 69.26970187441901,19.95663145844359 69.2749872190059,19.959284347317045 69.29084325276655,19.993771902671977 69.3066992865272,20.02560656915345 69.33444734560835,20.062747013381838 69.35030337936901,20.19008567930773 69.3873007914772,20.25375501227068 69.37540876615671,20.26701945663796 69.39522880835753,20.25375501227068 69.41637018670507,20.274978123258332 69.4242982035854,20.2829367898787 69.4375115650526,20.32273012298054 69.45733160725342,20.343953233968193 69.49697169165506,20.375787900449666 69.53000509532309,20.39966390031077 69.5868225496321,20.418234122424966 69.59078655807227,20.521696788489756 69.56964517972473,20.534961232857036 69.54453979293703,20.569448788211968 69.54718246523046,20.59597767694653 69.54189712064358,20.617200787934177 69.52075574229605,20.69148167639095 69.51018505312227,20.74188656498662 69.51414906156243,20.789638564708827 69.49697169165506,20.81086167569648 69.50225703624194,20.771068342594635 69.52207707844276,20.74188656498662 69.52604108688293,20.686175898644038 69.52207707844276,20.603936343566897 69.55511048211079,20.577407454832336 69.58285854119194,20.537614121730492 69.60267858339276,20.479250566514455 69.61457060871325,20.458027455526807 69.63967599550095,20.479250566514455 69.66874539072882,20.500473677502107 69.67667340760914,20.527002566236668 69.70838547513046,20.516391010742844 69.73745487035832,20.48190345538791 69.74538288723865,20.49251501088174 69.75331090411898,20.460680344400263 69.76388159329275,20.49251501088174 69.76784560173292,20.542919899477404 69.76520292943947,20.646382565542194 69.79030831622717,20.710051898505142 69.79427232466733,20.776374120341547 69.82202038374848,20.78698567583537 69.84712577053618,20.7551510093539 69.85901779585667,20.749845231606987 69.86958848503045,20.76841545372118 69.88280184649766,20.848002119924864 69.90262188869848,20.8639194531656 69.91847792245913,20.967382119230393 69.93169128392634,21.020439896699518 69.95679667071404,21.06023322980136 69.9607606791542,21.07880345191555 69.95679667071404,21.068191896421727 69.93961930080667,21.031051452193342 69.93301262007306,20.977993674724217 69.91847792245913,20.90105989739399 69.87090982117716,20.842696342177952 69.85505378741651,20.858613675418688 69.84712577053618,20.930241675002005 69.85108977897634,20.95677056373657 69.83919775365585,20.91963011950818 69.83787641750914,20.90105989739399 69.82994840062881,20.92758878612855 69.79691499696078,20.954117674863113 69.79030831622717,20.967382119230393 69.77841629090668,21.004522563458778 69.78105896320012,21.03901011881371 69.79427232466733,20.993911007964954 69.81012835842799,20.98860523021804 69.81805637530832,21.028398563319886 69.83126973677552,21.04696878543408 69.82994840062881,21.054927452054446 69.85108977897634,21.031051452193342 69.85769645970996,21.041663007687166 69.87487382961733,21.076150563042095 69.87883783805749,21.123902562764307 69.87751650191078,21.153084340372324 69.88148051035094,21.182266117980344 69.87487382961733,21.192877673474168 69.86166046815012,21.13451411825813 69.82994840062881,21.126555451637763 69.80616434998782,21.1424727848785 69.80616434998782,21.153084340372324 69.81805637530832,21.214100784461817 69.8418404259493,21.227365228829097 69.85505378741651,21.187571895727256 69.88412318264437,21.1849190068538 69.89601520796487,21.200836340094536 69.9039432248452,21.230018117702553 69.89865788025831,21.314910561653154 69.89997921640503,21.31756345052661 69.91187124172552,21.245935450943293 69.91979925860585,21.1849190068538 69.93301262007306,21.21144789558836 69.98058072135503,21.24062967319638 70.00965011658289,21.2936874506655 70.01229278887634,21.35205100588154 70.02154214190338,21.428984783211767 70.01361412502305,21.442249227579047 70.00040076355585,21.474083894060524 69.9977580912624,21.521835893782733 69.98058072135503,21.51122433828891 69.97133136832798,21.529794560403104 69.95679667071404,21.55897633801112 69.95283266227388,21.577546560125313 69.94094063695339,21.561629226884577 69.93301262007306,21.574893671251857 69.91451391401897,21.720802559291947 69.88280184649766,21.76059589239379 69.87883783805749,21.808347892116 69.85901779585667,21.82426522535674 69.84712577053618,21.87732300282586 69.84316176209602,21.866711447332037 69.83391240906897,21.87732300282586 69.81805637530832,21.917116335927705 69.79427232466733,21.922422113674617 69.77841629090668,21.980785668890654 69.76520292943947,22.015273224245583 69.7731309463198,22.00996744649867 69.76388159329275,22.05241366847397 69.74934689567881,22.03119055748632 69.74406155109193,22.05241366847397 69.73745487035832,21.95425678015609 69.73745487035832,22.007314557625214 69.72556284503783,22.057719446220883 69.72556284503783,22.0869012238289 69.73745487035832,22.12138877918383 69.7361335342116,22.137306112424568 69.7480255595321,22.044455001853603 69.76784560173292,22.07894255720853 69.76916693787963,22.070983890588163 69.78105896320012,21.959562557903002 69.82202038374848,21.943645224662266 69.8114496945747,21.88528166944623 69.83523374521569,21.898546113813513 69.84712577053618,21.951603891282634 69.83787641750914,22.012620335372127 69.8418404259493,22.02323189086595 69.84712577053618,22.007314557625214 69.85901779585667,21.964868335649918 69.866945812737,21.91976922480116 69.87090982117716,21.88528166944623 69.88676585493782,21.88528166944623 69.90658589713864,21.874670113952405 69.9105499055788,21.861405669585125 69.93961930080667,21.87201722507895 69.94490464539355,21.91446344705425 69.947547317687,21.917116335927705 69.95547533456732,21.87732300282586 69.96472468759437,21.87732300282586 69.98322339364847,21.951603891282634 69.99247274667552,21.986091446637566 69.99247274667552,22.012620335372127 69.98454472979519,22.015273224245583 69.96472468759437,21.988744335511022 69.94358330924683,22.033843446359775 69.93301262007306,22.049760779600515 69.94358330924683,22.03119055748632 69.95547533456732,22.041802112980147 69.98850873823535,22.007314557625214 70.01361412502305,22.06567811284125 70.02022080575667,22.076289668335075 70.03211283107716,22.00466166875176 70.02550615034355,21.917116335927705 70.01229278887634,21.842835447470932 70.01229278887634,21.78712478112835 70.028148822637,21.77386033676107 70.03739817566404,21.848141225217844 70.0532542094247,21.86405855845858 70.06250356245174,21.90650478043388 70.06118222630502,21.959562557903002 70.06514623474519,22.002008779878302 70.07439558777223,22.025884779739407 70.09421562997305,22.06037233509434 70.10214364685338,22.07363677946162 70.12328502520091,22.05241366847397 70.12592769749436,22.03119055748632 70.10610765529354,22.00996744649867 70.09817963841321,21.988744335511022 70.10478631914683,21.986091446637566 70.09289429382633,21.943645224662266 70.07703826006568,21.895893224940057 70.0783595962124,21.84548833634439 70.07307425162551,21.829571003103652 70.07439558777223,21.813653669862912 70.09025162153289,21.797736336622176 70.08628761309272,21.797736336622176 70.07703826006568,21.818959447609828 70.0664675708919,21.74733144802651 70.0532542094247,21.723455448165403 70.05061153713125,21.702232337177755 70.05853955401157,21.58550522674568 70.084966276946,21.60142255998642 70.10082231070666,21.58019944899877 70.1100716637337,21.55897633801112 70.09289429382633,21.53244744927656 70.09025162153289,21.45551367194633 70.10082231070666,21.442249227579047 70.1219636890542,21.40776167222412 70.14310506740173,21.44755500532596 70.15103308428206,21.482042560680892 70.16424644574927,21.47673678293398 70.17481713492305,21.38123278348956 70.15896110116239,21.336133672640802 70.15499709272223,21.272464339677853 70.16424644574927,21.251241228690205 70.17481713492305,21.25389411756366 70.18803049639025,21.22471233995564 70.19595851327058,21.21144789558836 70.21049321088452,21.1849190068538 70.19992252171075,21.190224784600712 70.21974256391157,21.20614211784145 70.22370657235173,21.23532389544947 70.2408839422591,21.24062967319638 70.23691993381894,21.296340339538958 70.25673997601976,21.320216339400066 70.24881195913943,21.34409233926117 70.26466799290009,21.367968339122275 70.26466799290009,21.415720338844487 70.27391734592713,21.436943449832135 70.2527759675796,21.4210261165914 70.22370657235173,21.492654116174716 70.19199450483042,21.495307005048172 70.21181454703124,21.46877811631361 70.22238523620501,21.492654116174716 70.2408839422591,21.487348338427804 70.28845204354107,21.471431005187068 70.29770139656812,21.487348338427804 70.30959342188861,21.564282115758033 70.32412811950255,21.56693500463149 70.31355743032877,21.55367056026421 70.28977337968779,21.59346389336605 70.26863200134025,21.68631500393702 70.24484795069927,21.70488522605121 70.23295592537877,21.72610833703886 70.23295592537877,21.715496781545035 70.2157785554714,21.749984336899967 70.21974256391157,21.771207447887615 70.21181454703124,21.784471892254896 70.17878114336321,21.832223891977108 70.16688911804272,21.840182558597476 70.14310506740173,21.861405669585125 70.13914105896157,21.856099891838213 70.1721744626296,21.82426522535674 70.18406648795009,21.811000780989456 70.20388653015091,21.82426522535674 70.21049321088452,21.869364336205493 70.21181454703124,21.869364336205493 70.2157785554714,21.813653669862912 70.21974256391157,21.776513225634528 70.23691993381894,21.784471892254896 70.26202532060664,21.83752966972402 70.27656001822058,21.90119900268697 70.30959342188861,21.948951002409178 70.32941346408943,21.980785668890654 70.32941346408943,22.012620335372127 70.3214854472091,22.00466166875176 70.30562941344844,21.95425678015609 70.28977337968779,21.951603891282634 70.27656001822058,21.988744335511022 70.28580937124762,22.05241366847397 70.31223609418205,22.070983890588163 70.31355743032877,22.09220700157581 70.30430807730173,22.09220700157581 70.28184536280746,22.081595446081987 70.2659893290468,22.084248334955443 70.24484795069927,22.076289668335075 70.23163458923206,22.110777223690008 70.23956260611239,22.105471445943092 70.2659893290468,22.147917667918392 70.28845204354107,22.187711001020237 70.28977337968779,22.291173667085026 70.28052402666074,22.296479444831938 70.27391734592713,22.26729766722392 70.24484795069927,22.27525633384429 70.23559859767222,22.22485144524862 70.21974256391157,22.272603444970834 70.22370657235173,22.26199188947701 70.18803049639025,22.227504334122077 70.15235442042878,22.25138033398318 70.1470690758419,22.203628334260973 70.1351770505214,22.240768778489358 70.12724903364108,22.26729766722392 70.1351770505214,22.333619889060326 70.13121304208124,22.33892566680724 70.13914105896157,22.402594999770187 70.13914105896157,22.439735443998572 70.12989170593453,22.48483455484733 70.12328502520091,22.506057665834977 70.11535700832059,22.53789233231645 70.11403567217387,22.521974999075713 70.12592769749436,22.439735443998572 70.15103308428206,22.386677666529447 70.15499709272223,22.304438111452306 70.15235442042878,22.291173667085026 70.16292510960255,22.30974388919922 70.16688911804272,22.333619889060326 70.19860118556403,22.33096700018687 70.23295592537877,22.34423144455415 70.23559859767222,22.349537222301063 70.26070398445992,22.450346999492396 70.2527759675796,22.50340477696152 70.24484795069927,22.52462788794917 70.22502790849845,22.55380966555719 70.23295592537877,22.612173220773222 70.22370657235173,22.58033855429175 70.20785053859107,22.62278477626705 70.20652920244436,22.6440078872547 70.21974256391157,22.678495442609627 70.21974256391157,22.80318121966207 70.20785053859107,22.906643885726858 70.20785053859107,22.959701663195982 70.19595851327058,22.965007440942895 70.17878114336321,22.935825663334878 70.15631842886894,22.89868521910649 70.16688911804272,22.909296774600314 70.15103308428206,22.882767885865753 70.14310506740173,22.874809219245385 70.13121304208124,22.82971010839663 70.11932101676075,22.80318121966207 70.11403567217387,22.83501588614354 70.1100716637337,22.7952225530417 70.10214364685338,22.723594553458383 70.0968583022665,22.678495442609627 70.08628761309272,22.630743442887418 70.08893028538617,22.60686744302631 70.0783595962124,22.569726998797925 70.07439558777223,22.47687588822696 70.07703826006568,22.44769411061894 70.08232360465256,22.4079007775171 70.06911024318535,22.35749588892143 70.06250356245174,22.35749588892143 70.05457554557141,22.312396778072674 70.04929020098453,22.269950556097378 70.03739817566404,22.293826555958482 70.02154214190338,22.39198344427636 70.05457554557141,22.49809899921461 70.05721821786486,22.646660776128154 70.07439558777223,22.681148331483083 70.07439558777223,22.742164775572576 70.09025162153289,22.78195810867442 70.09025162153289,22.861544774878105 70.10214364685338,22.970313218689807 70.13914105896157,23.002147885171283 70.1351770505214,22.986230551930547 70.12592769749436,22.99153632967746 70.1100716637337,22.98092477418363 70.07439558777223,22.999494996297827 70.05721821786486,22.957048774322526 70.0413621841042,22.999494996297827 70.02947015878371,23.026023885032387 70.0162567973165,23.076428773628056 70.02947015878371,23.102957662362616 70.00040076355585,23.092346106868792 69.98850873823535,23.102957662362616 69.97529537676814,23.132139439970636 69.98058072135503,23.132139439970636 69.96472468759437,23.11356921785644 69.96340335144765,23.04989988489349 69.947547317687,23.012759440665107 69.92376326704601,23.033982551652755 69.92376326704601,23.08704032912188 69.94490464539355,23.110916328982984 69.94490464539355,23.094998995742248 69.93169128392634,23.118874995603353 69.9290486116329,23.132139439970636 69.94094063695339,23.161321217578653 69.95283266227388,23.187850106313213 69.95151132612716,23.2249905505416 69.95943934300749,23.251519439276162 69.97133136832798,23.25947810589653 69.98850873823535,23.304577216745287 69.99247274667552,23.307230105618743 69.97661671291486,23.331106105479847 69.97529537676814,23.368246549708235 69.98058072135503,23.381510994075516 69.96736735988782,23.408039882810076 69.96472468759437,23.429262993797728 69.97661671291486,23.471709215773025 69.98058072135503,23.48232077126685 69.99247274667552,23.52476699324215 70.01361412502305,23.500890993381045 70.02550615034355,23.39212254956934 70.02550615034355,23.35763499421441 70.02022080575667,23.25947810589653 70.03871951181075,23.193155884060126 70.05721821786486,23.1825443285663 70.06911024318535,23.132139439970636 70.08628761309272,23.14275099546446 70.09025162153289,23.19050299518667 70.09421562997305,23.227643439415058 70.10214364685338,23.331106105479847 70.10478631914683,23.347023438720583 70.09817963841321,23.373552327455148 70.12328502520091,23.33641188322676 70.13385571437469,23.29661855012492 70.15235442042878,23.2674367725169 70.15896110116239,23.264783883643442 70.17481713492305,23.37089943858169 70.17613847106976,23.362940771961323 70.18406648795009,23.2674367725169 70.18406648795009,23.198461661807038 70.19992252171075,23.198461661807038 70.21181454703124,23.174585661945933 70.2157785554714,23.21172610617432 70.21974256391157,23.278048328010726 70.21974256391157,23.325800327732935 70.2276705807919,23.402734105063164 70.2276705807919,23.402734105063164 70.23559859767222,23.431915882671184 70.23956260611239,23.5035438822545 70.23691993381894,23.49823810450759 70.24749062299271,23.36559366083478 70.24484795069927,23.317841661112567 70.2408839422591,23.256825217023074 70.24352661455255,23.243560772655794 70.24881195913943,23.27274255026381 70.2593826483132,23.32314743885948 70.26070398445992,23.3523292164675 70.26863200134025,23.408039882810076 70.26070398445992,23.410692771683532 70.26466799290009,23.362940771961323 70.27656001822058,23.445180327038464 70.28580937124762,23.53007277098906 70.28052402666074,23.5884363262051 70.28845204354107,23.60700654831929 70.29770139656812,23.53007277098906 70.29373738812795,23.4610976602792 70.30430807730173,23.51150254887487 70.3214854472091,23.500890993381045 70.32544945564926,23.44783321591192 70.31223609418205,23.429262993797728 70.31223609418205,23.445180327038464 70.32941346408943,23.535378548735974 70.37037488463778,23.58047765958473 70.38226690995828,23.58047765958473 70.3901949268386,23.622923881560027 70.39944427986565,23.62822965930694 70.40737229674598,23.771485658473573 70.44701238114762,23.798014547208137 70.47608177637548,23.853725213550714 70.49325914628285,23.959840768488963 70.50779384389679,23.983716768350067 70.50779384389679,24.042080323566104 70.51307918848367,24.103096767655597 70.49193781013614,24.166766100618545 70.48665246554926,24.222476766961123 70.48665246554926,24.26757587780988 70.47872444866893,24.26757587780988 70.45890440646811,24.304716322038267 70.44701238114762,24.32859232189937 70.44965505344106,24.304716322038267 70.48268845710909,24.25961721118951 70.50382983545663,24.222476766961123 70.51572186077712,24.137584323010525 70.53157789453778,24.097790989908685 70.53289923068449,24.10044387878214 70.55271927288531,24.158807433998177 70.56989664279268,24.174724767238914 70.5897166849935,24.20390654484693 70.601608710314,24.23308832245495 70.59764470187383,24.230435433581494 70.63728478627547,24.243699877948774 70.66239017306317,24.28614609992407 70.65842616462301,24.27288165555679 70.67428219838366,24.291451877670983 70.68353155141071,24.33655098851974 70.68749555985087,24.360426988380844 70.6954235767312,24.355121210633932 70.68617422370416,24.47450120993946 70.67824620682383,24.471848321066005 70.66635418150334,24.562046542763515 70.64653413930252,24.567352320510427 70.63464211398203,24.604492764738815 70.61350073563449,24.63367454234683 70.61350073563449,24.69734387530978 70.63067810554186,24.6840794309425 70.64653413930252,24.62836876459992 70.6703181899435,24.59388120924499 70.69410224058448,24.657550542207936 70.6954235767312,24.57796387600425 70.7139222827853,24.57796387600425 70.70335159361153,24.543476320649322 70.70995827434514,24.562046542763515 70.71656495507874,24.511641654167846 70.72713564425251,24.53817054290241 70.74695568645333,24.527558987408586 70.75488370333366,24.48776565430674 70.74431301415989,24.40022032148269 70.74827702260005,24.344509655140108 70.75224103104021,24.357774099507388 70.7641330563607,24.30206343316481 70.76677572865415,24.238394100201862 70.77866775397464,24.26757587780988 70.81698650222955,24.230435433581494 70.83812788057709,24.352468321760476 70.87644662883201,24.389608765988864 70.86587593965824,24.389608765988864 70.84605589745742,24.410831876976513 70.84869856975087,24.445319432331445 70.83812788057709,24.424096321343793 70.8262358552566,24.519600320788218 70.80773714920251,24.58592254262462 70.78395309856153,24.62041009797955 70.79188111544185,24.62041009797955 70.81698650222955,24.570005209383883 70.82359318296317,24.580616764877707 70.8447345613107,24.556740765016603 70.86587593965824,24.57796387600425 70.87380395653857,24.649591875587568 70.8698399480984,24.673467875448676 70.86587593965824,24.71060831967706 70.8698399480984,24.66285631995485 70.88569598185906,24.548782098396234 70.900230679473,24.554087876143146 70.90551602405988,24.60714565361227 70.9134440409402,24.617757209106095 70.91872938552709,24.55143498726969 70.92269339396725,24.543476320649322 70.95440546148856,24.591228320371535 70.95440546148856,24.638980320093744 70.95969080607544,24.57265809825734 70.96233347836889,24.535517654028954 70.97026149524922,24.59388120924499 70.97951084827626,24.625715875726463 70.99008153745004,24.69734387530978 70.99008153745004,24.67081498657522 70.96761882295577,24.69734387530978 70.97158283139593,24.73979009728508 70.99008153745004,24.77427765264001 70.99008153745004,24.758360319399273 70.9636548145156,24.782236319260377 70.95836946992873,24.7928478747542 70.94383477231479,24.80876520799494 70.94647744460823,24.835294096729502 70.92665740240741,24.790194985880746 70.91476537708692,24.82998831898259 70.9134440409402,24.891004763072083 70.92665740240741,24.92549231842701 70.91740804938037,24.94671542941466 70.91872938552709,24.922839429553555 70.93326408314103,24.959979873781943 70.96233347836889,24.957326984908487 70.9755468398361,25.01038476237761 70.97158283139593,25.04487231773254 70.95440546148856,25.034260762238716 70.93326408314103,24.941409651667747 70.89362399873939,24.875087429831343 70.87380395653857,24.936103873920835 70.88041063727218,24.944062540541204 70.87380395653857,25.018343428997976 70.86587593965824,25.01569054012452 70.8817319734189,25.050178095479453 70.91080136864676,25.119153206189313 70.92665740240741,25.156293650417698 70.9068373602066,25.193434094646086 70.900230679473,25.233227427747927 70.86851861195169,25.235880316621383 70.83284253599021,25.24649187211521 70.82095051066972,25.23057453887447 70.81302249378939,25.233227427747927 70.79716646002873,25.25445053873558 70.81302249378939,25.26771498310286 70.80905848534923,25.291590982963964 70.8262358552566,25.320772760571984 70.80773714920251,25.341995871559632 70.80905848534923,25.328731427192352 70.82887852755005,25.341995871559632 70.83019986369676,25.36321898254728 70.84869856975087,25.320772760571984 70.86059059507136,25.326078538318896 70.86587593965824,25.36321898254728 70.85794792277791,25.35791320480037 70.87776796497873,25.387094982408385 70.8817319734189,25.38444209353493 70.90155201561971,25.341995871559632 70.93458541928774,25.3075083162047 70.93987076387462,25.299549649584332 70.96233347836889,25.312814093951612 70.97422550368938,25.34995453818 70.97422550368938,25.355260315926913 70.9636548145156,25.379136315788017 70.96761882295577,25.437499871004054 70.95969080607544,25.448111426497878 70.94647744460823,25.50912787058737 70.93062141084758,25.511780759460827 70.92269339396725,25.548921203689215 70.9134440409402,25.52239231495465 70.89758800717955,25.40566520452258 70.86191193121807,25.3924007601553 70.85398391433775,25.437499871004054 70.86059059507136,25.429541204383685 70.84605589745742,25.450764315371334 70.8447345613107,25.498516315093546 70.88041063727218,25.50912787058737 70.87776796497873,25.49586342622009 70.85794792277791,25.506474981713914 70.8566265866312,25.533003870448475 70.87380395653857,25.607284758905248 70.9068373602066,25.647078092007092 70.90551602405988,25.708094536096585 70.90551602405988,25.713400313843497 70.89626667103283,25.67625986961511 70.88965999029922,25.72401186933732 70.88437464571234,25.721358980463865 70.86191193121807,25.75054075807188 70.86851861195169,25.742582091451514 70.88965999029922,25.84339186864285 70.90155201561971,25.88318520174469 70.89362399873939,25.85135053526322 70.87644662883201,25.819515868781743 70.8698399480984,25.85135053526322 70.86587593965824,25.909714090479255 70.87380395653857,25.904408312732343 70.86455460351152,25.86992075737741 70.84869856975087,25.848697646389763 70.84605589745742,25.77441675793299 70.82491451910988,25.758499424692253 70.81170115764267,25.76115231356571 70.79188111544185,25.739929202578057 70.78659577085497,25.68421853623548 70.78395309856153,25.62054920327253 70.7760250816812,25.59136742566451 70.74827702260005,25.612590536652164 70.75224103104021,25.623202092145988 70.74299167801317,25.673606980741653 70.76016904792054,25.694830091729305 70.75884771177383,25.68421853623548 70.73109965269268,25.66299542524783 70.72317163581235,25.660342536374372 70.73638499727956,25.64177231426018 70.74034900571972,25.54626831481576 70.70335159361153,25.52239231495465 70.70599426590498,25.50912787058737 70.69410224058448,25.458722981991702 70.67296086223695,25.395053649028757 70.6703181899435,25.40566520452258 70.65710482847629,25.291590982963964 70.59235935728695,25.25445053873558 70.5897166849935,25.233227427747927 70.56593263435252,25.18547542802572 70.55536194517876,25.13507053943005 70.53686323912466,25.09262431745475 70.53289923068449,25.055483873226365 70.50382983545663,25.089971428581293 70.51307918848367,25.219962983380647 70.52893522224433,25.235880316621383 70.521007205364,25.21731009450719 70.49986582701646,25.16159942816461 70.49193781013614,25.076706984214013 70.49722315472302,25.060789650973277 70.48797380169597,25.08466565083438 70.4707964317886,25.222615872254103 70.48004578481564,25.22526876112756 70.46815375949515,25.275673649723227 70.46683242334844,25.23057453887447 70.45890440646811,25.21200431676028 70.43908436426729,25.16159942816461 70.42190699435992,25.18547542802572 70.41397897747959,25.241186094368295 70.41001496903942,25.23853320549484 70.3901949268386,25.21731009450719 70.38623091839844,25.174863872531894 70.3901949268386,25.17751676140535 70.40340828830581,25.14833498379733 70.40605096059926,25.08466565083438 70.36641087619762,25.042219428859084 70.35319751473041,25.06609542872019 70.34923350629025,25.105888761822033 70.36112553161074,25.129764761683138 70.36112553161074,25.082012761960925 70.34262682555664,25.074054095340557 70.32809212794271,25.055483873226365 70.31752143876894,25.0714012064671 70.31355743032877,25.143029206050418 70.33337747252959,25.182822539152262 70.32544945564926,25.16955809478498 70.29373738812795,25.140376317176962 70.28580937124762,25.1138474284424 70.29241605198123,25.116500317315857 70.2778813543673,25.0714012064671 70.26070398445992,25.03160787336526 70.26070398445992,25.02364920674489 70.2527759675796,24.936103873920835 70.23163458923206,24.93875676279429 70.20785053859107,24.917533651806643 70.19992252171075,24.930798096173923 70.18406648795009,24.9626327626554 70.1721744626296,24.928145207300467 70.16424644574927,24.904269207439363 70.15235442042878,24.91222787405973 70.14310506740173,24.914880762933187 70.08100226850584,24.973244318149224 70.0783595962124,24.994467429136872 70.07043157933207,24.983855873643048 70.05457554557141,25.03160787336526 70.05853955401157,25.034260762238716 70.084966276946,24.981202984769592 70.10082231070666,24.98916165138996 70.12724903364108,25.02364920674489 70.15499709272223,25.055483873226365 70.14310506740173,25.087318539707837 70.15896110116239,25.09262431745475 70.13914105896157,25.060789650973277 70.1351770505214,25.060789650973277 70.1219636890542,25.08466565083438 70.12328502520091,25.116500317315857 70.13914105896157,25.145682094923874 70.13385571437469,25.150987872670786 70.12328502520091,25.129764761683138 70.12328502520091,25.105888761822033 70.11403567217387,25.063442539846733 70.11403567217387,25.074054095340557 70.10875032758699,25.082012761960925 70.08232360465256,25.116500317315857 70.0664675708919,25.150987872670786 70.06514623474519,25.180169650278806 70.08100226850584,25.22526876112756 70.09025162153289,25.233227427747927 70.11403567217387,25.25445053873558 70.12989170593453,25.241186094368295 70.13781972281485,25.270367871976315 70.14574773969518,25.283632316343596 70.16292510960255,25.278326538596684 70.1721744626296,25.299549649584332 70.19595851327058,25.320772760571984 70.18803049639025,25.355260315926913 70.19860118556403,25.397706537902213 70.22502790849845,25.40566520452258 70.24881195913943,25.487904759599722 70.26995333748697,25.52239231495465 70.28977337968779,25.493210537346634 70.28845204354107,25.52239231495465 70.31223609418205,25.461375870865158 70.30827208574189,25.42688831551023 70.3214854472091,25.3924007601553 70.3214854472091,25.387094982408385 70.33337747252959,25.429541204383685 70.34262682555664,25.437499871004054 70.3650895400509,25.466681648612074 70.37037488463778,25.493210537346634 70.38226690995828,25.498516315093546 70.39944427986565,25.525045203828107 70.38623091839844,25.55157409256267 70.39548027142548,25.53035098157502 70.40605096059926,25.57279720355032 70.41397897747959,25.580755870170687 70.4271923389468,25.612590536652164 70.43908436426729,25.61524342552562 70.45626173417466,25.64177231426018 70.46022574261482,25.665648314121285 70.49193781013614,25.742582091451514 70.51307918848367,25.8646149796305 70.57253931508613,25.885838090618147 70.56989664279268,25.92563142371999 70.5897166849935,25.981342090062572 70.60557271875416,25.96807764569529 70.6267140971017,25.981342090062572 70.63860612242219,26.013176756544045 70.65842616462301,26.018482534290957 70.68221021526399,26.04235853415206 70.6954235767312,26.02378831203787 70.7073156020517,26.055622978519345 70.72845698039923,26.082151867253906 70.72845698039923,26.108680755988466 70.71920762737219,26.140515422469942 70.75884771177383,26.129903866976118 70.76809706480087,26.17500297782487 70.77866775397464,26.196226088812523 70.77866775397464,26.233366533040908 70.78791710700169,26.220102088673627 70.79320245158857,26.243978088534732 70.81302249378939,26.400498532068646 70.8883386541525,26.42702742080321 70.89230266259267,26.437638976297034 70.90155201561971,26.511919864753807 70.93458541928774,26.567630531096388 70.95176278919512,26.63660564180625 70.95572679763528,26.671093197161177 70.97026149524922,26.70558075251611 70.96629748680905,26.687010530401913 70.95836946992873,26.7241509746303 70.93458541928774,26.700274974769194 70.91872938552709,26.729456752377214 70.91080136864676,26.708233641389565 70.88041063727218,26.665787419414265 70.86191193121807,26.665787419414265 70.82887852755005,26.73210964125067 70.84209188901725,26.73210964125067 70.82359318296317,26.71088653026302 70.82359318296317,26.71884519688339 70.80377314076235,26.681704752655 70.78395309856153,26.673746086034633 70.77206107324103,26.684357641528457 70.75620503948038,26.679051863781545 70.74431301415989,26.623341197438965 70.72317163581235,26.51722564250072 70.69806624902465,26.45355630953777 70.68617422370416,26.400498532068646 70.67956754297055,26.360705198966805 70.66106883691646,26.30764742149768 70.65049814774268,26.336829199105697 70.64653413930252,26.46682075390505 70.66635418150334,26.533142975741455 70.6703181899435,26.58620075321058 70.66106883691646,26.562324753349476 70.67428219838366,26.594159419830948 70.67692487067711,26.618035419692053 70.69013823214432,26.633952752932792 70.68353155141071,26.62068830856551 70.6703181899435,26.59946519757786 70.66899685379678,26.604770975324772 70.65710482847629,26.639258530679705 70.64653413930252,26.615382530818597 70.5897166849935,26.602118086451316 70.57386065123285,26.61272964194514 70.54875526444515,26.551713197855648 70.521007205364,26.54906030898219 70.48929513784269,26.58620075321058 70.48268845710909,26.55701897560256 70.45626173417466,26.527837197994543 70.45097638958778,26.506614087006895 70.42322833050663,26.533142975741455 70.39415893527877,26.501308309259983 70.38755225454516,26.47477942052542 70.36244686775746,26.477432309398875 70.35451885087713,26.51722564250072 70.3465908339968,26.538448753488368 70.37830290151811,26.578242086590212 70.38755225454516,26.610076753071684 70.37830290151811,26.631299864059333 70.37962423766483,26.62599408631242 70.39812294371893,26.580894975463668 70.4020869521591,26.62599408631242 70.43115634738696,26.687010530401913 70.41133630518614,26.721498085756846 70.4153003136263,26.734762530124126 70.42322833050663,26.73210964125067 70.43776302812057,26.763944307732142 70.43908436426729,26.755985641111774 70.45097638958778,26.769250085479054 70.46418975105499,26.74537408561795 70.47872444866893,26.74537408561795 70.48797380169597,26.803737640833987 70.48004578481564,26.817002085201267 70.4959018185763,26.838225196188915 70.48797380169597,26.83557230731546 70.47608177637548,26.9178118623926 70.47872444866893,26.949646528874077 70.48268845710909,26.915158973519144 70.46022574261482,26.962910973241357 70.45494039802794,26.989439861975917 70.4707964317886,27.031886083951218 70.48400979325581,27.076985194799974 70.47476044022876,27.095555416914166 70.46418975105499,27.103514083534535 70.48004578481564,27.084943861420342 70.48665246554926,27.039844750571586 70.48929513784269,27.026580306204306 70.50779384389679,26.99474563972283 70.50911518004351,26.99474563972283 70.52364987765745,26.949646528874077 70.54743392829843,27.01596875071048 70.55536194517876,27.005357195216657 70.56989664279268,26.952299417747533 70.57253931508613,27.008010084090113 70.60557271875416,27.031886083951218 70.60689405490088,27.026580306204306 70.61878608022137,27.076985194799974 70.61878608022137,27.069026528179602 70.61350073563449,27.095555416914166 70.60557271875416,27.20962963847278 70.59632336572712,27.24677008270117 70.58443134040662,27.236158527207344 70.60689405490088,27.13269586114255 70.63332077783531,27.108819861281447 70.63067810554186,27.074332305926518 70.64653413930252,27.076985194799974 70.66106883691646,27.130042972269095 70.6703181899435,27.130042972269095 70.67824620682383,27.084943861420342 70.68221021526399,27.111472750154903 70.68749555985087,27.145960305509835 70.67956754297055,27.172489194244395 70.66899685379678,27.164530527624027 70.68617422370416,27.13269586114255 70.69410224058448,27.06372075043269 70.70203025746481,27.084943861420342 70.71127961049186,27.111472750154903 70.75488370333366,27.14861319438329 70.74827702260005,27.26003452706845 70.7509196948935,27.299827860170293 70.72713564425251,27.326356748904853 70.73506366113284,27.323703860031397 70.74827702260005,27.35553852651287 70.75620503948038,27.270646082562273 70.7641330563607,27.27329897143573 70.79055977929514,27.283910526929553 70.8011304684689,27.27860474918264 70.82491451910988,27.291869193549925 70.83284253599021,27.37145585975361 70.83284253599021,27.41920785947582 70.82491451910988,27.443083859336927 70.81566516608284,27.485530081312223 70.81566516608284,27.506753192299872 70.80773714920251,27.527976303287524 70.80905848534923,27.591645636250473 70.80377314076235,27.708372746682542 70.79980913232218,27.711025635556 70.80377314076235,27.65531496921342 70.81302249378939,27.541240747654804 70.819629174523,27.477571414691855 70.82887852755005,27.45369541483075 70.8447345613107,27.512058970046787 70.85001990589758,27.50940608117333 70.86059059507136,27.53062919216098 70.86587593965824,27.469612748071487 70.8698399480984,27.472265636944943 70.88569598185906,27.374108748627066 70.8817319734189,27.42451363722273 70.9068373602066,27.41124919285545 70.9253360662607,27.3475798598925 70.89362399873939,27.310439415664117 70.88965999029922,27.297174971296837 70.89626667103283,27.25207586044808 70.89362399873939,27.236158527207344 70.90155201561971,27.222894082840064 70.89626667103283,27.164530527624027 70.90419468791316,27.15657186100366 70.9134440409402,27.116778527901815 70.91740804938037,27.10616697240799 70.93458541928774,27.124737194522183 70.9385494277279,27.145960305509835 70.98215352056971,27.193712305232044 70.97951084827626,27.299827860170293 70.94647744460823,27.352885637639414 70.94647744460823,27.318398082284485 70.95572679763528,27.30778652679066 70.97158283139593,27.267993193688817 70.99933089047708,27.222894082840064 71.00329489891725,27.199018082978956 71.01386558809102,27.212282527346236 71.02840028570495,27.275951860309185 71.0442563194656,27.31574519341103 71.03236429414511,27.37145585975361 71.02443627726478,27.374108748627066 71.01386558809102,27.427166526096187 71.02443627726478,27.506753192299872 71.00990157965086,27.504100303426416 70.9755468398361,27.514711858920244 70.95572679763528,27.567769636389365 70.96233347836889,27.554505192022084 70.97026149524922,27.575728303009733 71.01122291579757,27.538587858781348 71.03236429414511,27.498794525679504 71.04029231102544,27.50144741455296 71.08521774001396,27.54389363652826 71.09578842918773,27.551852303148628 71.10503778221478,27.57838119188319 71.10768045450823,27.618174524985033 71.09710976533445,27.644703413719593 71.09710976533445,27.644703413719593 71.10900179065494,27.628786080478857 71.1248578244156,27.644703413719593 71.13278584129593,27.708372746682542 71.11296579909511,27.7534718575313 71.10900179065494,27.718984302176366 71.08521774001396,27.729595857670194 71.08521774001396,27.68184385794798 71.06143368937298,27.72429007992328 71.06407636166642,27.721637191049822 71.05218433634593,27.7534718575313 71.04822032790577,27.795918079506595 71.07200437854675,27.817141190494247 71.06011235322626,27.787959412886227 71.0442563194656,27.82244696824116 71.03236429414511,27.851628745849176 71.05086300019921,27.87019896796337 71.05218433634593,27.867546079089912 71.03500696643856,27.98162030064853 71.08521774001396,27.963050078534337 71.06143368937298,27.98162030064853 71.05350567249265,28.018760744876918 71.07728972313363,28.06385985572567 71.0878604123074,28.05855407797876 71.04822032790577,28.074471411219495 71.04689899175905,28.130182077562075 71.0812537315738,28.156710966296636 71.09182442074757,28.191198521651568 71.09578842918773,28.24690918799415 71.08521774001396,28.26547941010834 71.04822032790577,28.23099185475341 71.03632830258528,28.167322521790464 71.03236429414511,28.20976874376576 71.02707894955823,28.172628299537376 70.99536688203692,28.16997541066392 70.97951084827626,28.191198521651568 70.99800955433037,28.21772741038613 71.00725890735741,28.225686077006497 70.99933089047708,28.180586966157744 70.96233347836889,28.199157188271936 70.95836946992873,28.225686077006497 70.97818951212955,28.23895052137378 70.97158283139593,28.284049632222533 70.99140287359675,28.305272743210182 71.00329489891725,28.408735409274975 71.00329489891725,28.52280963083359 70.98743886515659,28.54403274182124 70.97951084827626,28.549338519568153 70.96761882295577,28.50954518646631 70.9134440409402,28.48832207547866 70.90551602405988,28.47505763111138 70.88965999029922,28.42465274251571 70.88569598185906,28.366289187299675 70.89362399873939,28.347718965185482 70.88569598185906,28.459140297870643 70.87644662883201,28.40608252040152 70.85001990589758,28.326495854197834 70.85266257819103,28.371594965046587 70.84077055287054,28.35037185405894 70.82491451910988,28.331801631944746 70.82359318296317,28.22303318813304 70.8447345613107,28.212421632639217 70.84077055287054,28.313231409830554 70.81170115764267,28.22303318813304 70.78791710700169,28.095694522207147 70.79584512388202,28.10630607770097 70.80509447690906,28.074471411219495 70.79716646002873,28.07712430009295 70.79055977929514,28.018760744876918 70.79716646002873,28.00814918938309 70.81698650222955,27.963050078534337 70.81302249378939,27.957744300787425 70.8011304684689,27.92590963430595 70.79716646002873,27.87815763458374 70.8011304684689,27.78530652401277 70.79716646002873,27.74020741316402 70.8011304684689,27.73224874654365 70.79716646002873,27.80918252387388 70.78791710700169,27.830405634861528 70.78263176241481,27.806529635000423 70.77073973709432,27.7534718575313 70.75224103104021,27.76673630189858 70.74431301415989,27.87019896796337 70.77206107324103,27.902033634444845 70.7760250816812,27.96835585628125 70.77073973709432,28.026719411497286 70.76281172021399,28.000190522762722 70.74034900571972,28.018760744876918 70.74431301415989,28.04528963361148 70.75884771177383,28.098347411080603 70.75224103104021,28.13283496643553 70.74431301415989,28.1407936330559 70.7324209888394,28.108958966574427 70.71920762737219,28.082430077839863 70.71656495507874,28.061206966852215 70.70335159361153,27.984273189521986 70.68749555985087,27.93121541205286 70.68353155141071,27.84897585697572 70.66899685379678,27.88611630120411 70.65710482847629,27.79857096838005 70.63860612242219,27.75877763527821 70.63860612242219,27.729595857670194 70.63067810554186,27.63939763597268 70.62142875251482,27.671232302454158 70.6148220717812,27.742860302037474 70.61746474407465,27.825099857114616 70.63067810554186,27.896727856697932 70.63464211398203,27.936521189799773 70.64653413930252,28.039983855864566 70.66239017306317,28.167322521790464 70.68749555985087,28.201810077145392 70.7073156020517,28.27874385447562 70.7205289635189,28.305272743210182 70.68749555985087,28.289355409969446 70.65446215618284,28.268132298981797 70.63067810554186,28.215074521512673 70.60028737416728,28.079777188966407 70.55536194517876,27.949785634167057 70.52497121380416,27.89938074557139 70.51307918848367,27.88611630120411 70.49986582701646,27.811835412747335 70.48797380169597,27.825099857114616 70.47872444866893,27.851628745849176 70.48004578481564,27.825099857114616 70.4456910450009,27.851628745849176 70.44172703656074,27.854281634722632 70.43115634738696,27.87815763458374 70.42983501124024,27.872851856836828 70.45626173417466,27.88611630120411 70.47872444866893,27.95509141191397 70.49986582701646,27.976314522901617 70.4959018185763,27.928562523179405 70.48004578481564,27.907339412191757 70.46022574261482,27.923256745432493 70.45890440646811,27.978967411775074 70.49193781013614,27.98162030064853 70.48268845710909,28.005496300509634 70.48004578481564,28.02406652262383 70.48929513784269,28.069165633472583 70.49986582701646,28.09038874446023 70.4959018185763,28.15405807742318 70.51175785233696,28.199157188271936 70.50779384389679,28.191198521651568 70.4959018185763,28.130182077562075 70.48929513784269,28.034678078117654 70.45097638958778,28.04528963361148 70.4271923389468,28.05855407797876 70.43115634738696,28.069165633472583 70.45097638958778,28.12752918868862 70.47476044022876,28.177934077284288 70.48797380169597,28.207115854892304 70.48797380169597,28.24690918799415 70.50911518004351,28.2920082988429 70.50911518004351,28.302619854336726 70.50382983545663,28.366289187299675 70.51307918848367,28.366289187299675 70.49986582701646,28.32914874307129 70.48004578481564,28.35567763180585 70.47608177637548,28.39281807603424 70.48797380169597,28.43261140913608 70.49193781013614,28.459140297870643 70.48797380169597,28.44587585350336 70.46418975105499,28.48832207547866 70.44304837270745,28.512198075339764 70.44965505344106,28.506892297592852 70.46418975105499,28.485669186605204 70.4707964317886,28.512198075339764 70.49193781013614,28.546685630694697 70.49986582701646,28.528115408580504 70.50779384389679,28.50954518646631 70.50382983545663,28.46709896449101 70.50911518004351,28.443222964629904 70.52761388609761,28.395470964907695 70.54082724756482,28.408735409274975 70.54875526444515,28.414041187021887 70.56989664279268,28.43791718688299 70.58839534884679,28.46709896449101 70.59764470187383,28.485669186605204 70.63728478627547,28.506892297592852 70.65446215618284,28.50954518646631 70.68353155141071,28.5705616305558 70.67428219838366,28.6130078525311 70.67428219838366,28.623619408024926 70.68353155141071,28.575867408302713 70.68749555985087,28.541379852947784 70.70203025746481,28.51485096421322 70.72713564425251,28.605049185910733 70.76809706480087,28.666065630000222 70.77998909012136,28.658106963379854 70.79320245158857,28.750958073950823 70.85398391433775,28.83585051790142 70.87776796497873,28.976453628194598 70.88569598185906,28.992370961435334 70.8698399480984,29.05073451665137 70.87380395653857,29.09052784975321 70.87380395653857,29.093180738626668 70.85794792277791,29.132974071728512 70.84869856975087,29.201949182438373 70.85398391433775,29.247048293287126 70.84605589745742,29.24970118216058 70.83680654443037,29.27357718202169 70.8262358552566,29.26031273765441 70.819629174523,29.27357718202169 70.80509447690906,29.255006959907494 70.79980913232218,29.278882959768602 70.79188111544185,29.318676292870443 70.79188111544185,29.39030429245376 70.78395309856153,29.358469625972287 70.76281172021399,29.329287848364267 70.75224103104021,29.255006959907494 70.74034900571972,29.27357718202169 70.73638499727956,29.26031273765441 70.72713564425251,29.310717626250074 70.7324209888394,29.331940737237726 70.72449297195907,29.4062216256945 70.73506366113284,29.416833181188323 70.72845698039923,29.284188737515514 70.70995827434514,29.323982070617355 70.69938758517137,29.361122514845743 70.70335159361153,29.37703984808648 70.69938758517137,29.310717626250074 70.68353155141071,29.24439540441367 70.6703181899435,29.30010607075625 70.66503284535662,29.252354071034038 70.65710482847629,29.297453181882794 70.65446215618284,29.345205181605007 70.67956754297055,29.392957181327215 70.69410224058448,29.416833181188323 70.69013823214432,29.451320736543252 70.70203025746481,29.5149900695062 70.70203025746481,29.589270957962974 70.70995827434514,29.66885762416666 70.72845698039923,29.71660962388887 70.73506366113284,29.80150206783947 70.72449297195907,29.7935434012191 70.69938758517137,29.812113623333293 70.69410224058448,29.785584734598732 70.65446215618284,29.69803940177468 70.6267140971017,29.679469179660483 70.6148220717812,29.70334517952159 70.61746474407465,29.743138512623432 70.6267140971017,29.796196290092556 70.63067810554186,29.83333673432094 70.64257013086235,29.904964733904258 70.68353155141071,29.920882067144998 70.68617422370416,29.94741095587956 70.70335159361153,30.011080288842507 70.71127961049186,30.08536117729928 70.7073156020517,30.101278510540016 70.6954235767312,30.178212287870245 70.68353155141071,30.207394065478265 70.67428219838366,30.19412962111098 70.66635418150334,30.11189006603384 70.65446215618284,30.11984873265421 70.64653413930252,30.18882384336407 70.64653413930252,30.247187398580106 70.64124879471564,30.33473273140416 70.61085806334104,30.32146828703688 70.59235935728695,30.28167495393504 70.57386065123285,30.228617176465914 70.56989664279268,30.207394065478265 70.55271927288531,30.156989176882597 70.54875526444515,30.080055399552368 70.54875526444515,30.088014066172736 70.54082724756482,30.146377621388773 70.53289923068449,30.122501621527665 70.52893522224433,30.053526510817804 70.52893522224433,30.024344733209787 70.54082724756482,30.000468733348683 70.53686323912466,30.040262066450524 70.52497121380416,30.114542954907296 70.51704319692384,30.138418954768404 70.50382983545663,30.16229495462951 70.51307918848367,30.21004695435172 70.52497121380416,30.379831842252916 70.5513979367386,30.443501175215864 70.55271927288531,30.475335841697337 70.54743392829843,30.552269619027566 70.54082724756482,30.594715841002866 70.54082724756482,30.61328606311706 70.55271927288531,30.634509174104707 70.54479125600498,30.610633174243603 70.53686323912466,30.61859184086397 70.52497121380416,30.581451396635586 70.50911518004351,30.676955396080007 70.48797380169597,30.740624729042956 70.46815375949515,30.72470739580222 70.43115634738696,30.761847840030605 70.43115634738696,30.77245939552443 70.42190699435992,30.79368250651208 70.42190699435992,30.80164117313245 70.43115634738696,30.85469895060157 70.44304837270745,30.873269172715766 70.43908436426729,30.926326950184887 70.44965505344106,30.955508727792907 70.44304837270745,30.96081450553982 70.42983501124024,30.995302060894748 70.41926432206647,31.037748282870048 70.3901949268386,31.019178060755856 70.36641087619762,31.053665616110784 70.36112553161074,31.045706949490416 70.33337747252959,31.061624282731152 70.32016411106238,31.037748282870048 70.30430807730173,31.06427717160461 70.28845204354107,31.00856650526203 70.28052402666074,30.982037616527467 70.2844880351009,30.94755006117254 70.26863200134025,30.9316327279318 70.27259600978041,30.796335395385537 70.25673997601976,30.761847840030605 70.26070398445992,30.719401618055308 70.25673997601976,30.711442951434936 70.24484795069927,30.666343840586183 70.25145463143288,30.60002161874978 70.24484795069927,30.560228285647934 70.24484795069927,30.554922507901022 70.23691993381894,30.520434952546093 70.2408839422591,30.488600286064617 70.22502790849845,30.48064161944425 70.20785053859107,30.379831842252916 70.19992252171075,30.35595584239181 70.19595851327058,30.329426953657247 70.17613847106976,30.32677406478379 70.16292510960255,30.353302953518355 70.15235442042878,30.36391450901218 70.13914105896157,30.332079842530703 70.1351770505214,30.289633620555406 70.1219636890542,30.21800562097209 70.11403567217387,30.18882384336407 70.10214364685338,30.172906510123333 70.10610765529354,30.122501621527665 70.0968583022665,30.093319843919648 70.084966276946,30.103931399413472 70.0783595962124,30.143724732515317 70.0783595962124,30.172906510123333 70.06911024318535,30.101278510540016 70.0664675708919,30.082708288425824 70.0783595962124,30.00312162222214 70.0664675708919,29.878435845169697 70.05853955401157,29.825378067700573 70.06118222630502,29.785584734598732 70.07307425162551,29.748444290370344 70.07439558777223,29.61314695782408 70.09025162153289,29.54151895824076 70.09289429382633,29.461932292037076 70.10082231070666,29.427444736682148 70.09421562997305,29.339899403858094 70.10214364685338,29.30806473737662 70.11403567217387,29.24439540441367 70.11932101676075,29.19133762694455 70.11403567217387,29.11970962736123 70.12989170593453,29.079916294259387 70.12328502520091,29.018899850169895 70.12328502520091,28.976453628194598 70.1351770505214,28.928701628472385 70.13914105896157,28.902172739737825 70.14839041198861,28.854420740015613 70.14310506740173,28.86237940663598 70.14839041198861,28.809321629166856 70.15631842886894,28.769528296065015 70.17085312648288,28.658106963379854 70.18010247950993,28.562602963935433 70.1721744626296,28.589131852669993 70.1602824373091,28.73769362958354 70.16292510960255,28.764222518318103 70.15896110116239,28.73769362958354 70.14839041198861,28.663412741126766 70.13121304208124,28.575867408302713 70.1219636890542,28.57852029717617 70.11139299988042,28.64749540788603 70.10214364685338,28.674024296620594 70.09421562997305,28.71116474084898 70.10610765529354,28.756263851697735 70.10478631914683,28.796057184799576 70.10875032758699,28.838503406774876 70.10214364685338,28.851767851142156 70.09025162153289,28.83585051790142 70.08628761309272,28.727082074089715 70.09025162153289,28.769528296065015 70.0783595962124,28.833197629027964 70.0783595962124,28.84380918452179 70.07307425162551,28.90482562861128 70.07439558777223,28.955230517206946 70.06250356245174,29.010941183549527 70.06118222630502,29.069304738765563 70.0532542094247,29.106445182993948 70.05721821786486,29.106445182993948 70.04532619254437,29.14889140496925 70.04664752869108,29.18072607145072 70.03343416722387,29.117056738487776 70.01361412502305,29.146238516095792 70.00832878043617,29.178073182577265 70.01757813346322,29.21786651567911 70.00965011658289,29.239089626666757 70.01757813346322,29.276230070895146 70.00965011658289,29.31337051512353 70.02022080575667,29.379692736959935 70.00568610814273,29.39030429245376 70.00965011658289,29.461932292037076 70.00040076355585,29.504378514012377 70.00040076355585,29.493766958518552 69.98850873823535,29.644981624305554 69.97529537676814,29.66089895754629 69.9607606791542,29.637022957685186 69.94886865383371,29.55213051373459 69.92772727548618,29.48315540302473 69.91583525016569,29.464585180910532 69.89997921640503,29.430097625555604 69.89997921640503,29.400915847947584 69.88412318264437,29.41152740344141 69.87090982117716,29.35581673709883 69.87355249347061,29.353163848225375 69.86298180429684,29.42479184780869 69.85505378741651,29.438056292175972 69.866945812737,29.504378514012377 69.90658589713864,29.52825451387348 69.91583525016569,29.60518829120371 69.91451391401897,29.644981624305554 69.9039432248452,29.68742784628085 69.89997921640503,29.684774957407395 69.91187124172552,29.708650957268503 69.91451391401897,29.73783273487652 69.9039432248452,29.72987406825615 69.89469387181815,29.759055845864168 69.88676585493782,29.753750068117256 69.85901779585667,29.743138512623432 69.85108977897634,29.78027895685182 69.83126973677552,29.740485623749976 69.82202038374848,29.759055845864168 69.81409236686815,29.72987406825615 69.80616434998782,29.695386512901223 69.78898698008045,29.68212206853394 69.7731309463198,29.615799846697534 69.76388159329275,29.631717179938274 69.75595357641242,29.658246068672835 69.75727491255914,29.650287402052466 69.74538288723865,29.626411402191362 69.74538288723865,29.562742069228413 69.70045745825013,29.525601625000025 69.70442146669029,29.512337180632745 69.70045745825013,29.4062216256945 69.70045745825013,29.42479184780869 69.69649344980996,29.49641984739201 69.6925294413698,29.533560291620393 69.69781478595668,29.538866069367305 69.6925294413698,29.499072736265465 69.66478138228865,29.4725438475309 69.65949603770177,29.499072736265465 69.65156802082144,29.549477624861133 69.66874539072882,29.57070073584878 69.68856543292964,29.623758513317906 69.70442146669029,29.64763451317901 69.72556284503783,29.679469179660483 69.73745487035832,29.774973179104908 69.7480255595321,29.851906956435137 69.74406155109193,29.886394511790066 69.73216952577144,29.91822917827154 69.75727491255914,29.971286955740663 69.76916693787963,30.05617939969126 69.78105896320012,30.077402510678912 69.76916693787963,30.037609177577067 69.73745487035832,29.99516295560177 69.72556284503783,29.94741095587956 69.71631349201078,29.920882067144998 69.70574280283701,29.894353178410434 69.70442146669029,29.894353178410434 69.68460142448947,29.920882067144998 69.6674240545821,29.91822917827154 69.65156802082144,29.934146511512278 69.59078655807227,29.95271673362647 69.5868225496321,29.928840733765366 69.69649344980996,30.04291495532398 69.72820551733128,30.082708288425824 69.72952685347799,30.069443844058544 69.7176348281575,30.08536117729928 69.70574280283701,30.11189006603384 69.67270939916898,30.127807399274577 69.67270939916898,30.11189006603384 69.70838547513046,30.130460288148033 69.72556284503783,30.109237177160384 69.73216952577144,30.09862562166656 69.75595357641242,30.20208828773135 69.76916693787963,30.191476732237525 69.79030831622717,30.15433628800914 69.80748568613454,30.172906510123333 69.82202038374848,30.133113177021492 69.84976844282963,30.14903051026223 69.87090982117716,30.199435398857894 69.87883783805749,30.225964287592458 69.87487382961733,30.268410509567754 69.88148051035094,30.30024517604923 69.87883783805749,30.33473273140416 69.86562447659028,30.310856731543055 69.85373245126979,30.233922954212826 69.84316176209602,30.233922954212826 69.83391240906897,30.329426953657247 69.8418404259493,30.353302953518355 69.84712577053618,30.371873175632548 69.84316176209602,30.387790508873284 69.81409236686815,30.387790508873284 69.78238029934684,30.401054953240564 69.78238029934684,30.409013619860932 69.7480255595321,30.406360730987476 69.72027750045095,30.419625175354756 69.68856543292964,30.35595584239181 69.67667340760914,30.305550953796143 69.67138806302226,30.38248473112637 69.66478138228865,30.44615406408932 69.67535207146243,30.456765619583145 69.68460142448947,30.443501175215864 69.6925294413698,30.435542508595496 69.72556284503783,30.443501175215864 69.7361335342116,30.46737717507697 69.73349086191816,30.462071397330057 69.7480255595321,30.43288961972204 69.7612389209993,30.44084828634241 69.78238029934684,30.419625175354756 69.80220034154766,30.422278064228212 69.81409236686815,30.504517619305357 69.8233417198952,30.533699396913374 69.8114496945747,30.554922507901022 69.81409236686815,30.602674507623234 69.79691499696078,30.602674507623234 69.81409236686815,30.63185628523125 69.81012835842799,30.671649618333095 69.81012835842799,30.650426507345447 69.7982363331075,30.66899672945964 69.79030831622717,30.6955256181942 69.80220034154766,30.732666062422588 69.7982363331075,30.722054506928764 69.786344307787,30.684914062700376 69.78238029934684,30.68226117382692 69.76388159329275,30.71674872918185 69.7612389209993,30.727360284675676 69.77180961017308,30.796335395385537 69.79030831622717,30.822864284120097 69.79030831622717,30.873269172715766 69.75595357641242,30.873269172715766 69.74141887879848,30.889186505956502 69.73745487035832,30.889186505956502 69.72027750045095,30.873269172715766 69.71367081971734,30.928979839058343 69.68460142448947,30.944897172299083 69.68328008834276,30.92367406131143 69.66874539072882,30.95285583891945 69.6304266424739,30.950202950045995 69.60003591109931,30.93959139455217 69.59475056651243,30.94755006117254 69.57493052431161,30.9316327279318 69.55907449055096,30.817558506373185 69.52868375917637,30.692872729320744 69.53793311220342,30.51512917479918 69.54057578449687,30.4169722864813 69.58814388577882,30.233922954212826 69.65024668467473,30.151683399135685 69.66874539072882,30.08536117729928 69.65817470155505,30.090666955046192 69.6423186677944,30.138418954768404 69.64364000394112,30.151683399135685 69.60796392797964,30.18882384336407 69.56700250743128,30.17555939899679 69.53793311220342,30.122501621527665 69.5181130700026,30.117195843780753 69.46922363257391,30.053526510817804 69.43619022890589,30.00842739996905 69.41637018670507,29.936799400385734 69.40447816138457,29.91822917827154 69.41637018670507,29.859865623055505 69.4242982035854,29.796196290092556 69.40712083367802,29.782931845725276 69.39655014450425,29.72456829050924 69.38862212762392,29.695386512901223 69.36351674083622,29.57070073584878 69.31726997570098,29.533560291620393 69.3185913118477,29.52294873612657 69.32784066487474,29.4725438475309 69.31991264799441,29.416833181188323 69.3185913118477,29.39561007020067 69.32387665643458,29.289494515262426 69.29480726120671,29.276230070895146 69.25780984909852,29.289494515262426 69.24591782377803,29.31337051512353 69.2379898068977,29.305411848503162 69.20892041166984,29.294800293009338 69.20495640322967,29.28684162638897 69.17588700800181,29.24970118216058 69.16135231038787,29.257659848780953 69.15342429350754,29.239089626666757 69.13624692360017,29.241742515540214 69.11246287295918,29.16746162708344 69.07150145241083,29.093180738626668 69.03978938488952,29.056040294398283 69.01468399810182,29.042775850031003 69.01071998966165,29.018899850169895 69.02393335112886,28.928701628472385 69.05168141021001,28.85707362888907 69.07546546085099,28.8066687402934 69.11114153681247,28.830544740154508 69.17192299956164,28.833197629027964 69.22477644543049,29.05869318327174 69.32387665643458,29.220519404552565 69.39655014450425,29.33724651498464 69.47715164945424,29.28684162638897 69.52604108688293,29.20460207131183 69.60796392797964,29.170114515956897 69.63967599550095,29.132974071728512 69.69385077751652,28.894214073117457 69.73349086191816,28.644842519012574 69.77841629090668,28.403429631528063 69.81805637530832,28.32914874307129 69.84976844282963,28.345066076312026 69.87883783805749,28.162016744043548 69.91979925860585,28.032025189244198 69.98718740208864,27.984273189521986 70.01361412502305,27.976314522901617 70.0532542094247,27.96039718966088 70.09025162153289,27.883463412330652 70.08628761309272,27.787959412886227 70.07439558777223,27.742860302037474 70.06250356245174,27.700414080062174 70.07439558777223,27.61286874723812 70.07439558777223,27.559810969768996 70.05853955401157,27.525323414414068 70.02154214190338,27.427166526096187 70.01757813346322,27.358191415386326 69.9911514105288,27.30778652679066 69.98850873823535,27.275951860309185 69.97529537676814,27.305133637917205 69.9607606791542,27.29452208242338 69.95283266227388,27.236158527207344 69.94886865383371,27.167183416497483 69.93301262007306,27.13269586114255 69.93169128392634,27.10086119466108 69.91583525016569,27.058414972685778 69.91583525016569,27.03719186169813 69.9105499055788,26.98678697310246 69.9356552923665,26.94168786225371 69.93961930080667,26.87801852929076 69.93169128392634,26.859448307176567 69.94094063695339,26.8514896405562 69.9607606791542,26.785167418719794 69.95679667071404,26.716192308009933 69.94358330924683,26.679051863781545 69.96472468759437,26.551713197855648 69.947547317687,26.488043864892703 69.94358330924683,26.464167865031595 69.93961930080667,26.456209198411226 69.91847792245913,26.408457198689014 69.89997921640503,26.416415865309386 69.88676585493782,26.387234087701366 69.85505378741651,26.241325199661276 69.81409236686815,26.246630977408188 69.79427232466733,26.228060755293995 69.79295098852062,26.214796310926715 69.77841629090668,26.18826742219215 69.77709495475996,26.180308755571783 69.75991758485259,26.151126977963767 69.75595357641242,26.13520964472303 69.73745487035832,26.045011423025517 69.72027750045095,26.01052386767059 69.72159883659766,25.949507423581096 69.69649344980996,25.941548756960728 69.68460142448947,25.89114386836506 69.66478138228865,25.899102534985428 69.65817470155505,25.93359009034036 69.65421069311489,25.954813201328008 69.64364000394112,25.96011897907492 69.61985595330013,25.97603631231566 69.61060660027309,25.936242979213816 69.57096651587145,25.875226535124323 69.55378914596407,25.840738979769394 69.55114647367063,25.840738979769394 69.54189712064358,25.86992075737741 69.53264776761654,25.87787942399778 69.52207707844276,25.846044757516307 69.49036501092145,25.8646149796305 69.4745089771608,25.835433202022482 69.46922363257391,25.8221687576552 69.44808225422638,25.792986980047182 69.42033419514523,25.819515868781743 69.41637018670507,25.811557202161374 69.40447816138457,25.832780313149026 69.40712083367802,25.846044757516307 69.39258613606408,25.811557202161374 69.37540876615671,25.816862979908286 69.35955273239605,25.782375424553358 69.35294605166244,25.758499424692253 69.33973269019523,25.758499424692253 69.32784066487474,25.7372763137046 69.31066329496737,25.74523498032497 69.28555790817967,25.721358980463865 69.25780984909852,25.702788758349673 69.25384584065836,25.713400313843497 69.21024174781655,25.69217720285585 69.19570705020263,25.73197053595769 69.15342429350754,25.742582091451514 69.13756825974689,25.721358980463865 69.11114153681247,25.73197053595769 69.10321351993214,25.72401186933732 69.07942946929116,25.747887869198426 69.05960942709034,25.747887869198426 69.03054003186247,25.777069646806446 69.01864800654198,25.763805202439165 69.00279197278132,25.716053202716953 68.98165059443379,25.713400313843497 68.96579456067313,25.69217720285585 68.94993852691248,25.65503675862746 68.90501309792396,25.59932609228488 68.88519305572314,25.53035098157502 68.88783572801658,25.48259898185281 68.90501309792396,25.397706537902213 68.8891570641633,25.397706537902213 68.88519305572314,25.26771498310286 68.85083831590839,25.235880316621383 68.8389462905879,25.196086983519542 68.8085555592133,25.156293650417698 68.79930620618626,25.124458983936226 68.75041676875757,25.12180609506277 68.73059672655675,25.129764761683138 68.7147406927961,25.111194539568945 68.70152733132889,25.10854165069549 68.6777432806879,25.119153206189313 68.64206720472643,25.068748317593645 68.6209258263789,25.01569054012452 68.6209258263789,24.991814540263416 68.61299780949857,24.957326984908487 68.61696181793873,24.917533651806643 68.60506979261824,24.90692209631282 68.57996440583054,24.904269207439363 68.55485901904284,24.85651720771715 68.56146569977643,24.782236319260377 68.63678186013955,24.60714565361227 68.68170728912807,24.466542543319093 68.69888465903544,24.30206343316481 68.71738336508955,24.251658544569143 68.72663271811659,24.209212322593842 68.7451314241707,24.153501656251265 68.75173810490429,24.158807433998177 68.78873551701248,24.073914990047577 68.77948616398544,23.983716768350067 68.8270542652674,23.87229543566491 68.83630361829445,23.77413854734703 68.81912624838708,23.731692325371732 68.75041676875757,23.673328770155695 68.70549133976905,23.439874549291552 68.69095664215511,23.33641188322676 68.66981526380758,23.166626995325565 68.62885384325922,23.04459410714658 68.6896353060084,22.800528330788612 68.68567129756823,22.59360299865903 68.72927539041004,22.535239443442993 68.7451314241707,22.373413222162167 68.7147406927961,22.3654545555418 68.75041676875757,22.341578555680695 68.8270542652674,22.19301677876715 68.91690512324445,22.171793667779497 68.95654520764609,22.02323189086595 69.04771740176984,21.975479891143742 69.07810813314444,21.84548833634439 69.1441749404805,21.723455448165403 69.21420575625672,21.62795144872098 69.2749872190059,21.529794560403104 69.28555790817967,21.277770117424765 69.31066329496737,21.097373674029747 69.25913118524524,21.004522563458778 69.22213377313705,20.98860523021804 69.19174304176246,21.04696878543408 69.13756825974689,21.054927452054446 69.12039088983951,21.10798522952357 69.10453485607886,21.057580340927903 69.03450404030264,20.834737675557584 69.09000015846493,20.715357676252054 69.12039088983951,20.55353145497123 69.05960942709034,20.473944788767543 69.05828809094362,20.195391457054644 69.04771740176984,20.06009412450838 69.04639606562313,20.26171367889105 68.9446531823256,20.306812789739805 68.92615447627149,20.33599456734782 68.80062754233298,20.245796345650312 68.71077668435593,20.203350123675015 68.66585125536741,20.160903901699715 68.64470987701988,20.052135457888014 68.58921375885758,19.938061236329396 68.55618035518955,20.02560656915345 68.53107496840185,20.22722612353612 68.49143488400021,19.97785456943124 68.38837066455596,19.92214390308866 68.35665859703465,19.82398701477078 68.37251463079531,19.778887903922026 68.38176398382235,19.343814128675213 68.45443747189202,19.17933501852093 68.48350686711989,18.983021241885172 68.5152189346412,18.62222835509513 68.50729091776087,18.465707911561218 68.56146569977643,18.404691467471725 68.57996440583054,18.126138135758826 68.53636031298873,18.10226213589772 68.40554803446334,18.126138135758826 68.29455579813876,18.152667024493386 68.19941959557482,18.09695635815081 68.14656614970598,18.051857247302053 68.10692606530434,17.90064258151505 67.96818576989861,17.78922124882989 67.99989783741992,17.71228747149966 68.0236818880609,17.638006583042888 68.04482326640844,17.282519473999763 68.11749675447811,17.240073252024462 68.09371270383713,17.181709696808426 68.0487872748486,17.080899919617092 68.02103921576746,16.94294969819737 67.9800777952191,16.738677254941244 67.91401098788305,16.669702144231383 67.80962543229207,16.63786747774991 67.76602133945026,16.600727033521522 67.71052522128798,16.55562792267277 67.64710108624536,16.49195858970982 67.59028363193634,16.407066145759224 67.53346617762733,16.28503325758024 67.52818083304045,16.15769459165434 67.51761014386668,16.08871948094448 67.43568730276996,16.33013236842899 67.26127093140276,16.404413256885768 67.20445347709375,16.388495923645028 67.06967719012819,16.388495923645028 67.0458931394872,16.335438146175907 67.02607309728639,16.27707459095987 67.01021706352573,16.19483503588273 66.98114766829787,16.03831459234881 66.91243818866836,15.993215481500059 66.87147676812,15.87383548219453 66.78294724628968,15.767719927256284 66.70498841363313,15.621811039216194 66.59399617730855,15.44937326244154 66.5226440253856,15.375092373984767 66.4843252771307,15.4095799293397 66.4288291589684,15.452026151314996 66.34426364557824,15.483860817796472 66.28216084668234,15.30346437440145 66.23327140925366,15.213266152703941 66.20552335017251,15.035522598182379 66.15266990430366,14.743704822102199 66.14077787898317,14.515556378984968 66.13284986210284,14.539432378846072 66.06414038247334,14.550043934339897 66.02185762577827,14.573919934201001 65.95843349073564,14.584531489694829 65.89765202798647,14.595143045188653 65.8804746580791,14.62432482279667 65.81176517844959,14.542085267719528 65.69945160597828,14.53412660109916 65.67302488304387,14.515556378984968 65.58449536121354,14.499639045744228 65.5197498900242,14.499639045744228 65.43518437663404,14.499639045744228 65.41932834287338,14.499639045744228 65.35722554397749,14.50494482349114 65.30965744269552,14.377606157565246 65.24755464379963,14.327201268969578 65.11806370142095,14.244961713892437 65.06124624711194,14.109664381346171 64.96082469996112,14.064565270497415 64.93175530473326,13.931920826824609 64.8220844045554,13.85498704949438 64.76130294180622,13.817846605265991 64.72826953813819,13.706425272580834 64.63974001630787,13.65336749511171 64.57895855355869,13.841722605127096 64.52214109924968,13.892127493722764 64.50628506548902,14.085788381485067 64.47721567026116,14.114970159093083 64.4613596365005,14.11762304796654 64.43493291356609,14.149457714448015 64.25787386990544,14.157416381068384 64.1931283987161,14.05395371500359 64.09138551541857,13.966408382179537 64.0068200020284,13.717036828074658 64.04646008643005,13.41726038537411 64.07552948165791,13.36154971903153 64.07949349009807,13.210335053244528 64.09534952385873,13.175847497889595 64.09006417927185,12.926475943784716 64.05835211175054,12.74873238926315 63.99757064900136,12.67975727855329 63.97378659836038,12.61078216784343 63.916969144051365,12.49936083515827 63.832403630661204,12.422427057828042 63.776907512498916,12.329575947257077 63.7134833774563,12.2977412807756 63.67120062076122,12.231419058939196 63.6328818725063,12.149179503862054 63.59456312425139,12.212848836825003 63.47828554333992,12.080204393152194 63.355401281694846,12.035105282303439 63.31576119729321,11.974088838213948 63.26951443215797,12.077551504278738 63.15191551509978,12.175708392596617 63.048851295655524,12.218154614571915 62.99996185822684,12.074898615405282 62.90218298336947,12.135915059494774 62.74758665420309,12.096121726392932 62.681519846867026,12.05632839329109 62.61016769494408,12.06959283765837 62.594311661183426,12.186319948090443 62.42518063440311,12.2977412807756 62.26662029679656,12.276518169787952 62.19658948102034,12.27121239204104 62.170162758085915,12.234071947812652 62.06181319405478,12.212848836825003 61.97724768066462,12.202237281331179 61.933643587822814,12.170402614849705 61.83454337681873,12.159791059355879 61.79886730085725,12.13856794836823 61.723551140494145,12.276518169787952 61.64030696325071,12.3401875027509 61.61520157646301,12.419774168954586 61.561026794447436,12.44365016881569 61.566312139034316,12.568335945868132 61.568954811327764,12.61078216784343 61.538564079953176,12.655881278692185 61.50817334857859,12.70893905616131 61.46985460032367,12.815054611099555 61.39850244840073,12.870765277442135 61.35621969170565,12.857500833074855 61.31525827115729,12.823013277719923 61.23994211079418,12.79117861123845 61.1976593540991,12.706286167287853 61.142163235936806,12.706286167287853 61.136877891349926,12.67975727855329 61.05759772254665,12.65853416756564 61.05099104181304,12.613435056716886 61.047027033372885,12.488749279664447 61.049669705666325,12.44365016881569 61.049669705666325,12.321617280636707 61.03117099961223,12.239377725559565 61.01927897429174,12.220807503445371 61.01267229355813,12.234071947812652 60.99813759594419,12.332228836130533 60.889788031913056,12.334881725003989 60.852790619804864,12.348146169371269 60.81843587999011,12.39589816909348 60.732549030453235,12.459567502056428 60.68630226531799,12.509972390652095 60.64137683632947,12.512625279525551 60.59909407963439,12.581600390235412 60.550204642205706,12.605476390096518 60.51188589395079,12.605476390096518 60.406179002213094,12.547112834880481 60.34936154790408,12.49936083515827 60.32293482496966,12.504666612905183 60.27668805983441,12.523236835019375 60.223834613965565,12.54180705713357 60.19344388259098,12.525889723892831 60.16437448736311,12.502013724031727 60.09962901617377,12.446303057689146 60.038847553424596,12.39589816909348 60.01506350278361,12.3401875027509 59.96617406535493,12.22876617006574 59.92785531710001,12.17305550372316 59.88821523269837,12.15183239273551 59.886893896551655,12.117344837380582 59.892179241138535,12.053675504417633 59.884251224258215,11.984700393707772 59.89878592187215,11.928989727365192 59.886893896551655,11.915725282997911 59.87235919893772,11.883890616516437 59.87235919893772,11.88919639426335 59.85782450132379,11.838791505667682 59.83932579526969,11.852055950034963 59.83007644224264,11.875931949896069 59.8274337699492,11.926336838491736 59.79307903013445,11.931642616238648 59.7587242903197,11.92368394961828 59.74815360114592,11.931642616238648 59.73890424811888,11.93694839398556 59.69397881913036,11.88919639426335 59.69133614683691,11.878584838769525 59.68340812995659,11.867973283275699 59.66094541546232,11.854708838908419 59.647732053995114,11.788386617072014 59.64376804555495,11.727370172982523 59.62659067564758,11.698188395374505 59.608091969593474,11.690229728754137 59.58827192739266,11.727370172982523 59.51163443088283,11.753899061717085 59.4786010272148,11.761857728337453 59.42574758134595,11.775122172704734 59.41385555602546,11.780427950451646 59.38478616079759,11.817568394680032 59.345146076395956,11.82022128355349 59.29625663896727) diff --git a/rust/geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt b/rust/sedona-geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt similarity index 95% rename from rust/geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt rename to rust/sedona-geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt index 4e12f5b5..168fb6ab 100644 --- a/rust/geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt @@ -1 +1 @@ -LINESTRING(7.717377961338066 57.74911832172092,12.83203125 58.722598828043374,31.218815724995086 69.50004679809811,31.220360609653444 69.74967563784787,31.22041170425437 70.00042112672493,31.220012092660365 70.50025174432726,30.61987385954102 70.74988171707938,28.291580927773403 71.25031072902001,27.018043769538682 71.25053409142788,25.81713611470763 71.25061029282803,23.99734444112429 71.25032666052927,23.41773118246719 71.25021807292373,18.503596794856012 70.49788127446817,15.010693169334283 69.49664550225157,12.617561279995918 68.4983356095851,9.580078125 64.62387720204688,4.340231074407465 61.998825794804695,4.346980035524813 60.498808789126734,4.722530819313656 59.24963650749106,5.464957056755467 58.24822761552509,6.968425350867709 57.74957737187902,7.717377961338066 57.74911832172092) \ No newline at end of file +LINESTRING(7.717377961338066 57.74911832172092,12.83203125 58.722598828043374,31.218815724995086 69.50004679809811,31.220360609653444 69.74967563784787,31.22041170425437 70.00042112672493,31.220012092660365 70.50025174432726,30.61987385954102 70.74988171707938,28.291580927773403 71.25031072902001,27.018043769538682 71.25053409142788,25.81713611470763 71.25061029282803,23.99734444112429 71.25032666052927,23.41773118246719 71.25021807292373,18.503596794856012 70.49788127446817,15.010693169334283 69.49664550225157,12.617561279995918 68.4983356095851,9.580078125 64.62387720204688,4.340231074407465 61.998825794804695,4.346980035524813 60.498808789126734,4.722530819313656 59.24963650749106,5.464957056755467 58.24822761552509,6.968425350867709 57.74957737187902,7.717377961338066 57.74911832172092) diff --git a/rust/geo-test-fixtures/fixtures/poly1.wkt b/rust/sedona-geo-test-fixtures/fixtures/poly1.wkt similarity index 98% rename from rust/geo-test-fixtures/fixtures/poly1.wkt rename to rust/sedona-geo-test-fixtures/fixtures/poly1.wkt index b35056fb..059f8a84 100644 --- a/rust/geo-test-fixtures/fixtures/poly1.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/poly1.wkt @@ -1 +1 @@ -LINESTRING(-75.57274028771249 110.01960141091608,-47.01425001453319 224.2535625036333,-44.1986052400443 233.56520178444188,-40.491516848197264 242.55919851821028,-35.928066677809895 251.1504384831045,-30.55144070299677 259.2576189250935,-24.412520344941953 266.8040179623472,-17.56940095820731 273.7182206387879,-10.086842048356445 279.93479475582495,-2.0356544237308825 285.394910086574,6.507969918963688 290.0468951126591,15.463178833668529 293.8467260149487,24.745225165064543 296.758443290685,34.26626874888323 298.7544920543751,43.93620768274765 299.8159828020204,53.66353100085455 299.9328701709592,63.35618468325523 299.10404800363494,72.92244280430123 297.33735981566144,82.27177557618647 294.64952456911897,91.31570607290114 291.0659784535237,99.96864752703414 286.6206341717666,108.14871327570971 281.355560009008,115.77849169077639 275.3205817216414,122.78577875973701 268.57281101383126,129.10426138467784 261.17610506386103,134.67414493283295 253.20046221503722,139.44271909999156 244.72135954999587,189.4427190999916 144.72135954999578,193.40316487178438 135.7190256296874,196.46014848027284 126.37119176608674,198.5841005952538 116.76827688896145,199.75447683394128 107.00316725394137,199.959956480919 97.1703179802708,199.19855199019082 87.36483941339068,197.47762821014587 77.68157714970485,194.8138311454814 68.21419462218802,191.23292694514913 59.05426712072333,186.76955267374814 50.29039601045239,181.46688127708177 42.007351716050565,175.37620398257155 34.28525376159651,168.5564341738489 27.198795797276006,161.07353753840516 20.81652310901589,152.99989400031805 15.200169599491232,98.33653286253586 -18.964431111622638,97.01425001453319 -24.253562503633297,94.16983504461093 -33.64583432864707,90.41851308474087 -42.71407837639184,85.79641141607766 -51.37096249948156,80.34804340438832 -59.53311617147662,74.12587981200636 -67.12193339062866,67.189843475707 -74.06432969864774,59.606732217031976 -80.2934460239878,51.44957554275259 -85.74929257125446,42.79693133079759 -90.37932655572841,33.73212927494458 -94.13895821910516,24.342468374316272 -96.99198025324264,14.718376196296493 -98.91091649633165,4.952538009623515 -99.87728654335396,-4.860995825414805 -99.88178372248515,-14.627715613363762 -98.92436472343178,-17.953756809330994 -98.26435835897965,-53.64820903700594 -226.76438637860946,-56.7355378616229 -236.07963555856995,-60.72105444017349 -245.0474181249662,-65.5663760693013 -253.58136942939535,-71.22483965299563 -261.59930285566344,-77.64195109371464 -269.02400132182726,-84.75591010033425 -275.7839609229046,-92.49820535873518 -281.81407955256725,-100.79427433320987 -287.05628387201347,-109.56422134444159 -291.46008858796654,-118.72358700857137 -294.98308265364733,-128.18416162723517 -297.59133771033885,-137.85483469517902 -299.2597348360279,-147.64247234423098 -299.9722064543555,-157.4528142733637 -299.72189107416057,-167.19138152692128 -298.5111993693906,-176.76438637860946 -296.3517909629941,-186.0796355585698 -293.26446213837716,-195.04741812496607 -289.2789455598266,-203.58136942939524 -284.4336239306988,-211.59930285566332 -278.7751603470045,-219.02400132182714 -272.3580489062855,-225.78396092290453 -265.2440898996658,-231.8140795525672 -257.50179464126495,-237.0562838720134 -249.20572566679022,-241.46008858796648 -240.4357786555585,-244.98308265364727 -231.27641299142869,-247.59133771033882 -221.8158383727649,-249.25973483602792 -212.145165304821,-249.97220645435553 -202.35752765576902,-249.72189107416057 -192.54718572663626,-248.51119936939062 -182.8086184730787,-246.35179096299407 -173.23561362139054,-196.35179096299407 6.7643863786094585,-193.32576660256726 15.920764023655508,-189.43184924301974 24.74309266215056,-184.7062507874361 33.14932810051302,-179.19291744665992 41.0612956486063,-172.94312105678188 48.40541711367358,-166.01498227118805 55.11339504865113,-158.47293006129595 61.12284789161923,-150.3871025524086 66.37789008984335,-75.57274028771249 110.01960141091608) \ No newline at end of file +LINESTRING(-75.57274028771249 110.01960141091608,-47.01425001453319 224.2535625036333,-44.1986052400443 233.56520178444188,-40.491516848197264 242.55919851821028,-35.928066677809895 251.1504384831045,-30.55144070299677 259.2576189250935,-24.412520344941953 266.8040179623472,-17.56940095820731 273.7182206387879,-10.086842048356445 279.93479475582495,-2.0356544237308825 285.394910086574,6.507969918963688 290.0468951126591,15.463178833668529 293.8467260149487,24.745225165064543 296.758443290685,34.26626874888323 298.7544920543751,43.93620768274765 299.8159828020204,53.66353100085455 299.9328701709592,63.35618468325523 299.10404800363494,72.92244280430123 297.33735981566144,82.27177557618647 294.64952456911897,91.31570607290114 291.0659784535237,99.96864752703414 286.6206341717666,108.14871327570971 281.355560009008,115.77849169077639 275.3205817216414,122.78577875973701 268.57281101383126,129.10426138467784 261.17610506386103,134.67414493283295 253.20046221503722,139.44271909999156 244.72135954999587,189.4427190999916 144.72135954999578,193.40316487178438 135.7190256296874,196.46014848027284 126.37119176608674,198.5841005952538 116.76827688896145,199.75447683394128 107.00316725394137,199.959956480919 97.1703179802708,199.19855199019082 87.36483941339068,197.47762821014587 77.68157714970485,194.8138311454814 68.21419462218802,191.23292694514913 59.05426712072333,186.76955267374814 50.29039601045239,181.46688127708177 42.007351716050565,175.37620398257155 34.28525376159651,168.5564341738489 27.198795797276006,161.07353753840516 20.81652310901589,152.99989400031805 15.200169599491232,98.33653286253586 -18.964431111622638,97.01425001453319 -24.253562503633297,94.16983504461093 -33.64583432864707,90.41851308474087 -42.71407837639184,85.79641141607766 -51.37096249948156,80.34804340438832 -59.53311617147662,74.12587981200636 -67.12193339062866,67.189843475707 -74.06432969864774,59.606732217031976 -80.2934460239878,51.44957554275259 -85.74929257125446,42.79693133079759 -90.37932655572841,33.73212927494458 -94.13895821910516,24.342468374316272 -96.99198025324264,14.718376196296493 -98.91091649633165,4.952538009623515 -99.87728654335396,-4.860995825414805 -99.88178372248515,-14.627715613363762 -98.92436472343178,-17.953756809330994 -98.26435835897965,-53.64820903700594 -226.76438637860946,-56.7355378616229 -236.07963555856995,-60.72105444017349 -245.0474181249662,-65.5663760693013 -253.58136942939535,-71.22483965299563 -261.59930285566344,-77.64195109371464 -269.02400132182726,-84.75591010033425 -275.7839609229046,-92.49820535873518 -281.81407955256725,-100.79427433320987 -287.05628387201347,-109.56422134444159 -291.46008858796654,-118.72358700857137 -294.98308265364733,-128.18416162723517 -297.59133771033885,-137.85483469517902 -299.2597348360279,-147.64247234423098 -299.9722064543555,-157.4528142733637 -299.72189107416057,-167.19138152692128 -298.5111993693906,-176.76438637860946 -296.3517909629941,-186.0796355585698 -293.26446213837716,-195.04741812496607 -289.2789455598266,-203.58136942939524 -284.4336239306988,-211.59930285566332 -278.7751603470045,-219.02400132182714 -272.3580489062855,-225.78396092290453 -265.2440898996658,-231.8140795525672 -257.50179464126495,-237.0562838720134 -249.20572566679022,-241.46008858796648 -240.4357786555585,-244.98308265364727 -231.27641299142869,-247.59133771033882 -221.8158383727649,-249.25973483602792 -212.145165304821,-249.97220645435553 -202.35752765576902,-249.72189107416057 -192.54718572663626,-248.51119936939062 -182.8086184730787,-246.35179096299407 -173.23561362139054,-196.35179096299407 6.7643863786094585,-193.32576660256726 15.920764023655508,-189.43184924301974 24.74309266215056,-184.7062507874361 33.14932810051302,-179.19291744665992 41.0612956486063,-172.94312105678188 48.40541711367358,-166.01498227118805 55.11339504865113,-158.47293006129595 61.12284789161923,-150.3871025524086 66.37789008984335,-75.57274028771249 110.01960141091608) diff --git a/rust/geo-test-fixtures/fixtures/poly1_hull.wkt b/rust/sedona-geo-test-fixtures/fixtures/poly1_hull.wkt similarity index 99% rename from rust/geo-test-fixtures/fixtures/poly1_hull.wkt rename to rust/sedona-geo-test-fixtures/fixtures/poly1_hull.wkt index a9d29458..4b3becf7 100644 --- a/rust/geo-test-fixtures/fixtures/poly1_hull.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/poly1_hull.wkt @@ -1 +1 @@ -LINESTRING(-249.25973483602792 -212.145165304821,-247.59133771033882 -221.8158383727649,-244.98308265364727 -231.27641299142869,-241.46008858796648 -240.4357786555585,-237.0562838720134 -249.20572566679022,-231.8140795525672 -257.50179464126495,-225.78396092290453 -265.2440898996658,-219.02400132182714 -272.3580489062855,-211.59930285566332 -278.7751603470045,-203.58136942939524 -284.4336239306988,-195.04741812496607 -289.2789455598266,-186.0796355585698 -293.26446213837716,-176.76438637860946 -296.3517909629941,-167.19138152692128 -298.5111993693906,-157.4528142733637 -299.72189107416057,-147.64247234423098 -299.9722064543555,-137.85483469517902 -299.2597348360279,-128.18416162723517 -297.59133771033885,-118.72358700857137 -294.98308265364733,-109.56422134444159 -291.46008858796654,-100.79427433320987 -287.05628387201347,-92.49820535873518 -281.81407955256725,-84.75591010033425 -275.7839609229046,-77.64195109371464 -269.02400132182726,-71.22483965299563 -261.59930285566344,175.37620398257155 34.28525376159651,181.46688127708177 42.007351716050565,186.76955267374814 50.29039601045239,191.23292694514913 59.05426712072333,194.8138311454814 68.21419462218802,197.47762821014587 77.68157714970485,199.19855199019082 87.36483941339068,199.959956480919 97.1703179802708,199.75447683394128 107.00316725394137,198.5841005952538 116.76827688896145,196.46014848027284 126.37119176608674,193.40316487178438 135.7190256296874,189.4427190999916 144.72135954999578,139.44271909999156 244.72135954999587,134.67414493283295 253.20046221503722,129.10426138467784 261.17610506386103,122.78577875973701 268.57281101383126,115.77849169077639 275.3205817216414,108.14871327570971 281.355560009008,99.96864752703414 286.6206341717666,91.31570607290114 291.0659784535237,82.27177557618647 294.64952456911897,72.92244280430123 297.33735981566144,63.35618468325523 299.10404800363494,53.66353100085455 299.9328701709592,43.93620768274765 299.8159828020204,34.26626874888323 298.7544920543751,24.745225165064543 296.758443290685,15.463178833668529 293.8467260149487,6.507969918963688 290.0468951126591,-2.0356544237308825 285.394910086574,-10.086842048356445 279.93479475582495,-17.56940095820731 273.7182206387879,-24.412520344941953 266.8040179623472,-30.55144070299677 259.2576189250935,-184.7062507874361 33.14932810051302,-189.43184924301974 24.74309266215056,-193.32576660256726 15.920764023655508,-196.35179096299407 6.7643863786094585,-246.35179096299407 -173.23561362139054,-248.51119936939062 -182.8086184730787,-249.72189107416057 -192.54718572663626,-249.97220645435553 -202.35752765576902,-249.25973483602792 -212.145165304821) \ No newline at end of file +LINESTRING(-249.25973483602792 -212.145165304821,-247.59133771033882 -221.8158383727649,-244.98308265364727 -231.27641299142869,-241.46008858796648 -240.4357786555585,-237.0562838720134 -249.20572566679022,-231.8140795525672 -257.50179464126495,-225.78396092290453 -265.2440898996658,-219.02400132182714 -272.3580489062855,-211.59930285566332 -278.7751603470045,-203.58136942939524 -284.4336239306988,-195.04741812496607 -289.2789455598266,-186.0796355585698 -293.26446213837716,-176.76438637860946 -296.3517909629941,-167.19138152692128 -298.5111993693906,-157.4528142733637 -299.72189107416057,-147.64247234423098 -299.9722064543555,-137.85483469517902 -299.2597348360279,-128.18416162723517 -297.59133771033885,-118.72358700857137 -294.98308265364733,-109.56422134444159 -291.46008858796654,-100.79427433320987 -287.05628387201347,-92.49820535873518 -281.81407955256725,-84.75591010033425 -275.7839609229046,-77.64195109371464 -269.02400132182726,-71.22483965299563 -261.59930285566344,175.37620398257155 34.28525376159651,181.46688127708177 42.007351716050565,186.76955267374814 50.29039601045239,191.23292694514913 59.05426712072333,194.8138311454814 68.21419462218802,197.47762821014587 77.68157714970485,199.19855199019082 87.36483941339068,199.959956480919 97.1703179802708,199.75447683394128 107.00316725394137,198.5841005952538 116.76827688896145,196.46014848027284 126.37119176608674,193.40316487178438 135.7190256296874,189.4427190999916 144.72135954999578,139.44271909999156 244.72135954999587,134.67414493283295 253.20046221503722,129.10426138467784 261.17610506386103,122.78577875973701 268.57281101383126,115.77849169077639 275.3205817216414,108.14871327570971 281.355560009008,99.96864752703414 286.6206341717666,91.31570607290114 291.0659784535237,82.27177557618647 294.64952456911897,72.92244280430123 297.33735981566144,63.35618468325523 299.10404800363494,53.66353100085455 299.9328701709592,43.93620768274765 299.8159828020204,34.26626874888323 298.7544920543751,24.745225165064543 296.758443290685,15.463178833668529 293.8467260149487,6.507969918963688 290.0468951126591,-2.0356544237308825 285.394910086574,-10.086842048356445 279.93479475582495,-17.56940095820731 273.7182206387879,-24.412520344941953 266.8040179623472,-30.55144070299677 259.2576189250935,-184.7062507874361 33.14932810051302,-189.43184924301974 24.74309266215056,-193.32576660256726 15.920764023655508,-196.35179096299407 6.7643863786094585,-246.35179096299407 -173.23561362139054,-248.51119936939062 -182.8086184730787,-249.72189107416057 -192.54718572663626,-249.97220645435553 -202.35752765576902,-249.25973483602792 -212.145165304821) diff --git a/rust/geo-test-fixtures/fixtures/poly2.wkt b/rust/sedona-geo-test-fixtures/fixtures/poly2.wkt similarity index 99% rename from rust/geo-test-fixtures/fixtures/poly2.wkt rename to rust/sedona-geo-test-fixtures/fixtures/poly2.wkt index abd4c965..06f841e7 100644 --- a/rust/geo-test-fixtures/fixtures/poly2.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/poly2.wkt @@ -1 +1 @@ -LINESTRING(0 -100,-9.801714032956664 -99.51847266721963,-19.509032201613387 -98.07852804032294,-29.02846772544675 -95.69403357322072,-38.268343236509445 -92.38795325112848,-47.13967368260018 -88.19212643483529,-55.5570233019606 -83.14696123025428,-63.439328416364795 -77.30104533627349,-70.710678118655 -70.71067811865453,-77.30104533627389 -63.439328416364326,-83.14696123025468 -55.55702330196001,-88.1921264348356 -47.13967368259957,-92.38795325112875 -38.2683432365088,-95.69403357322092 -29.028467725446088,-98.07852804032306 -19.509032201612705,-99.5184726672197 -9.80171403295597,-100 0,-100 500,-99.51847266721968 509.80171403295606,-98.07852804032305 519.5090322016129,-95.69403357322088 529.0284677254463,-92.38795325112868 538.2683432365089,-88.1921264348355 547.1396736825998,-83.14696123025453 555.5570233019603,-77.3010453362737 563.4393284163646,-70.71067811865474 570.7106781186548,-63.439328416364525 577.3010453362738,-55.55702330196019 583.1469612302545,-47.13967368259977 588.1921264348355,-38.268343236508976 592.3879532511287,-29.028467725446223 595.6940335732208,-19.5090322016128 598.078528040323,-9.80171403295602 599.5184726672197,0 600,500 600,509.8017140329562 599.5184726672196,519.509032201613 598.078528040323,529.0284677254464 595.6940335732208,538.268343236509 592.3879532511287,547.1396736825999 588.1921264348355,555.5570233019603 583.1469612302544,563.4393284163647 577.3010453362737,570.7106781186549 570.7106781186546,577.3010453362738 563.4393284163644,583.1469612302545 555.5570233019602,588.1921264348355 547.1396736825997,592.3879532511287 538.2683432365089,595.6940335732208 529.0284677254463,598.078528040323 519.5090322016129,599.5184726672197 509.80171403295606,600 500,599.5184726672197 490.19828596704394,598.078528040323 480.4909677983872,595.6940335732208 470.9715322745538,592.3879532511287 461.73165676349106,588.1921264348355 452.8603263174003,583.1469612302545 444.44297669803984,577.3010453362738 436.5606715836355,570.7106781186548 429.28932188134524,563.4393284163646 422.69895466372634,555.5570233019603 416.85303876974547,547.1396736825998 411.8078735651645,538.2683432365089 407.6120467488713,529.0284677254463 404.3059664267791,519.5090322016127 401.921471959677,509.801714032956 400.4815273327803,500 400,100 400,100 100,500 100,509.8017140329562 99.51847266721967,519.509032201613 98.07852804032302,529.0284677254464 95.69403357322085,538.268343236509 92.38795325112864,547.1396736825999 88.19212643483544,555.5570233019603 83.14696123025446,563.4393284163647 77.30104533627363,570.7106781186549 70.7106781186547,577.3010453362738 63.439328416364496,583.1469612302545 55.55702330196017,588.1921264348355 47.139673682599714,592.3879532511287 38.26834323650893,595.6940335732208 29.028467725446205,598.078528040323 19.509032201612804,599.5184726672197 9.801714032956049,600 0,599.5184726672197 -9.801714032956049,598.078528040323 -19.509032201612804,595.6940335732208 -29.028467725446205,592.3879532511287 -38.26834323650893,588.1921264348355 -47.139673682599714,583.1469612302545 -55.557023301960186,577.3010453362738 -63.439328416364525,570.7106781186548 -70.71067811865474,563.4393284163646 -77.30104533627369,555.5570233019603 -83.14696123025452,547.1396736825998 -88.1921264348355,538.2683432365089 -92.38795325112868,529.0284677254463 -95.69403357322089,519.5090322016127 -98.07852804032305,509.801714032956 -99.5184726672197,500 -100,0 -100) \ No newline at end of file +LINESTRING(0 -100,-9.801714032956664 -99.51847266721963,-19.509032201613387 -98.07852804032294,-29.02846772544675 -95.69403357322072,-38.268343236509445 -92.38795325112848,-47.13967368260018 -88.19212643483529,-55.5570233019606 -83.14696123025428,-63.439328416364795 -77.30104533627349,-70.710678118655 -70.71067811865453,-77.30104533627389 -63.439328416364326,-83.14696123025468 -55.55702330196001,-88.1921264348356 -47.13967368259957,-92.38795325112875 -38.2683432365088,-95.69403357322092 -29.028467725446088,-98.07852804032306 -19.509032201612705,-99.5184726672197 -9.80171403295597,-100 0,-100 500,-99.51847266721968 509.80171403295606,-98.07852804032305 519.5090322016129,-95.69403357322088 529.0284677254463,-92.38795325112868 538.2683432365089,-88.1921264348355 547.1396736825998,-83.14696123025453 555.5570233019603,-77.3010453362737 563.4393284163646,-70.71067811865474 570.7106781186548,-63.439328416364525 577.3010453362738,-55.55702330196019 583.1469612302545,-47.13967368259977 588.1921264348355,-38.268343236508976 592.3879532511287,-29.028467725446223 595.6940335732208,-19.5090322016128 598.078528040323,-9.80171403295602 599.5184726672197,0 600,500 600,509.8017140329562 599.5184726672196,519.509032201613 598.078528040323,529.0284677254464 595.6940335732208,538.268343236509 592.3879532511287,547.1396736825999 588.1921264348355,555.5570233019603 583.1469612302544,563.4393284163647 577.3010453362737,570.7106781186549 570.7106781186546,577.3010453362738 563.4393284163644,583.1469612302545 555.5570233019602,588.1921264348355 547.1396736825997,592.3879532511287 538.2683432365089,595.6940335732208 529.0284677254463,598.078528040323 519.5090322016129,599.5184726672197 509.80171403295606,600 500,599.5184726672197 490.19828596704394,598.078528040323 480.4909677983872,595.6940335732208 470.9715322745538,592.3879532511287 461.73165676349106,588.1921264348355 452.8603263174003,583.1469612302545 444.44297669803984,577.3010453362738 436.5606715836355,570.7106781186548 429.28932188134524,563.4393284163646 422.69895466372634,555.5570233019603 416.85303876974547,547.1396736825998 411.8078735651645,538.2683432365089 407.6120467488713,529.0284677254463 404.3059664267791,519.5090322016127 401.921471959677,509.801714032956 400.4815273327803,500 400,100 400,100 100,500 100,509.8017140329562 99.51847266721967,519.509032201613 98.07852804032302,529.0284677254464 95.69403357322085,538.268343236509 92.38795325112864,547.1396736825999 88.19212643483544,555.5570233019603 83.14696123025446,563.4393284163647 77.30104533627363,570.7106781186549 70.7106781186547,577.3010453362738 63.439328416364496,583.1469612302545 55.55702330196017,588.1921264348355 47.139673682599714,592.3879532511287 38.26834323650893,595.6940335732208 29.028467725446205,598.078528040323 19.509032201612804,599.5184726672197 9.801714032956049,600 0,599.5184726672197 -9.801714032956049,598.078528040323 -19.509032201612804,595.6940335732208 -29.028467725446205,592.3879532511287 -38.26834323650893,588.1921264348355 -47.139673682599714,583.1469612302545 -55.557023301960186,577.3010453362738 -63.439328416364525,570.7106781186548 -70.71067811865474,563.4393284163646 -77.30104533627369,555.5570233019603 -83.14696123025452,547.1396736825998 -88.1921264348355,538.2683432365089 -92.38795325112868,529.0284677254463 -95.69403357322089,519.5090322016127 -98.07852804032305,509.801714032956 -99.5184726672197,500 -100,0 -100) diff --git a/rust/geo-test-fixtures/fixtures/poly2_hull.wkt b/rust/sedona-geo-test-fixtures/fixtures/poly2_hull.wkt similarity index 99% rename from rust/geo-test-fixtures/fixtures/poly2_hull.wkt rename to rust/sedona-geo-test-fixtures/fixtures/poly2_hull.wkt index 7cb8a8ef..e15bceb8 100644 --- a/rust/geo-test-fixtures/fixtures/poly2_hull.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/poly2_hull.wkt @@ -1 +1 @@ -LINESTRING(-99.5184726672197 -9.80171403295597,-98.07852804032306 -19.509032201612705,-95.69403357322092 -29.028467725446088,-92.38795325112875 -38.2683432365088,-88.1921264348356 -47.13967368259957,-83.14696123025468 -55.55702330196001,-77.30104533627389 -63.439328416364326,-70.710678118655 -70.71067811865453,-63.439328416364795 -77.30104533627349,-55.5570233019606 -83.14696123025428,-47.13967368260018 -88.19212643483529,-38.268343236509445 -92.38795325112848,-29.02846772544675 -95.69403357322072,-19.509032201613387 -98.07852804032294,-9.801714032956664 -99.51847266721963,0 -100,500 -100,509.801714032956 -99.5184726672197,519.5090322016127 -98.07852804032305,529.0284677254463 -95.69403357322089,538.2683432365089 -92.38795325112868,547.1396736825998 -88.1921264348355,555.5570233019603 -83.14696123025452,563.4393284163646 -77.30104533627369,570.7106781186548 -70.71067811865474,577.3010453362738 -63.439328416364525,583.1469612302545 -55.557023301960186,588.1921264348355 -47.139673682599714,592.3879532511287 -38.26834323650893,595.6940335732208 -29.028467725446205,598.078528040323 -19.509032201612804,599.5184726672197 -9.801714032956049,600 0,600 500,599.5184726672197 509.80171403295606,598.078528040323 519.5090322016129,595.6940335732208 529.0284677254463,592.3879532511287 538.2683432365089,588.1921264348355 547.1396736825997,583.1469612302545 555.5570233019602,577.3010453362738 563.4393284163644,570.7106781186549 570.7106781186546,563.4393284163647 577.3010453362737,555.5570233019603 583.1469612302544,547.1396736825999 588.1921264348355,538.268343236509 592.3879532511287,529.0284677254464 595.6940335732208,519.509032201613 598.078528040323,509.8017140329562 599.5184726672196,500 600,0 600,-9.80171403295602 599.5184726672197,-19.5090322016128 598.078528040323,-29.028467725446223 595.6940335732208,-38.268343236508976 592.3879532511287,-47.13967368259977 588.1921264348355,-55.55702330196019 583.1469612302545,-63.439328416364525 577.3010453362738,-70.71067811865474 570.7106781186548,-77.3010453362737 563.4393284163646,-83.14696123025453 555.5570233019603,-88.1921264348355 547.1396736825998,-92.38795325112868 538.2683432365089,-95.69403357322088 529.0284677254463,-98.07852804032305 519.5090322016129,-99.51847266721968 509.80171403295606,-100 500,-100 0,-99.5184726672197 -9.80171403295597) \ No newline at end of file +LINESTRING(-99.5184726672197 -9.80171403295597,-98.07852804032306 -19.509032201612705,-95.69403357322092 -29.028467725446088,-92.38795325112875 -38.2683432365088,-88.1921264348356 -47.13967368259957,-83.14696123025468 -55.55702330196001,-77.30104533627389 -63.439328416364326,-70.710678118655 -70.71067811865453,-63.439328416364795 -77.30104533627349,-55.5570233019606 -83.14696123025428,-47.13967368260018 -88.19212643483529,-38.268343236509445 -92.38795325112848,-29.02846772544675 -95.69403357322072,-19.509032201613387 -98.07852804032294,-9.801714032956664 -99.51847266721963,0 -100,500 -100,509.801714032956 -99.5184726672197,519.5090322016127 -98.07852804032305,529.0284677254463 -95.69403357322089,538.2683432365089 -92.38795325112868,547.1396736825998 -88.1921264348355,555.5570233019603 -83.14696123025452,563.4393284163646 -77.30104533627369,570.7106781186548 -70.71067811865474,577.3010453362738 -63.439328416364525,583.1469612302545 -55.557023301960186,588.1921264348355 -47.139673682599714,592.3879532511287 -38.26834323650893,595.6940335732208 -29.028467725446205,598.078528040323 -19.509032201612804,599.5184726672197 -9.801714032956049,600 0,600 500,599.5184726672197 509.80171403295606,598.078528040323 519.5090322016129,595.6940335732208 529.0284677254463,592.3879532511287 538.2683432365089,588.1921264348355 547.1396736825997,583.1469612302545 555.5570233019602,577.3010453362738 563.4393284163644,570.7106781186549 570.7106781186546,563.4393284163647 577.3010453362737,555.5570233019603 583.1469612302544,547.1396736825999 588.1921264348355,538.268343236509 592.3879532511287,529.0284677254464 595.6940335732208,519.509032201613 598.078528040323,509.8017140329562 599.5184726672196,500 600,0 600,-9.80171403295602 599.5184726672197,-19.5090322016128 598.078528040323,-29.028467725446223 595.6940335732208,-38.268343236508976 592.3879532511287,-47.13967368259977 588.1921264348355,-55.55702330196019 583.1469612302545,-63.439328416364525 577.3010453362738,-70.71067811865474 570.7106781186548,-77.3010453362737 563.4393284163646,-83.14696123025453 555.5570233019603,-88.1921264348355 547.1396736825998,-92.38795325112868 538.2683432365089,-95.69403357322088 529.0284677254463,-98.07852804032305 519.5090322016129,-99.51847266721968 509.80171403295606,-100 500,-100 0,-99.5184726672197 -9.80171403295597) diff --git a/rust/geo-test-fixtures/fixtures/poly_in_ring.wkt b/rust/sedona-geo-test-fixtures/fixtures/poly_in_ring.wkt similarity index 98% rename from rust/geo-test-fixtures/fixtures/poly_in_ring.wkt rename to rust/sedona-geo-test-fixtures/fixtures/poly_in_ring.wkt index 57cd79ca..bdfeab7a 100644 --- a/rust/geo-test-fixtures/fixtures/poly_in_ring.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/poly_in_ring.wkt @@ -1 +1 @@ -LINESTRING(4 1,3.9855541800165906 0.7059485790113185,3.9423558412096913 0.41472903395161576,3.8708210071966267 0.12914596823661362,3.771638597533861 -0.14805029709526818,3.6457637930450657 -0.41419021047799154,3.4944088369076365 -0.6667106990588052,3.3190313600882124 -0.9031798524909349,3.1213203435596446 -1.121320343559641,2.903179852490939 -1.3190313600882089,2.6667106990588096 -1.4944088369076338,2.4141902104779955 -1.6457637930450635,2.1480502970952724 -1.771638597533859,1.8708540317633906 -1.8708210071966254,1.5852709660483888 -1.9423558412096904,1.2940514209886862 -1.9855541800165901,1.0000000000000049 -2,0.7059485790113234 -1.985554180016591,0.41472903395162053 -1.9423558412096922,0.1291459682366185 -1.8708210071966285,-0.14805029709526352 -1.7716385975338627,-0.4141902104779871 -1.6457637930450684,-0.6667106990588012 -1.4944088369076391,-0.9031798524909318 -1.3190313600882146,-1.1213203435596384 -1.1213203435596468,-1.319031360088207 -0.9031798524909405,-1.494408836907633 -0.666710699058811,-1.645763793045063 -0.4141902104779971,-1.7716385975338587 -0.1480502970952733,-1.8708210071966254 0.12914596823660918,-1.9423558412096904 0.41472903395161165,-1.9855541800165906 0.7059485790113149,-2 0.999999999999997,-1.9855541800165906 1.294051420988679,-1.9423558412096922 1.5852709660483826,-1.8708210071966271 1.8708540317633853,-1.7716385975338609 2.148050297095268,-1.6457637930450657 2.414190210477992,-1.4944088369076365 2.6667106990588056,-1.3190313600882115 2.903179852490936,-1.1213203435596428 3.1213203435596424,-0.9031798524909378 3.3190313600882098,-0.6667106990588088 3.494408836907634,-0.414190210477996 3.6457637930450635,-0.1480502970952735 3.7716385975338587,0.12914596823660762 3.870821007196625,0.41472903395160876 3.94235584120969,0.7059485790113107 3.9855541800165897,0.9999999999999915 4,1.2940514209886724 3.9855541800165915,1.5852709660483744 3.942355841209693,1.870854031763376 3.87082100719663,2.1480502970952577 3.7716385975338653,2.414190210477981 3.6457637930450715,2.6667106990587945 3.494408836907644,2.9031798524909247 3.3190313600882204,3.121320343559631 3.1213203435596544,3.3190313600881995 2.90317985249095,3.4944088369076254 2.666710699058822,3.645763793045056 2.41419021047801,3.771638597533852 2.1480502970952884,3.8708210071966205 1.870854031763408,3.942355841209687 1.585270966048407,3.9855541800165883 1.2940514209887053,4 1.0000000000000246,4 1) \ No newline at end of file +LINESTRING(4 1,3.9855541800165906 0.7059485790113185,3.9423558412096913 0.41472903395161576,3.8708210071966267 0.12914596823661362,3.771638597533861 -0.14805029709526818,3.6457637930450657 -0.41419021047799154,3.4944088369076365 -0.6667106990588052,3.3190313600882124 -0.9031798524909349,3.1213203435596446 -1.121320343559641,2.903179852490939 -1.3190313600882089,2.6667106990588096 -1.4944088369076338,2.4141902104779955 -1.6457637930450635,2.1480502970952724 -1.771638597533859,1.8708540317633906 -1.8708210071966254,1.5852709660483888 -1.9423558412096904,1.2940514209886862 -1.9855541800165901,1.0000000000000049 -2,0.7059485790113234 -1.985554180016591,0.41472903395162053 -1.9423558412096922,0.1291459682366185 -1.8708210071966285,-0.14805029709526352 -1.7716385975338627,-0.4141902104779871 -1.6457637930450684,-0.6667106990588012 -1.4944088369076391,-0.9031798524909318 -1.3190313600882146,-1.1213203435596384 -1.1213203435596468,-1.319031360088207 -0.9031798524909405,-1.494408836907633 -0.666710699058811,-1.645763793045063 -0.4141902104779971,-1.7716385975338587 -0.1480502970952733,-1.8708210071966254 0.12914596823660918,-1.9423558412096904 0.41472903395161165,-1.9855541800165906 0.7059485790113149,-2 0.999999999999997,-1.9855541800165906 1.294051420988679,-1.9423558412096922 1.5852709660483826,-1.8708210071966271 1.8708540317633853,-1.7716385975338609 2.148050297095268,-1.6457637930450657 2.414190210477992,-1.4944088369076365 2.6667106990588056,-1.3190313600882115 2.903179852490936,-1.1213203435596428 3.1213203435596424,-0.9031798524909378 3.3190313600882098,-0.6667106990588088 3.494408836907634,-0.414190210477996 3.6457637930450635,-0.1480502970952735 3.7716385975338587,0.12914596823660762 3.870821007196625,0.41472903395160876 3.94235584120969,0.7059485790113107 3.9855541800165897,0.9999999999999915 4,1.2940514209886724 3.9855541800165915,1.5852709660483744 3.942355841209693,1.870854031763376 3.87082100719663,2.1480502970952577 3.7716385975338653,2.414190210477981 3.6457637930450715,2.6667106990587945 3.494408836907644,2.9031798524909247 3.3190313600882204,3.121320343559631 3.1213203435596544,3.3190313600881995 2.90317985249095,3.4944088369076254 2.666710699058822,3.645763793045056 2.41419021047801,3.771638597533852 2.1480502970952884,3.8708210071966205 1.870854031763408,3.942355841209687 1.585270966048407,3.9855541800165883 1.2940514209887053,4 1.0000000000000246,4 1) diff --git a/rust/geo-test-fixtures/fixtures/ring.wkt b/rust/sedona-geo-test-fixtures/fixtures/ring.wkt similarity index 98% rename from rust/geo-test-fixtures/fixtures/ring.wkt rename to rust/sedona-geo-test-fixtures/fixtures/ring.wkt index 2a74d503..ee0cd97b 100644 --- a/rust/geo-test-fixtures/fixtures/ring.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/ring.wkt @@ -1 +1 @@ -LINESTRING(10 1,9.956662540049772 0.1178457370339554,9.827067523629074 -0.7558128981451526,9.61246302158988 -1.612562095290159,9.314915792601582 -2.4441508912858048,8.937291379135196 -3.242570631433975,8.483226510722911 -4.000132097176415,7.957094080264637 -4.709539557472804,7.363961030678933 -5.363961030678923,6.709539557472817 -5.957094080264627,6.0001320971764285 -6.483226510722902,5.2425706314339875 -6.937291379135191,4.444150891285817 -7.314915792601576,3.612562095290172 -7.6124630215898765,2.755812898145167 -7.827067523629072,1.8821542629660588 -7.95666254004977,1.0000000000000144 -8,0.11784573703397005 -7.9566625400497735,-0.7558128981451382 -7.827067523629077,-1.6125620952901443 -7.612463021589885,-2.4441508912857906 -7.314915792601587,-3.2425706314339617 -6.937291379135204,-4.000132097176404 -6.483226510722918,-4.709539557472795 -5.957094080264644,-5.363961030678915 -5.36396103067894,-5.957094080264622 -4.709539557472821,-6.483226510722899 -4.000132097176433,-6.937291379135188 -3.242570631433991,-7.314915792601576 -2.44415089128582,-7.6124630215898765 -1.6125620952901727,-7.827067523629072 -0.7558128981451653,-7.956662540049772 0.11784573703394452,-8 0.9999999999999909,-7.956662540049772 1.8821542629660373,-7.827067523629076 2.7558128981451473,-7.612463021589882 3.6125620952901554,-7.314915792601582 4.444150891285803,-6.937291379135197 5.242570631433975,-6.4832265107229095 6.000132097176418,-5.957094080264634 6.709539557472807,-5.363961030678929 7.363961030678928,-4.709539557472813 7.95709408026463,-4.000132097176427 8.483226510722902,-3.2425706314339875 8.937291379135191,-2.4441508912858207 9.314915792601576,-1.6125620952901771 9.612463021589875,-0.7558128981451737 9.82706752362907,0.11784573703393209 9.95666254004977,0.9999999999999744 10,1.8821542629660168 9.956662540049773,2.7558128981451233 9.82706752362908,3.612562095290128 9.612463021589889,4.444150891285773 9.314915792601596,5.242570631433943 8.937291379135214,6.000132097176383 8.483226510722933,6.709539557472773 7.957094080264662,7.363961030678892 7.363961030678963,7.957094080264599 6.7095395574728505,8.483226510722876 6.000132097176467,8.937291379135168 5.242570631434031,9.314915792601557 4.444150891285865,9.61246302158986 3.6125620952902233,9.827067523629061 2.755812898145221,9.956662540049765 1.8821542629661163,10 1.0000000000000742,10 1) \ No newline at end of file +LINESTRING(10 1,9.956662540049772 0.1178457370339554,9.827067523629074 -0.7558128981451526,9.61246302158988 -1.612562095290159,9.314915792601582 -2.4441508912858048,8.937291379135196 -3.242570631433975,8.483226510722911 -4.000132097176415,7.957094080264637 -4.709539557472804,7.363961030678933 -5.363961030678923,6.709539557472817 -5.957094080264627,6.0001320971764285 -6.483226510722902,5.2425706314339875 -6.937291379135191,4.444150891285817 -7.314915792601576,3.612562095290172 -7.6124630215898765,2.755812898145167 -7.827067523629072,1.8821542629660588 -7.95666254004977,1.0000000000000144 -8,0.11784573703397005 -7.9566625400497735,-0.7558128981451382 -7.827067523629077,-1.6125620952901443 -7.612463021589885,-2.4441508912857906 -7.314915792601587,-3.2425706314339617 -6.937291379135204,-4.000132097176404 -6.483226510722918,-4.709539557472795 -5.957094080264644,-5.363961030678915 -5.36396103067894,-5.957094080264622 -4.709539557472821,-6.483226510722899 -4.000132097176433,-6.937291379135188 -3.242570631433991,-7.314915792601576 -2.44415089128582,-7.6124630215898765 -1.6125620952901727,-7.827067523629072 -0.7558128981451653,-7.956662540049772 0.11784573703394452,-8 0.9999999999999909,-7.956662540049772 1.8821542629660373,-7.827067523629076 2.7558128981451473,-7.612463021589882 3.6125620952901554,-7.314915792601582 4.444150891285803,-6.937291379135197 5.242570631433975,-6.4832265107229095 6.000132097176418,-5.957094080264634 6.709539557472807,-5.363961030678929 7.363961030678928,-4.709539557472813 7.95709408026463,-4.000132097176427 8.483226510722902,-3.2425706314339875 8.937291379135191,-2.4441508912858207 9.314915792601576,-1.6125620952901771 9.612463021589875,-0.7558128981451737 9.82706752362907,0.11784573703393209 9.95666254004977,0.9999999999999744 10,1.8821542629660168 9.956662540049773,2.7558128981451233 9.82706752362908,3.612562095290128 9.612463021589889,4.444150891285773 9.314915792601596,5.242570631433943 8.937291379135214,6.000132097176383 8.483226510722933,6.709539557472773 7.957094080264662,7.363961030678892 7.363961030678963,7.957094080264599 6.7095395574728505,8.483226510722876 6.000132097176467,8.937291379135168 5.242570631434031,9.314915792601557 4.444150891285865,9.61246302158986 3.6125620952902233,9.827067523629061 2.755812898145221,9.956662540049765 1.8821542629661163,10 1.0000000000000742,10 1) diff --git a/rust/geo-test-fixtures/fixtures/shell.wkt b/rust/sedona-geo-test-fixtures/fixtures/shell.wkt similarity index 97% rename from rust/geo-test-fixtures/fixtures/shell.wkt rename to rust/sedona-geo-test-fixtures/fixtures/shell.wkt index e8a91494..b40a300e 100644 --- a/rust/geo-test-fixtures/fixtures/shell.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/shell.wkt @@ -1 +1 @@ -LINESTRING(11 1,10.95184726672197 0.019828596704394963,10.807852804032304 -0.9509032201612808,10.56940335732209 -1.902846772544621,10.23879532511287 -2.826834323650894,9.819212643483553 -3.713967368259972,9.314696123025456 -4.555702330196017,8.730104533627374 -5.343932841636449,8.07106781186548 -6.07106781186547,7.343932841636462 -6.7301045336273635,6.5557023301960315 -7.314696123025447,5.713967368259986 -7.819212643483546,4.826834323650909 -8.238795325112862,3.9028467725446356 -8.569403357322084,2.9509032201612966 -8.807852804032303,1.9801714032956208 -8.951847266721966,1.0000000000000162 -9,0.019828596704411172 -8.95184726672197,-0.9509032201612646 -8.807852804032308,-1.902846772544605 -8.569403357322095,-2.8268343236508784 -8.238795325112875,-3.713967368259957 -7.81921264348356,-4.555702330196004 -7.314696123025465,-5.343932841636439 -6.730104533627382,-6.071067811865461 -6.071067811865489,-6.730104533627358 -5.343932841636468,-7.314696123025444 -4.555702330196036,-7.819212643483542 -3.71396736825999,-8.238795325112862 -2.8268343236509113,-8.569403357322084 -1.902846772544636,-8.807852804032303 -0.9509032201612948,-8.951847266721968 0.01982859670438286,-9 0.9999999999999899,-8.95184726672197 1.980171403295597,-8.807852804032306 2.9509032201612753,-8.569403357322091 3.902846772544617,-8.23879532511287 4.826834323650893,-7.819212643483553 5.713967368259972,-7.314696123025454 6.55570233019602,-6.730104533627371 7.343932841636453,-6.071067811865477 8.071067811865476,-5.343932841636459 8.730104533627367,-4.55570233019603 9.314696123025447,-3.7139673682599863 9.819212643483546,-2.8268343236509117 10.238795325112862,-1.902846772544641 10.569403357322084,-0.9509032201613041 10.8078528040323,0.019828596704368984 10.951847266721966,0.9999999999999715 11,1.9801714032955744 10.951847266721972,2.950903220161248 10.807852804032311,3.902846772544587 10.569403357322098,4.826834323650859 10.238795325112884,5.713967368259937 9.81921264348357,6.555702330195982 9.314696123025481,7.3439328416364145 8.730104533627403,8.071067811865436 8.071067811865515,8.730104533627333 7.343932841636501,9.314696123025417 6.555702330196074,9.81921264348352 5.713967368260034,10.238795325112841 4.826834323650961,10.569403357322068 3.9028467725446925,10.80785280403229 2.950903220161357,10.95184726672196 1.9801714032956848,11 1.0000000000000824,11 1) \ No newline at end of file +LINESTRING(11 1,10.95184726672197 0.019828596704394963,10.807852804032304 -0.9509032201612808,10.56940335732209 -1.902846772544621,10.23879532511287 -2.826834323650894,9.819212643483553 -3.713967368259972,9.314696123025456 -4.555702330196017,8.730104533627374 -5.343932841636449,8.07106781186548 -6.07106781186547,7.343932841636462 -6.7301045336273635,6.5557023301960315 -7.314696123025447,5.713967368259986 -7.819212643483546,4.826834323650909 -8.238795325112862,3.9028467725446356 -8.569403357322084,2.9509032201612966 -8.807852804032303,1.9801714032956208 -8.951847266721966,1.0000000000000162 -9,0.019828596704411172 -8.95184726672197,-0.9509032201612646 -8.807852804032308,-1.902846772544605 -8.569403357322095,-2.8268343236508784 -8.238795325112875,-3.713967368259957 -7.81921264348356,-4.555702330196004 -7.314696123025465,-5.343932841636439 -6.730104533627382,-6.071067811865461 -6.071067811865489,-6.730104533627358 -5.343932841636468,-7.314696123025444 -4.555702330196036,-7.819212643483542 -3.71396736825999,-8.238795325112862 -2.8268343236509113,-8.569403357322084 -1.902846772544636,-8.807852804032303 -0.9509032201612948,-8.951847266721968 0.01982859670438286,-9 0.9999999999999899,-8.95184726672197 1.980171403295597,-8.807852804032306 2.9509032201612753,-8.569403357322091 3.902846772544617,-8.23879532511287 4.826834323650893,-7.819212643483553 5.713967368259972,-7.314696123025454 6.55570233019602,-6.730104533627371 7.343932841636453,-6.071067811865477 8.071067811865476,-5.343932841636459 8.730104533627367,-4.55570233019603 9.314696123025447,-3.7139673682599863 9.819212643483546,-2.8268343236509117 10.238795325112862,-1.902846772544641 10.569403357322084,-0.9509032201613041 10.8078528040323,0.019828596704368984 10.951847266721966,0.9999999999999715 11,1.9801714032955744 10.951847266721972,2.950903220161248 10.807852804032311,3.902846772544587 10.569403357322098,4.826834323650859 10.238795325112884,5.713967368259937 9.81921264348357,6.555702330195982 9.314696123025481,7.3439328416364145 8.730104533627403,8.071067811865436 8.071067811865515,8.730104533627333 7.343932841636501,9.314696123025417 6.555702330196074,9.81921264348352 5.713967368260034,10.238795325112841 4.826834323650961,10.569403357322068 3.9028467725446925,10.80785280403229 2.950903220161357,10.95184726672196 1.9801714032956848,11 1.0000000000000824,11 1) diff --git a/rust/geo-test-fixtures/fixtures/vw_orig.wkt b/rust/sedona-geo-test-fixtures/fixtures/vw_orig.wkt similarity index 99% rename from rust/geo-test-fixtures/fixtures/vw_orig.wkt rename to rust/sedona-geo-test-fixtures/fixtures/vw_orig.wkt index be42f7b3..abdba07c 100644 --- a/rust/geo-test-fixtures/fixtures/vw_orig.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/vw_orig.wkt @@ -1 +1 @@ -LINESTRING(2.32986 48.86005,2.35093 48.863411,2.43115 48.940418,2.54246 48.960732,2.63999 49.001961,2.72844 49.08049,2.73925 49.098728,2.77004 49.111778,2.80339 49.144669,2.85119 49.15979,2.99549 49.23616,3.03301 49.241539,3.08543 49.26516,3.13198 49.266472,3.18086 49.294731,3.21429 49.302959,3.28301 49.356419,3.3289 49.35873,3.35653 49.368698,3.37508 49.387329,3.3684 49.40694,3.40955 49.42358,3.43405 49.446411,3.51661 49.463291,3.58582 49.519058,3.59405 49.535789,3.62701 49.551029,3.63567 49.573921,3.65985 49.59404,3.71867 49.705761,3.80852 49.78054,3.9306 49.8503,4.00552 49.867611,4.02625 49.889511,4.06293 49.90406,4.09659 49.905418,4.10586 49.934929,4.14826 49.948738,4.16724 49.974251,4.20531 49.97723,4.31856 50.0275,4.37885 50.030609,4.46792 50.070969,4.46888 50.083069,4.49986 50.102741,4.49368 50.127609,4.50478 50.152081,4.52658 50.17326,4.53016 50.19585,4.55226 50.203079,4.57809 50.246059,4.60485 50.252739,4.65955 50.304298,4.71331 50.31625,4.73277 50.346191,4.74492 50.346069,4.77921 50.37978,4.82965 50.398071,4.84423 50.415329,4.86628 50.42218,4.85599 50.445961,4.86486 50.45866,4.89671 50.468529,4.94456 50.503571,5.00459 50.525509,5.0625 50.5825,5.12338 50.591831,5.14038 50.606461,5.14052 50.615791,5.17591 50.62899,5.19067 50.649441,5.23795 50.676979,5.3241 50.72472,5.36659 50.737,5.46203 50.78297,5.59527 50.811749,5.66683 50.840649,5.69181 50.859291,5.70955 50.859509,5.78653 50.907829,5.83605 50.9123,5.96387 50.980091,6.14661 51.039459,6.15822 51.053169,6.17824 51.055672,6.21046 51.077419,6.25705 51.084091,6.2703 51.098911,6.33651 51.12685,6.36855 51.158169,6.42585 51.195591,6.43804 51.19519,6.47667 51.218029,6.48883 51.22998,6.47779 51.252701,6.5801 51.331532,6.69558 51.36377,6.75227 51.371132,6.81237 51.399792,6.84989 51.429039,6.87801 51.431438,6.93167 51.462551,6.97855 51.47644,6.98048 51.488819,7.00807 51.496368,7.01853 51.508781,7.0581 51.51609,7.08124 51.53183,7.19856 51.544189,7.24011 51.55888,7.31798 51.557789,7.36123 51.57444,7.38654 51.575272,7.42589 51.595341,7.54105 51.608761,7.59659 51.636028,7.70191 51.658932,7.70489 51.672791,7.74593 51.686958,7.92157 51.708809,8.03324 51.75507,8.07623 51.76083,8.19468 51.80426,8.21855 51.80405,8.35782 51.849621,8.44433 51.859482,8.49079 51.879719,8.5841 51.884579,8.60752 51.900669,8.66277 51.90995,8.69632 51.90266,8.72335 51.909081,8.7726 51.906609,8.90044 51.947609,8.91911 51.945801,8.9343 51.95689,9.00241 51.956379,9.09687 51.99094,9.15502 51.99136,9.33535 52.079762,9.35207 52.090561,9.34909 52.101231,9.36184 52.104111,9.41245 52.10014,9.48007 52.10656,9.53231 52.12204,9.56786 52.110561,9.60129 52.084061,9.61335 52.084469,9.73862 52.124001,9.76815 52.149029,9.85091 52.159939,9.93417 52.153461,10.01568 52.160728,10.12938 52.199108,10.15967 52.20097,10.26939 52.233261,10.33079 52.25803,10.38941 52.26247,10.40875 52.256908,10.5142 52.26252,10.6691 52.245571,10.79077 52.25753,10.84149 52.234901,10.88113 52.22681,10.99778 52.229191,11.03062 52.217602,11.05477 52.22015,11.11851 52.208031,11.35227 52.18716,11.43668 52.188049,11.52164 52.164879,11.62238 52.187531,11.68052 52.218311,11.76374 52.229019,12.05675 52.23267,12.2143 52.252441,12.29568 52.247169,12.34305 52.26495,12.44244 52.2799,12.50953 52.33836,12.55295 52.351181,12.60367 52.349911,12.66093 52.335209,12.80768 52.337711,12.91879 52.290451,12.97733 52.3036,13.24849 52.300331,13.27942 52.30859,13.44054 52.30608,13.51074 52.319302,13.64603 52.310699,13.7164 52.324501,13.8241 52.310299,13.89843 52.316368,13.95759 52.31155,14.0635 52.33419,14.18073 52.343922,14.29105 52.324291,14.54354 52.314289,14.75599 52.33532,14.84256 52.328499,14.95564 52.338371,15.06221 52.32468,15.16572 52.325298,15.28446 52.294231,15.39406 52.318531,15.54209 52.32399,15.65358 52.29948,15.71254 52.296532,15.83711 52.327572,15.93636 52.330448,16.130489 52.36385,16.448879 52.390018,16.5352 52.385269,16.62204 52.356419,16.67141 52.348579,16.88826 52.35461,17.004881 52.345322,17.170919 52.307411,17.362419 52.310108,17.440769 52.31905,17.521919 52.316971,17.549561 52.30616,17.554529 52.313641,17.62093 52.32695,17.78367 52.318829,17.890829 52.282341,17.98637 52.313019,18.00901 52.336861,18.069059 52.358261,18.130541 52.36541,18.158409 52.394329,18.18281 52.39386,18.225611 52.376949,18.30847 52.370152,18.41881 52.3894,18.527161 52.38678,18.615891 52.398628,18.68129 52.39312,18.7043 52.405609,18.732691 52.405029,18.762569 52.420631,18.80508 52.4128,18.86809 52.426079,18.89086 52.418201,18.94124 52.419811,19.0529 52.404129,19.164961 52.40538,19.24848 52.423641,19.305229 52.41375,19.35132 52.43359,19.396641 52.44128,19.429609 52.44141,19.46174 52.42918,19.482149 52.444271,19.611401 52.465778,19.654921 52.491261,19.648609 52.504318,19.70643 52.546162,19.816271 52.573441,19.88517 52.606121,19.91324 52.607239,19.98106 52.63168,20.05653 52.647541,20.33197 52.61694,20.440701 52.62476,20.49379 52.65279,20.52486 52.659981,20.570709 52.66391,20.655951 52.65588,20.707939 52.67017,20.7414 52.666321,20.81212 52.68528,20.89023 52.694012,21.043341 52.67868,21.0809 52.696308,21.09758 52.69495,21.115641 52.708408,21.31554 52.724289,21.361641 52.716061,21.39842 52.698738,21.590389 52.685459,21.59984 52.694321,21.63352 52.685341,21.85906 52.784401,21.87155 52.79987,21.89496 52.802479,22.24649 52.987999,22.4666 53.090141,22.924431 53.164379,22.9757 53.163528,23.159651 53.135971,23.196211 53.120152,23.233709 53.126122,23.41815 53.12582,23.44846 53.13739,23.50668 53.14436,23.643511 53.10825,23.796881 53.108688,23.87129 53.124249,24.06872 53.116779,24.450899 53.15369,24.47839 53.14238,24.557699 53.150539,24.71763 53.137539,24.85112 53.146969,25.131519 53.118011,25.25131 53.08876,25.303431 53.086411,25.32103 53.09425,25.41754 53.097252,25.488529 53.087769,25.59878 53.1077,25.715191 53.146481,25.90134 53.13982,25.92585 53.132629,26.067511 53.181671,26.120001 53.20966,26.330429 53.266708,26.599449 53.402821,26.76107 53.50737,26.81377 53.51268,26.96689 53.55397,27.03907 53.58942,27.05237 53.619888,27.089849 53.66666,27.303511 53.73513,27.391319 53.803421,27.432171 53.817829,27.475559 53.849411,27.49699 53.85548,27.49404 53.869808,27.5397 53.88554,27.58568 53.916759,27.71962 53.955311,27.854549 54.008701,27.997959 54.030449,28.33709 54.106628,28.48181 54.20295,28.49527 54.226021,28.51235 54.237518,28.57115 54.255291,28.770069 54.27718,28.802771 54.290051,28.876591 54.29155,29.036091 54.31271,29.166031 54.364811,29.304399 54.37254,29.807631 54.477001,29.89637 54.473911,30.11908 54.506271,30.195641 54.542679,30.27557 54.55484,30.32493 54.575699,30.35874 54.602482,30.40913 54.619732,30.591089 54.642479,30.780769 54.683159,31.06407 54.689949,31.201559 54.70348,31.37289 54.738861,31.48156 54.749538,31.63796 54.814232,31.67371 54.84396,32.004681 54.86578,32.101212 54.89006,32.147099 54.9259,32.299351 55.016338,32.344479 55.029751,32.4063 55.034019,32.504452 55.056099,32.597309 55.059959,32.674419 55.078171,32.745689 55.079319,33.19561 55.132179,33.346119 55.15284,33.471249 55.183289,33.647659 55.179359,33.89735 55.1996,34.06139 55.18755,34.237122 55.22208,34.389042 55.2654,34.562809 55.32428,34.946049 55.486511,34.976509 55.49308,35.120701 55.505718,35.398941 55.491329,35.519581 55.470581,35.61898 55.46545,35.913269 55.46558,36.064789 55.457821,36.17548 55.494419,36.455029 55.54895,37.198662 55.626869,37.29747 55.6576,37.366482 55.70998,37.53793 55.73756,37.532028 55.752178,37.538471 55.76757,37.569962 55.77998) \ No newline at end of file +LINESTRING(2.32986 48.86005,2.35093 48.863411,2.43115 48.940418,2.54246 48.960732,2.63999 49.001961,2.72844 49.08049,2.73925 49.098728,2.77004 49.111778,2.80339 49.144669,2.85119 49.15979,2.99549 49.23616,3.03301 49.241539,3.08543 49.26516,3.13198 49.266472,3.18086 49.294731,3.21429 49.302959,3.28301 49.356419,3.3289 49.35873,3.35653 49.368698,3.37508 49.387329,3.3684 49.40694,3.40955 49.42358,3.43405 49.446411,3.51661 49.463291,3.58582 49.519058,3.59405 49.535789,3.62701 49.551029,3.63567 49.573921,3.65985 49.59404,3.71867 49.705761,3.80852 49.78054,3.9306 49.8503,4.00552 49.867611,4.02625 49.889511,4.06293 49.90406,4.09659 49.905418,4.10586 49.934929,4.14826 49.948738,4.16724 49.974251,4.20531 49.97723,4.31856 50.0275,4.37885 50.030609,4.46792 50.070969,4.46888 50.083069,4.49986 50.102741,4.49368 50.127609,4.50478 50.152081,4.52658 50.17326,4.53016 50.19585,4.55226 50.203079,4.57809 50.246059,4.60485 50.252739,4.65955 50.304298,4.71331 50.31625,4.73277 50.346191,4.74492 50.346069,4.77921 50.37978,4.82965 50.398071,4.84423 50.415329,4.86628 50.42218,4.85599 50.445961,4.86486 50.45866,4.89671 50.468529,4.94456 50.503571,5.00459 50.525509,5.0625 50.5825,5.12338 50.591831,5.14038 50.606461,5.14052 50.615791,5.17591 50.62899,5.19067 50.649441,5.23795 50.676979,5.3241 50.72472,5.36659 50.737,5.46203 50.78297,5.59527 50.811749,5.66683 50.840649,5.69181 50.859291,5.70955 50.859509,5.78653 50.907829,5.83605 50.9123,5.96387 50.980091,6.14661 51.039459,6.15822 51.053169,6.17824 51.055672,6.21046 51.077419,6.25705 51.084091,6.2703 51.098911,6.33651 51.12685,6.36855 51.158169,6.42585 51.195591,6.43804 51.19519,6.47667 51.218029,6.48883 51.22998,6.47779 51.252701,6.5801 51.331532,6.69558 51.36377,6.75227 51.371132,6.81237 51.399792,6.84989 51.429039,6.87801 51.431438,6.93167 51.462551,6.97855 51.47644,6.98048 51.488819,7.00807 51.496368,7.01853 51.508781,7.0581 51.51609,7.08124 51.53183,7.19856 51.544189,7.24011 51.55888,7.31798 51.557789,7.36123 51.57444,7.38654 51.575272,7.42589 51.595341,7.54105 51.608761,7.59659 51.636028,7.70191 51.658932,7.70489 51.672791,7.74593 51.686958,7.92157 51.708809,8.03324 51.75507,8.07623 51.76083,8.19468 51.80426,8.21855 51.80405,8.35782 51.849621,8.44433 51.859482,8.49079 51.879719,8.5841 51.884579,8.60752 51.900669,8.66277 51.90995,8.69632 51.90266,8.72335 51.909081,8.7726 51.906609,8.90044 51.947609,8.91911 51.945801,8.9343 51.95689,9.00241 51.956379,9.09687 51.99094,9.15502 51.99136,9.33535 52.079762,9.35207 52.090561,9.34909 52.101231,9.36184 52.104111,9.41245 52.10014,9.48007 52.10656,9.53231 52.12204,9.56786 52.110561,9.60129 52.084061,9.61335 52.084469,9.73862 52.124001,9.76815 52.149029,9.85091 52.159939,9.93417 52.153461,10.01568 52.160728,10.12938 52.199108,10.15967 52.20097,10.26939 52.233261,10.33079 52.25803,10.38941 52.26247,10.40875 52.256908,10.5142 52.26252,10.6691 52.245571,10.79077 52.25753,10.84149 52.234901,10.88113 52.22681,10.99778 52.229191,11.03062 52.217602,11.05477 52.22015,11.11851 52.208031,11.35227 52.18716,11.43668 52.188049,11.52164 52.164879,11.62238 52.187531,11.68052 52.218311,11.76374 52.229019,12.05675 52.23267,12.2143 52.252441,12.29568 52.247169,12.34305 52.26495,12.44244 52.2799,12.50953 52.33836,12.55295 52.351181,12.60367 52.349911,12.66093 52.335209,12.80768 52.337711,12.91879 52.290451,12.97733 52.3036,13.24849 52.300331,13.27942 52.30859,13.44054 52.30608,13.51074 52.319302,13.64603 52.310699,13.7164 52.324501,13.8241 52.310299,13.89843 52.316368,13.95759 52.31155,14.0635 52.33419,14.18073 52.343922,14.29105 52.324291,14.54354 52.314289,14.75599 52.33532,14.84256 52.328499,14.95564 52.338371,15.06221 52.32468,15.16572 52.325298,15.28446 52.294231,15.39406 52.318531,15.54209 52.32399,15.65358 52.29948,15.71254 52.296532,15.83711 52.327572,15.93636 52.330448,16.130489 52.36385,16.448879 52.390018,16.5352 52.385269,16.62204 52.356419,16.67141 52.348579,16.88826 52.35461,17.004881 52.345322,17.170919 52.307411,17.362419 52.310108,17.440769 52.31905,17.521919 52.316971,17.549561 52.30616,17.554529 52.313641,17.62093 52.32695,17.78367 52.318829,17.890829 52.282341,17.98637 52.313019,18.00901 52.336861,18.069059 52.358261,18.130541 52.36541,18.158409 52.394329,18.18281 52.39386,18.225611 52.376949,18.30847 52.370152,18.41881 52.3894,18.527161 52.38678,18.615891 52.398628,18.68129 52.39312,18.7043 52.405609,18.732691 52.405029,18.762569 52.420631,18.80508 52.4128,18.86809 52.426079,18.89086 52.418201,18.94124 52.419811,19.0529 52.404129,19.164961 52.40538,19.24848 52.423641,19.305229 52.41375,19.35132 52.43359,19.396641 52.44128,19.429609 52.44141,19.46174 52.42918,19.482149 52.444271,19.611401 52.465778,19.654921 52.491261,19.648609 52.504318,19.70643 52.546162,19.816271 52.573441,19.88517 52.606121,19.91324 52.607239,19.98106 52.63168,20.05653 52.647541,20.33197 52.61694,20.440701 52.62476,20.49379 52.65279,20.52486 52.659981,20.570709 52.66391,20.655951 52.65588,20.707939 52.67017,20.7414 52.666321,20.81212 52.68528,20.89023 52.694012,21.043341 52.67868,21.0809 52.696308,21.09758 52.69495,21.115641 52.708408,21.31554 52.724289,21.361641 52.716061,21.39842 52.698738,21.590389 52.685459,21.59984 52.694321,21.63352 52.685341,21.85906 52.784401,21.87155 52.79987,21.89496 52.802479,22.24649 52.987999,22.4666 53.090141,22.924431 53.164379,22.9757 53.163528,23.159651 53.135971,23.196211 53.120152,23.233709 53.126122,23.41815 53.12582,23.44846 53.13739,23.50668 53.14436,23.643511 53.10825,23.796881 53.108688,23.87129 53.124249,24.06872 53.116779,24.450899 53.15369,24.47839 53.14238,24.557699 53.150539,24.71763 53.137539,24.85112 53.146969,25.131519 53.118011,25.25131 53.08876,25.303431 53.086411,25.32103 53.09425,25.41754 53.097252,25.488529 53.087769,25.59878 53.1077,25.715191 53.146481,25.90134 53.13982,25.92585 53.132629,26.067511 53.181671,26.120001 53.20966,26.330429 53.266708,26.599449 53.402821,26.76107 53.50737,26.81377 53.51268,26.96689 53.55397,27.03907 53.58942,27.05237 53.619888,27.089849 53.66666,27.303511 53.73513,27.391319 53.803421,27.432171 53.817829,27.475559 53.849411,27.49699 53.85548,27.49404 53.869808,27.5397 53.88554,27.58568 53.916759,27.71962 53.955311,27.854549 54.008701,27.997959 54.030449,28.33709 54.106628,28.48181 54.20295,28.49527 54.226021,28.51235 54.237518,28.57115 54.255291,28.770069 54.27718,28.802771 54.290051,28.876591 54.29155,29.036091 54.31271,29.166031 54.364811,29.304399 54.37254,29.807631 54.477001,29.89637 54.473911,30.11908 54.506271,30.195641 54.542679,30.27557 54.55484,30.32493 54.575699,30.35874 54.602482,30.40913 54.619732,30.591089 54.642479,30.780769 54.683159,31.06407 54.689949,31.201559 54.70348,31.37289 54.738861,31.48156 54.749538,31.63796 54.814232,31.67371 54.84396,32.004681 54.86578,32.101212 54.89006,32.147099 54.9259,32.299351 55.016338,32.344479 55.029751,32.4063 55.034019,32.504452 55.056099,32.597309 55.059959,32.674419 55.078171,32.745689 55.079319,33.19561 55.132179,33.346119 55.15284,33.471249 55.183289,33.647659 55.179359,33.89735 55.1996,34.06139 55.18755,34.237122 55.22208,34.389042 55.2654,34.562809 55.32428,34.946049 55.486511,34.976509 55.49308,35.120701 55.505718,35.398941 55.491329,35.519581 55.470581,35.61898 55.46545,35.913269 55.46558,36.064789 55.457821,36.17548 55.494419,36.455029 55.54895,37.198662 55.626869,37.29747 55.6576,37.366482 55.70998,37.53793 55.73756,37.532028 55.752178,37.538471 55.76757,37.569962 55.77998) diff --git a/rust/geo-test-fixtures/fixtures/vw_simplified.wkt b/rust/sedona-geo-test-fixtures/fixtures/vw_simplified.wkt similarity index 99% rename from rust/geo-test-fixtures/fixtures/vw_simplified.wkt rename to rust/sedona-geo-test-fixtures/fixtures/vw_simplified.wkt index f07b0bcf..cff03fae 100644 --- a/rust/geo-test-fixtures/fixtures/vw_simplified.wkt +++ b/rust/sedona-geo-test-fixtures/fixtures/vw_simplified.wkt @@ -1 +1 @@ -LINESTRING(2.32986 48.86005,2.35093 48.863411,2.43115 48.940418,2.54246 48.960732,2.63999 49.001961,2.80339 49.144669,2.85119 49.15979,2.99549 49.23616,3.08543 49.26516,3.13198 49.266472,3.21429 49.302959,3.28301 49.356419,3.3289 49.35873,3.37508 49.387329,3.3684 49.40694,3.43405 49.446411,3.51661 49.463291,3.62701 49.551029,3.65985 49.59404,3.71867 49.705761,3.80852 49.78054,3.9306 49.8503,4.00552 49.867611,4.02625 49.889511,4.09659 49.905418,4.10586 49.934929,4.16724 49.974251,4.20531 49.97723,4.31856 50.0275,4.37885 50.030609,4.46792 50.070969,4.49368 50.127609,4.57809 50.246059,4.60485 50.252739,4.65955 50.304298,4.71331 50.31625,4.77921 50.37978,4.86628 50.42218,4.85599 50.445961,4.94456 50.503571,5.00459 50.525509,5.0625 50.5825,5.12338 50.591831,5.19067 50.649441,5.3241 50.72472,5.46203 50.78297,5.59527 50.811749,5.70955 50.859509,5.78653 50.907829,5.83605 50.9123,5.96387 50.980091,6.14661 51.039459,6.21046 51.077419,6.33651 51.12685,6.36855 51.158169,6.48883 51.22998,6.47779 51.252701,6.5801 51.331532,6.75227 51.371132,6.84989 51.429039,6.87801 51.431438,6.97855 51.47644,7.01853 51.508781,7.08124 51.53183,7.19856 51.544189,7.24011 51.55888,7.31798 51.557789,7.42589 51.595341,7.54105 51.608761,7.59659 51.636028,7.70191 51.658932,7.74593 51.686958,7.92157 51.708809,8.03324 51.75507,8.07623 51.76083,8.19468 51.80426,8.21855 51.80405,8.35782 51.849621,8.44433 51.859482,8.49079 51.879719,8.5841 51.884579,8.66277 51.90995,8.7726 51.906609,8.9343 51.95689,9.00241 51.956379,9.09687 51.99094,9.15502 51.99136,9.33535 52.079762,9.36184 52.104111,9.48007 52.10656,9.53231 52.12204,9.61335 52.084469,9.73862 52.124001,9.76815 52.149029,9.85091 52.159939,9.93417 52.153461,10.01568 52.160728,10.15967 52.20097,10.33079 52.25803,10.5142 52.26252,10.6691 52.245571,10.79077 52.25753,10.88113 52.22681,10.99778 52.229191,11.11851 52.208031,11.35227 52.18716,11.43668 52.188049,11.52164 52.164879,11.62238 52.187531,11.68052 52.218311,11.76374 52.229019,12.05675 52.23267,12.2143 52.252441,12.29568 52.247169,12.34305 52.26495,12.44244 52.2799,12.50953 52.33836,12.55295 52.351181,12.66093 52.335209,12.80768 52.337711,12.91879 52.290451,12.97733 52.3036,13.24849 52.300331,13.27942 52.30859,13.44054 52.30608,13.51074 52.319302,13.64603 52.310699,13.7164 52.324501,13.8241 52.310299,13.95759 52.31155,14.0635 52.33419,14.18073 52.343922,14.29105 52.324291,14.54354 52.314289,14.75599 52.33532,14.84256 52.328499,14.95564 52.338371,15.06221 52.32468,15.16572 52.325298,15.28446 52.294231,15.39406 52.318531,15.54209 52.32399,15.65358 52.29948,15.71254 52.296532,15.83711 52.327572,15.93636 52.330448,16.130489 52.36385,16.448879 52.390018,16.5352 52.385269,16.67141 52.348579,16.88826 52.35461,17.004881 52.345322,17.170919 52.307411,17.362419 52.310108,17.440769 52.31905,17.554529 52.313641,17.62093 52.32695,17.78367 52.318829,17.890829 52.282341,17.98637 52.313019,18.00901 52.336861,18.130541 52.36541,18.158409 52.394329,18.30847 52.370152,18.41881 52.3894,18.527161 52.38678,18.615891 52.398628,18.68129 52.39312,18.762569 52.420631,18.80508 52.4128,18.86809 52.426079,19.0529 52.404129,19.164961 52.40538,19.24848 52.423641,19.305229 52.41375,19.35132 52.43359,19.482149 52.444271,19.611401 52.465778,19.70643 52.546162,19.816271 52.573441,19.88517 52.606121,20.05653 52.647541,20.33197 52.61694,20.440701 52.62476,20.49379 52.65279,20.570709 52.66391,20.655951 52.65588,20.89023 52.694012,21.043341 52.67868,21.115641 52.708408,21.31554 52.724289,21.39842 52.698738,21.63352 52.685341,21.85906 52.784401,22.24649 52.987999,22.4666 53.090141,22.924431 53.164379,22.9757 53.163528,23.233709 53.126122,23.41815 53.12582,23.50668 53.14436,23.643511 53.10825,23.796881 53.108688,23.87129 53.124249,24.06872 53.116779,24.450899 53.15369,24.47839 53.14238,24.557699 53.150539,24.71763 53.137539,24.85112 53.146969,25.131519 53.118011,25.25131 53.08876,25.41754 53.097252,25.488529 53.087769,25.59878 53.1077,25.715191 53.146481,25.90134 53.13982,25.92585 53.132629,26.067511 53.181671,26.120001 53.20966,26.330429 53.266708,26.599449 53.402821,26.76107 53.50737,26.81377 53.51268,26.96689 53.55397,27.03907 53.58942,27.089849 53.66666,27.303511 53.73513,27.391319 53.803421,27.432171 53.817829,27.49404 53.869808,27.58568 53.916759,27.71962 53.955311,27.854549 54.008701,27.997959 54.030449,28.33709 54.106628,28.48181 54.20295,28.51235 54.237518,28.57115 54.255291,28.770069 54.27718,29.036091 54.31271,29.166031 54.364811,29.304399 54.37254,29.807631 54.477001,29.89637 54.473911,30.11908 54.506271,30.195641 54.542679,30.27557 54.55484,30.40913 54.619732,30.591089 54.642479,30.780769 54.683159,31.06407 54.689949,31.201559 54.70348,31.37289 54.738861,31.48156 54.749538,31.63796 54.814232,31.67371 54.84396,32.004681 54.86578,32.101212 54.89006,32.147099 54.9259,32.299351 55.016338,32.504452 55.056099,32.597309 55.059959,32.674419 55.078171,32.745689 55.079319,33.19561 55.132179,33.346119 55.15284,33.471249 55.183289,33.647659 55.179359,33.89735 55.1996,34.06139 55.18755,34.237122 55.22208,34.389042 55.2654,34.562809 55.32428,34.946049 55.486511,35.120701 55.505718,35.398941 55.491329,35.519581 55.470581,35.61898 55.46545,35.913269 55.46558,36.064789 55.457821,36.17548 55.494419,36.455029 55.54895,37.198662 55.626869,37.29747 55.6576,37.366482 55.70998,37.53793 55.73756,37.569962 55.77998) \ No newline at end of file +LINESTRING(2.32986 48.86005,2.35093 48.863411,2.43115 48.940418,2.54246 48.960732,2.63999 49.001961,2.80339 49.144669,2.85119 49.15979,2.99549 49.23616,3.08543 49.26516,3.13198 49.266472,3.21429 49.302959,3.28301 49.356419,3.3289 49.35873,3.37508 49.387329,3.3684 49.40694,3.43405 49.446411,3.51661 49.463291,3.62701 49.551029,3.65985 49.59404,3.71867 49.705761,3.80852 49.78054,3.9306 49.8503,4.00552 49.867611,4.02625 49.889511,4.09659 49.905418,4.10586 49.934929,4.16724 49.974251,4.20531 49.97723,4.31856 50.0275,4.37885 50.030609,4.46792 50.070969,4.49368 50.127609,4.57809 50.246059,4.60485 50.252739,4.65955 50.304298,4.71331 50.31625,4.77921 50.37978,4.86628 50.42218,4.85599 50.445961,4.94456 50.503571,5.00459 50.525509,5.0625 50.5825,5.12338 50.591831,5.19067 50.649441,5.3241 50.72472,5.46203 50.78297,5.59527 50.811749,5.70955 50.859509,5.78653 50.907829,5.83605 50.9123,5.96387 50.980091,6.14661 51.039459,6.21046 51.077419,6.33651 51.12685,6.36855 51.158169,6.48883 51.22998,6.47779 51.252701,6.5801 51.331532,6.75227 51.371132,6.84989 51.429039,6.87801 51.431438,6.97855 51.47644,7.01853 51.508781,7.08124 51.53183,7.19856 51.544189,7.24011 51.55888,7.31798 51.557789,7.42589 51.595341,7.54105 51.608761,7.59659 51.636028,7.70191 51.658932,7.74593 51.686958,7.92157 51.708809,8.03324 51.75507,8.07623 51.76083,8.19468 51.80426,8.21855 51.80405,8.35782 51.849621,8.44433 51.859482,8.49079 51.879719,8.5841 51.884579,8.66277 51.90995,8.7726 51.906609,8.9343 51.95689,9.00241 51.956379,9.09687 51.99094,9.15502 51.99136,9.33535 52.079762,9.36184 52.104111,9.48007 52.10656,9.53231 52.12204,9.61335 52.084469,9.73862 52.124001,9.76815 52.149029,9.85091 52.159939,9.93417 52.153461,10.01568 52.160728,10.15967 52.20097,10.33079 52.25803,10.5142 52.26252,10.6691 52.245571,10.79077 52.25753,10.88113 52.22681,10.99778 52.229191,11.11851 52.208031,11.35227 52.18716,11.43668 52.188049,11.52164 52.164879,11.62238 52.187531,11.68052 52.218311,11.76374 52.229019,12.05675 52.23267,12.2143 52.252441,12.29568 52.247169,12.34305 52.26495,12.44244 52.2799,12.50953 52.33836,12.55295 52.351181,12.66093 52.335209,12.80768 52.337711,12.91879 52.290451,12.97733 52.3036,13.24849 52.300331,13.27942 52.30859,13.44054 52.30608,13.51074 52.319302,13.64603 52.310699,13.7164 52.324501,13.8241 52.310299,13.95759 52.31155,14.0635 52.33419,14.18073 52.343922,14.29105 52.324291,14.54354 52.314289,14.75599 52.33532,14.84256 52.328499,14.95564 52.338371,15.06221 52.32468,15.16572 52.325298,15.28446 52.294231,15.39406 52.318531,15.54209 52.32399,15.65358 52.29948,15.71254 52.296532,15.83711 52.327572,15.93636 52.330448,16.130489 52.36385,16.448879 52.390018,16.5352 52.385269,16.67141 52.348579,16.88826 52.35461,17.004881 52.345322,17.170919 52.307411,17.362419 52.310108,17.440769 52.31905,17.554529 52.313641,17.62093 52.32695,17.78367 52.318829,17.890829 52.282341,17.98637 52.313019,18.00901 52.336861,18.130541 52.36541,18.158409 52.394329,18.30847 52.370152,18.41881 52.3894,18.527161 52.38678,18.615891 52.398628,18.68129 52.39312,18.762569 52.420631,18.80508 52.4128,18.86809 52.426079,19.0529 52.404129,19.164961 52.40538,19.24848 52.423641,19.305229 52.41375,19.35132 52.43359,19.482149 52.444271,19.611401 52.465778,19.70643 52.546162,19.816271 52.573441,19.88517 52.606121,20.05653 52.647541,20.33197 52.61694,20.440701 52.62476,20.49379 52.65279,20.570709 52.66391,20.655951 52.65588,20.89023 52.694012,21.043341 52.67868,21.115641 52.708408,21.31554 52.724289,21.39842 52.698738,21.63352 52.685341,21.85906 52.784401,22.24649 52.987999,22.4666 53.090141,22.924431 53.164379,22.9757 53.163528,23.233709 53.126122,23.41815 53.12582,23.50668 53.14436,23.643511 53.10825,23.796881 53.108688,23.87129 53.124249,24.06872 53.116779,24.450899 53.15369,24.47839 53.14238,24.557699 53.150539,24.71763 53.137539,24.85112 53.146969,25.131519 53.118011,25.25131 53.08876,25.41754 53.097252,25.488529 53.087769,25.59878 53.1077,25.715191 53.146481,25.90134 53.13982,25.92585 53.132629,26.067511 53.181671,26.120001 53.20966,26.330429 53.266708,26.599449 53.402821,26.76107 53.50737,26.81377 53.51268,26.96689 53.55397,27.03907 53.58942,27.089849 53.66666,27.303511 53.73513,27.391319 53.803421,27.432171 53.817829,27.49404 53.869808,27.58568 53.916759,27.71962 53.955311,27.854549 54.008701,27.997959 54.030449,28.33709 54.106628,28.48181 54.20295,28.51235 54.237518,28.57115 54.255291,28.770069 54.27718,29.036091 54.31271,29.166031 54.364811,29.304399 54.37254,29.807631 54.477001,29.89637 54.473911,30.11908 54.506271,30.195641 54.542679,30.27557 54.55484,30.40913 54.619732,30.591089 54.642479,30.780769 54.683159,31.06407 54.689949,31.201559 54.70348,31.37289 54.738861,31.48156 54.749538,31.63796 54.814232,31.67371 54.84396,32.004681 54.86578,32.101212 54.89006,32.147099 54.9259,32.299351 55.016338,32.504452 55.056099,32.597309 55.059959,32.674419 55.078171,32.745689 55.079319,33.19561 55.132179,33.346119 55.15284,33.471249 55.183289,33.647659 55.179359,33.89735 55.1996,34.06139 55.18755,34.237122 55.22208,34.389042 55.2654,34.562809 55.32428,34.946049 55.486511,35.120701 55.505718,35.398941 55.491329,35.519581 55.470581,35.61898 55.46545,35.913269 55.46558,36.064789 55.457821,36.17548 55.494419,36.455029 55.54895,37.198662 55.626869,37.29747 55.6576,37.366482 55.70998,37.53793 55.73756,37.569962 55.77998) diff --git a/rust/geo-test-fixtures/pp_points.py b/rust/sedona-geo-test-fixtures/pp_points.py similarity index 100% rename from rust/geo-test-fixtures/pp_points.py rename to rust/sedona-geo-test-fixtures/pp_points.py diff --git a/rust/geo-test-fixtures/src/lib.rs b/rust/sedona-geo-test-fixtures/src/lib.rs similarity index 100% rename from rust/geo-test-fixtures/src/lib.rs rename to rust/sedona-geo-test-fixtures/src/lib.rs diff --git a/rust/geo-traits-ext/Cargo.toml b/rust/sedona-geo-traits-ext/Cargo.toml similarity index 97% rename from rust/geo-traits-ext/Cargo.toml rename to rust/sedona-geo-traits-ext/Cargo.toml index ed4eeb3f..20001dda 100644 --- a/rust/geo-traits-ext/Cargo.toml +++ b/rust/sedona-geo-traits-ext/Cargo.toml @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. [package] -name = "geo-traits-ext" +name = "sedona-geo-traits-ext" version.workspace = true homepage.workspace = true repository.workspace = true diff --git a/rust/geo-traits-ext/README.md b/rust/sedona-geo-traits-ext/README.md similarity index 100% rename from rust/geo-traits-ext/README.md rename to rust/sedona-geo-traits-ext/README.md diff --git a/rust/geo-traits-ext/src/coord.rs b/rust/sedona-geo-traits-ext/src/coord.rs similarity index 100% rename from rust/geo-traits-ext/src/coord.rs rename to rust/sedona-geo-traits-ext/src/coord.rs diff --git a/rust/geo-traits-ext/src/geometry.rs b/rust/sedona-geo-traits-ext/src/geometry.rs similarity index 100% rename from rust/geo-traits-ext/src/geometry.rs rename to rust/sedona-geo-traits-ext/src/geometry.rs diff --git a/rust/geo-traits-ext/src/geometry_collection.rs b/rust/sedona-geo-traits-ext/src/geometry_collection.rs similarity index 100% rename from rust/geo-traits-ext/src/geometry_collection.rs rename to rust/sedona-geo-traits-ext/src/geometry_collection.rs diff --git a/rust/geo-traits-ext/src/lib.rs b/rust/sedona-geo-traits-ext/src/lib.rs similarity index 100% rename from rust/geo-traits-ext/src/lib.rs rename to rust/sedona-geo-traits-ext/src/lib.rs diff --git a/rust/geo-traits-ext/src/line.rs b/rust/sedona-geo-traits-ext/src/line.rs similarity index 100% rename from rust/geo-traits-ext/src/line.rs rename to rust/sedona-geo-traits-ext/src/line.rs diff --git a/rust/geo-traits-ext/src/line_string.rs b/rust/sedona-geo-traits-ext/src/line_string.rs similarity index 100% rename from rust/geo-traits-ext/src/line_string.rs rename to rust/sedona-geo-traits-ext/src/line_string.rs diff --git a/rust/geo-traits-ext/src/multi_line_string.rs b/rust/sedona-geo-traits-ext/src/multi_line_string.rs similarity index 100% rename from rust/geo-traits-ext/src/multi_line_string.rs rename to rust/sedona-geo-traits-ext/src/multi_line_string.rs diff --git a/rust/geo-traits-ext/src/multi_point.rs b/rust/sedona-geo-traits-ext/src/multi_point.rs similarity index 100% rename from rust/geo-traits-ext/src/multi_point.rs rename to rust/sedona-geo-traits-ext/src/multi_point.rs diff --git a/rust/geo-traits-ext/src/multi_polygon.rs b/rust/sedona-geo-traits-ext/src/multi_polygon.rs similarity index 100% rename from rust/geo-traits-ext/src/multi_polygon.rs rename to rust/sedona-geo-traits-ext/src/multi_polygon.rs diff --git a/rust/geo-traits-ext/src/point.rs b/rust/sedona-geo-traits-ext/src/point.rs similarity index 100% rename from rust/geo-traits-ext/src/point.rs rename to rust/sedona-geo-traits-ext/src/point.rs diff --git a/rust/geo-traits-ext/src/polygon.rs b/rust/sedona-geo-traits-ext/src/polygon.rs similarity index 100% rename from rust/geo-traits-ext/src/polygon.rs rename to rust/sedona-geo-traits-ext/src/polygon.rs diff --git a/rust/geo-traits-ext/src/rect.rs b/rust/sedona-geo-traits-ext/src/rect.rs similarity index 100% rename from rust/geo-traits-ext/src/rect.rs rename to rust/sedona-geo-traits-ext/src/rect.rs diff --git a/rust/geo-traits-ext/src/triangle.rs b/rust/sedona-geo-traits-ext/src/triangle.rs similarity index 100% rename from rust/geo-traits-ext/src/triangle.rs rename to rust/sedona-geo-traits-ext/src/triangle.rs diff --git a/rust/geo-traits-ext/src/type_tag.rs b/rust/sedona-geo-traits-ext/src/type_tag.rs similarity index 100% rename from rust/geo-traits-ext/src/type_tag.rs rename to rust/sedona-geo-traits-ext/src/type_tag.rs diff --git a/rust/geo-traits-ext/src/wkb_ext.rs b/rust/sedona-geo-traits-ext/src/wkb_ext.rs similarity index 100% rename from rust/geo-traits-ext/src/wkb_ext.rs rename to rust/sedona-geo-traits-ext/src/wkb_ext.rs diff --git a/rust/sedona-geo/Cargo.toml b/rust/sedona-geo/Cargo.toml index 95d37a6f..fd01f915 100644 --- a/rust/sedona-geo/Cargo.toml +++ b/rust/sedona-geo/Cargo.toml @@ -40,7 +40,7 @@ arrow-schema = { workspace = true } arrow-array = { workspace = true } datafusion-common = { workspace = true } datafusion-expr = { workspace = true } -geo-generic-alg = { path = "../geo-generic-alg" } +sedona-geo-generic-alg = { path = "../sedona-geo-generic-alg" } geo-traits = { workspace = true, features = ["geo-types"] } geo-types = { workspace = true } geo = { workspace = true } diff --git a/rust/sedona-geo/src/centroid.rs b/rust/sedona-geo/src/centroid.rs index e7ab25f5..ee74df13 100644 --- a/rust/sedona-geo/src/centroid.rs +++ b/rust/sedona-geo/src/centroid.rs @@ -17,11 +17,11 @@ //! Centroid extraction functionality for WKB geometries use datafusion_common::{error::DataFusionError, Result}; -use geo_generic_alg::Centroid; -use geo_generic_alg::HasDimensions; use geo_traits::CoordTrait; use geo_traits::GeometryTrait; use geo_traits::PointTrait; +use sedona_geo_generic_alg::Centroid; +use sedona_geo_generic_alg::HasDimensions; use crate::to_geo::item_to_geometry; diff --git a/rust/sedona-geo/src/st_area.rs b/rust/sedona-geo/src/st_area.rs index 8a274d56..5efd5f07 100644 --- a/rust/sedona-geo/src/st_area.rs +++ b/rust/sedona-geo/src/st_area.rs @@ -20,9 +20,9 @@ use arrow_array::builder::Float64Builder; use arrow_schema::DataType; use datafusion_common::error::Result; use datafusion_expr::ColumnarValue; -use geo_generic_alg::Area; use sedona_expr::scalar_udf::{ScalarKernelRef, SedonaScalarKernel}; use sedona_functions::executor::WkbExecutor; +use sedona_geo_generic_alg::Area; use sedona_schema::{datatypes::SedonaType, matchers::ArgMatcher}; use wkb::reader::Wkb; diff --git a/rust/sedona-geo/src/st_centroid.rs b/rust/sedona-geo/src/st_centroid.rs index 31c3dd70..bc6b8188 100644 --- a/rust/sedona-geo/src/st_centroid.rs +++ b/rust/sedona-geo/src/st_centroid.rs @@ -20,9 +20,9 @@ use std::sync::Arc; use arrow_array::builder::BinaryBuilder; use datafusion_common::{error::Result, exec_err}; use datafusion_expr::ColumnarValue; -use geo_generic_alg::Centroid; use sedona_expr::scalar_udf::{ScalarKernelRef, SedonaScalarKernel}; use sedona_functions::executor::WkbExecutor; +use sedona_geo_generic_alg::Centroid; use sedona_geometry::is_empty::is_geometry_empty; use sedona_schema::{ datatypes::{SedonaType, WKB_GEOMETRY}, diff --git a/rust/sedona-geo/src/st_distance.rs b/rust/sedona-geo/src/st_distance.rs index 4900690a..e2f48a15 100644 --- a/rust/sedona-geo/src/st_distance.rs +++ b/rust/sedona-geo/src/st_distance.rs @@ -20,9 +20,9 @@ use arrow_array::builder::Float64Builder; use arrow_schema::DataType; use datafusion_common::error::Result; use datafusion_expr::ColumnarValue; -use geo_generic_alg::line_measures::DistanceExt; use sedona_expr::scalar_udf::{ScalarKernelRef, SedonaScalarKernel}; use sedona_functions::executor::WkbExecutor; +use sedona_geo_generic_alg::line_measures::DistanceExt; use sedona_schema::{datatypes::SedonaType, matchers::ArgMatcher}; use wkb::reader::Wkb; diff --git a/rust/sedona-geo/src/st_dwithin.rs b/rust/sedona-geo/src/st_dwithin.rs index 2ba3f5de..25e8bf26 100644 --- a/rust/sedona-geo/src/st_dwithin.rs +++ b/rust/sedona-geo/src/st_dwithin.rs @@ -20,9 +20,9 @@ use arrow_array::builder::BooleanBuilder; use arrow_schema::DataType; use datafusion_common::{cast::as_float64_array, error::Result}; use datafusion_expr::ColumnarValue; -use geo_generic_alg::line_measures::DistanceExt; use sedona_expr::scalar_udf::{ScalarKernelRef, SedonaScalarKernel}; use sedona_functions::executor::WkbExecutor; +use sedona_geo_generic_alg::line_measures::DistanceExt; use sedona_schema::{datatypes::SedonaType, matchers::ArgMatcher}; use wkb::reader::Wkb; diff --git a/rust/sedona-geo/src/st_intersects.rs b/rust/sedona-geo/src/st_intersects.rs index 9fac6ed8..8c624fd1 100644 --- a/rust/sedona-geo/src/st_intersects.rs +++ b/rust/sedona-geo/src/st_intersects.rs @@ -20,9 +20,9 @@ use arrow_array::builder::BooleanBuilder; use arrow_schema::DataType; use datafusion_common::error::Result; use datafusion_expr::ColumnarValue; -use geo_generic_alg::Intersects; use sedona_expr::scalar_udf::{ScalarKernelRef, SedonaScalarKernel}; use sedona_functions::executor::WkbExecutor; +use sedona_geo_generic_alg::Intersects; use sedona_schema::{datatypes::SedonaType, matchers::ArgMatcher}; use wkb::reader::Wkb; diff --git a/rust/sedona-geo/src/st_length.rs b/rust/sedona-geo/src/st_length.rs index 0ab4461e..21b2be1d 100644 --- a/rust/sedona-geo/src/st_length.rs +++ b/rust/sedona-geo/src/st_length.rs @@ -21,9 +21,9 @@ use arrow_array::builder::Float64Builder; use arrow_schema::DataType; use datafusion_common::error::Result; use datafusion_expr::ColumnarValue; -use geo_generic_alg::algorithm::{line_measures::Euclidean, LengthMeasurableExt}; use sedona_expr::scalar_udf::{ScalarKernelRef, SedonaScalarKernel}; use sedona_functions::executor::WkbExecutor; +use sedona_geo_generic_alg::algorithm::{line_measures::Euclidean, LengthMeasurableExt}; use sedona_schema::{datatypes::SedonaType, matchers::ArgMatcher}; use wkb::reader::Wkb; diff --git a/rust/sedona-geo/src/st_perimeter.rs b/rust/sedona-geo/src/st_perimeter.rs index ad5ffbca..11111b66 100644 --- a/rust/sedona-geo/src/st_perimeter.rs +++ b/rust/sedona-geo/src/st_perimeter.rs @@ -21,9 +21,9 @@ use arrow_array::builder::Float64Builder; use arrow_schema::DataType; use datafusion_common::error::Result; use datafusion_expr::ColumnarValue; -use geo_generic_alg::algorithm::{line_measures::Euclidean, LengthMeasurableExt}; use sedona_expr::scalar_udf::{ScalarKernelRef, SedonaScalarKernel}; use sedona_functions::executor::WkbExecutor; +use sedona_geo_generic_alg::algorithm::{line_measures::Euclidean, LengthMeasurableExt}; use sedona_schema::{datatypes::SedonaType, matchers::ArgMatcher}; use wkb::reader::Wkb; diff --git a/rust/sedona-spatial-join/Cargo.toml b/rust/sedona-spatial-join/Cargo.toml index 2cf6c146..ee45190d 100644 --- a/rust/sedona-spatial-join/Cargo.toml +++ b/rust/sedona-spatial-join/Cargo.toml @@ -44,9 +44,9 @@ datafusion-common-runtime = { workspace = true } futures = { workspace = true } parking_lot = { workspace = true } geo = { workspace = true } -geo-generic-alg = { path = "../geo-generic-alg" } +sedona-geo-generic-alg = { path = "../sedona-geo-generic-alg" } geo-traits = { workspace = true, features = ["geo-types"] } -geo-traits-ext = { path = "../geo-traits-ext" } +sedona-geo-traits-ext = { path = "../sedona-geo-traits-ext" } geo-types = { workspace = true } sedona-common = { path = "../sedona-common" } sedona-expr = { path = "../sedona-expr" } diff --git a/rust/sedona-spatial-join/src/index.rs b/rust/sedona-spatial-join/src/index.rs index 59335f9c..d0f422a3 100644 --- a/rust/sedona-spatial-join/src/index.rs +++ b/rust/sedona-spatial-join/src/index.rs @@ -624,7 +624,7 @@ impl SpatialIndex { let max_distance = distances_with_indices[k_idx].0; // For tie-breakers, create spatial envelope around probe centroid and use rtree.search() - use geo_generic_alg::algorithm::Centroid; + use sedona_geo_generic_alg::algorithm::Centroid; let probe_centroid = probe_geom.centroid().unwrap_or(Point::new(0.0, 0.0)); let probe_x = probe_centroid.x() as f32; let probe_y = probe_centroid.y() as f32; diff --git a/rust/sedona-spatial-join/src/operand_evaluator.rs b/rust/sedona-spatial-join/src/operand_evaluator.rs index 56dca647..114d4309 100644 --- a/rust/sedona-spatial-join/src/operand_evaluator.rs +++ b/rust/sedona-spatial-join/src/operand_evaluator.rs @@ -25,10 +25,10 @@ use datafusion_common::{ use datafusion_expr::ColumnarValue; use datafusion_physical_expr::PhysicalExpr; use float_next_after::NextAfter; -use geo_generic_alg::BoundingRect; use geo_index::rtree::util::f64_box_to_f32; use geo_types::{coord, Rect}; use sedona_functions::executor::IterGeo; +use sedona_geo_generic_alg::BoundingRect; use sedona_schema::datatypes::SedonaType; use wkb::reader::Wkb; diff --git a/rust/sedona-spatial-join/src/refine/geo.rs b/rust/sedona-spatial-join/src/refine/geo.rs index c227eb06..5d13b5e4 100644 --- a/rust/sedona-spatial-join/src/refine/geo.rs +++ b/rust/sedona-spatial-join/src/refine/geo.rs @@ -18,10 +18,10 @@ use std::sync::{Arc, OnceLock}; use datafusion_common::Result; use geo::{Contains, Relate, Within}; -use geo_generic_alg::{line_measures::DistanceExt, Intersects}; use sedona_common::{sedona_internal_err, ExecutionMode, SpatialJoinOptions}; use sedona_expr::statistics::GeoStatistics; use sedona_geo::to_geo::item_to_geometry; +use sedona_geo_generic_alg::{line_measures::DistanceExt, Intersects}; use wkb::reader::Wkb; use crate::{ From 987aa0f3154745af11a2f23232571d4bae3e0677 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Wed, 8 Oct 2025 04:41:19 +0800 Subject: [PATCH 15/17] Add assert_scalar_equal_wkb_geometry_topologically to compare wkbs topologically --- rust/sedona-geo/Cargo.toml | 2 +- rust/sedona-geo/src/st_intersection_aggr.rs | 37 ++++-- rust/sedona-geo/src/st_union_aggr.rs | 28 +++-- rust/sedona-testing/Cargo.toml | 3 +- rust/sedona-testing/src/compare.rs | 130 +++++++++++++++----- 5 files changed, 142 insertions(+), 58 deletions(-) diff --git a/rust/sedona-geo/Cargo.toml b/rust/sedona-geo/Cargo.toml index fd01f915..df439182 100644 --- a/rust/sedona-geo/Cargo.toml +++ b/rust/sedona-geo/Cargo.toml @@ -32,7 +32,7 @@ criterion = { workspace = true } rstest = { workspace = true } sedona-geometry = { path = "../sedona-geometry" } sedona-schema = { path = "../sedona-schema" } -sedona-testing = { path = "../sedona-testing", features = ["criterion"] } +sedona-testing = { path = "../sedona-testing", features = ["criterion", "geo"] } wkt = { workspace = true } [dependencies] diff --git a/rust/sedona-geo/src/st_intersection_aggr.rs b/rust/sedona-geo/src/st_intersection_aggr.rs index c133c996..b9cad44b 100644 --- a/rust/sedona-geo/src/st_intersection_aggr.rs +++ b/rust/sedona-geo/src/st_intersection_aggr.rs @@ -229,7 +229,9 @@ mod test { use rstest::rstest; use sedona_functions::st_intersection_aggr::st_intersection_aggr_udf; use sedona_schema::datatypes::WKB_VIEW_GEOMETRY; - use sedona_testing::{compare::assert_scalar_equal_wkb_geometry, testers::AggregateUdfTester}; + use sedona_testing::{ + compare::assert_scalar_equal_wkb_geometry_topologically, testers::AggregateUdfTester, + }; #[rstest] fn polygon_polygon_cases(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType) { @@ -244,16 +246,19 @@ mod test { vec![Some("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))")], vec![Some("POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))")], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(batches).unwrap(), Some("MULTIPOLYGON(((1 1, 2 1, 2 2, 1 2, 1 1)))"), ); // Empty input - assert_scalar_equal_wkb_geometry(&tester.aggregate_wkt(vec![]).unwrap(), None); + assert_scalar_equal_wkb_geometry_topologically( + &tester.aggregate_wkt(vec![]).unwrap(), + None, + ); // Single polygon input - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester .aggregate_wkt(vec![vec![Some("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))")]]) .unwrap(), @@ -265,14 +270,17 @@ mod test { vec![Some("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))")], vec![Some("POLYGON((2 2, 3 2, 3 3, 2 3, 2 2))")], ]; - assert_scalar_equal_wkb_geometry(&tester.aggregate_wkt(non_intersecting).unwrap(), None); + assert_scalar_equal_wkb_geometry_topologically( + &tester.aggregate_wkt(non_intersecting).unwrap(), + None, + ); // Input with nulls let nulls_input = vec![ vec![Some("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))"), None], vec![Some("POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))"), None], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(nulls_input).unwrap(), Some("MULTIPOLYGON(((1 1, 2 1, 2 2, 1 2, 1 1)))"), ); @@ -282,7 +290,7 @@ mod test { vec![Some("POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))")], vec![Some("POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))")], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(contained).unwrap(), Some("MULTIPOLYGON(((1 1, 2 1, 2 2, 1 2, 1 1)))"), ); @@ -304,7 +312,7 @@ mod test { "MULTIPOLYGON(((1 1, 2 1, 2 2, 1 2, 1 1)), ((4 4, 5 4, 5 5, 4 5, 4 4)))", )], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(poly_and_multi).unwrap(), Some("MULTIPOLYGON(((1 1, 2 1, 2 2, 1 2, 1 1)))"), ); @@ -316,7 +324,7 @@ mod test { "MULTIPOLYGON(((2 2, 3 2, 3 3, 2 3, 2 2)), ((4 4, 5 4, 5 5, 4 5, 4 4)))", )], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(poly_and_nonoverlap_multi).unwrap(), None, ); @@ -330,7 +338,7 @@ mod test { "MULTIPOLYGON(((1 1, 2 1, 2 2, 1 2, 1 1)), ((11 11, 12 11, 12 12, 11 12, 11 11)))", )], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(multi_and_multi).unwrap(), Some("MULTIPOLYGON(((1 1,2 1,2 2,1 2,1 1)),((11 11,12 11,12 12,11 12,11 11)))"), ); @@ -354,7 +362,7 @@ mod test { "MULTIPOLYGON(((2 2, 5 2, 5 5, 2 5, 2 2)), ((9 9, 12 9, 12 12, 9 12, 9 9)))", )], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(multi_multi_case1).unwrap(), Some("MULTIPOLYGON(((2 2, 3 2, 3 3, 2 3, 2 2)))"), ); @@ -368,7 +376,10 @@ mod test { "MULTIPOLYGON(((2 2, 3 2, 3 3, 2 3, 2 2)), ((7 7, 8 7, 8 8, 7 8, 7 7)))", )], ]; - assert_scalar_equal_wkb_geometry(&tester.aggregate_wkt(multi_multi_case2).unwrap(), None); + assert_scalar_equal_wkb_geometry_topologically( + &tester.aggregate_wkt(multi_multi_case2).unwrap(), + None, + ); // Test case 3: Three MultiPolygons intersection let multi_multi_case3 = vec![ @@ -382,7 +393,7 @@ mod test { "MULTIPOLYGON(((3 3, 5 3, 5 5, 3 5, 3 3)), ((13 13, 15 13, 15 15, 13 15, 13 13)))", )], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(multi_multi_case3).unwrap(), Some("MULTIPOLYGON(((3 3,4 3,4 4,3 4,3 3)),((13 13,14 13,14 14,13 14,13 13)))"), ); diff --git a/rust/sedona-geo/src/st_union_aggr.rs b/rust/sedona-geo/src/st_union_aggr.rs index 7e5b1850..2462e48c 100644 --- a/rust/sedona-geo/src/st_union_aggr.rs +++ b/rust/sedona-geo/src/st_union_aggr.rs @@ -223,7 +223,9 @@ mod test { use rstest::rstest; use sedona_functions::st_union_aggr::st_union_aggr_udf; use sedona_schema::datatypes::WKB_VIEW_GEOMETRY; - use sedona_testing::{compare::assert_scalar_equal_wkb_geometry, testers::AggregateUdfTester}; + use sedona_testing::{ + compare::assert_scalar_equal_wkb_geometry_topologically, testers::AggregateUdfTester, + }; #[rstest] fn polygon_polygon_cases(#[values(WKB_GEOMETRY, WKB_VIEW_GEOMETRY)] sedona_type: SedonaType) { @@ -239,16 +241,16 @@ mod test { vec![Some("POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))")], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(batches).unwrap(), Some("MULTIPOLYGON(((0 0, 2 0, 2 1, 3 1, 3 3, 1 3, 1 2, 0 2, 0 0)))"), ); // Empty input - assert_scalar_equal_wkb_geometry(&tester.aggregate(&vec![]).unwrap(), None); + assert_scalar_equal_wkb_geometry_topologically(&tester.aggregate(&vec![]).unwrap(), None); // Single polygon input - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester .aggregate_wkt(vec![vec![Some("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))")]]) .unwrap(), @@ -260,7 +262,7 @@ mod test { vec![Some("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))")], vec![Some("POLYGON((2 2, 3 2, 3 3, 2 3, 2 2))")], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(non_intersecting).unwrap(), Some("MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)))"), ); @@ -270,7 +272,7 @@ mod test { vec![Some("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))"), None], vec![Some("POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))"), None], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(nulls_input).unwrap(), Some("MULTIPOLYGON(((0 0, 2 0, 2 1, 3 1, 3 3, 1 3, 1 2, 0 2, 0 0)))"), ); @@ -280,7 +282,7 @@ mod test { vec![Some("POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))")], vec![Some("POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))")], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(contained).unwrap(), Some("MULTIPOLYGON(((0 0, 3 0, 3 3, 0 3, 0 0)))"), ); @@ -302,7 +304,7 @@ mod test { "MULTIPOLYGON(((1 1, 2 1, 2 2, 1 2, 1 1)), ((4 4, 5 4, 5 5, 4 5, 4 4)))", )], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(poly_and_multi).unwrap(), Some("MULTIPOLYGON(((0 0, 3 0, 3 3, 0 3, 0 0)),((4 4, 5 4, 5 5, 4 5, 4 4)))"), ); @@ -314,7 +316,7 @@ mod test { "MULTIPOLYGON(((2 2, 3 2, 3 3, 2 3, 2 2)), ((4 4, 5 4, 5 5, 4 5, 4 4)))", )], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(poly_and_nonoverlap_multi).unwrap(), Some("MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)),((2 2, 3 2, 3 3, 2 3, 2 2)),((4 4, 5 4, 5 5, 4 5, 4 4)))"), ); @@ -328,7 +330,7 @@ mod test { "MULTIPOLYGON(((1 1, 2 1, 2 2, 1 2, 1 1)), ((11 11, 13 11, 13 13, 11 13, 11 11)))", )], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(multi_and_multi).unwrap(), Some("MULTIPOLYGON(((0 0, 3 0, 3 3, 0 3, 0 0)),((10 10, 12 10, 12 11, 13 11, 13 13, 11 13, 11 12, 10 12, 10 10)))"), ); @@ -352,7 +354,7 @@ mod test { "MULTIPOLYGON(((2 2, 5 2, 5 5, 2 5, 2 2)), ((7 7, 10 7, 10 10, 7 10, 7 7)))", )], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(multi_multi_case1).unwrap(), Some("MULTIPOLYGON(((0 0, 3 0, 3 2, 5 2, 5 5, 2 5, 2 3, 0 3, 0 0)),((5 5, 8 5, 8 7, 10 7, 10 10, 7 10, 7 8, 5 8, 5 5)))"), ); @@ -366,7 +368,7 @@ mod test { "MULTIPOLYGON(((2 2, 3 2, 3 3, 2 3, 2 2)), ((7 7, 8 7, 8 8, 7 8, 7 7)))", )], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(multi_multi_case2).unwrap(), Some("MULTIPOLYGON(((0 0,1 0,1 1,0 1,0 0)),((2 2,3 2,3 3,2 3,2 2)),((5 5,6 5,6 6,5 6,5 5)),((7 7,8 7,8 8,7 8,7 7)))"), ); @@ -377,7 +379,7 @@ mod test { vec![Some("MULTIPOLYGON(((3 3, 7 3, 7 7, 3 7, 3 3)), ((13 13, 17 13, 17 17, 13 17, 13 13)))")], vec![Some("MULTIPOLYGON(((6 6, 10 6, 10 10, 6 10, 6 6)), ((16 16, 20 16, 20 20, 16 20, 16 16)))")], ]; - assert_scalar_equal_wkb_geometry( + assert_scalar_equal_wkb_geometry_topologically( &tester.aggregate_wkt(multi_multi_case3).unwrap(), Some("MULTIPOLYGON(((0 0, 4 0, 4 3, 7 3, 7 6, 10 6, 10 10, 6 10, 6 7, 3 7, 3 4, 0 4, 0 0)),((10 10, 14 10, 14 13, 17 13, 17 16, 20 16, 20 20, 16 20, 16 17, 13 17, 13 14, 10 14, 10 10)))"), ); diff --git a/rust/sedona-testing/Cargo.toml b/rust/sedona-testing/Cargo.toml index 641d8c1e..d0c058fc 100644 --- a/rust/sedona-testing/Cargo.toml +++ b/rust/sedona-testing/Cargo.toml @@ -32,6 +32,7 @@ rstest = { workspace = true } [features] default = [] +geo = ["dep:geo"] criterion = ["dep:criterion"] [dependencies] @@ -52,4 +53,4 @@ sedona-expr = { path = "../sedona-expr" } sedona-schema = { path = "../sedona-schema" } wkb = { workspace = true } wkt = { workspace = true } -geo = { workspace = true } +geo = { workspace = true, optional = true } diff --git a/rust/sedona-testing/src/compare.rs b/rust/sedona-testing/src/compare.rs index 3e2025f4..780b2ff9 100644 --- a/rust/sedona-testing/src/compare.rs +++ b/rust/sedona-testing/src/compare.rs @@ -23,10 +23,7 @@ use datafusion_common::{ ScalarValue, }; use datafusion_expr::ColumnarValue; -use geo::Relate; -use geo_traits::to_geo::ToGeoGeometry; use sedona_schema::datatypes::{SedonaType, WKB_GEOMETRY}; -use wkb::reader::Dimension; use crate::create::create_scalar; @@ -109,7 +106,23 @@ pub fn assert_array_equal(actual: &ArrayRef, expected: &ArrayRef) { pub fn assert_scalar_equal_wkb_geometry(actual: &ScalarValue, expected_wkt: Option<&str>) { let expected = create_scalar(expected_wkt, &WKB_GEOMETRY); assert_eq!(actual.data_type(), DataType::Binary); - assert_wkb_scalar_equal(actual, &expected); + assert_wkb_scalar_equal(actual, &expected, false); +} + +/// Assert a [`ScalarValue`] is a WKB_GEOMETRY scalar corresponding to the given WKT. This function +/// compares the geometries topologically, so two geometries that are not byte-wise equal but are +/// topologically equal will be considered equal. +/// +/// Panics if the values' are not topologically equal, generating reasonable failure messages for geometry +/// arrays where the default failure message would otherwise be uninformative. +#[cfg(feature = "geo")] +pub fn assert_scalar_equal_wkb_geometry_topologically( + actual: &ScalarValue, + expected_wkt: Option<&str>, +) { + let expected = create_scalar(expected_wkt, &WKB_GEOMETRY); + assert_eq!(actual.data_type(), DataType::Binary); + assert_wkb_scalar_equal(actual, &expected, true); } /// Assert two [`ScalarValue`]s are equal @@ -128,7 +141,7 @@ pub fn assert_scalar_equal(actual: &ScalarValue, expected: &ScalarValue) { (SedonaType::Arrow(_), SedonaType::Arrow(_)) => assert_arrow_scalar_equal(actual, expected), (SedonaType::Wkb(_, _), SedonaType::Wkb(_, _)) | (SedonaType::WkbView(_, _), SedonaType::WkbView(_, _)) => { - assert_wkb_scalar_equal(actual, expected); + assert_wkb_scalar_equal(actual, expected, false); } (_, _) => unreachable!(), } @@ -165,11 +178,21 @@ where for (i, (actual_item, expected_item)) in zip(actual, expected).enumerate() { let actual_label = format!("actual Array element #{i}"); let expected_label = format!("expected Array element #{i}"); - assert_wkb_value_equal(actual_item, expected_item, &actual_label, &expected_label); + assert_wkb_value_equal( + actual_item, + expected_item, + &actual_label, + &expected_label, + false, + ); } } -fn assert_wkb_scalar_equal(actual: &ScalarValue, expected: &ScalarValue) { +fn assert_wkb_scalar_equal( + actual: &ScalarValue, + expected: &ScalarValue, + compare_topologically: bool, +) { match (actual, expected) { (ScalarValue::Binary(maybe_actual_wkb), ScalarValue::Binary(maybe_expected_wkb)) | ( @@ -181,6 +204,7 @@ fn assert_wkb_scalar_equal(actual: &ScalarValue, expected: &ScalarValue) { maybe_expected_wkb.as_deref(), "actual WKB scalar", "expected WKB scalar", + compare_topologically, ); } (_, _) => { @@ -194,6 +218,7 @@ fn assert_wkb_value_equal( expected: Option<&[u8]>, actual_label: &str, expected_label: &str, + compare_topologically: bool, ) { match (actual, expected) { (None, None) => {} @@ -212,25 +237,12 @@ fn assert_wkb_value_equal( (Some(actual_wkb), Some(expected_wkb)) => { // Quick test: if the binary of the WKB is the same, they are equal if actual_wkb != expected_wkb { - // Binary of the WKB are not the same, but geometries could be topologically the same. - let expected = wkb::reader::read_wkb(expected_wkb); - let actual = wkb::reader::read_wkb(actual_wkb); - let is_equals = match (expected, actual) { - (Ok(expected_geom), Ok(actual_geom)) => { - if expected_geom.dimension() == Dimension::Xy - && actual_geom.dimension() == Dimension::Xy - { - let expected_geom = expected_geom.to_geometry(); - let actual_geom = actual_geom.to_geometry(); - expected_geom.relate(&actual_geom).is_equal_topo() - } else { - // geo crate does not support 3D/4D geometry operations, so we fall back to using the result - // of byte-wise comparison - false - } - } - _ => false, + let is_equals = if compare_topologically { + compare_wkb_topologically(expected_wkb, actual_wkb) + } else { + false }; + if !is_equals { let (actual_wkt, expected_wkt) = (format_wkb(actual_wkb), format_wkb(expected_wkb)); @@ -241,6 +253,40 @@ fn assert_wkb_value_equal( } } +fn compare_wkb_topologically( + #[allow(unused)] expected_wkb: &[u8], + #[allow(unused)] actual_wkb: &[u8], +) -> bool { + #[cfg(feature = "geo")] + { + use geo::Relate; + use geo_traits::to_geo::ToGeoGeometry; + use geo_traits::Dimensions; + use geo_traits::GeometryTrait; + + let expected = wkb::reader::read_wkb(expected_wkb); + let actual = wkb::reader::read_wkb(actual_wkb); + match (expected, actual) { + (Ok(expected_geom), Ok(actual_geom)) => { + if expected_geom.dim() == Dimensions::Xy && actual_geom.dim() == Dimensions::Xy { + let expected_geom = expected_geom.to_geometry(); + let actual_geom = actual_geom.to_geometry(); + expected_geom.relate(&actual_geom).is_equal_topo() + } else { + // geo crate does not support 3D/4D geometry operations, so we fall back to using the result + // of byte-wise comparison + false + } + } + _ => false, + } + } + #[cfg(not(feature = "geo"))] + { + panic!("Topological comparison requires the 'geo' feature to be enabled"); + } +} + fn format_wkb(value: &[u8]) -> String { if let Ok(geom) = wkb::reader::read_wkb(value) { let mut wkt = String::new(); @@ -385,20 +431,20 @@ actual Array element #0 is POINT(1 2), expected Array element #0 is null")] #[test] fn wkb_value_equal() { - assert_wkb_value_equal(None, None, "lhs", "rhs"); - assert_wkb_value_equal(Some(&[]), Some(&[]), "lhs", "rhs"); + assert_wkb_value_equal(None, None, "lhs", "rhs", false); + assert_wkb_value_equal(Some(&[]), Some(&[]), "lhs", "rhs", false); } #[test] #[should_panic(expected = "lhs != rhs:\nlhs is POINT(1 2), rhs is null")] fn wkb_value_expected_null() { - assert_wkb_value_equal(Some(&POINT), None, "lhs", "rhs"); + assert_wkb_value_equal(Some(&POINT), None, "lhs", "rhs", false); } #[test] #[should_panic(expected = "lhs != rhs:\nlhs is null, rhs is POINT(1 2)")] fn wkb_value_actual_null() { - assert_wkb_value_equal(None, Some(&POINT), "lhs", "rhs"); + assert_wkb_value_equal(None, Some(&POINT), "lhs", "rhs", false); } #[test] @@ -408,7 +454,31 @@ lhs: rhs: POINT(1 2)")] fn wkb_value_values_not_equal() { - assert_wkb_value_equal(Some(&[]), Some(&POINT), "lhs", "rhs"); + assert_wkb_value_equal(Some(&[]), Some(&POINT), "lhs", "rhs", false); + } + + #[cfg(feature = "geo")] + #[test] + fn wkb_value_equal_topologically() { + use crate::create::make_wkb; + assert_wkb_value_equal(Some(&POINT), Some(&POINT), "lhs", "rhs", true); + let lhs = make_wkb("POLYGON ((0 0, 1 0, 0 1, 0 0))"); + let rhs = make_wkb("POLYGON ((0 0, 0 1, 1 0, 0 0))"); + assert_wkb_value_equal(Some(&lhs), Some(&rhs), "lhs", "rhs", true); + } + + #[cfg(feature = "geo")] + #[test] + #[should_panic(expected = "lhs != rhs +lhs: + POLYGON((0 0,1 0,0 1,0 0)) +rhs: + POLYGON((0 0,1 0,0 0))")] + fn wkb_value_not_equal_topologically() { + use crate::create::make_wkb; + let lhs = make_wkb("POLYGON ((0 0, 1 0, 0 1, 0 0))"); + let rhs = make_wkb("POLYGON ((0 0, 1 0, 0 0))"); + assert_wkb_value_equal(Some(&lhs), Some(&rhs), "lhs", "rhs", true); } #[test] From d661d2a4b32ef436f9145b0146b61ec0745198e5 Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Wed, 8 Oct 2025 15:02:27 +0800 Subject: [PATCH 16/17] Add more geometry fixtures for testing sedona-geo-generic-alg (will be added later) --- rust/sedona-testing/src/fixtures.rs | 210 ++++++++++++++++++++++++++++ 1 file changed, 210 insertions(+) diff --git a/rust/sedona-testing/src/fixtures.rs b/rust/sedona-testing/src/fixtures.rs index 502bfaec..13011bf8 100644 --- a/rust/sedona-testing/src/fixtures.rs +++ b/rust/sedona-testing/src/fixtures.rs @@ -14,6 +14,11 @@ // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. +use std::{fs::File, path::PathBuf, str::FromStr}; + +use geo_types::{LineString, MultiPolygon, Point, Polygon}; +use wkt::{TryFromWkt, WktFloat}; + /// A well-known binary blob of MULTIPOINT (EMPTY) /// /// The wkt crate's parser rejects this; however, it's a corner case that may show @@ -22,3 +27,208 @@ pub const MULTIPOINT_WITH_EMPTY_CHILD_WKB: [u8; 30] = [ 0x01, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, ]; + +pub fn louisiana() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("louisiana.wkt") +} + +pub fn baton_rouge() -> Point +where + T: WktFloat + Default + FromStr, +{ + let x = T::from(-91.147385).unwrap(); + let y = T::from(30.471165).unwrap(); + Point::new(x, y) +} + +pub fn east_baton_rouge() -> Polygon +where + T: WktFloat + Default + FromStr, +{ + polygon("east_baton_rouge.wkt") +} + +pub fn norway_main() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("norway_main.wkt") +} + +pub fn norway_concave_hull() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("norway_concave_hull.wkt") +} + +pub fn norway_convex_hull() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("norway_convex_hull.wkt") +} + +pub fn norway_nonconvex_hull() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("norway_nonconvex_hull.wkt") +} + +pub fn vw_orig() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("vw_orig.wkt") +} + +pub fn vw_simplified() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("vw_simplified.wkt") +} + +pub fn poly1() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("poly1.wkt") +} + +pub fn poly1_hull() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("poly1_hull.wkt") +} + +pub fn poly2() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("poly2.wkt") +} + +pub fn poly2_hull() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("poly2_hull.wkt") +} + +pub fn poly_in_ring() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("poly_in_ring.wkt") +} + +pub fn ring() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("ring.wkt") +} + +pub fn shell() -> LineString +where + T: WktFloat + Default + FromStr, +{ + line_string("shell.wkt") +} + +// From https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetFeature&service=WFS&srsName=EPSG:4326&typeName=kadastralekaartv4:perceel&version=2.0.0&outputFormat=json&bbox=165593,480993,166125,481552 +pub fn nl_zones() -> MultiPolygon +where + T: WktFloat + Default + FromStr, +{ + multi_polygon("nl_zones.wkt") +} + +// From https://afnemers.ruimtelijkeplannen.nl/afnemers/services?request=GetFeature&service=WFS&srsName=EPSG:4326&typeName=Enkelbestemming&version=2.0.0&bbox=165618,480983,166149,481542"; +pub fn nl_plots_wgs84() -> MultiPolygon +where + T: WktFloat + Default + FromStr, +{ + multi_polygon("nl_plots.wkt") +} + +pub fn nl_plots_epsg_28992() -> MultiPolygon +where + T: WktFloat + Default + FromStr, +{ + // https://epsg.io/28992 + multi_polygon("nl_plots_epsg_28992.wkt") +} + +fn line_string(name: &str) -> LineString +where + T: WktFloat + Default + FromStr, +{ + LineString::try_from_wkt_reader(file(name)).unwrap() +} + +pub fn polygon(name: &str) -> Polygon +where + T: WktFloat + Default + FromStr, +{ + Polygon::try_from_wkt_reader(file(name)).unwrap() +} + +pub fn multi_polygon(name: &str) -> MultiPolygon +where + T: WktFloat + Default + FromStr, +{ + MultiPolygon::try_from_wkt_reader(file(name)).unwrap() +} + +pub fn file(name: &str) -> File { + let base = crate::data::sedona_testing_dir() + .expect("sedona-testing directory should resolve when accessing fixtures"); + + let mut path = PathBuf::from(base); + path.push("data"); + path.push("wkts"); + path.push("geo-test-fixtures"); + path.push(name); + + File::open(&path).unwrap_or_else(|_| panic!("Can't open file: {path:?}")) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn norway_main_linestring_has_vertices() { + let ls = norway_main::(); + assert!( + !ls.0.is_empty(), + "LineString loaded from norway_main.wkt should have vertices" + ); + + let first = ls.0.first().expect("expected at least one coordinate"); + assert!(first.x.is_finite(), "first coordinate x should be finite"); + assert!(first.y.is_finite(), "first coordinate y should be finite"); + } + + #[test] + fn nl_zones_multipolygon_not_empty() { + let mp = nl_zones::(); + assert!( + !mp.0.is_empty(), + "MultiPolygon from nl_zones.wkt should contain polygons" + ); + + let polygon = mp.0.first().expect("expected at least one polygon"); + assert!( + !polygon.exterior().0.is_empty(), + "polygon exterior ring should contain coordinates" + ); + } +} From a123089129fc71f19f33e3059315ad65946b78ba Mon Sep 17 00:00:00 2001 From: Kristin Cowalcijk Date: Wed, 8 Oct 2025 15:16:55 +0800 Subject: [PATCH 17/17] Removing sedona-geo-test-fixtures and move fixtures to sedona-testing --- Cargo.lock | 10 +- Cargo.toml | 1 - rust/sedona-geo-generic-alg/Cargo.toml | 2 +- rust/sedona-geo-generic-alg/benches/area.rs | 12 +- .../benches/centroid.rs | 12 +- .../benches/distance.rs | 6 +- .../benches/intersection.rs | 40 ++-- rust/sedona-geo-generic-alg/benches/length.rs | 8 +- .../benches/perimeter.rs | 8 +- .../metric_spaces/euclidean/distance.rs | 12 +- rust/sedona-geo-test-fixtures/Cargo.toml | 29 --- rust/sedona-geo-test-fixtures/README.md | 19 -- .../fixtures/east_baton_rouge.wkt | 1 - .../fixtures/issue-894/inpa.wkt | 1 - .../fixtures/issue-894/inpb.wkt | 1 - .../fixtures/issue-894/inpc.wkt | 1 - .../fixtures/louisiana.wkt | 1 - .../fixtures/nl_plots.wkt | 1 - .../fixtures/nl_plots_epsg_28992.wkt | 1 - .../fixtures/nl_zones.wkt | 1 - .../fixtures/norway_concave_hull.wkt | 1 - .../fixtures/norway_convex_hull.wkt | 1 - .../fixtures/norway_main.wkt | 1 - .../fixtures/norway_nonconvex_hull.wkt | 1 - .../fixtures/poly1.wkt | 1 - .../fixtures/poly1_hull.wkt | 1 - .../fixtures/poly2.wkt | 1 - .../fixtures/poly2_hull.wkt | 1 - .../fixtures/poly_in_ring.wkt | 1 - .../fixtures/ring.wkt | 1 - .../fixtures/shell.wkt | 1 - .../fixtures/vw_orig.wkt | 1 - .../fixtures/vw_simplified.wkt | 1 - rust/sedona-geo-test-fixtures/pp_points.py | 65 ------ rust/sedona-geo-test-fixtures/src/lib.rs | 186 ------------------ submodules/sedona-testing | 2 +- 36 files changed, 52 insertions(+), 381 deletions(-) delete mode 100644 rust/sedona-geo-test-fixtures/Cargo.toml delete mode 100644 rust/sedona-geo-test-fixtures/README.md delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/east_baton_rouge.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/issue-894/inpa.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/issue-894/inpb.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/issue-894/inpc.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/louisiana.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/nl_plots.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/nl_zones.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/norway_concave_hull.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/norway_convex_hull.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/norway_main.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/poly1.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/poly1_hull.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/poly2.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/poly2_hull.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/poly_in_ring.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/ring.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/shell.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/vw_orig.wkt delete mode 100644 rust/sedona-geo-test-fixtures/fixtures/vw_simplified.wkt delete mode 100755 rust/sedona-geo-test-fixtures/pp_points.py delete mode 100644 rust/sedona-geo-test-fixtures/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 95092f3d..551f08be 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4949,21 +4949,13 @@ dependencies = [ "rand_distr", "robust", "rstar", - "sedona-geo-test-fixtures", "sedona-geo-traits-ext", + "sedona-testing", "serde", "wkb", "wkt 0.14.0", ] -[[package]] -name = "sedona-geo-test-fixtures" -version = "0.2.0" -dependencies = [ - "geo-types", - "wkt 0.14.0", -] - [[package]] name = "sedona-geo-traits-ext" version = "0.2.0" diff --git a/Cargo.toml b/Cargo.toml index 58389a63..2bb997e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,6 @@ members = [ "r/sedonadb/src/rust", "rust/sedona-geo-traits-ext", "rust/sedona-geo-generic-alg", - "rust/sedona-geo-test-fixtures", "rust/sedona-adbc", "rust/sedona-expr", "rust/sedona-functions", diff --git a/rust/sedona-geo-generic-alg/Cargo.toml b/rust/sedona-geo-generic-alg/Cargo.toml index 06b46f4c..2da128ea 100644 --- a/rust/sedona-geo-generic-alg/Cargo.toml +++ b/rust/sedona-geo-generic-alg/Cargo.toml @@ -42,7 +42,7 @@ serde = { workspace = true, features = ["derive"], optional = true } i_overlay = { version = "4.0.0, < 4.1.0", default-features = false } [dev-dependencies] -sedona-geo-test-fixtures = { path = "../sedona-geo-test-fixtures" } +sedona-testing = { path = "../sedona-testing" } approx = { workspace = true } criterion = { workspace = true } pretty_env_logger = "0.4" diff --git a/rust/sedona-geo-generic-alg/benches/area.rs b/rust/sedona-geo-generic-alg/benches/area.rs index ed02a517..ab9e5da8 100644 --- a/rust/sedona-geo-generic-alg/benches/area.rs +++ b/rust/sedona-geo-generic-alg/benches/area.rs @@ -24,7 +24,7 @@ mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { c.bench_function("area_generic_f32", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -33,7 +33,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("area_generic", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -42,7 +42,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("area_geo_f32", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -51,7 +51,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("area_geo", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -60,7 +60,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("area_wkb", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); @@ -71,7 +71,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("area_wkb_convert", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); diff --git a/rust/sedona-geo-generic-alg/benches/centroid.rs b/rust/sedona-geo-generic-alg/benches/centroid.rs index 629b2226..62d7c033 100644 --- a/rust/sedona-geo-generic-alg/benches/centroid.rs +++ b/rust/sedona-geo-generic-alg/benches/centroid.rs @@ -24,7 +24,7 @@ mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { c.bench_function("centroid_generic_f32", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -33,7 +33,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("centroid_generic", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -42,7 +42,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("centroid_geo_f32", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -51,7 +51,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("centroid_geo", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -60,7 +60,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("centroid_wkb", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); @@ -71,7 +71,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("centroid_wkb_convert", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); diff --git a/rust/sedona-geo-generic-alg/benches/distance.rs b/rust/sedona-geo-generic-alg/benches/distance.rs index fcda33e9..313e4cf7 100644 --- a/rust/sedona-geo-generic-alg/benches/distance.rs +++ b/rust/sedona-geo-generic-alg/benches/distance.rs @@ -79,7 +79,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("distance_linestring_to_linestring", |bencher| { - let ls1 = sedona_geo_test_fixtures::norway_main::(); + let ls1 = sedona_testing::fixtures::norway_main::(); let ls2 = LineString::from(vec![ coord!(x: 100.0, y: 100.0), coord!(x: 200.0, y: 200.0), @@ -136,7 +136,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("distance_wkb_linestring_to_linestring", |bencher| { - let ls1 = sedona_geo_test_fixtures::norway_main::(); + let ls1 = sedona_testing::fixtures::norway_main::(); let ls2 = LineString::from(vec![ coord!(x: 100.0, y: 100.0), coord!(x: 200.0, y: 200.0), @@ -195,7 +195,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("distance_concrete_linestring_to_linestring", |bencher| { - let ls1 = sedona_geo_test_fixtures::norway_main::(); + let ls1 = sedona_testing::fixtures::norway_main::(); let ls2 = LineString::from(vec![ coord!(x: 100.0, y: 100.0), coord!(x: 200.0, y: 200.0), diff --git a/rust/sedona-geo-generic-alg/benches/intersection.rs b/rust/sedona-geo-generic-alg/benches/intersection.rs index 1d4de009..a5891e0b 100644 --- a/rust/sedona-geo-generic-alg/benches/intersection.rs +++ b/rust/sedona-geo-generic-alg/benches/intersection.rs @@ -24,8 +24,8 @@ use sedona_geo_generic_alg::{intersects::Intersects, Centroid}; mod wkb_util; fn multi_polygon_intersection(c: &mut Criterion) { - let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_testing::fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_testing::fixtures::nl_zones(); let plot_geoms: Vec = plot_polygons.into_iter().map(|p| p.into()).collect(); let zone_geoms: Vec = zone_polygons.into_iter().map(|p| p.into()).collect(); @@ -71,8 +71,8 @@ fn multi_polygon_intersection(c: &mut Criterion) { } fn multi_polygon_intersection_wkb(c: &mut Criterion) { - let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_testing::fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_testing::fixtures::nl_zones(); // Convert intersected polygons to WKB let mut plot_polygon_wkbs = Vec::new(); @@ -108,8 +108,8 @@ fn multi_polygon_intersection_wkb(c: &mut Criterion) { } fn multi_polygon_intersection_wkb_aligned(c: &mut Criterion) { - let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_testing::fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_testing::fixtures::nl_zones(); // Convert intersected polygons to WKB let mut plot_polygon_wkbs = Vec::new(); @@ -149,8 +149,8 @@ fn multi_polygon_intersection_wkb_aligned(c: &mut Criterion) { } fn multi_polygon_intersection_wkb_conv(c: &mut Criterion) { - let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_testing::fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_testing::fixtures::nl_zones(); // Convert intersected polygons to WKB let mut plot_polygon_wkbs = Vec::new(); @@ -188,8 +188,8 @@ fn multi_polygon_intersection_wkb_conv(c: &mut Criterion) { } fn point_polygon_intersection(c: &mut Criterion) { - let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_testing::fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_testing::fixtures::nl_zones(); let plot_geoms: Vec = plot_polygons .into_iter() .map(|p| { @@ -221,8 +221,8 @@ fn point_polygon_intersection(c: &mut Criterion) { } fn point_polygon_intersection_wkb(c: &mut Criterion) { - let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_testing::fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_testing::fixtures::nl_zones(); // Convert intersected polygons to WKB let mut plot_centroid_wkbs = Vec::new(); @@ -249,8 +249,8 @@ fn point_polygon_intersection_wkb(c: &mut Criterion) { } fn point_polygon_intersection_wkb_conv(c: &mut Criterion) { - let plot_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_plots_wgs84(); - let zone_polygons: MultiPolygon = sedona_geo_test_fixtures::nl_zones(); + let plot_polygons: MultiPolygon = sedona_testing::fixtures::nl_plots_wgs84(); + let zone_polygons: MultiPolygon = sedona_testing::fixtures::nl_zones(); // Convert intersected polygons to WKB let mut plot_centroid_wkbs = Vec::new(); @@ -281,11 +281,11 @@ fn point_polygon_intersection_wkb_conv(c: &mut Criterion) { fn rect_intersection(c: &mut Criterion) { use sedona_geo_generic_alg::algorithm::BoundingRect; use sedona_geo_generic_alg::Rect; - let plot_bbox: Vec = sedona_geo_test_fixtures::nl_plots_wgs84() + let plot_bbox: Vec = sedona_testing::fixtures::nl_plots_wgs84() .iter() .map(|plot| plot.bounding_rect().unwrap()) .collect(); - let zone_bbox: Vec = sedona_geo_test_fixtures::nl_zones() + let zone_bbox: Vec = sedona_testing::fixtures::nl_zones() .iter() .map(|plot| plot.bounding_rect().unwrap()) .collect(); @@ -314,11 +314,11 @@ fn rect_intersection(c: &mut Criterion) { fn point_rect_intersection(c: &mut Criterion) { use sedona_geo_generic_alg::algorithm::{BoundingRect, Centroid}; use sedona_geo_generic_alg::geometry::{Point, Rect}; - let plot_centroids: Vec = sedona_geo_test_fixtures::nl_plots_wgs84() + let plot_centroids: Vec = sedona_testing::fixtures::nl_plots_wgs84() .iter() .map(|plot| plot.centroid().unwrap()) .collect(); - let zone_bbox: Vec = sedona_geo_test_fixtures::nl_zones() + let zone_bbox: Vec = sedona_testing::fixtures::nl_zones() .iter() .map(|plot| plot.bounding_rect().unwrap()) .collect(); @@ -347,11 +347,11 @@ fn point_rect_intersection(c: &mut Criterion) { fn point_triangle_intersection(c: &mut Criterion) { use geo::algorithm::TriangulateEarcut; use sedona_geo_generic_alg::{Point, Triangle}; - let plot_centroids: Vec = sedona_geo_test_fixtures::nl_plots_wgs84() + let plot_centroids: Vec = sedona_testing::fixtures::nl_plots_wgs84() .iter() .map(|plot| plot.centroid().unwrap()) .collect(); - let zone_triangles: Vec = sedona_geo_test_fixtures::nl_zones() + let zone_triangles: Vec = sedona_testing::fixtures::nl_zones() .iter() .flat_map(|plot| plot.earcut_triangles_iter()) .collect(); diff --git a/rust/sedona-geo-generic-alg/benches/length.rs b/rust/sedona-geo-generic-alg/benches/length.rs index 4f780e73..24970d06 100644 --- a/rust/sedona-geo-generic-alg/benches/length.rs +++ b/rust/sedona-geo-generic-alg/benches/length.rs @@ -23,7 +23,7 @@ mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { c.bench_function("length_f32", |bencher| { - let linestring = sedona_geo_test_fixtures::norway_main::(); + let linestring = sedona_testing::fixtures::norway_main::(); bencher.iter(|| { criterion::black_box(criterion::black_box(&linestring).length_ext(&Euclidean)); @@ -31,7 +31,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("length", |bencher| { - let linestring = sedona_geo_test_fixtures::norway_main::(); + let linestring = sedona_testing::fixtures::norway_main::(); bencher.iter(|| { criterion::black_box(criterion::black_box(&linestring).length_ext(&Euclidean)); @@ -39,7 +39,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("length_wkb", |bencher| { - let linestring = sedona_geo_test_fixtures::norway_main::(); + let linestring = sedona_testing::fixtures::norway_main::(); let wkb_bytes = wkb_util::geo_to_wkb(linestring); bencher.iter(|| { @@ -49,7 +49,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("length_wkb_convert", |bencher| { - let linestring = sedona_geo_test_fixtures::norway_main::(); + let linestring = sedona_testing::fixtures::norway_main::(); let wkb_bytes = wkb_util::geo_to_wkb(linestring); bencher.iter(|| { diff --git a/rust/sedona-geo-generic-alg/benches/perimeter.rs b/rust/sedona-geo-generic-alg/benches/perimeter.rs index 6c9a1cad..95d9e0a3 100644 --- a/rust/sedona-geo-generic-alg/benches/perimeter.rs +++ b/rust/sedona-geo-generic-alg/benches/perimeter.rs @@ -24,7 +24,7 @@ mod wkb_util; fn criterion_benchmark(c: &mut Criterion) { c.bench_function("perimeter_f32", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -33,7 +33,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("perimeter", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); bencher.iter(|| { @@ -42,7 +42,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("perimeter_wkb", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); @@ -53,7 +53,7 @@ fn criterion_benchmark(c: &mut Criterion) { }); c.bench_function("perimeter_wkb_convert", |bencher| { - let norway = sedona_geo_test_fixtures::norway_main::(); + let norway = sedona_testing::fixtures::norway_main::(); let polygon = Polygon::new(norway, vec![]); let wkb_bytes = wkb_util::geo_to_wkb(polygon); diff --git a/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs index 7cea9e00..6444588f 100644 --- a/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs +++ b/rust/sedona-geo-generic-alg/src/algorithm/line_measures/metric_spaces/euclidean/distance.rs @@ -1792,7 +1792,7 @@ mod tests { } #[test] fn test_large_polygon_distance() { - let ls = sedona_geo_test_fixtures::norway_main::(); + let ls = sedona_testing::fixtures::norway_main::(); let poly1 = Polygon::new(ls, vec![]); let vec2 = vec![ (4.921875, 66.33750501996518), @@ -1818,9 +1818,9 @@ mod tests { // A polygon inside another polygon's ring; they're disjoint in the DE-9IM sense: // FF2FF1212 fn test_poly_in_ring() { - let shell = sedona_geo_test_fixtures::shell::(); - let ring = sedona_geo_test_fixtures::ring::(); - let poly_in_ring = sedona_geo_test_fixtures::poly_in_ring::(); + let shell = sedona_testing::fixtures::shell::(); + let ring = sedona_testing::fixtures::ring::(); + let poly_in_ring = sedona_testing::fixtures::poly_in_ring::(); // inside is "inside" outside's ring, but they are disjoint let outside = Polygon::new(shell, vec![ring]); let inside = Polygon::new(poly_in_ring, vec![]); @@ -1839,8 +1839,8 @@ mod tests { #[test] // two ring LineStrings; one encloses the other but they neither touch nor intersect fn test_linestring_distance() { - let ring = sedona_geo_test_fixtures::ring::(); - let poly_in_ring = sedona_geo_test_fixtures::poly_in_ring::(); + let ring = sedona_testing::fixtures::ring::(); + let poly_in_ring = sedona_testing::fixtures::poly_in_ring::(); // Test original implementation let distance = Euclidean.distance(&ring, &poly_in_ring); diff --git a/rust/sedona-geo-test-fixtures/Cargo.toml b/rust/sedona-geo-test-fixtures/Cargo.toml deleted file mode 100644 index b39e2270..00000000 --- a/rust/sedona-geo-test-fixtures/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -[package] -name = "sedona-geo-test-fixtures" -version.workspace = true -homepage.workspace = true -repository.workspace = true -description.workspace = true -readme.workspace = true -edition.workspace = true -rust-version.workspace = true - -[dependencies] -wkt = { workspace = true } -geo-types = { workspace = true } diff --git a/rust/sedona-geo-test-fixtures/README.md b/rust/sedona-geo-test-fixtures/README.md deleted file mode 100644 index b7f90417..00000000 --- a/rust/sedona-geo-test-fixtures/README.md +++ /dev/null @@ -1,19 +0,0 @@ - - -This module was taken from the `geo` crate for testing the correctness of generic algorithms in `geo-generic-alg` crate. -Please refer to https://github.com/georust/geo/tree/geo-0.31.0/geo-test-fixtures for the original source code. diff --git a/rust/sedona-geo-test-fixtures/fixtures/east_baton_rouge.wkt b/rust/sedona-geo-test-fixtures/fixtures/east_baton_rouge.wkt deleted file mode 100644 index 1c384745..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/east_baton_rouge.wkt +++ /dev/null @@ -1 +0,0 @@ -POLYGON((-91.316488 30.590003,-91.315282 30.594288,-91.309914 30.601297,-91.301863 30.609497,-91.29465 30.625207,-91.293072 30.629882,-91.292821 30.631539,-91.293596 30.63919,-91.294211 30.641591,-91.296807 30.648037,-91.297658 30.649548,-91.293604 30.655036,-91.292644 30.658244,-91.292608 30.662034,-91.289693 30.667624,-91.288731 30.677904,-91.27046 30.680864,-91.267699 30.686118,-91.268221 30.689126,-91.267518 30.690108,-91.267133 30.693745,-91.267882 30.69442,-91.265734 30.696264,-91.264865 30.698514,-91.260461 30.70129,-91.257352 30.702703,-91.254419 30.705294,-91.250223 30.705131,-91.216658 30.706386,-91.21374 30.706187,-91.193932 30.706939,-91.17396 30.707768,-91.169445 30.707978,-91.145132 30.708785,-91.145008 30.708785,-91.10764 30.710296,-91.101421 30.710579,-91.097704 30.710583,-91.078958 30.711282,-91.053393 30.712184,-91.023218 30.713182,-90.97269 30.715084,-90.968038 30.71528,-90.849041 30.719311,-90.849327 30.717661,-90.8475 30.71629,-90.847859 30.713883,-90.847421 30.712922,-90.845068 30.71246,-90.845888 30.70969,-90.844181 30.708047,-90.848658 30.70447,-90.849922 30.705858,-90.851101 30.70557,-90.851857 30.702998,-90.8537 30.702048,-90.854054 30.700822,-90.852545 30.700603,-90.85147 30.70141,-90.850499 30.700267,-90.8527 30.699303,-90.852985 30.695681,-90.854366 30.69515,-90.857988 30.695477,-90.859058 30.696311,-90.860664 30.6955,-90.859909 30.692764,-90.862696 30.691928,-90.865774 30.693349,-90.869114 30.692353,-90.869982 30.693779,-90.870916 30.693329,-90.870826 30.690951,-90.869282 30.689224,-90.872294 30.68704,-90.874186 30.686451,-90.876457 30.686588,-90.877024 30.684365,-90.879099 30.682584,-90.877092 30.680332,-90.87818 30.679072,-90.879783 30.678886,-90.881 30.677585,-90.8856 30.676884,-90.885735 30.67494,-90.8884 30.673584,-90.890389 30.673779,-90.890602 30.672414,-90.888798 30.671685,-90.888798 30.670584,-90.891899 30.671085,-90.893517 30.670603,-90.896569 30.668153,-90.893901 30.666485,-90.894875 30.66411,-90.8971 30.663685,-90.900459 30.665352,-90.90142 30.664068,-90.899698 30.662373,-90.89979 30.661149,-90.903225 30.659716,-90.902999 30.658187,-90.900677 30.658835,-90.899867 30.658084,-90.901455 30.655313,-90.902346 30.654722,-90.904169 30.655655,-90.904459 30.654692,-90.907358 30.655592,-90.907901 30.657185,-90.908792 30.65532,-90.911962 30.652148,-90.91224 30.65087,-90.910701 30.649385,-90.9096 30.647385,-90.911304 30.645989,-90.913582 30.646772,-90.9154 30.646685,-90.917001 30.643885,-90.916941 30.639759,-90.918315 30.638055,-90.920903 30.636684,-90.922799 30.637221,-90.924601 30.638786,-90.927337 30.637186,-90.9279 30.635085,-90.931854 30.631002,-90.935003 30.628286,-90.935672 30.626387,-90.937738 30.624671,-90.937629 30.622967,-90.939825 30.621947,-90.940636 30.620456,-90.938518 30.618039,-90.934782 30.619782,-90.935031 30.621483,-90.933528 30.620642,-90.932214 30.618409,-90.933206 30.616932,-90.936027 30.616147,-90.936051 30.615005,-90.934182 30.613829,-90.935098 30.612851,-90.936166 30.613716,-90.938669 30.612396,-90.939837 30.608952,-90.941707 30.608455,-90.944376 30.608685,-90.945809 30.609605,-90.947686 30.609826,-90.948301 30.606986,-90.947672 30.605735,-90.949101 30.604085,-90.952921 30.605533,-90.954707 30.604613,-90.956629 30.604644,-90.958064 30.605756,-90.960201 30.605203,-90.960117 30.603245,-90.958339 30.601296,-90.956783 30.600911,-90.956859 30.599497,-90.958215 30.598641,-90.959084 30.598267,-90.961037 30.59902,-90.960534 30.600678,-90.961634 30.600981,-90.962748 30.600001,-90.962898 30.596731,-90.963803 30.593925,-90.965602 30.593685,-90.96622 30.59447,-90.965551 30.597404,-90.971102 30.597383,-90.972247 30.596887,-90.972208 30.59385,-90.97352 30.592471,-90.975823 30.593886,-90.977401 30.593485,-90.977979 30.592319,-90.977564 30.59078,-90.979533 30.590148,-90.980695 30.590779,-90.980497 30.589081,-90.979403 30.587586,-90.980489 30.584757,-90.982203 30.584408,-90.985103 30.585601,-90.985601 30.584686,-90.985515 30.581627,-90.983835 30.579256,-90.986101 30.575986,-90.986141 30.574711,-90.987906 30.572643,-90.986843 30.571579,-90.98211 30.571012,-90.980464 30.568821,-90.976555 30.568453,-90.975718 30.567385,-90.975505 30.565471,-90.97204 30.564175,-90.971431 30.562004,-90.973216 30.56012,-90.972407 30.557335,-90.973276 30.554538,-90.972628 30.552923,-90.972012 30.550828,-90.972958 30.549596,-90.97566 30.547689,-90.975924 30.545495,-90.972802 30.543188,-90.972952 30.540928,-90.974033 30.539505,-90.977519 30.538068,-90.980003 30.537738,-90.981512 30.536387,-90.980931 30.535555,-90.980266 30.534383,-90.981441 30.532891,-90.983745 30.531724,-90.984385 30.530637,-90.982326 30.529691,-90.980723 30.530385,-90.979274 30.529695,-90.97816 30.527677,-90.977473 30.525067,-90.979487 30.523423,-90.981486 30.523259,-90.982197 30.522114,-90.978328 30.521299,-90.978327 30.519752,-90.980463 30.51837,-90.977727 30.515117,-90.975258 30.513965,-90.974228 30.512707,-90.971469 30.511803,-90.971333 30.509198,-90.971001 30.507389,-90.968744 30.506094,-90.96789 30.504381,-90.970957 30.503431,-90.974452 30.501177,-90.975929 30.498349,-90.97374 30.497059,-90.972221 30.497844,-90.970319 30.497527,-90.970035 30.495571,-90.970097 30.492371,-90.971382 30.491452,-90.973126 30.491844,-90.971892 30.489895,-90.972898 30.487617,-90.971933 30.485544,-90.975451 30.483899,-90.974807 30.481763,-90.974857 30.481508,-90.976008 30.480015,-90.978266 30.479956,-90.978662 30.479098,-90.976877 30.476923,-90.975065 30.476003,-90.975122 30.473147,-90.974268 30.471019,-90.976516 30.467267,-90.979607 30.467421,-90.981062 30.466533,-90.984251 30.468332,-90.985709 30.467645,-90.986354 30.466202,-90.988174 30.466515,-90.98923 30.465831,-90.989892 30.46488,-90.98995 30.464738,-90.991475 30.461954,-90.991053 30.460404,-90.989008 30.45866,-90.989195 30.456173,-90.988558 30.455145,-90.98505 30.45327,-90.981157 30.452765,-90.9815 30.451013,-90.983841 30.450237,-90.986847 30.450277,-90.986932 30.448361,-90.985706 30.44761,-90.984245 30.445308,-90.982808 30.444307,-90.981307 30.441883,-90.979362 30.440882,-90.977349 30.43879,-90.976358 30.438531,-90.974558 30.440124,-90.972402 30.440302,-90.973444 30.437701,-90.978066 30.434069,-90.980239 30.433383,-90.981034 30.432144,-90.981048 30.43035,-90.978957 30.42855,-90.982536 30.425479,-90.982351 30.423465,-90.981158 30.422263,-90.977503 30.420899,-90.970717 30.420846,-90.969301 30.420472,-90.967425 30.418801,-90.966114 30.418385,-90.964151 30.418868,-90.963312 30.417981,-90.966053 30.415194,-90.965794 30.414713,-90.963243 30.413719,-90.961949 30.411219,-90.958539 30.407409,-90.957922 30.406076,-90.958435 30.405233,-90.96144 30.403074,-90.963283 30.402806,-90.969401 30.405138,-90.972067 30.402318,-90.972346 30.397519,-90.968888 30.393287,-90.967888 30.39134,-90.968264 30.389151,-90.967357 30.388702,-90.96421 30.390357,-90.96224 30.388391,-90.961391 30.388144,-90.957574 30.388612,-90.954095 30.389642,-90.951012 30.392011,-90.9501 30.394092,-90.949197 30.394445,-90.946648 30.393529,-90.943917 30.391733,-90.942849 30.389448,-90.94468 30.386335,-90.947213 30.384939,-90.9446 30.383792,-90.944817 30.381551,-90.9459 30.379892,-90.9436 30.377992,-90.9437 30.376492,-90.940273 30.374184,-90.937695 30.373883,-90.932906 30.372749,-90.931533 30.371282,-90.9325 30.369697,-90.935477 30.367401,-90.93723 30.366565,-90.937527 30.364746,-90.936957 30.363913,-90.935037 30.36384,-90.934133 30.365846,-90.933056 30.365912,-90.931229 30.364373,-90.930764 30.361974,-90.929417 30.361873,-90.927622 30.364148,-90.926345 30.363723,-90.923101 30.364613,-90.920296 30.365947,-90.91807 30.364954,-90.917549 30.362627,-90.915434 30.361214,-90.915586 30.359497,-90.913523 30.358673,-90.910967 30.359404,-90.909935 30.360531,-90.907063 30.361196,-90.905379 30.36105,-90.903385 30.359774,-90.903678 30.35775,-90.905148 30.357207,-90.907226 30.35772,-90.90805 30.356018,-90.90647 30.355179,-90.903354 30.35564,-90.902341 30.355314,-90.900434 30.352134,-90.900119 30.349623,-90.900596 30.347745,-90.899754 30.347442,-90.897515 30.347981,-90.895577 30.347851,-90.891728 30.345244,-90.894305 30.345859,-90.900194 30.34251,-90.902606 30.342794,-90.904555 30.340624,-90.907057 30.341907,-90.908935 30.340863,-90.910074 30.339713,-90.912256 30.340706,-90.917343 30.340885,-90.917349 30.343786,-90.918851 30.345509,-90.920685 30.345714,-90.923852 30.34413,-90.927625 30.34334,-90.928926 30.341574,-90.930109 30.341389,-90.930743 30.342591,-90.93187 30.342683,-90.933619 30.341476,-90.935656 30.341839,-90.939418 30.340313,-90.941341 30.341117,-90.943858 30.341101,-90.945635 30.343197,-90.948525 30.342826,-90.948581 30.344706,-90.949289 30.345356,-90.951115 30.344634,-90.95311 30.345887,-90.954946 30.345216,-90.956912 30.345644,-90.958892 30.345139,-90.962884 30.345529,-90.963742 30.346704,-90.965546 30.346769,-90.968094 30.345804,-90.969738 30.345891,-90.974123 30.346933,-90.975656 30.346437,-90.976249 30.344656,-90.977364 30.343951,-90.981803 30.344331,-90.983178 30.343893,-90.98463 30.344003,-90.986968 30.345729,-90.988917 30.343089,-90.992883 30.342749,-90.994999 30.341604,-90.997494 30.341511,-91.000818 30.336556,-91.001367 30.33634,-91.006339 30.337795,-91.00778 30.337867,-91.009281 30.336015,-91.012205 30.335654,-91.014157 30.334779,-91.013825 30.330184,-91.014065 30.330029,-91.015148 30.329257,-91.016298 30.328273,-91.017168 30.326419,-91.017986 30.324094,-91.021014 30.321489,-91.025665 30.318262,-91.028271 30.31597,-91.032435 30.314822,-91.036783 30.314746,-91.040452 30.315318,-91.04499 30.31533,-91.046917 30.316134,-91.050206 30.31576,-91.052127 30.316288,-91.053483 30.31532,-91.053546 30.317465,-91.056481 30.317531,-91.058636 30.317081,-91.062717 30.318884,-91.064422 30.318148,-91.067805 30.319381,-91.071102 30.31966,-91.07951 30.319537,-91.082603 30.319693,-91.08633 30.31925,-91.09065 30.319365,-91.093004 30.320592,-91.095639 30.319262,-91.098798 30.319537,-91.10011 30.318793,-91.105204 30.317493,-91.107441 30.316062,-91.108504 30.315393,-91.113004 30.314893,-91.115459 30.312693,-91.118429 30.312469,-91.12013 30.313219,-91.125283 30.313232,-91.128323 30.314226,-91.132672 30.31341,-91.136277 30.315112,-91.137906 30.317194,-91.141478 30.3192,-91.142305 30.319893,-91.142042 30.322718,-91.142105 30.323293,-91.142439 30.324835,-91.145005 30.331293,-91.150801 30.337424,-91.151521 30.337809,-91.154105 30.339193,-91.161971 30.341528,-91.170333 30.343558,-91.174419 30.344187,-91.180251 30.345084,-91.187286 30.34651,-91.194507 30.346993,-91.204422 30.345198,-91.214093 30.342324,-91.222607 30.340593,-91.230307 30.341093,-91.235808 30.344493,-91.239534 30.351584,-91.241508 30.357592,-91.240617 30.362756,-91.233908 30.375292,-91.219429 30.389616,-91.215256 30.39401,-91.212807 30.397091,-91.208107 30.403691,-91.205707 30.407991,-91.199807 30.419091,-91.199056 30.422279,-91.198247 30.425935,-91.196307 30.434691,-91.195906 30.43939,-91.195907 30.43959,-91.196007 30.44689,-91.196114 30.452699,-91.196207 30.45779,-91.196507 30.46389,-91.196407 30.46639,-91.19653 30.469365,-91.196749 30.478845,-91.197205 30.506864,-91.198508 30.513089,-91.200808 30.517689,-91.203708 30.519789,-91.208004 30.522244,-91.209308 30.522989,-91.236101 30.513973,-91.253767 30.508208,-91.257014 30.506857,-91.262734 30.505238,-91.268258 30.504726,-91.274406 30.504613,-91.276486 30.504688,-91.281478 30.506115,-91.28276 30.507317,-91.284161 30.509635,-91.284735 30.511598,-91.284359 30.515339,-91.282767 30.51719,-91.280878 30.518573,-91.275351 30.521081,-91.265989 30.52658,-91.249475 30.533764,-91.246058 30.535851,-91.243333 30.540609,-91.242457 30.544218,-91.242312 30.547994,-91.24309 30.55314,-91.244409 30.555888,-91.247909 30.560688,-91.250109 30.562988,-91.254439 30.566543,-91.261522 30.571071,-91.264954 30.572176,-91.267121 30.572522,-91.280928 30.57295,-91.291498 30.572546,-91.295639 30.572228,-91.302914 30.573119,-91.305854 30.573027,-91.308012 30.573599,-91.310477 30.574679,-91.311825 30.575809,-91.314406 30.578817,-91.314839 30.579791,-91.316547 30.585244,-91.316488 30.590003)) diff --git a/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpa.wkt b/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpa.wkt deleted file mode 100644 index a512c740..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpa.wkt +++ /dev/null @@ -1 +0,0 @@ -MULTIPOLYGON(((2044 1653,1828 1649,1365 1651,1284 1649,1256 1651,725 1650,696 1652,650 1650,285 1653,183 1651,171 1653,146 1652,140 1649,140 1645,152 1642,1060 1640,1078 1642,1091 1640,1694 1641,1707 1639,1795 1641,1833 1639,2044 1643,2044 1653)),((361 2003,368 2001,467 2004,929 2002,935 2004,939 2002,1042 2003,1055 2001,1146 2003,1165 2000,1175 2003,1187 2001,1826 2002,1836 2000,2044 2005,2044 2015,1966 2011,1301 2012,1283 2010,1273 2012,383 2012,362 2015,358 2008,361 2003)),((2044 637,1830 634,1823 636,1817 634,1581 633,1533 635,817 634,798 636,781 634,290 637,223 635,158 636,140 639,134 633,140 625,326 627,1721 623,2044 627,2044 637)),((11 1488,-3 1489,-2 1479,6 1478,14 1483,11 1488)),((260 1848,201 1849,195 1844,200 1839,254 1838,263 1841,260 1848)),((308 854,537 856,542 854,961 855,991 853,1022 855,1076 853,1887 853,2044 857,2044 867,1760 862,1740 864,1251 863,1241 865,1220 863,543 866,425 864,327 865,306 868,302 864,302 859,308 854)),((113 637,32 637,27 630,34 626,89 625,115 626,122 628,123 633,113 637)),((1814 1706,1835 1705,2044 1709,2044 1720,2041 1718,1932 1715,1822 1716,1815 1715,1811 1709,1814 1706)),((1455 1214,1752 1215,1804 1213,1810 1215,1980 1215,1990 1218,1991 1222,1988 1225,1951 1224,1946 1226,1822 1223,1453 1224,1448 1219,1455 1214)),((88 1708,284 1707,291 1712,291 1715,286 1718,139 1717,109 1719,89 1718,83 1714,83 1711,88 1708)),((1154 1353,1147 1358,1128 1355,627 1356,615 1359,609 1353,614 1345,902 1347,1135 1346,1147 1343,1154 1348,1154 1353)),((2044 507,1984 504,1783 504,1773 502,918 503,906 505,758 503,531 504,501 507,496 502,496 498,502 493,516 495,615 494,620 496,627 494,769 495,786 493,901 495,946 493,1458 494,1476 492,1690 494,1698 492,2044 496,2044 507)),((1430 271,1425 274,1402 275,1389 273,729 274,708 276,490 274,482 276,93 277,86 276,81 271,86 266,388 266,395 264,431 267,436 265,1402 263,1430 266,1430 271)),((1236 926,1232 929,1218 930,695 929,692 931,680 929,600 931,595 929,555 931,546 929,540 931,451 930,446 932,437 930,231 932,154 930,87 931,83 928,86 922,90 921,240 922,247 920,399 922,432 920,1226 919,1236 922,1236 926)),((396 1445,584 1446,609 1444,969 1445,977 1443,987 1445,1028 1443,1116 1445,1125 1443,1904 1443,2044 1447,2044 1457,1986 1454,1784 1452,869 1455,736 1453,451 1456,393 1454,391 1448,396 1445)),((73 1576,155 1578,423 1576,431 1582,425 1586,403 1587,389 1585,378 1587,220 1587,198 1585,188 1587,67 1587,59 1585,57 1579,73 1576)),((9 1807,13 1813,5 1817,-3 1816,-3 1807,9 1807)),((86 1774,249 1772,554 1774,701 1772,709 1777,703 1782,690 1783,604 1782,598 1784,592 1782,372 1782,356 1784,316 1782,259 1785,200 1782,89 1783,83 1780,86 1774)),((87 1741,95 1740,260 1741,264 1747,258 1751,89 1751,84 1749,83 1745,87 1741)),((402 1125,395 1130,382 1127,302 1127,279 1130,274 1124,280 1116,373 1118,395 1115,402 1121,402 1125)),((46 593,255 593,262 599,254 604,37 605,29 603,26 597,46 593)),((1845 1256,89 1259,82 1253,87 1249,345 1250,567 1247,786 1249,814 1247,1828 1246,2044 1250,2044 1260,1845 1256)),((2008 1215,2044 1217,2044 1227,2008 1228,2004 1224,2004 1218,2008 1215)),((69 1183,149 1184,152 1189,147 1193,67 1194,58 1191,56 1187,69 1183)),((1256 1311,1279 1313,1306 1311,1312 1313,1780 1313,1810 1311,2044 1316,2044 1325,1762 1321,1752 1323,1270 1322,1256 1325,1251 1323,1249 1317,1256 1311)),((12 1448,13 1451,6 1456,-3 1456,-3 1446,12 1448)),((1236 1912,1232 1913,968 1912,962 1914,526 1913,481 1915,456 1914,446 1910,453 1904,614 1903,668 1905,1234 1903,1238 1907,1236 1912)),((957 337,952 340,864 339,861 341,90 342,81 337,84 332,95 331,262 332,268 330,739 331,767 329,775 331,810 329,888 331,928 329,951 330,957 333,957 337)),((303 723,469 725,504 723,1865 722,2044 726,2044 736,1888 732,431 733,427 735,396 733,374 736,319 734,303 737,298 734,297 729,303 723)),((113 461,124 463,414 461,428 463,457 461,1915 460,1918 462,2043 463,2044 474,1991 471,1924 472,1920 470,140 472,133 474,126 472,111 475,106 467,113 461)),((2044 1063,1800 1059,1359 1061,1350 1059,1345 1061,114 1062,110 1059,114 1053,124 1052,220 1053,223 1051,408 1053,499 1051,504 1053,507 1051,651 1050,955 1052,1097 1050,1107 1052,1261 1049,1285 1051,1663 1049,1737 1051,1745 1049,1765 1051,1780 1049,1808 1051,1819 1049,2044 1054,2044 1063)),((1891 994,1104 994,1069 996,1049 994,1019 996,988 994,969 996,459 997,424 996,418 992,418 989,422 986,640 987,646 985,732 986,736 984,741 986,1146 984,1187 986,1217 984,1640 985,1646 983,1652 985,1851 984,1875 986,1897 984,2044 988,2044 998,1891 994)),((-3 420,0 417,-2 390,3 364,73 362,98 365,116 362,121 366,122 372,116 377,45 372,15 376,10 381,9 422,19 430,34 428,39 436,34 442,28 443,4 439,-2 432,-3 420)),((58 1639,76 1639,86 1642,116 1640,124 1645,124 1650,117 1655,102 1652,58 1653,53 1650,52 1645,58 1639)),((652 1027,646 1031,622 1028,107 1030,99 1033,94 1056,90 1059,29 1063,24 1059,25 1052,30 1049,76 1049,85 1039,86 1023,95 1020,503 1018,520 1020,648 1017,652 1022,652 1027)),((1 2038,36 2036,1385 2034,1390 2036,1483 2035,1488 2039,1483 2045,1362 2045,1358 2043,1356 2045,-2 2045,1 2038)),((1258 917,1319 920,1368 917,1375 921,1376 927,1369 932,1357 929,1289 928,1256 932,1249 928,1249 922,1258 917)),((1281 787,1429 789,1433 787,1478 789,1526 787,1927 788,2044 791,2044 801,1749 797,1367 799,1339 797,1279 800,1276 794,1281 787)),((1674 231,1695 230,2044 234,2044 245,1938 241,1674 241,1669 238,1669 234,1674 231)),((1830 175,1189 175,1172 177,1053 175,1012 177,1005 175,979 177,773 176,751 179,746 171,753 165,1007 167,1875 165,2044 169,2044 179,1830 175)),((253 1805,334 1807,564 1805,569 1807,576 1805,923 1806,926 1804,1039 1806,1068 1804,1079 1806,1092 1804,1916 1804,2044 1808,2044 1818,2012 1815,1896 1815,1889 1813,1849 1815,1736 1814,1732 1812,1725 1815,1710 1813,1302 1815,1268 1813,1192 1815,1184 1812,1179 1815,1050 1814,1043 1816,1036 1814,586 1816,578 1814,572 1816,423 1816,420 1814,417 1816,275 1816,254 1819,248 1816,247 1811,253 1805)),((2044 670,1737 666,1707 668,1703 666,1131 668,1121 666,1087 668,84 669,73 671,67 678,66 728,63 733,27 737,23 730,30 723,46 724,54 719,56 714,55 665,59 659,65 657,96 660,222 658,236 660,240 658,533 659,538 657,760 659,778 657,1055 658,1068 656,1346 658,1395 656,1406 658,1453 656,1466 658,1507 656,1513 658,1538 656,1838 656,1845 658,2044 660,2044 670)),((1320 1157,1314 1161,1301 1158,1237 1159,1234 1157,998 1160,991 1158,973 1160,963 1158,890 1160,471 1159,459 1161,446 1159,82 1161,52 1159,45 1161,40 1167,40 1192,35 1196,28 1196,24 1192,30 1173,31 1152,37 1149,62 1148,86 1151,441 1149,508 1151,516 1149,527 1151,700 1148,711 1150,1137 1148,1166 1150,1316 1147,1321 1152,1320 1157)),((57 1934,83 1938,686 1936,692 1938,710 1935,718 1937,730 1935,745 1937,982 1937,1177 1934,1182 1938,1182 1944,1177 1948,1146 1945,972 1946,969 1944,964 1946,808 1945,781 1947,56 1948,51 1940,57 1934)),((33 1212,58 1214,63 1212,95 1217,432 1216,440 1214,446 1216,545 1216,562 1213,568 1216,569 1222,563 1228,549 1225,440 1227,421 1224,414 1226,82 1227,41 1225,29 1227,24 1223,24 1219,33 1212)),((280 1411,355 1413,364 1410,398 1413,696 1411,743 1413,747 1411,1833 1410,1875 1412,1882 1410,2044 1414,2044 1424,1939 1420,1742 1421,1717 1419,1686 1421,1409 1420,1399 1422,1382 1420,1261 1422,1220 1420,1137 1420,1131 1422,1115 1420,397 1422,370 1425,352 1422,294 1422,280 1425,275 1421,275 1416,280 1411)),((789 1092,782 1094,637 1095,609 1093,590 1095,86 1096,62 1095,56 1092,59 1086,69 1084,195 1086,785 1084,792 1088,789 1092)),((37 308,31 312,19 309,-3 309,-3 298,15 300,33 297,38 302,37 308)),((2042 441,1856 437,1112 437,1089 439,760 438,755 440,748 438,539 440,526 438,518 440,511 438,360 439,302 442,297 437,298 432,303 428,337 430,449 428,493 430,550 428,577 430,592 428,1109 429,1148 427,1286 429,1291 427,1520 428,1527 426,1536 428,1834 427,1872 429,1879 427,1882 429,1964 428,2044 431,2042 441)),((484 797,477 800,63 801,55 798,57 791,461 789,484 792,484 797)),((676 1018,862 1019,892 1017,1932 1017,2044 1021,2044 1029,2028 1031,1930 1027,1748 1028,1739 1026,1718 1028,682 1029,671 1028,668 1022,676 1018)),((97 1478,177 1479,179 1485,168 1489,114 1489,111 1487,102 1489,86 1487,83 1482,97 1478)),((33 1939,36 1944,26 1948,-2 1948,-3 1938,33 1939)),((31 1606,97 1610,191 1608,195 1610,243 1610,256 1607,262 1610,263 1617,256 1622,244 1619,75 1620,45 1617,28 1620,24 1612,31 1606)),((2044 768,2035 769,1992 766,1700 766,1683 764,1640 766,1512 764,1494 766,531 766,496 768,351 766,263 768,258 766,211 768,207 766,203 768,67 768,54 766,44 769,38 778,37 865,39 873,37 889,40 927,34 934,28 934,24 930,29 911,28 772,29 761,34 756,259 758,356 756,376 758,1031 755,1049 757,1061 755,1282 756,1295 754,1300 756,1909 755,2044 759,2044 768)),((2044 1490,1934 1486,1281 1485,1259 1487,427 1487,418 1489,413 1487,362 1489,282 1487,209 1488,197 1491,191 1486,192 1481,197 1477,324 1479,472 1478,479 1476,483 1478,760 1477,766 1479,787 1476,1033 1478,1069 1476,1310 1477,1323 1475,1334 1477,1734 1477,1765 1475,1770 1477,1921 1476,2044 1479,2044 1490)),((54 1443,63 1441,82 1446,327 1446,369 1443,373 1445,375 1451,371 1456,363 1458,351 1454,56 1456,51 1449,54 1443)),((172 2004,339 2003,345 2005,346 2010,328 2014,311 2012,172 2013,167 2010,167 2007,172 2004)),((89 724,126 726,132 724,273 724,284 726,286 731,281 734,90 735,84 733,82 728,89 724)),((1749 1878,1711 1880,1148 1881,1074 1879,1009 1881,983 1879,973 1881,642 1880,638 1882,489 1880,425 1883,415 1881,66 1882,59 1881,56 1876,62 1872,128 1873,154 1871,159 1873,174 1871,1738 1869,1749 1871,1753 1869,1812 1869,2044 1873,2044 1882,1749 1878)),((973 329,1001 330,1531 330,1565 328,1648 330,1677 328,1684 330,1699 328,1938 331,1962 329,2044 332,2044 343,1981 340,1717 338,1711 340,1143 339,1102 341,1019 339,973 342,969 334,973 329)),((-3 626,1 614,1 534,7 529,48 527,55 519,56 401,60 396,229 398,566 395,649 397,742 394,783 397,797 395,1827 394,2044 398,2042 408,1836 404,1328 406,1208 404,1203 406,988 405,984 407,977 405,920 407,907 405,655 405,554 407,549 405,531 407,76 408,69 413,66 427,65 533,56 539,23 539,12 546,10 595,12 629,9 637,0 639,-3 637,-3 626)),((10 1118,13 1123,10 1151,10 1180,13 1196,12 1241,21 1249,59 1249,68 1259,66 1339,68 1342,68 1380,66 1386,60 1390,19 1390,2 1393,-3 1390,-3 1382,5 1378,35 1380,51 1377,55 1373,57 1364,56 1341,58 1338,56 1299,58 1293,55 1266,51 1261,44 1259,6 1257,0 1246,2 1224,0 1171,2 1166,0 1162,1 1135,-3 1129,-3 1120,4 1116,10 1118)),((2044 1586,2040 1588,1893 1584,1666 1584,1661 1586,1655 1584,1440 1584,1436 1586,1432 1584,976 1584,966 1586,958 1584,552 1587,475 1585,449 1589,442 1583,447 1575,726 1577,750 1575,1141 1574,1169 1576,1229 1574,1246 1576,1251 1574,1353 1575,1363 1573,1367 1575,1859 1574,2044 1578,2044 1586)),((2044 1556,2040 1554,1915 1553,1910 1551,1892 1553,1718 1552,1715 1550,1708 1552,-3 1554,-3 1544,202 1545,215 1543,457 1544,482 1542,696 1544,1087 1541,1091 1543,1742 1541,1756 1543,1790 1541,1820 1543,1861 1541,2044 1545,2044 1556)),((9 268,9 274,-2 277,-3 266,9 268)),((1364 361,1742 363,1757 361,1922 362,1928 364,1967 362,2043 365,2044 375,1726 371,1363 374,1359 370,1359 365,1364 361)),((90 298,281 298,288 300,289 305,279 309,97 310,83 308,81 303,90 298)),((1211 1935,1913 1935,2044 1938,2044 1948,1959 1945,1569 1944,1547 1946,1207 1946,1199 1941,1211 1935)),((69 2001,85 2004,132 2004,147 2002,151 2006,151 2012,145 2016,128 2013,-3 2012,-3 2002,69 2001)),((29 37,546 35,554 37,641 35,650 38,651 42,647 45,209 46,197 48,126 46,93 48,27 46,25 41,29 37)),((1258 1901,1272 1903,1847 1902,1872 1904,1903 1902,1970 1904,1975 1902,1988 1905,2044 1905,2044 1915,1949 1912,1289 1912,1256 1915,1251 1912,1250 1907,1258 1901)),((1367 1278,1383 1280,1708 1280,1717 1278,1721 1280,1979 1280,2044 1283,2044 1293,1982 1290,1649 1290,1645 1288,1621 1290,1392 1289,1367 1292,1361 1288,1361 1282,1367 1278)),((263 1682,255 1685,104 1686,84 1683,85 1676,253 1674,263 1678,263 1682)),((9 138,11 147,8 173,-3 178,0 124,-3 94,0 78,-3 67,0 59,-3 45,-1 43,-3 25,-1 4,-3 -2,10 -2,9 138)),((155 364,205 363,245 365,277 363,691 364,704 362,713 364,843 362,853 364,1256 362,1260 364,1264 362,1339 362,1347 366,1344 372,1334 373,1067 372,1056 374,1047 372,797 374,745 372,714 374,709 372,702 374,697 372,693 374,687 372,678 374,672 372,663 374,310 373,268 375,248 373,144 374,139 368,155 364)),((8 1742,13 1745,13 1748,-3 1752,-3 1741,8 1742)),((144 1970,150 1973,151 1978,119 1982,106 1980,-3 1981,-3 1970,144 1970)),((1176 1345,1221 1344,1924 1345,2044 1348,2044 1359,2011 1356,1651 1355,1646 1353,1614 1356,1475 1354,1369 1356,1365 1354,1183 1356,1170 1353,1170 1349,1176 1345)),((32 4,1826 1,1847 3,1856 1,2019 3,2044 5,2044 15,1839 11,32 14,26 11,25 7,32 4)),((279 887,315 889,333 886,438 889,877 886,1038 888,1041 886,1911 886,2044 889,2044 900,1917 896,1432 897,1423 895,1404 897,1002 896,956 898,821 896,537 898,526 896,523 898,382 897,339 901,327 898,295 898,279 901,274 897,274 892,279 887)),((1762 699,1070 701,1055 699,1046 701,676 702,630 700,617 702,592 700,561 702,548 700,541 702,512 700,87 702,82 697,86 693,106 691,218 693,236 691,530 692,534 690,645 692,655 690,1832 689,2044 693,2044 703,1762 699)),((1996 1618,1831 1618,1826 1616,1682 1616,1673 1618,1650 1616,1639 1618,1582 1616,1555 1618,1548 1616,1513 1618,1413 1616,1356 1618,794 1617,788 1619,697 1617,295 1620,281 1617,279 1612,283 1609,396 1610,405 1608,569 1610,782 1607,796 1609,1274 1607,1289 1609,1298 1607,1866 1608,1877 1606,1886 1609,1916 1607,2044 1610,2044 1621,1996 1618)),((35 463,40 469,34 473,-3 473,-3 462,35 463)),((594 1215,866 1214,898 1215,904 1221,898 1225,840 1223,835 1225,586 1224,585 1218,594 1215)),((281 952,296 954,729 952,765 954,774 952,788 954,809 952,1301 951,1313 954,1374 952,1384 956,1388 952,1395 960,1396 956,1402 957,1409 952,1412 957,1416 952,1674 951,1695 953,1719 951,1726 953,1756 951,1761 953,1808 951,2044 955,2044 965,1965 962,1537 961,1507 963,1398 962,1396 960,1346 963,1301 961,1292 963,1140 961,988 963,983 961,742 964,586 962,345 963,278 966,274 958,281 952)),((1345 1289,90 1292,84 1289,85 1283,97 1281,121 1283,149 1281,152 1283,165 1281,1342 1279,1348 1283,1345 1289)),((7 1347,12 1354,6 1358,-1 1358,-3 1347,7 1347)),((28 1282,38 1288,40 1354,33 1360,27 1359,24 1355,29 1330,28 1301,20 1293,-3 1292,-3 1281,28 1282)),((1348 1714,1338 1716,978 1715,947 1717,938 1715,912 1717,576 1716,569 1718,544 1716,540 1718,533 1716,452 1717,447 1713,452 1707,525 1706,648 1708,1323 1705,1349 1708,1348 1714)),((37 496,39 502,30 506,-3 506,-3 495,37 496)),((32 201,38 206,28 211,-3 211,-3 200,32 201)),((92 888,259 889,262 895,258 898,145 897,88 899,82 896,82 892,92 888)),((1237 1320,1228 1323,719 1324,694 1322,686 1324,591 1323,586 1325,580 1323,214 1325,191 1323,87 1324,83 1319,86 1315,965 1314,1033 1311,1041 1313,1228 1312,1237 1316,1237 1320)),((12 828,9 844,11 948,8 962,-3 965,-3 948,0 945,1 839,-3 834,-3 824,4 821,12 828)),((65 272,67 313,63 339,48 342,-3 343,-3 331,42 332,54 324,54 283,43 276,27 279,22 271,27 265,60 267,65 272)),((2044 1195,1949 1191,1564 1192,1509 1190,920 1193,759 1191,263 1194,245 1192,239 1194,182 1193,169 1196,163 1190,164 1185,169 1182,322 1184,392 1182,398 1184,407 1182,1479 1180,1482 1182,1629 1182,1637 1180,1676 1182,1694 1180,1703 1182,1920 1181,2044 1184,2044 1195)),((2044 1981,1800 1977,1789 1979,1524 1977,1464 1979,1443 1977,1438 1979,1434 1977,1404 1979,859 1978,853 1980,641 1978,628 1980,407 1979,382 1981,311 1979,183 1980,168 1983,163 1977,169 1969,342 1971,382 1969,394 1971,469 1969,485 1971,523 1969,548 1971,567 1969,932 1970,959 1968,1028 1970,1120 1968,1132 1970,1207 1967,1215 1969,1382 1969,1396 1967,1402 1969,1598 1969,1606 1967,1610 1969,1918 1968,2044 1972,2044 1981)),((232 996,201 998,146 996,89 997,82 993,84 988,226 986,234 990,232 996)),((402 1749,394 1753,385 1750,292 1750,280 1753,275 1748,275 1744,281 1739,339 1741,397 1738,403 1743,402 1749)),((1287 1083,1359 1082,1931 1083,2033 1087,2044 1085,2044 1096,1783 1092,1354 1094,1310 1092,1303 1094,1282 1091,1281 1087,1287 1083)),((1368 1704,1403 1707,1420 1705,1462 1707,1468 1705,1777 1706,1789 1704,1795 1708,1795 1713,1790 1718,1770 1715,1459 1715,1453 1717,1386 1715,1366 1718,1362 1714,1362 1708,1368 1704)),((1204 1837,1343 1836,1935 1837,2044 1841,2044 1849,1925 1848,1921 1846,1905 1848,1884 1846,1286 1846,1204 1847,1199 1840,1204 1837)),((247 965,187 963,131 965,87 964,82 959,88 954,250 953,261 956,263 961,247 965)),((1920 1748,1656 1749,1651 1747,1624 1749,1589 1747,1575 1749,1289 1749,1285 1747,1277 1749,885 1750,874 1748,868 1750,856 1748,850 1750,432 1751,420 1748,418 1744,431 1739,594 1741,638 1739,651 1741,848 1739,858 1741,862 1739,1074 1740,1090 1738,1139 1740,1265 1738,1275 1740,1283 1738,1890 1738,2036 1741,2044 1743,2044 1752,1920 1748)),((40 1585,33 1590,21 1587,-3 1587,-1 1576,35 1575,41 1581,40 1585)),((2044 1686,1875 1682,1821 1684,1787 1682,1351 1684,1287 1682,1182 1684,1093 1682,1009 1685,983 1682,975 1684,866 1684,848 1682,662 1685,656 1683,324 1684,280 1687,275 1682,276 1677,281 1673,303 1675,696 1675,742 1673,746 1675,755 1673,1404 1672,1416 1674,1456 1672,1492 1674,1530 1672,1587 1674,1649 1672,1664 1674,1708 1672,1711 1674,1749 1674,1754 1672,1772 1674,1843 1672,2044 1676,2044 1686)),((39 696,35 704,17 704,11 712,10 792,7 799,-3 801,-3 785,1 776,-1 736,1 698,6 693,33 690,39 696)),((36 1511,42 1518,36 1521,7 1523,-3 1520,-3 1511,36 1511)),((708 821,1670 820,1720 822,1751 820,1755 822,1759 820,2042 823,2044 834,1930 830,1908 832,1903 830,1184 832,1169 830,1123 832,1060 830,1057 832,701 832,695 825,708 821)),((3 987,36 988,39 994,31 997,5 997,-1 994,-1 991,3 987)),((3 1641,11 1643,13 1651,10 1666,22 1678,27 1676,44 1678,56 1675,67 1680,67 1816,70 1832,86 1839,174 1837,179 1841,178 1849,172 1852,162 1849,131 1848,89 1850,64 1847,58 1842,56 1695,49 1686,17 1686,2 1680,2 1658,-3 1654,-2 1644,3 1641)),((1421 918,1433 920,1948 919,1966 922,1968 920,2044 922,2044 932,1819 928,1810 930,1566 928,1420 931,1416 928,1416 922,1421 918)),((727 1771,758 1773,1119 1771,1169 1773,1423 1771,1427 1773,1431 1771,1898 1771,2044 1775,2044 1785,1985 1782,1925 1783,1921 1781,1320 1782,1296 1780,1290 1782,1210 1782,1198 1780,1191 1782,1071 1781,1067 1783,1060 1781,741 1782,727 1785,721 1781,721 1776,727 1771)),((67 1412,141 1414,258 1412,264 1415,264 1419,250 1423,63 1423,56 1420,55 1415,67 1412)),((279 592,476 594,566 592,586 594,591 592,1005 593,1013 591,1183 593,1418 591,1427 593,1431 591,1652 591,1660 593,1665 591,1856 591,2044 595,2044 605,1886 601,1600 602,1591 600,1585 602,1371 601,1361 603,1340 600,1336 602,864 603,811 601,535 602,520 604,351 602,346 604,296 603,278 606,273 598,279 592)),((32 1709,37 1713,39 1722,38 1820,41 1878,32 1885,24 1880,29 1867,28 1725,21 1719,-2 1718,-3 1708,32 1709)),((822 788,1254 788,1263 790,1264 795,1260 798,1107 797,1088 799,923 798,919 800,873 798,862 800,815 799,808 796,808 791,822 788)),((1179 1388,1010 1387,1006 1389,709 1388,687 1390,660 1388,498 1389,490 1391,484 1389,87 1390,82 1385,88 1380,482 1380,486 1378,791 1380,1005 1378,1009 1380,1013 1378,1173 1377,1182 1383,1179 1388)),((2044 114,1925 110,1329 111,1315 109,1270 111,1262 109,1241 111,750 112,735 110,413 113,342 111,305 114,300 109,302 103,307 100,320 102,670 102,705 100,1294 101,1344 99,1410 101,1480 99,1524 101,1550 99,1555 101,1566 99,2044 102,2044 114)),((90 429,272 429,285 432,285 436,278 440,87 440,83 438,82 433,90 429)),((7 1839,13 1845,9 1849,-3 1850,-3 1839,7 1839)),((286 1906,385 1905,425 1902,431 1910,422 1917,391 1913,73 1915,-3 1913,-3 1903,286 1906)),((86 1348,104 1346,245 1348,288 1346,301 1348,595 1347,597 1354,567 1357,511 1355,492 1357,149 1356,93 1358,85 1356,82 1351,86 1348)),((87 856,125 855,131 857,179 854,188 856,281 855,287 857,290 862,283 866,93 866,84 864,82 859,87 856)),((678 832,671 835,657 831,645 833,602 831,76 834,69 839,66 850,68 896,66 923,69 940,66 952,68 1004,65 1025,59 1029,21 1030,12 1038,12 1077,17 1084,37 1084,40 1093,36 1097,11 1096,5 1094,1 1087,0 1047,3 1024,11 1020,47 1019,56 1009,58 866,56 845,58 826,64 821,163 824,438 821,445 823,648 821,658 823,674 820,679 824,678 832)),((87 1807,226 1806,233 1808,235 1813,220 1817,90 1816,84 1813,84 1810,87 1807)),((1339 1150,1346 1148,1974 1149,2044 1152,2044 1162,1925 1158,1711 1159,1703 1157,1687 1159,1619 1157,1348 1159,1336 1154,1339 1150)),((1878 1125,1528 1125,1520 1127,1516 1124,1512 1126,1404 1125,1390 1127,1055 1125,422 1127,417 1122,422 1117,562 1118,580 1116,586 1118,627 1116,1078 1117,1090 1115,1221 1117,1223 1115,1617 1115,1624 1117,1744 1114,1825 1117,1837 1115,2012 1117,2043 1119,2044 1129,1878 1125)),((9 1873,11 1879,-3 1882,-3 1872,9 1873)),((429 1717,424 1720,387 1717,326 1717,308 1720,303 1715,303 1711,310 1706,389 1708,423 1705,431 1711,429 1717)),((7 1315,12 1318,12 1322,-3 1325,-3 1315,7 1315)),((1265 1091,1257 1096,1247 1093,1038 1094,1026 1092,842 1093,808 1096,804 1092,804 1086,810 1082,826 1084,1222 1084,1259 1081,1265 1086,1265 1091)),((850 1509,1928 1509,2044 1512,2044 1521,1880 1518,846 1520,838 1518,836 1513,850 1509)),((288 110,283 112,41 113,31 112,25 108,30 102,263 101,283 102,289 105,288 110)),((47 1117,119 1119,257 1118,262 1123,259 1127,35 1128,29 1125,28 1121,47 1117)),((401 995,394 999,380 996,283 996,251 999,246 994,247 989,252 985,351 987,376 985,380 987,394 984,402 990,401 995)),((1869 568,1175 569,1166 567,1109 570,959 568,701 571,682 569,100 570,86 572,30 571,26 566,32 561,62 560,83 562,89 560,1242 558,1254 560,1333 558,1361 560,1408 558,1710 559,1717 557,1721 559,1898 558,1903 560,2044 562,2044 572,1869 568)),((1203 1376,1219 1379,1225 1377,1247 1379,1292 1377,1469 1379,1473 1377,1824 1377,1916 1379,1928 1377,1931 1379,2042 1381,2044 1391,1870 1387,1796 1389,1789 1387,1307 1387,1198 1390,1194 1386,1194 1381,1203 1376)),((11 1612,11 1618,-3 1619,-3 1610,11 1612)),((306 297,424 299,471 297,479 299,482 297,535 297,546 299,550 297,722 298,730 296,744 298,884 296,941 298,971 296,1896 296,2042 299,2044 311,1960 307,1842 308,1838 306,1469 306,1446 308,1282 306,1249 308,1241 306,1101 306,1083 308,332 308,306 311,302 308,301 302,306 297)),((1506 2033,1520 2035,1828 2034,1840 2036,1898 2034,2044 2038,2044 2045,1502 2045,1500 2040,1506 2033)),((98 495,468 494,481 496,484 502,475 505,96 506,83 504,83 498,98 495)),((1182 1846,1176 1850,1155 1846,1020 1848,1016 1846,1003 1848,695 1847,678 1849,672 1847,302 1848,280 1851,275 1847,276 1841,282 1837,387 1840,402 1838,692 1837,1009 1838,1013 1836,1023 1838,1156 1838,1176 1835,1182 1840,1182 1846)),((38 668,32 670,6 670,-2 666,-1 662,4 659,33 659,40 663,38 668)),((791 797,782 802,771 799,520 799,501 802,497 798,497 792,503 788,639 790,786 787,791 792,791 797)),((1432 1222,1428 1226,1411 1224,945 1224,920 1227,915 1221,916 1217,922 1213,937 1215,1296 1215,1426 1212,1432 1217,1432 1222)),((29 1413,38 1417,40 1421,40 1470,45 1477,64 1481,68 1487,68 1502,75 1509,105 1512,132 1510,154 1512,230 1510,233 1512,628 1511,649 1509,713 1511,815 1508,820 1512,820 1517,815 1522,777 1519,74 1521,64 1519,58 1514,57 1499,52 1491,35 1488,28 1479,30 1464,28 1431,20 1424,-3 1424,-3 1413,29 1413)),((1451 262,1549 265,1573 263,1933 264,2044 267,2044 277,1793 273,1788 275,1645 273,1614 275,1492 273,1446 276,1442 268,1451 262)),((2044 81,1883 77,31 80,25 76,28 70,39 69,248 70,275 68,840 69,919 67,932 69,946 67,1458 68,1534 66,2044 70,2044 81)),((704 166,730 167,735 172,726 177,697 176,694 169,704 166)),((1952 536,1795 536,1792 534,1726 537,1698 535,1566 537,1340 535,1249 537,1242 535,1005 537,999 535,986 537,859 536,855 538,694 536,638 538,630 536,87 538,82 536,81 532,86 528,273 527,285 529,324 527,329 529,355 527,509 528,517 526,678 528,835 526,850 528,858 526,1153 527,1161 525,1180 527,1579 525,1749 527,1760 525,1775 527,1800 525,1824 527,1831 525,1869 527,1878 525,2044 529,2044 539,1952 536)),((84 234,198 232,236 234,259 232,643 232,650 235,650 240,639 243,97 244,83 242,81 237,84 234)),((10 1774,13 1780,5 1784,-3 1784,-3 1774,10 1774))) diff --git a/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpb.wkt b/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpb.wkt deleted file mode 100644 index 2ad56577..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpb.wkt +++ /dev/null @@ -1 +0,0 @@ -MULTIPOLYGON(((1790.3616 2048,1790.3616 0,2048 0,2048 2048,1790.3616 2048))) diff --git a/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpc.wkt b/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpc.wkt deleted file mode 100644 index 84c109c9..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/issue-894/inpc.wkt +++ /dev/null @@ -1 +0,0 @@ -MULTIPOLYGON(((1889 1671,2047 1675,2047 1687,1886 1685,1877 1682,1876 1676,1889 1671)),((1817 723,1821 720,1836 721,1846 716,1847 661,1855 654,2047 659,2047 671,1910 668,1868 670,1863 674,1861 685,1860 728,1850 734,1825 736,1815 731,1817 723)),((70 1265,77 1261,80 1252,86 1246,97 1245,109 1252,113 1263,120 1265,213 1264,228 1267,234 1275,237 1395,234 1536,226 1543,215 1545,126 1544,113 1547,109 1565,111 1574,116 1578,151 1578,158 1583,159 1587,151 1596,35 1596,30 1592,30 1585,38 1579,74 1578,80 1567,80 1551,75 1545,70 1544,0 1545,0 1265,70 1265)),((1739 361,1773 361,1779 366,1775 372,1768 374,1740 373,1735 369,1739 361)),((1853 1180,1924 1179,1944 1181,1947 1183,1947 1189,1940 1193,1862 1193,1851 1191,1848 1184,1853 1180)),((471 330,474 339,482 345,579 344,590 348,597 355,600 413,600 601,597 618,590 623,567 625,481 624,474 630,474 652,483 659,518 658,522 667,520 673,513 676,482 675,473 682,473 700,479 709,573 708,592 711,598 719,601 858,600 978,595 986,586 989,483 988,473 997,471 1003,462 1007,451 1005,441 991,432 988,334 990,327 988,319 978,317 929,319 907,316 881,319 865,317 754,320 716,330 709,429 710,440 707,444 701,444 681,441 677,401 676,394 672,393 665,402 658,432 659,441 656,444 650,445 633,439 624,331 625,320 617,317 600,319 596,316 437,318 428,317 374,320 356,325 348,337 345,433 345,442 340,448 329,454 327,471 330)),((1878 230,1917 229,2046 232,2047 246,1877 242,1872 235,1878 230)),((1876 199,1883 197,2047 200,2047 213,1884 210,1875 208,1872 204,1876 199)),((1770 1803,1798 1802,1805 1803,1809 1811,1803 1816,1773 1815,1766 1811,1766 1807,1770 1803)),((1882 1770,2047 1772,2047 1786,1887 1783,1879 1781,1876 1774,1882 1770)),((1886 852,2047 854,2047 869,1959 865,1881 865,1874 861,1874 857,1886 852)),((1715 98,1770 98,1778 105,1771 111,1730 112,1706 109,1703 107,1703 102,1715 98)),((1742 1934,1804 1933,1825 1934,1833 1940,1830 1945,1820 1947,1754 1947,1740 1945,1738 1938,1742 1934)),((1883 721,2047 724,2047 737,1880 734,1873 730,1873 726,1883 721)),((329 1078,344 1075,434 1075,440 1073,445 1065,442 1043,433 1039,427 1041,398 1039,394 1031,403 1023,518 1023,523 1028,523 1032,518 1039,513 1041,485 1040,475 1046,476 1070,487 1075,562 1073,590 1076,597 1084,596 1094,600 1105,598 1168,593 1175,580 1179,482 1180,472 1195,465 1199,454 1199,448 1196,443 1183,438 1180,332 1179,324 1174,319 1155,318 1121,322 1085,329 1078)),((1887 688,2047 691,2047 705,1885 702,1876 700,1874 693,1887 688)),((1822 1704,1829 1706,1834 1713,1837 1876,1831 1882,1822 1882,1818 1877,1822 1866,1821 1725,1814 1718,1767 1718,1762 1714,1762 1709,1768 1704,1822 1704)),((1939 1640,1960 1639,2047 1642,2047 1655,1948 1653,1936 1651,1933 1644,1939 1640)),((1769 2003,1774 1999,1869 1997,1881 2000,1941 1999,1948 2004,1947 2012,1942 2015,1926 2012,1790 2011,1781 2018,1781 2047,1769 2047,1767 2044,1769 2003)),((1738 493,1754 491,1830 492,1834 495,1830 503,1817 505,1739 504,1734 498,1738 493)),((1904 459,2047 462,2047 475,1904 473,1899 469,1899 463,1904 459)),((1885 294,2047 297,2047 311,1880 308,1873 304,1873 299,1885 294)),((1818 1048,1823 1045,1873 1044,1877 1034,1877 1023,1879 1019,1886 1016,2047 1018,2047 1032,1963 1029,1897 1030,1891 1038,1889 1054,1883 1059,1822 1061,1816 1055,1818 1048)),((1064 0,1065 68,1063 80,1065 103,1063 115,1065 126,1063 129,1065 134,1063 232,1065 256,1063 262,1065 282,1063 299,1065 350,1063 385,1065 393,1063 397,1065 422,1063 429,1065 437,1063 457,1065 469,1064 563,1066 566,1064 577,1066 620,1064 623,1064 728,1066 733,1064 740,1066 746,1064 814,1066 852,1064 857,1067 862,1064 885,1066 888,1064 932,1066 943,1064 975,1067 993,1064 1004,1067 1008,1067 1019,1064 1033,1066 1036,1064 1100,1066 1126,1064 1131,1067 1158,1065 1304,1067 1334,1064 1359,1067 1377,1064 1465,1067 1469,1066 1545,1068 1550,1066 1557,1068 1586,1066 1591,1067 1832,1065 1837,1068 1861,1066 2034,1068 2038,1066 2043,1068 2047,1047 2047,1045 2025,1047 2003,1044 1994,1046 1933,1044 1926,1047 1917,1045 1852,1047 1835,1044 1823,1047 1812,1045 1716,1047 1703,1044 1686,1047 1672,1044 1658,1046 1594,1044 1584,1047 1530,1044 1489,1046 1476,1044 1457,1046 1445,1044 1279,1046 1260,1044 1247,1046 1225,1044 1213,1046 1206,1044 1179,1046 1163,1044 1154,1045 1089,1043 1086,1045 1073,1043 843,1045 827,1042 811,1045 731,1042 707,1045 690,1042 639,1045 616,1042 571,1045 562,1042 539,1045 520,1042 475,1044 456,1042 441,1044 429,1042 229,1044 213,1042 198,1044 188,1042 164,1044 145,1042 130,1044 112,1042 99,1044 77,1042 64,1044 44,1041 0,1064 0)),((1743 1343,1797 1343,1806 1346,1807 1353,1796 1357,1742 1356,1735 1350,1743 1343)),((1881 1311,2047 1314,2047 1327,1883 1324,1875 1320,1875 1316,1881 1311)),((1712 33,1768 32,1777 36,1777 41,1772 45,1717 46,1704 43,1702 38,1712 33)),((1824 590,2018 591,2047 593,2047 606,1967 603,1827 603,1819 600,1817 595,1824 590)),((1820 1605,1829 1602,1877 1606,2047 1609,2047 1623,2013 1620,1824 1618,1818 1614,1817 1610,1820 1605)),((1741 1540,2047 1542,2047 1557,1933 1553,1745 1553,1736 1549,1736 1544,1741 1540)),((1884 426,2047 429,2047 443,1963 439,1884 440,1876 438,1873 432,1884 426)),((1823 1209,1831 1208,1892 1213,2047 1215,2047 1229,1992 1226,1946 1227,1942 1225,1933 1227,1873 1226,1848 1223,1826 1225,1817 1221,1817 1214,1823 1209)),((1740 1408,1826 1409,1832 1412,1835 1418,1836 1468,1840 1473,1856 1475,1860 1478,1864 1498,1871 1505,1889 1508,2045 1510,2047 1524,1859 1519,1850 1512,1848 1495,1843 1489,1830 1488,1822 1483,1820 1430,1815 1424,1767 1421,1738 1423,1734 1420,1734 1413,1740 1408)),((2047 410,1914 406,1867 408,1862 413,1861 529,1857 535,1851 537,1815 538,1807 542,1805 612,1807 625,1804 634,1799 637,1789 634,1788 626,1792 620,1791 559,1794 529,1800 525,1837 524,1846 518,1846 412,1849 395,1865 391,1881 394,1963 393,2047 397,2047 410)),((1789 387,1792 362,1808 358,1867 358,1881 361,1911 360,1915 363,1916 371,1911 375,1855 372,1809 374,1805 382,1805 419,1811 425,1827 425,1832 430,1832 436,1828 440,1798 438,1793 435,1789 387)),((1881 885,1906 884,2047 888,2047 901,1881 898,1874 894,1874 890,1881 885)),((1825 98,2007 99,2047 102,2047 115,1928 111,1837 112,1820 110,1816 104,1825 98)),((1850 1931,1908 1935,2047 1937,2047 1950,1984 1947,1857 1947,1847 1944,1845 1936,1850 1931)),((1933 622,2047 625,2047 639,1969 636,1935 638,1928 634,1927 629,1933 622)),((1459 0,1458 37,1461 61,1459 200,1461 204,1459 209,1461 213,1459 223,1461 227,1459 238,1462 255,1459 305,1461 309,1460 527,1462 537,1460 561,1462 566,1460 584,1462 600,1460 605,1462 645,1460 648,1462 651,1460 737,1462 749,1460 752,1462 765,1460 767,1462 781,1460 792,1462 795,1462 853,1460 859,1462 870,1460 874,1462 927,1460 949,1463 1033,1461 1043,1462 1122,1460 1125,1463 1156,1462 1210,1464 1213,1461 1219,1463 1277,1460 1281,1463 1311,1461 1315,1463 1319,1463 1350,1461 1352,1463 1356,1463 1418,1461 1446,1464 1457,1462 1462,1463 1532,1461 1536,1464 1542,1462 1567,1464 1589,1461 1593,1464 1656,1462 1660,1464 1671,1462 1674,1464 1692,1462 1725,1464 1729,1462 1771,1464 1774,1462 1779,1464 1782,1462 1795,1464 1799,1462 1823,1464 1833,1462 1847,1464 1860,1462 1879,1464 1890,1463 2047,1400 2047,1399 2022,1402 2018,1400 1951,1403 1932,1400 1915,1402 1880,1400 1873,1403 1865,1400 1860,1402 1765,1399 1711,1402 1677,1399 1663,1399 1639,1402 1608,1400 1568,1403 1565,1400 1562,1399 1551,1401 1547,1399 1479,1401 1425,1399 1408,1402 1395,1399 1370,1401 1186,1399 1163,1401 1155,1399 1152,1400 1091,1398 1089,1401 1066,1399 1064,1400 984,1398 978,1401 976,1397 959,1400 947,1398 880,1400 877,1398 873,1399 762,1397 747,1400 739,1397 698,1399 691,1397 683,1399 674,1397 656,1399 649,1397 476,1399 449,1397 395,1399 390,1397 364,1399 360,1397 346,1399 341,1397 324,1399 314,1397 289,1399 266,1397 264,1398 213,1396 208,1399 182,1397 180,1398 141,1396 138,1398 124,1397 0,1459 0)),((1963 1180,2045 1182,2047 1196,1981 1193,1963 1195,1959 1193,1957 1185,1963 1180)),((1744 1835,1795 1835,1806 1837,1809 1844,1799 1849,1742 1848,1736 1840,1744 1835)),((70 1821,79 1815,83 1806,101 1803,107 1807,114 1819,120 1821,174 1819,228 1822,234 1833,236 1859,235 2047,0 2047,0 1821,70 1821)),((1907 1050,1921 1048,2047 1051,2047 1066,2012 1063,1912 1062,1904 1060,1902 1056,1907 1050)),((1772 262,1798 262,1805 266,1805 271,1794 275,1770 275,1761 268,1772 262)),((1861 275,1861 329,1856 338,1844 341,1771 342,1760 339,1760 331,1766 327,1833 328,1841 326,1846 320,1845 281,1838 275,1819 276,1815 271,1815 266,1823 261,1852 262,1858 266,1861 275)),((1829 130,2031 133,2047 135,2047 148,1941 144,1829 145,1820 143,1817 134,1829 130)),((1552 0,1553 131,1550 136,1553 145,1552 243,1554 249,1552 414,1554 488,1552 496,1554 512,1552 521,1554 569,1552 584,1554 587,1553 742,1555 764,1553 777,1555 782,1553 788,1555 846,1553 880,1555 886,1553 891,1555 914,1553 956,1555 966,1553 973,1556 981,1553 1006,1556 1045,1554 1049,1555 1094,1552 1103,1555 1108,1554 1287,1556 1326,1554 1332,1556 1356,1554 1361,1557 1376,1555 1394,1557 1810,1555 1832,1557 1858,1555 1865,1557 1869,1555 1878,1557 1883,1555 1895,1557 1916,1555 1953,1557 1958,1555 1974,1557 2042,1555 2047,1479 2047,1477 2041,1480 1997,1478 1995,1479 1949,1477 1944,1480 1930,1477 1872,1479 1845,1477 1841,1480 1812,1477 1783,1479 1726,1477 1723,1480 1715,1477 1688,1480 1675,1477 1667,1479 1660,1477 1640,1480 1633,1477 1626,1480 1619,1477 1615,1479 1598,1477 1582,1480 1554,1477 1528,1479 1479,1477 1473,1478 1400,1476 1396,1478 1360,1476 1357,1478 1352,1475 1347,1478 1340,1476 1332,1478 1162,1476 1126,1478 1115,1475 1105,1477 1102,1478 1022,1476 1009,1478 992,1475 951,1477 945,1475 941,1477 937,1477 869,1475 865,1477 852,1475 838,1477 832,1475 829,1477 797,1474 778,1477 762,1475 758,1477 702,1475 697,1478 655,1475 639,1477 614,1474 570,1476 538,1474 531,1477 523,1474 503,1477 469,1474 400,1476 390,1474 313,1476 267,1474 262,1476 256,1473 241,1476 215,1474 106,1476 83,1474 0,1552 0)),((347 1633,351 1630,357 1632,397 1629,435 1630,444 1624,450 1614,457 1612,470 1613,481 1629,590 1631,598 1637,600 1644,601 1693,598 1726,593 1731,583 1734,484 1734,479 1736,475 1752,477 1763,485 1769,519 1769,524 1777,523 1781,516 1786,401 1786,395 1781,395 1776,399 1771,409 1768,435 1769,445 1762,444 1739,438 1734,351 1735,326 1730,320 1708,321 1648,327 1635,347 1633)),((838 0,835 100,838 137,834 164,837 169,839 193,837 203,839 205,839 233,836 237,839 245,837 284,845 294,849 292,863 297,879 295,883 299,883 304,879 308,846 311,838 320,840 432,842 436,840 440,840 506,842 511,838 566,841 571,838 579,839 716,837 720,840 723,842 842,840 1016,848 1022,879 1024,885 1030,881 1038,845 1042,840 1053,842 1064,838 1179,841 1196,839 1265,843 1354,841 1469,843 1485,840 1500,842 1567,840 1589,842 1593,840 1609,837 1613,840 1615,838 1624,841 1630,839 1645,842 1656,840 1680,843 1740,840 1751,841 1761,848 1768,879 1769,886 1775,886 1779,880 1784,848 1786,841 1794,844 1979,841 2047,686 2047,685 1860,690 1829,697 1822,714 1820,806 1818,810 1812,811 1796,806 1786,768 1785,761 1781,762 1773,767 1769,801 1768,810 1762,811 1747,806 1735,801 1733,717 1734,695 1731,688 1722,685 1686,687 1638,696 1631,713 1629,803 1629,810 1618,810 1601,804 1595,606 1597,594 1595,589 1597,447 1594,415 1596,402 1593,398 1587,399 1582,410 1577,437 1578,442 1575,446 1568,444 1547,433 1543,333 1544,324 1540,320 1530,318 1360,321 1273,330 1266,436 1264,442 1260,449 1247,466 1245,473 1250,476 1260,483 1264,573 1263,590 1266,598 1278,601 1309,602 1478,599 1536,591 1542,575 1544,481 1544,475 1555,476 1572,479 1576,486 1578,501 1576,516 1578,531 1576,539 1578,560 1576,804 1577,809 1572,810 1549,804 1543,696 1542,688 1536,685 1525,683 1381,686 1321,684 1308,687 1302,685 1285,688 1275,697 1267,713 1265,723 1268,724 1265,800 1264,805 1261,809 1253,808 1184,805 1180,700 1178,690 1172,686 1164,684 1138,686 1084,693 1077,702 1075,805 1072,809 1065,810 1047,804 1040,764 1039,759 1031,763 1025,771 1022,804 1022,810 1013,809 996,802 988,699 988,689 984,685 975,683 740,685 720,691 713,700 710,798 709,803 707,808 700,806 649,808 634,801 624,703 624,690 621,685 613,682 563,684 363,688 352,699 346,802 343,808 336,808 317,803 311,765 310,759 306,758 302,762 295,767 293,802 292,808 285,807 262,801 258,715 259,693 256,686 248,682 193,688 161,707 155,738 156,751 153,801 152,807 145,806 75,800 69,706 69,689 66,684 59,681 0,838 0)),((1821 33,1831 32,2047 36,2047 49,1827 46,1819 44,1815 38,1821 33)),((1937 362,2047 363,2047 377,1934 373,1930 366,1937 362)),((1878 263,2047 265,2047 278,1893 276,1877 274,1873 267,1878 263)),((1827 1114,2047 1117,2047 1130,1827 1127,1821 1123,1820 1118,1827 1114)),((1741 1311,1752 1310,1803 1311,1808 1318,1798 1324,1752 1324,1738 1322,1735 1315,1741 1311)),((1742 458,1820 458,1834 463,1832 470,1818 472,1746 472,1737 470,1733 466,1742 458)),((1802 982,1825 982,1832 984,1835 991,1825 996,1795 996,1791 992,1791 987,1802 982)),((1806 88,1803 168,1797 175,1764 178,1759 174,1759 168,1762 165,1782 163,1789 157,1791 111,1790 0,1805 0,1806 88)),((1741 426,1773 426,1778 429,1779 434,1769 439,1737 438,1733 430,1741 426)),((1855 1868,2047 1871,2047 1884,1872 1882,1853 1880,1849 1873,1855 1868)),((1854 786,2047 790,2047 802,1854 800,1847 796,1846 792,1854 786)),((1858 1408,2047 1412,2047 1425,1973 1422,1867 1423,1852 1421,1846 1414,1858 1408)),((598 0,597 60,593 66,584 69,482 68,476 71,473 94,476 100,480 103,517 104,520 114,518 118,511 121,397 120,393 116,393 110,401 103,434 103,441 99,443 77,441 72,435 68,344 70,324 67,319 60,317 48,316 0,598 0)),((1346 0,1345 39,1348 79,1345 99,1347 220,1345 233,1348 285,1345 342,1348 384,1345 439,1347 458,1345 461,1348 478,1346 484,1348 632,1346 646,1349 668,1348 715,1346 717,1348 824,1346 829,1349 854,1347 864,1349 889,1347 894,1349 1070,1347 1086,1349 1090,1347 1093,1349 1097,1347 1102,1349 1109,1347 1121,1349 1127,1347 1154,1349 1165,1347 1177,1349 1220,1347 1237,1349 1239,1349 1269,1347 1273,1349 1328,1347 1332,1350 1351,1347 1375,1350 1397,1347 1403,1350 1429,1347 1448,1350 1476,1347 1509,1350 1551,1348 1558,1350 1595,1348 1655,1351 1669,1348 1674,1350 1678,1348 1898,1350 1900,1350 1928,1347 1931,1350 1943,1349 2047,1080 2047,1081 1934,1078 1923,1081 1914,1078 1837,1080 1695,1078 1632,1080 1629,1077 1568,1080 1563,1078 1379,1080 1361,1077 1354,1080 1315,1077 1268,1079 1265,1078 1175,1080 1167,1077 1143,1079 910,1077 884,1079 881,1076 854,1078 849,1076 828,1078 819,1076 563,1078 549,1076 527,1078 503,1076 499,1076 326,1078 318,1076 314,1078 307,1076 283,1078 267,1076 260,1078 257,1075 207,1077 199,1075 187,1077 173,1076 0,1346 0)),((1807 1781,1797 1783,1769 1782,1765 1778,1765 1774,1770 1770,1796 1769,1804 1770,1809 1774,1807 1781)),((1741 393,1771 393,1778 397,1778 402,1773 406,1741 406,1735 404,1733 399,1741 393)),((1883 1475,1960 1475,1975 1478,1976 1485,1963 1489,1888 1488,1878 1485,1876 1479,1883 1475)),((1999 1837,2047 1838,2047 1852,1999 1850,1990 1846,1990 1841,1999 1837)),((1770 130,1776 136,1775 142,1768 146,1737 144,1726 146,1721 154,1720 173,1722 196,1720 349,1723 380,1721 388,1723 395,1722 512,1724 518,1731 524,1772 526,1776 533,1778 566,1776 719,1778 750,1771 766,1758 767,1752 771,1749 799,1751 1268,1755 1275,1765 1278,1824 1278,1831 1282,1834 1297,1835 1348,1833 1355,1828 1358,1822 1358,1817 1354,1821 1329,1821 1301,1815 1293,1744 1290,1739 1286,1737 1278,1736 781,1739 758,1744 754,1757 753,1764 745,1763 666,1766 603,1764 598,1765 561,1761 542,1749 537,1724 537,1714 533,1709 523,1708 158,1713 134,1725 131,1770 130)),((1821 0,2047 3,2047 16,1964 13,1837 14,1820 12,1816 6,1821 0)),((103 330,109 340,117 345,202 344,226 347,231 354,233 365,235 452,234 610,232 618,221 625,118 624,108 632,108 654,117 659,150 658,157 663,156 671,148 677,127 675,117 676,108 683,109 704,113 709,127 711,216 709,226 711,231 716,235 747,234 936,236 946,234 979,230 986,220 990,118 989,110 995,106 1004,100 1007,83 1004,78 993,71 989,0 991,0 710,63 711,73 709,78 703,79 687,73 677,32 676,27 667,38 658,75 658,79 650,79 632,73 625,0 626,0 345,69 346,76 341,81 331,89 328,103 330)),((1377 0,1375 49,1378 55,1376 236,1378 267,1376 280,1378 310,1376 323,1378 346,1376 368,1378 397,1376 402,1378 415,1376 424,1378 433,1376 449,1377 583,1379 586,1377 590,1379 633,1377 642,1379 646,1377 657,1379 667,1376 685,1378 710,1376 714,1379 743,1377 750,1379 814,1377 834,1379 839,1377 844,1379 875,1377 878,1379 883,1377 888,1379 919,1377 924,1380 955,1377 1115,1380 1137,1378 1263,1380 1270,1378 1281,1380 1286,1377 1315,1380 1343,1378 1446,1381 1452,1378 1496,1380 1499,1379 1643,1381 1659,1379 1662,1381 1752,1379 1782,1382 1788,1379 1798,1381 2016,1379 2044,1381 2047,1364 2047,1366 2013,1363 1980,1366 1929,1364 1835,1366 1819,1364 1817,1365 1749,1363 1746,1366 1727,1364 1724,1363 1369,1365 1358,1363 1355,1364 1202,1362 1197,1365 1120,1361 1063,1364 1059,1362 1049,1364 967,1362 926,1364 917,1362 889,1364 885,1361 873,1363 870,1361 689,1363 677,1361 674,1363 663,1361 657,1364 632,1362 628,1363 580,1360 575,1363 558,1361 546,1363 540,1360 530,1363 501,1361 491,1363 483,1361 475,1363 441,1361 439,1361 392,1363 388,1361 385,1361 291,1363 270,1361 267,1362 191,1360 185,1362 173,1360 156,1362 148,1360 132,1362 119,1360 103,1361 0,1377 0)),((1886 524,2047 527,2047 540,1879 537,1872 532,1872 529,1886 524)),((1882 1803,2004 1803,2031 1806,2036 1813,2024 1818,1887 1816,1879 1814,1876 1808,1882 1803)),((1879 1705,2047 1707,2047 1720,1888 1718,1878 1715,1876 1708,1879 1705)),((1746 623,1750 629,1749 730,1744 735,1732 732,1732 725,1736 719,1737 683,1735 677,1738 640,1732 627,1739 622,1746 623)),((1886 491,2047 494,2047 508,1880 505,1874 501,1874 495,1886 491)),((1737 1477,1744 1474,1803 1475,1810 1479,1804 1487,1766 1489,1741 1487,1735 1481,1737 1477)),((1859 1573,2047 1576,2047 1589,1865 1586,1852 1584,1848 1578,1859 1573)),((1821 1177,1822 1151,1825 1147,1832 1145,2047 1150,2047 1163,1843 1158,1835 1166,1835 1189,1829 1194,1822 1194,1817 1188,1821 1177)),((1719 559,1722 563,1721 659,1723 664,1721 900,1723 912,1721 921,1724 1239,1722 1264,1725 1325,1725 1413,1723 1417,1725 1422,1726 1522,1723 1651,1725 1927,1723 1932,1726 1955,1724 2047,1711 2047,1711 1987,1713 1982,1711 1979,1711 1943,1713 1936,1711 1932,1712 1845,1710 1841,1712 1829,1710 1823,1713 1816,1711 1770,1713 1768,1710 1757,1712 1651,1710 1648,1710 1611,1712 1608,1709 1596,1711 1592,1708 1551,1708 1425,1711 1364,1708 1268,1710 1229,1707 1223,1706 1202,1710 1167,1708 1159,1710 1049,1708 1024,1710 1003,1708 998,1711 952,1708 919,1710 911,1708 828,1710 796,1708 778,1710 775,1708 769,1711 756,1709 754,1709 687,1711 683,1708 677,1710 673,1708 595,1710 575,1704 566,1705 561,1710 557,1719 559)),((1887 327,2047 331,2047 344,1883 341,1875 339,1873 332,1887 327)),((1799 1638,1806 1642,1807 1663,1813 1670,1850 1671,1860 1674,1863 1679,1865 1828,1872 1834,1890 1836,1954 1837,1965 1835,1976 1841,1974 1849,1963 1851,1863 1848,1853 1843,1850 1836,1851 1747,1848 1692,1842 1685,1808 1685,1798 1682,1794 1677,1794 1657,1789 1647,1792 1640,1799 1638)),((1886 1278,2047 1281,2047 1294,1891 1292,1878 1290,1875 1283,1886 1278)),((1736 198,1824 196,1831 198,1833 203,1829 208,1815 210,1748 210,1737 208,1734 201,1736 198)),((72 154,81 140,97 137,107 144,109 151,115 155,194 154,222 157,229 164,232 180,233 228,230 251,223 258,203 261,120 259,112 262,108 267,110 290,118 294,147 293,152 295,156 304,147 312,32 311,27 303,35 295,73 292,77 287,77 267,69 260,0 260,0 156,72 154)),((1882 983,1976 983,2024 985,2031 987,2034 992,2031 996,2023 998,1901 997,1878 995,1875 987,1882 983)),((1968 2001,2047 2003,2047 2016,1974 2014,1965 2012,1962 2006,1968 2001)),((72 1075,77 1070,78 1045,72 1040,32 1040,29 1030,36 1024,150 1023,157 1029,157 1034,152 1040,147 1042,115 1041,110 1045,108 1054,111 1071,117 1075,204 1073,222 1075,229 1079,235 1093,233 1096,234 1168,230 1175,218 1180,141 1182,120 1180,112 1184,106 1197,92 1200,83 1197,78 1185,71 1181,0 1181,0 1075,72 1075)),((1856 1081,2047 1084,2047 1097,1866 1095,1851 1093,1847 1086,1856 1081)),((1796 2034,1814 2032,2047 2036,2047 2047,1813 2047,1795 2044,1792 2038,1796 2034)),((1819 67,1829 65,2047 68,2047 81,1833 79,1820 77,1817 70,1819 67)),((1989 1477,1999 1475,2047 1478,2047 1490,1992 1491,1986 1487,1985 1482,1989 1477)),((1766 1900,1772 1898,2047 1904,2047 1917,1892 1913,1883 1915,1856 1912,1781 1911,1769 1913,1762 1909,1766 1900)),((1853 1636,1885 1639,1913 1638,1918 1641,1919 1649,1913 1654,1871 1653,1849 1650,1845 1643,1853 1636)),((1708 0,1768 0,1777 4,1777 9,1769 13,1711 13,1702 6,1708 0)),((601 1834,599 1839,602 1891,602 2015,599 2047,319 2047,319 1853,321 1833,326 1823,393 1819,433 1821,443 1817,449 1805,464 1802,471 1805,476 1815,483 1820,573 1819,587 1820,596 1825,601 1834)),((1846 1441,1852 1438,1882 1442,2047 1445,2047 1459,1963 1455,1853 1455,1844 1447,1846 1441)),((1889 1343,2047 1346,2047 1360,1887 1357,1878 1355,1875 1348,1889 1343)),((1735 264,1737 235,1743 230,1841 227,1846 220,1846 175,1852 166,1870 163,2047 167,2047 180,1867 178,1860 188,1860 235,1855 241,1759 242,1750 249,1749 286,1754 293,1826 294,1832 300,1829 308,1750 308,1738 302,1735 264)),((1794 656,1804 654,1834 657,1836 661,1832 667,1825 669,1797 669,1790 664,1794 656)),((1807 1878,1799 1881,1742 1881,1737 1876,1737 1872,1744 1868,1788 1867,1804 1869,1808 1873,1807 1878)),((1833 692,1833 697,1829 702,1810 703,1806 708,1804 792,1798 799,1782 802,1778 808,1777 917,1779 924,1772 932,1765 932,1760 922,1765 914,1764 799,1766 791,1785 785,1791 779,1792 738,1790 732,1794 692,1801 688,1828 687,1833 692)),((1821 910,1820 760,1823 754,1832 751,1860 751,1887 754,2047 757,2047 770,1951 767,1881 768,1843 765,1834 771,1835 806,1832 838,1834 925,1826 932,1821 932,1816 927,1821 910)),((1744 1376,1771 1376,1777 1378,1780 1384,1774 1389,1745 1390,1737 1387,1736 1381,1744 1376)),((1742 1967,1751 1966,1944 1968,1949 1975,1944 1980,1758 1981,1738 1977,1737 1971,1742 1967)),((1878 951,2046 953,2047 968,2019 965,1880 963,1875 959,1875 954,1878 951)),((1716 65,1765 65,1776 68,1778 73,1773 78,1718 79,1706 77,1703 70,1716 65)),((233 0,233 56,231 63,225 69,219 70,121 69,112 71,108 76,109 99,116 103,151 104,156 113,146 122,33 121,28 118,27 112,33 105,70 103,78 94,78 75,71 70,0 71,0 0,233 0)),((1967 1967,2047 1970,2047 1983,1963 1982,1959 1979,1958 1973,1967 1967)),((1802 1455,1795 1456,1789 1454,1743 1455,1736 1451,1736 1446,1741 1442,1790 1441,1803 1443,1809 1449,1802 1455)),((1834 1575,1835 1582,1828 1588,1799 1585,1762 1586,1753 1593,1751 1704,1753 1797,1751 1813,1739 1817,1735 1814,1734 1807,1739 1800,1739 1717,1737 1710,1739 1706,1739 1614,1737 1609,1740 1579,1743 1575,1750 1573,1829 1572,1834 1575)),((1831 622,1912 623,1918 628,1918 632,1911 636,1828 636,1820 632,1819 627,1831 622)),((233 1647,235 1699,233 1726,228 1732,220 1735,199 1736,118 1735,112 1739,109 1753,111 1765,116 1769,139 1768,155 1771,158 1775,157 1782,150 1787,34 1786,29 1779,35 1771,51 1768,68 1769,78 1765,81 1753,78 1738,72 1734,0 1736,0 1631,72 1630,79 1625,85 1615,98 1612,108 1617,113 1628,121 1630,182 1629,228 1635,233 1647)),((2047 988,2047 999,2044 996,2045 988,2047 988)),((330 157,349 154,435 154,440 151,447 139,452 137,468 138,474 150,480 154,583 155,593 160,597 172,596 245,591 255,582 259,486 259,478 261,473 269,475 290,479 293,517 294,521 305,513 311,399 311,393 306,393 300,403 293,436 293,442 288,444 272,442 264,434 258,329 259,319 249,317 232,319 217,318 177,322 173,322 162,330 157)),((1830 1520,1794 1521,1747 1520,1738 1518,1735 1513,1738 1509,1746 1507,1823 1506,1834 1509,1837 1515,1830 1520)),((1880 1246,2047 1248,2047 1261,1880 1258,1875 1255,1875 1250,1880 1246)),((1880 918,1898 917,2047 921,2047 934,1881 931,1875 927,1874 923,1880 918)),((2047 835,1871 833,1863 838,1861 857,1862 1017,1853 1028,1817 1029,1807 1034,1806 1072,1808 1077,1815 1081,1828 1080,1835 1089,1828 1096,1803 1095,1797 1092,1793 1083,1792 1060,1793 1024,1796 1019,1801 1016,1839 1015,1848 1007,1848 830,1853 819,1867 817,1883 820,2047 822,2047 835)),((1769 1606,1801 1606,1807 1610,1807 1616,1803 1619,1770 1619,1766 1617,1764 1611,1769 1606)),((1828 557,1850 556,2047 560,2047 573,1825 570,1818 566,1818 561,1828 557)),((1885 1737,2047 1740,2047 1753,1882 1750,1876 1746,1876 1742,1885 1737)),((1807 1748,1798 1750,1773 1750,1764 1746,1765 1740,1769 1737,1794 1736,1809 1741,1807 1748)),((1804 1115,1807 1120,1808 1238,1818 1245,1855 1246,1863 1254,1862 1367,1864 1371,1861 1385,1851 1390,1795 1391,1789 1385,1790 1379,1796 1375,1837 1376,1849 1368,1850 1299,1847 1264,1835 1258,1800 1257,1793 1250,1793 1141,1788 1121,1795 1113,1804 1115)),((1804 821,1806 827,1806 951,1801 961,1783 965,1778 976,1780 984,1777 1049,1779 1122,1773 1128,1765 1128,1761 1124,1761 1118,1765 1108,1765 961,1769 952,1787 948,1792 940,1793 841,1788 825,1793 818,1799 818,1804 821)),((1880 1377,2045 1379,2047 1392,1887 1390,1876 1387,1875 1381,1880 1377))) diff --git a/rust/sedona-geo-test-fixtures/fixtures/louisiana.wkt b/rust/sedona-geo-test-fixtures/fixtures/louisiana.wkt deleted file mode 100644 index 159adb47..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/louisiana.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(-94.043147 32.69303,-94.043147 32.693031,-94.042947 32.767991,-94.043027 32.776863,-94.042938 32.780558,-94.042829 32.785277,-94.042747 32.786973,-94.043026 32.797476,-94.042785 32.871486,-94.043025 32.880446,-94.042886 32.880965,-94.042886 32.881089,-94.042859 32.892771,-94.042885 32.898911,-94.043092 32.910021,-94.043067 32.937903,-94.043088 32.955592,-94.042964 33.019219,-94.041444 33.019188,-94.035839 33.019145,-94.027983 33.019139,-94.024475 33.019207,-93.814553 33.019372,-93.80493 33.019347,-93.531499 33.018643,-93.524916 33.018637,-93.520994 33.018616,-93.520971 33.018616,-93.490893 33.018442,-93.49052 33.018442,-93.489506 33.018443,-93.467042 33.018611,-93.377134 33.018234,-93.340353 33.018337,-93.308398 33.018179,-93.308181 33.018156,-93.238607 33.017992,-93.197402 33.017951,-93.154351 33.017856,-93.101443 33.01774,-93.100981 33.017786,-93.081428 33.017928,-93.073167 33.017898,-93.070686 33.017792,-92.988708 33.017298,-92.971137 33.017192,-92.946553 33.016807,-92.86751 33.016062,-92.854167 33.016132,-92.844286 33.01607,-92.844073 33.016034,-92.830798 33.015661,-92.733197 33.014347,-92.724994 33.014351,-92.724743 33.014347,-92.723553 33.014328,-92.715884 33.014398,-92.711289 33.014307,-92.503776 33.012161,-92.501383 33.01216,-92.469762 33.01201,-92.37029 33.010717,-92.362865 33.010628,-92.335893 33.010349,-92.292664 33.010103,-92.222825 33.00908,-92.069105 33.008163,-91.951958 33.007428,-91.950001 33.00752,-91.62667 33.006639,-91.617615 33.006717,-91.609001 33.006556,-91.579802 33.006518,-91.579639 33.006472,-91.572326 33.006908,-91.559494 33.00684,-91.46037 33.006246,-91.435782 33.006099,-91.425466 33.006016,-91.376016 33.005794,-91.333011 33.005529,-91.329767 33.005421,-91.326396 33.005376,-91.325037 33.005364,-91.322506 33.005341,-91.312016 33.005262,-91.284398 33.005007,-91.265018 33.005084,-91.166073 33.004106,-91.201842 32.961212,-91.214027 32.93032,-91.212837 32.922104,-91.208263 32.915354,-91.196785 32.906784,-91.175405 32.899998,-91.159975 32.899879,-91.145076 32.905494,-91.134041 32.917676,-91.132115 32.923122,-91.130947 32.963815,-91.138585 32.971352,-91.134414 32.980533,-91.125107 32.984669,-91.106581 32.988938,-91.094265 32.984371,-91.086802 32.976266,-91.063974 32.924113,-91.063809 32.903709,-91.070602 32.888659,-91.086683 32.873392,-91.105631 32.858396,-91.116091 32.855641,-91.127886 32.855059,-91.145002 32.84287,-91.158336 32.822304,-91.161669 32.812465,-91.164397 32.785821,-91.165328 32.751301,-91.163389 32.747009,-91.154461 32.742339,-91.123152 32.742798,-91.077176 32.732534,-91.060766 32.727494,-91.054481 32.722259,-91.057043 32.712576,-91.063946 32.702926,-91.076061 32.693751,-91.098762 32.685291,-91.118258 32.674075,-91.152081 32.641508,-91.153821 32.631282,-91.151318 32.615919,-91.146204 32.604144,-91.141148 32.597209,-91.127912 32.586493,-91.119854 32.584795,-91.104111 32.584657,-91.096774 32.576652,-91.090771 32.563978,-91.090611 32.562705,-91.089436 32.553306,-91.093741 32.549128,-91.097878 32.544752,-91.116708 32.500139,-91.116008 32.48314,-91.108808 32.47204,-91.095308 32.458741,-91.070207 32.445141,-91.052907 32.438442,-91.029606 32.433542,-90.99408 32.403862,-91.004506 32.368144,-91.003506 32.362145,-91.000106 32.357695,-90.986672 32.35176,-90.912363 32.339454,-90.901511 32.337864,-90.898588 32.329094,-90.905173 32.315497,-91.004557 32.215381,-91.006306 32.22415,-91.021507 32.236149,-91.039007 32.242349,-91.046507 32.241149,-91.122602 32.216929,-91.133587 32.213432,-91.158026 32.201956,-91.164171 32.196888,-91.171046 32.176526,-91.174552 32.154978,-91.171702 32.14425,-91.165452 32.13429,-91.162822 32.132694,-91.131403 32.126213,-91.067004 32.132144,-91.057487 32.135515,-91.052342 32.137337,-91.046615 32.138768,-91.040531 32.137337,-91.034447 32.134832,-91.030152 32.129821,-91.026931 32.123737,-91.027125 32.120434,-91.027535 32.113431,-91.027946 32.112722,-91.034707 32.101053,-91.128009 31.985857,-91.248144 31.869848,-91.293413 31.86016,-91.326914 31.854961,-91.338414 31.851261,-91.345714 31.842861,-91.359514 31.799362,-91.363714 31.780363,-91.365614 31.760763,-91.365084 31.752743,-91.369375 31.746903,-91.379935 31.733013,-91.397915 31.709364,-91.400115 31.688164,-91.398059 31.655922,-91.404668 31.637898,-91.42209 31.63129,-91.441315 31.63129,-91.45273 31.63129,-91.464746 31.628886,-91.474959 31.621677,-91.477963 31.610863,-91.477963 31.604855,-91.477963 31.598247,-91.477362 31.592239,-91.470754 31.58563,-91.458679 31.583226,-91.44862 31.583032,-91.437711 31.580824,-91.425094 31.57782,-91.415482 31.567006,-91.416683 31.561599,-91.422691 31.55439,-91.437616 31.546166,-91.450017 31.539666,-91.479718 31.530366,-91.511217 31.532612,-91.51581 31.530894,-91.52292 31.519841,-91.51513 31.449206,-91.510356 31.438928,-91.505301 31.432945,-91.500406 31.419008,-91.505093 31.400933,-91.513795 31.386875,-91.525386 31.378904,-91.541242 31.35675,-91.539904 31.337336,-91.531201 31.326625,-91.51982 31.311228,-91.508858 31.291644,-91.515614 31.27821,-91.522397 31.273423,-91.547588 31.264444,-91.574493 31.261289,-91.59849 31.205485,-91.599965 31.192318,-91.604197 31.154545,-91.577373 31.078179,-91.56415 31.06683,-91.561283 31.060906,-91.559907 31.054119,-91.562468 31.043213,-91.571695 31.029782,-91.58467 31.020185,-91.636942 30.999416,-91.625118 30.999167,-91.538727 30.999388,-91.425749 30.999007,-91.423621 30.998984,-91.224839 30.999183,-91.224068 30.999183,-91.176209 30.999144,-91.17614 30.999144,-91.108291 30.99888,-91.108114 30.998857,-91.080814 30.998909,-91.06827 30.99892,-91.060217 30.998935,-90.826027 30.99936,-90.825829 30.99936,-90.783745 30.999447,-90.779858 30.999457,-90.775981 30.999491,-90.769333 30.999374,-90.758775 30.999583,-90.734552 30.999222,-90.734473 30.999214,-90.651193 30.99951,-90.648721 30.999486,-90.588676 30.99965,-90.587373 30.999604,-90.584448 30.999698,-90.583518 30.999698,-90.567195 30.999733,-90.547615 30.999723,-90.486749 30.999693,-90.485876 30.99974,-90.477284 30.999717,-90.475928 30.99974,-90.474094 30.999798,-90.442479 30.999722,-90.441725 30.999729,-90.437351 30.99973,-90.426849 30.999776,-90.422117 30.99981,-90.369371 31.000335,-90.347241 31.000359,-90.34723 31.000359,-90.346007 31.000363,-90.259555 31.000657,-90.164676 31.00098,-90.164278 31.001025,-90.131395 31.000924,-90.128406 31.001047,-90.050706 31.001215,-90.029574 31.00119,-90.022185 31.001302,-90.005332 31.001364,-89.97543 31.001692,-89.972802 31.001392,-89.927161 31.001437,-89.923119 31.001446,-89.897516 31.001913,-89.892708 31.001759,-89.856862 31.002075,-89.835908 31.002059,-89.835542 31.002059,-89.824617 31.00206,-89.816429 31.002084,-89.752642 31.001853,-89.732504 31.004831,-89.728147 31.002431,-89.728148 31.0023,-89.728382 30.971141,-89.744789 30.918933,-89.756543 30.900431,-89.770931 30.899432,-89.77341 30.897693,-89.789863 30.851527,-89.826175 30.736594,-89.842596 30.666038,-89.842585 30.666005,-89.823384 30.608535,-89.806843 30.572039,-89.76057 30.515761,-89.732577 30.492502,-89.724614 30.491902,-89.69058 30.458773,-89.68341 30.451793,-89.629941 30.339449,-89.629877 30.321017,-89.640694 30.301313,-89.643575 30.293099,-89.64344 30.287682,-89.607655 30.217096,-89.580754 30.186197,-89.572654 30.180897,-89.524504 30.180753,-89.531213 30.177099,-89.537493 30.171745,-89.555013 30.170798,-89.562825 30.168667,-89.56827 30.163932,-89.572093 30.160362,-89.587062 30.150648,-89.595021 30.149891,-89.598027 30.152409,-89.617542 30.156422,-89.62288 30.152368,-89.625053 30.150717,-89.640989 30.138612,-89.64455 30.134108,-89.650467 30.126625,-89.656986 30.118381,-89.658594 30.117364,-89.668164 30.111311,-89.668638 30.111011,-89.669157 30.110683,-89.669182 30.110667,-89.672881 30.11049,-89.674124 30.11043,-89.674633 30.110406,-89.674956 30.110212,-89.675762 30.109728,-89.676117 30.109515,-89.678156 30.10829,-89.678163 30.108286,-89.678293 30.107746,-89.678457 30.107059,-89.678499 30.106886,-89.679655 30.102067,-89.679823 30.101367,-89.679838 30.101304,-89.680042 30.100452,-89.68035 30.099171,-89.680485 30.098605,-89.681265 30.095355,-89.681906 30.092682,-89.682057 30.092052,-89.682181 30.091536,-89.682181 30.091531,-89.682277 30.090565,-89.68228 30.090531,-89.682331 30.090015,-89.682371 30.089607,-89.682393 30.089391,-89.682409 30.089225,-89.682691 30.086365,-89.683051 30.082718,-89.683168 30.08153,-89.683712 30.076018,-89.697556 30.070842,-89.698461 30.070504,-89.698496 30.070491,-89.698909 30.070451,-89.699144 30.070428,-89.699629 30.070381,-89.711848 30.069194,-89.712942 30.069088,-89.713003 30.069061,-89.714085 30.068582,-89.714827 30.068253,-89.715494 30.067958,-89.715884 30.067785,-89.716237 30.067628,-89.716425 30.067545,-89.71675 30.067402,-89.716887 30.067341,-89.721992 30.06508,-89.724433 30.063999,-89.72633 30.063158,-89.727453 30.062661,-89.728026 30.061841,-89.72957 30.059628,-89.72968 30.05947,-89.72979 30.059314,-89.729911 30.059139,-89.73099 30.057594,-89.730999 30.057581,-89.731208 30.054558,-89.731428 30.051377,-89.731452 30.05104,-89.731545 30.049694,-89.731545 30.049691,-89.731544 30.04969,-89.7163 30.02811,-89.7163 30.028106,-89.716301 30.028088,-89.716328 30.027415,-89.716336 30.02723,-89.716358 30.026686,-89.716377 30.026222,-89.724649 30.022454,-89.724669 30.022453,-89.72576 30.022403,-89.733323 30.022054,-89.734361 30.022884,-89.739028 30.026618,-89.739574 30.027055,-89.740886 30.028104,-89.745827 30.032056,-89.746313 30.032445,-89.746505 30.032599,-89.746506 30.0326,-89.757138 30.03865,-89.763216 30.042108,-89.782534 30.045372,-89.78463 30.045253,-89.813684 30.043605,-89.818561 30.043328,-89.829762 30.033275,-89.830442 30.032664,-89.832213 30.031075,-89.832965 30.0304,-89.833794 30.029656,-89.834644 30.028893,-89.835202 30.028393,-89.839926 30.024153,-89.839933 30.024146,-89.840963 30.022995,-89.841739 30.022127,-89.854533 30.007821,-89.857558 30.004439,-89.852312 29.97765,-89.844202 29.955645,-89.8385 29.945816,-89.829023 29.939228,-89.81803 29.934145,-89.804463 29.932588,-89.775459 29.937416,-89.748492 29.945831,-89.727933 29.95878,-89.719067 29.953699,-89.71291 29.946349,-89.736311 29.936263,-89.742727 29.935894,-89.746273 29.928221,-89.742479 29.90817,-89.711158 29.879287,-89.692004 29.868722,-89.671555 29.867535,-89.660568 29.862909,-89.638016 29.864065,-89.613159 29.87216,-89.598129 29.881409,-89.591194 29.897018,-89.592346 29.917253,-89.583099 29.931705,-89.583099 29.945581,-89.574997 29.959455,-89.574425 29.983738,-89.58136 29.994722,-89.571533 29.999926,-89.551292 30.005709,-89.501587 30.034037,-89.494064 30.040972,-89.494637 30.0508,-89.499275 30.058893,-89.493484 30.072191,-89.481926 30.079128,-89.458946 30.06345,-89.444618 30.060959,-89.429047 30.05224,-89.418465 30.049747,-89.372375 30.054729,-89.368637 30.047256,-89.372375 30.036671,-89.381096 30.030441,-89.393555 30.029818,-89.41597 30.020477,-89.422813 30.015495,-89.432785 30.008022,-89.433411 29.991205,-89.432785 29.978752,-89.40538 29.965672,-89.393555 29.966295,-89.379227 29.963804,-89.378601 29.919588,-89.368019 29.911491,-89.331894 29.91585,-89.315453 29.923208,-89.283562 29.97332,-89.273315 29.99382,-89.250534 30.002361,-89.243706 29.997236,-89.249969 29.975597,-89.218071 29.97275,-89.22377 29.961929,-89.231178 29.925484,-89.244843 29.93004,-89.263062 29.929472,-89.280144 29.924915,-89.318306 29.898149,-89.322289 29.887333,-89.311462 29.881636,-89.289253 29.880499,-89.272179 29.886763,-89.241425 29.88961,-89.236298 29.886763,-89.236298 29.877081,-89.254517 29.864552,-89.269897 29.859997,-89.294952 29.857149,-89.317726 29.850885,-89.363289 29.84576,-89.383789 29.838928,-89.383217 29.830385,-89.372971 29.82526,-89.345634 29.820135,-89.342781 29.798496,-89.33197 29.790524,-89.318306 29.788815,-89.293251 29.803053,-89.277298 29.807608,-89.277298 29.799635,-89.284134 29.795649,-89.284706 29.770021,-89.269325 29.760912,-89.271034 29.756355,-89.305199 29.756926,-89.316025 29.760912,-89.325134 29.772301,-89.337662 29.779135,-89.354179 29.781412,-89.367271 29.775148,-89.386063 29.788815,-89.394608 29.784828,-89.399162 29.770592,-89.414536 29.752371,-89.428207 29.74155,-89.42421 29.697638,-89.44812 29.703316,-89.471992 29.718597,-89.486961 29.72592,-89.506065 29.731651,-89.530258 29.74375,-89.540131 29.74375,-89.560181 29.735472,-89.572922 29.746616,-89.598068 29.74757,-89.634048 29.752981,-89.651237 29.749479,-89.649651 29.719872,-89.644562 29.710957,-89.618446 29.700768,-89.59903 29.704908,-89.592979 29.702042,-89.599663 29.690262,-89.596802 29.684212,-89.573883 29.674025,-89.55732 29.670204,-89.53376 29.670204,-89.487915 29.630405,-89.485367 29.624357,-89.486709 29.621003,-89.486931 29.620447,-89.504738 29.631508,-89.523018 29.639427,-89.535202 29.648567,-89.583336 29.652834,-89.608925 29.657707,-89.621109 29.657101,-89.62355 29.662584,-89.632698 29.671724,-89.644272 29.675381,-89.64975 29.672941,-89.641228 29.647961,-89.641228 29.635773,-89.647324 29.625414,-89.657677 29.624195,-89.674736 29.626633,-89.684486 29.624804,-89.688141 29.615055,-89.684486 29.602867,-89.671082 29.588243,-89.668648 29.580322,-89.684486 29.563263,-89.684486 29.551073,-89.681092 29.534487,-89.69623 29.525004,-89.699698 29.523423,-89.700845 29.520785,-89.700501 29.515967,-89.693877 29.508559,-89.665813 29.49002,-89.644039 29.492343,-89.63533 29.489294,-89.617558 29.468298,-89.596533 29.456303,-89.592474 29.449822,-89.589536 29.437662,-89.577096 29.433692,-89.574635 29.435734,-89.574653 29.4411,-89.548686 29.465723,-89.528429 29.454702,-89.53215 29.434567,-89.531943 29.425679,-89.518368 29.40023,-89.508551 29.386168,-89.505038 29.38604,-89.487308 29.393346,-89.484354 29.397471,-89.482318 29.406222,-89.47714 29.411241,-89.470142 29.401471,-89.457303 29.393148,-89.42238 29.390628,-89.380001 29.391785,-89.373109 29.387175,-89.355528 29.381569,-89.340304 29.381412,-89.336589 29.378228,-89.347615 29.365,-89.350694 29.349544,-89.32317 29.343982,-89.303766 29.357455,-89.283028 29.356467,-89.272543 29.351195,-89.2653 29.345352,-89.257852 29.336872,-89.253545 29.322802,-89.24087 29.310081,-89.224192 29.313792,-89.223444 29.318066,-89.219734 29.324412,-89.204703 29.338674,-89.200389 29.344418,-89.200599 29.347672,-89.189354 29.345061,-89.179547 29.339608,-89.177351 29.33521,-89.178221 29.32697,-89.165015 29.303039,-89.157593 29.296691,-89.140275 29.291085,-89.134337 29.27934,-89.136979 29.275239,-89.129688 29.265632,-89.100106 29.25022,-89.096173 29.24293,-89.095544 29.238028,-89.098389 29.232963,-89.105833 29.231608,-89.106244 29.215912,-89.10065 29.206314,-89.090724 29.199992,-89.068265 29.204166,-89.067371 29.208636,-89.029103 29.220956,-89.02185 29.218162,-89.015192 29.211561,-89.000674 29.180091,-89.00529 29.164949,-89.013254 29.16328,-89.018344 29.165046,-89.024269 29.170043,-89.043919 29.162528,-89.047233 29.157833,-89.03873 29.14238,-89.032004 29.144747,-89.024149 29.137298,-89.023942 29.1337,-89.026031 29.130126,-89.051953 29.106554,-89.055475 29.084167,-89.062335 29.070234,-89.09126 29.066931,-89.098068 29.067984,-89.105009 29.073641,-89.121542 29.069074,-89.143453 29.047591,-89.156339 29.028782,-89.162 29.01586,-89.162326 29.011713,-89.164788 29.008703,-89.16985 29.008703,-89.175732 29.012123,-89.186061 29.017993,-89.18215 29.025486,-89.189893 29.032635,-89.197871 29.029701,-89.202563 29.031603,-89.211144 29.040813,-89.216101 29.056371,-89.215531 29.06141,-89.217201 29.067275,-89.225865 29.07866,-89.23631 29.084605,-89.254726 29.083261,-89.257283 29.081086,-89.256869 29.0738,-89.25364 29.064954,-89.259354 29.058358,-89.283215 29.053325,-89.29109 29.053097,-89.304888 29.046379,-89.315389 29.039081,-89.318102 29.035342,-89.315182 29.032662,-89.32485 29.013805,-89.335228 29.015003,-89.338249 29.012935,-89.383814 28.947434,-89.41148 28.925011,-89.419865 28.929709,-89.412388 28.957504,-89.408157 28.965341,-89.398104 28.977016,-89.382106 28.981525,-89.375049 28.985368,-89.334735 29.040335,-89.339828 29.052221,-89.354798 29.072543,-89.374522 29.084174,-89.405654 29.086936,-89.411154 29.105838,-89.409371 29.127855,-89.417718 29.13869,-89.428965 29.14451,-89.432932 29.149023,-89.447472 29.178576,-89.455829 29.190991,-89.47231 29.20755,-89.482844 29.215053,-89.5366 29.236212,-89.606651 29.252023,-89.671781 29.289028,-89.697258 29.296679,-89.726162 29.304026,-89.782149 29.311132,-89.819859 29.310241,-89.850305 29.311768,-89.855109 29.334997,-89.853699 29.34064,-89.847124 29.349186,-89.835 29.359043,-89.820824 29.377486,-89.816916 29.384385,-89.816155 29.393518,-89.816916 29.398845,-89.819199 29.404173,-89.822243 29.4095,-89.826049 29.415589,-89.835392 29.418538,-89.843553 29.421677,-89.845075 29.434615,-89.836773 29.45404,-89.833659 29.456686,-89.833659 29.459731,-89.832898 29.463536,-89.833659 29.467341,-89.83442 29.470386,-89.840509 29.47343,-89.849642 29.477996,-89.86258 29.476474,-89.876224 29.472168,-89.902179 29.460011,-89.918999 29.444254,-89.932598 29.429288,-89.95543 29.428527,-89.96195 29.432874,-89.964563 29.434615,-89.972934 29.443748,-89.991961 29.463536,-90.01251 29.462775,-90.018598 29.45212,-90.022404 29.444509,-90.029466 29.432015,-90.032298 29.427005,-90.031536 29.412545,-90.033295 29.393274,-90.029468 29.388136,-90.029614 29.386658,-90.029967 29.383087,-90.030761 29.375043,-90.030764 29.375008,-90.030855 29.374876,-90.033604 29.370851,-90.035415 29.368201,-90.036374 29.363661,-90.032842 29.348624,-90.031815 29.344251,-90.034275 29.322661,-90.028536 29.307083,-90.013778 29.30271,-90.009678 29.294785,-90.016288 29.284257,-90.019517 29.282213,-90.032088 29.280027,-90.043293 29.282487,-90.057094 29.281331,-90.061057 29.276748,-90.059691 29.272648,-90.060511 29.267729,-90.070622 29.262537,-90.086747 29.259257,-90.091119 29.261443,-90.097678 29.26199,-90.101231 29.259804,-90.096038 29.240673,-90.073355 29.227282,-90.073355 29.210611,-90.070622 29.208698,-90.06361 29.209474,-90.04291 29.211765,-90.019772 29.231903,-90.005718 29.240627,-89.969981 29.255753,-89.965667 29.259126,-89.959509 29.267677,-89.951175 29.266124,-89.949925 29.263154,-89.950756 29.260801,-89.95646 29.253744,-90.022029 29.216065,-90.058512 29.183687,-90.079276 29.16997,-90.088684 29.162574,-90.104162 29.150407,-90.174273 29.105301,-90.223587 29.085075,-90.231984 29.08773,-90.245283 29.085824,-90.343293 29.057062,-90.348768 29.057817,-90.349891 29.063681,-90.325514 29.075138,-90.304129 29.077332,-90.29293 29.078761,-90.282983 29.082326,-90.26629 29.089421,-90.258145 29.091627,-90.253141 29.093772,-90.249806 29.100919,-90.250044 29.108067,-90.243849 29.11045,-90.234235 29.110268,-90.234405 29.128824,-90.243435 29.136311,-90.248629 29.13837,-90.26901 29.139242,-90.280516 29.142521,-90.27832 29.150691,-90.297 29.171317,-90.302846 29.175098,-90.302948 29.187948,-90.300885 29.196171,-90.293183 29.199789,-90.2828 29.192545,-90.275851 29.193668,-90.271251 29.204639,-90.286621 29.225694,-90.300304 29.231241,-90.311663 29.237954,-90.311523 29.256374,-90.316093 29.264777,-90.332796 29.276956,-90.367166 29.274128,-90.368154 29.270736,-90.367012 29.264956,-90.372565 29.258923,-90.387924 29.252786,-90.383857 29.235606,-90.399465 29.201046,-90.408578 29.196421,-90.409416 29.196135,-90.432912 29.188132,-90.435907 29.188449,-90.443954 29.19583,-90.472489 29.192688,-90.473273 29.195224,-90.468773 29.198469,-90.467233 29.202549,-90.485786 29.209843,-90.494928 29.216713,-90.490987 29.220883,-90.46832 29.227532,-90.465764 29.242951,-90.462866 29.249809,-90.450674 29.263739,-90.452186 29.26625,-90.472779 29.272556,-90.495299 29.287277,-90.510555 29.290925,-90.517277 29.282719,-90.526216 29.276492,-90.552005 29.278512,-90.565436 29.285111,-90.582525 29.276037,-90.589724 29.248521,-90.58847 29.245863,-90.583924 29.242886,-90.576506 29.243986,-90.565378 29.242475,-90.544547 29.230683,-90.543245 29.227843,-90.544311 29.224292,-90.556501 29.219913,-90.55739 29.207881,-90.560889 29.204261,-90.575277 29.206827,-90.618413 29.20329,-90.624161 29.210366,-90.62742 29.211004,-90.633819 29.209128,-90.640223 29.196554,-90.645612 29.175867,-90.645169 29.172958,-90.640863 29.171261,-90.636973 29.164572,-90.647042 29.12858,-90.677724 29.118742,-90.691109 29.121722,-90.700893 29.12147,-90.718035 29.116611,-90.731239 29.122886,-90.764189 29.113374,-90.773458 29.100133,-90.799444 29.087377,-90.802053 29.083322,-90.803699 29.063709,-90.79872 29.054841,-90.781981 29.049431,-90.765188 29.049403,-90.750092 29.053247,-90.7253 29.066616,-90.709105 29.064305,-90.70535 29.062679,-90.702102 29.060275,-90.692205 29.059607,-90.683645 29.060944,-90.676958 29.063619,-90.665589 29.06723,-90.652348 29.069237,-90.644189 29.07151,-90.641247 29.072313,-90.63924 29.072848,-90.637623 29.072084,-90.636033 29.069792,-90.637495 29.066608,-90.648058 29.062649,-90.730899 29.042259,-90.755677 29.038997,-90.79768 29.039741,-90.811473 29.03658,-90.839345 29.039167,-90.842762 29.042947,-90.844849 29.048721,-90.841226 29.054266,-90.844593 29.06728,-90.862757 29.094863,-90.867766 29.095434,-90.877583 29.104891,-90.885351 29.117016,-90.898215 29.131342,-90.925797 29.153116,-90.941877 29.162373,-90.948091 29.174104,-90.961278 29.180817,-90.981458 29.171211,-91.000096 29.169481,-91.023955 29.174784,-91.031786 29.182188,-91.05863 29.181734,-91.094015 29.187711,-91.11476 29.207918,-91.129141 29.215863,-91.199647 29.221287,-91.219032 29.226051,-91.278792 29.247776,-91.302677 29.265958,-91.334885 29.298775,-91.33275 29.305816,-91.309314 29.305698,-91.299054 29.309017,-91.291821 29.311357,-91.29042 29.313062,-91.279742 29.326058,-91.276647 29.329825,-91.276187 29.332783,-91.274308 29.344878,-91.270582 29.355415,-91.270053 29.356912,-91.26994 29.357231,-91.266589 29.361218,-91.265479 29.361767,-91.251546 29.368659,-91.251232 29.368814,-91.249517 29.369662,-91.249109 29.369864,-91.245558 29.37058,-91.238515 29.371999,-91.235348 29.370638,-91.222377 29.360703,-91.207299 29.360703,-91.197465 29.369882,-91.200087 29.38955,-91.218463 29.407235,-91.215976 29.412505,-91.214284 29.416089,-91.211999 29.420931,-91.2151 29.427542,-91.217448 29.432549,-91.218067 29.433193,-91.219242 29.434418,-91.221166 29.436421,-91.24164 29.441021,-91.251319 29.444483,-91.258226 29.446954,-91.259537 29.458001,-91.259844 29.460582,-91.259988 29.461803,-91.260024 29.462102,-91.261588 29.464954,-91.265649 29.472362,-91.2813 29.481547,-91.294325 29.476894,-91.335742 29.485886,-91.343567 29.492593,-91.34588 29.504538,-91.356625 29.515191,-91.402214 29.511914,-91.420449 29.515745,-91.42713 29.520215,-91.432337 29.53283,-91.439941 29.540434,-91.447345 29.544749,-91.468748 29.544299,-91.517274 29.52974,-91.531021 29.531543,-91.531471 29.535374,-91.52584 29.545946,-91.525523 29.551904,-91.529217 29.558598,-91.537445 29.565888,-91.541974 29.594353,-91.553537 29.632766,-91.560908 29.63735,-91.570589 29.638312,-91.581843 29.637165,-91.600179 29.631156,-91.625114 29.626195,-91.643832 29.630625,-91.648941 29.633635,-91.648657 29.636713,-91.646478 29.639427,-91.643198 29.640274,-91.637344 29.647217,-91.627286 29.662132,-91.625114 29.671679,-91.626826 29.684753,-91.623829 29.69924,-91.618479 29.710816,-91.61809 29.720694,-91.621512 29.735429,-91.632829 29.742576,-91.667128 29.745822,-91.710935 29.738993,-91.737253 29.74937,-91.752259 29.748264,-91.783674 29.740689,-91.830499 29.718918,-91.845962 29.708763,-91.85864 29.703121,-91.866516 29.70715,-91.88075 29.710839,-91.880999 29.713338,-91.878331 29.716087,-91.875637 29.722316,-91.87557 29.722471,-91.87557 29.728043,-91.878355 29.735007,-91.879748 29.742668,-91.878355 29.751025,-91.874761 29.760083,-91.859151 29.783331,-91.854677 29.807436,-91.869998 29.828328,-91.889118 29.836023,-91.90689 29.83094,-91.915989 29.815654,-91.919143 29.815379,-91.940723 29.817008,-91.96123 29.810221,-91.970443 29.80431,-91.978381 29.799217,-91.983871 29.794516,-92.035666 29.781662,-92.056398 29.772313,-92.107486 29.744429,-92.144431 29.716418,-92.149349 29.697052,-92.134347 29.669516,-92.132804 29.660462,-92.111787 29.62177,-92.093419 29.618694,-92.06564 29.619967,-92.04767 29.624527,-92.02532 29.625647,-92.01627 29.618741,-92.000371 29.613143,-92.000003 29.613013,-91.965031 29.608019,-91.939903 29.610291,-91.935024 29.612239,-91.929567 29.61884,-91.922825 29.633173,-91.898996 29.63701,-91.896763 29.634618,-91.882318 29.62977,-91.866113 29.631583,-91.863018 29.633739,-91.841294 29.62962,-91.838981 29.624475,-91.840921 29.619913,-91.838297 29.616041,-91.821693 29.606049,-91.803831 29.599562,-91.784976 29.595204,-91.7785 29.58922,-91.774805 29.582113,-91.774686 29.576387,-91.74632 29.574337,-91.719102 29.565568,-91.715642 29.565844,-91.712002 29.56474,-91.709205 29.561012,-91.711654 29.55427,-91.733956 29.539504,-91.747058 29.535144,-91.765448 29.520844,-91.771927 29.504871,-91.772529 29.499016,-91.770069 29.493812,-91.770516 29.488953,-91.782387 29.482882,-91.789119 29.482081,-91.800121 29.486828,-91.803448 29.486851,-91.814609 29.482061,-91.821576 29.473925,-91.8385 29.478874,-91.848665 29.484144,-91.852598 29.494984,-91.862324 29.502393,-91.878746 29.502937,-91.886815 29.505577,-91.906175 29.518052,-91.915322 29.518513,-91.947007 29.53316,-91.969312 29.536893,-91.985726 29.547708,-92.02681 29.566805,-92.035462 29.57864,-92.041168 29.581648,-92.046316 29.584362,-92.066533 29.583842,-92.105923 29.586335,-92.158624 29.581616,-92.21259 29.562479,-92.25186 29.539354,-92.280392 29.533434,-92.309357 29.533026,-92.347236 29.539394,-92.402165 29.551269,-92.473585 29.561081,-92.558602 29.569935,-92.61627 29.578729,-92.617725 29.579092,-92.653651 29.588065,-92.744126 29.617608,-92.871232 29.670028,-92.940455 29.701033,-92.974305 29.71398,-93.065354 29.740966,-93.088182 29.749125,-93.17693 29.770487,-93.226934 29.777519,-93.267456 29.778113,-93.295573 29.775071,-93.342104 29.763402,-93.344993 29.759618,-93.347331 29.759046,-93.372029 29.763049,-93.438973 29.768949,-93.475252 29.769242,-93.538462 29.763299,-93.590786 29.755649,-93.635304 29.752806,-93.68364 29.747153,-93.741948 29.736343,-93.766048 29.7295,-93.79925 29.71526,-93.818995 29.704076,-93.837971 29.690619,-93.892246 29.765241,-93.89847 29.771577,-93.890679 29.843159,-93.840799 29.914423,-93.789431 29.987812,-93.75663 30.014163,-93.752038 30.016403,-93.722481 30.050898,-93.721589 30.051939,-93.712101 30.067346,-93.695684 30.135729,-93.695252 30.1476,-93.712008 30.194304,-93.716223 30.244318,-93.720575 30.295961,-93.723586 30.294951,-93.735896 30.29944,-93.765822 30.333318,-93.757654 30.390423,-93.751437 30.396288,-93.741701 30.403007,-93.702665 30.429947,-93.698302 30.438657,-93.697828 30.443838,-93.710117 30.5064,-93.740045 30.538765,-93.727844 30.57407,-93.578395 30.802047,-93.563292 30.818503,-93.558672 30.868829,-93.558617 30.869424,-93.55497 30.876685,-93.554576 30.87747,-93.530936 30.924534,-93.540354 31.008135,-93.527644 31.074509,-93.531744 31.180817,-93.535097 31.185614,-93.548931 31.186601,-93.55254 31.185605,-93.552649 31.185575,-93.579215 31.167422,-93.588503 31.165581,-93.598828 31.174679,-93.599705 31.176456,-93.602315 31.181742,-93.607243 31.204806,-93.608158 31.227835,-93.614402 31.260869,-93.620829 31.271299,-93.644407 31.27711,-93.671676 31.299586,-93.640805 31.372546,-93.670182 31.387184,-93.695866 31.409392,-93.729613 31.487922,-93.798087 31.534044,-93.818582 31.554826,-93.834923 31.58621,-93.834924 31.586211,-93.82629 31.614903,-93.817059 31.671694,-93.812477 31.715246,-93.840029 31.800596,-93.878225 31.844276,-93.889193 31.856819,-93.92029 31.888651,-93.932135 31.893672,-93.975377 31.92366,-94.01563 31.979856,-94.04272 31.999265,-94.0427 32.056012,-94.042337 32.119914,-94.042681 32.137956,-94.042591 32.158097,-94.042539 32.166826,-94.042566 32.166894,-94.042621 32.196005,-94.042662 32.218146,-94.042732 32.26962,-94.042733 32.269696,-94.042739 32.363559,-94.042763 32.373332,-94.042901 32.392283,-94.042923 32.399918,-94.042899 32.400659,-94.042986 32.435507,-94.042908 32.439891,-94.042903 32.470386,-94.042875 32.471348,-94.042902 32.472906,-94.042995 32.478004,-94.042955 32.480261,-94.043072 32.4843,-94.043089 32.486561,-94.042911 32.492852,-94.042885 32.505145,-94.043081 32.513613,-94.043142 32.559502,-94.043083 32.564261,-94.042919 32.610142,-94.042929 32.61826,-94.042926 32.622015,-94.042824 32.640305,-94.04278 32.643466,-94.042913 32.655127,-94.043147 32.69303) diff --git a/rust/sedona-geo-test-fixtures/fixtures/nl_plots.wkt b/rust/sedona-geo-test-fixtures/fixtures/nl_plots.wkt deleted file mode 100644 index 279c14c7..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/nl_plots.wkt +++ /dev/null @@ -1 +0,0 @@ -MULTIPOLYGON(((5.545757189 52.317793574,5.545670899 52.317631067,5.5459931 52.317566112,5.546117204 52.317541454,5.546203274 52.317703826,5.545757189 52.317793574)),((5.546203274 52.317703826,5.54628936 52.317866189,5.545842849 52.317956199,5.545757189 52.317793574,5.546203274 52.317703826)),((5.545842849 52.317956199,5.54628936 52.317866189,5.546393551 52.318062735,5.545946905 52.318152565,5.545842849 52.317956199)),((5.546087065 52.318294301,5.546101002 52.318291514,5.546216035 52.318268486,5.546294507 52.318417558,5.546362045 52.318544094,5.546232809 52.318569847,5.546144019 52.318401987,5.546087065 52.318294301)),((5.546146468 52.318937954,5.546076443 52.318952132,5.546051234 52.318957136,5.546001405 52.318861026,5.545939836 52.318746435,5.546035085 52.318727487,5.546146468 52.318937954)),((5.546146468 52.318937954,5.546163996 52.318971059,5.546010386 52.319001707,5.545992888 52.318968728,5.546051234 52.318957136,5.546076443 52.318952132,5.546146468 52.318937954)),((5.546362045 52.318544094,5.546294507 52.318417558,5.546216035 52.318268486,5.546341401 52.318243403,5.546423717 52.318401035,5.546436578 52.318425213,5.546465352 52.318477949,5.546487529 52.318519092,5.546362045 52.318544094)),((5.546400017 52.318887399,5.546289072 52.318676814,5.546395606 52.318655613,5.546412152 52.318688746,5.546453285 52.31876478,5.546506758 52.318866305,5.546481256 52.318871345,5.546400017 52.318887399)),((5.546163996 52.318971059,5.546167392 52.318977436,5.546189817 52.318973091,5.546309424 52.319198431,5.545507295 52.319358949,5.545387103 52.31913307,5.545411432 52.319128274,5.545408036 52.319121898,5.545563186 52.319090943,5.545584232 52.319086745,5.545664107 52.319070801,5.5457865 52.319046379,5.545908893 52.319021957,5.545988769 52.319006023,5.546010386 52.319001707,5.546163996 52.318971059)),((5.546582586 52.318887593,5.546417398 52.318920387,5.546400017 52.318887399,5.546481256 52.318871345,5.546506758 52.318866305,5.546564869 52.318854821,5.546578747 52.318880327,5.546582586 52.318887593)),((5.546117477 52.319675458,5.546241276 52.319907658,5.54611167 52.319933439,5.545988077 52.319701426,5.546117477 52.319675458)),((5.546241276 52.319907658,5.546117477 52.319675458,5.54624695 52.31964948,5.546371087 52.319881842,5.546241276 52.319907658)),((5.545988077 52.319701426,5.545858663 52.319727395,5.54574131 52.319750947,5.545737913 52.319744301,5.545713877 52.319749186,5.545594121 52.319522948,5.546395815 52.319363148,5.546516012 52.319588577,5.546492269 52.319593282,5.546495665 52.319599569,5.546377727 52.31962324,5.54624695 52.31964948,5.546117477 52.319675458,5.545988077 52.319701426)),((5.546438188 52.319738973,5.546500679 52.31985607,5.546371087 52.319881842,5.54624695 52.31964948,5.546377727 52.31962324,5.546395845 52.31965736,5.546438188 52.319738973)),((5.546018795 52.321094868,5.546079241 52.320968555,5.546117774 52.320887426,5.546119887 52.320887809,5.546139847 52.320846278,5.546265097 52.320868659,5.546193153 52.321019686,5.546146716 52.321117714,5.546018795 52.321094868)),((5.546273801 52.321140416,5.546146716 52.321117714,5.546193153 52.321019686,5.546265097 52.320868659,5.546390214 52.320891023,5.546370255 52.320932582,5.546372368 52.320932956,5.546334217 52.321014022,5.546273801 52.321140416)),((5.546475368 52.320906241,5.546455453 52.32094789,5.546417404 52.321028911,5.54637597 52.321114943,5.546356827 52.321155251,5.546273801 52.321140416,5.546334217 52.321014022,5.546372368 52.320932956,5.546370255 52.320932582,5.546390214 52.320891023,5.546475368 52.320906241)),((5.546475368 52.320906241,5.546560521 52.320921459,5.546540651 52.32096318,5.546538552 52.320962796,5.546500151 52.321043719,5.546458996 52.321129768,5.54641818 52.32112248,5.546399052 52.321162798,5.546356827 52.321155251,5.54637597 52.321114943,5.546417404 52.321028911,5.546455453 52.32094789,5.546475368 52.320906241)),((5.546273801 52.321140416,5.546356827 52.321155251,5.546399052 52.321162798,5.546552306 52.321190174,5.546361921 52.32158951,5.54595649 52.321517031,5.545986349 52.321454526,5.546008637 52.321407859,5.546030955 52.321361147,5.546053127 52.321314714,5.546064366 52.321291196,5.5460754 52.321267975,5.546097455 52.321221516,5.54611964 52.32117475,5.546146716 52.321117714,5.546273801 52.321140416)),((5.544593351 52.323214969,5.544778327 52.322826725,5.545415445 52.321489463,5.546436215 52.321672069,5.545614157 52.323397573,5.544593351 52.323214969),(5.544838244 52.322942146,5.544729615 52.323169391,5.544868536 52.32319429,5.544944564 52.323207922,5.545020607 52.323221553,5.545096606 52.323235176,5.545172634 52.323248807,5.545248648 52.32326243,5.545324677 52.323276061,5.545400837 52.323289711,5.545514689 52.323310122,5.54562368 52.323082435,5.545627625 52.323074197,5.545651431 52.323078345,5.546064573 52.322212557,5.546040928 52.32220832,5.546048423 52.322191665,5.546153024 52.321972665,5.545366048 52.321831483,5.545266928 52.322041801,5.545258375 52.322057801,5.545222838 52.322132581,5.545199487 52.322181757,5.54517612 52.322230923,5.545152769 52.32228009,5.545129402 52.322329257,5.545106051 52.322378424,5.545082684 52.322427599,5.545048181 52.32250023,5.545013313 52.322573634,5.544989946 52.3226228,5.544966594 52.322671976,5.544943227 52.322721143,5.544919875 52.322770309,5.544896509 52.322819476,5.544873156 52.322868643,5.544838244 52.322942146)),((5.545075489 52.316853622,5.54516375 52.317022786,5.544976217 52.317059806,5.544857566 52.317083422,5.544755579 52.317103843,5.544687749 52.316975751,5.544665025 52.31693282,5.545074397 52.316851664,5.545075489 52.316853622)),((5.545315872 52.317308885,5.544907466 52.317390392,5.544873521 52.317326328,5.54480541 52.31719776,5.545213288 52.317116596,5.545315872 52.317308885)),((5.545075037 52.317706723,5.545140743 52.317830755,5.544895362 52.317879616,5.544704294 52.317917448,5.544637738 52.317793426,5.544803405 52.317760104,5.544900984 52.317740857,5.545075037 52.317706723)),((5.544704294 52.317917448,5.544895362 52.317879616,5.545140743 52.317830755,5.545213345 52.317967791,5.544778215 52.318054735,5.544704294 52.317917448)),((5.545015125 52.318332731,5.544926637 52.318166146,5.544904164 52.318123475,5.545054796 52.31809348,5.54508359 52.318148123,5.545115541 52.318207866,5.545165744 52.318302744,5.545015125 52.318332731)),((5.545165744 52.318302744,5.545115541 52.318207866,5.54508359 52.318148123,5.545054796 52.31809348,5.545205429 52.318063485,5.545227991 52.318106146,5.545289725 52.318222328,5.545316363 52.318272758,5.545165744 52.318302744)),((5.544932309 52.318523641,5.545060242 52.318498232,5.545120235 52.318611702,5.545167937 52.318704059,5.545204546 52.318774545,5.545076657 52.318800025,5.545059361 52.318765662,5.545014924 52.318679925,5.544932309 52.318523641)),((5.545060242 52.318498232,5.545188174 52.318472815,5.545270393 52.318629037,5.545315167 52.318714701,5.545332449 52.318749056,5.545204546 52.318774545,5.545167937 52.318704059,5.545120235 52.318611702,5.545060242 52.318498232)),((5.545132177 52.319139568,5.545050894 52.31915589,5.545026096 52.319160822,5.54498892 52.319091945,5.544974642 52.319065037,5.544932394 52.318984348,5.544914027 52.318950004,5.545020298 52.318928822,5.545132177 52.319139568)),((5.545132177 52.319139568,5.545149792 52.319172754,5.544984837 52.319205626,5.544967281 52.319172512,5.545026096 52.319160822,5.545050894 52.31915589,5.545132177 52.319139568)),((5.544915324 52.320897557,5.544919533 52.32088913,5.54493428 52.320858166,5.54497611 52.320771379,5.545014337 52.320690196,5.545033903 52.320649051,5.545119173 52.320664324,5.545099563 52.32070546,5.54509745 52.320705077,5.545059546 52.320786259,5.54499829 52.320912438,5.544915324 52.320897557)),((5.54499829 52.320912438,5.545059546 52.320786259,5.54509745 52.320705077,5.545099563 52.32070546,5.545119173 52.320664324,5.545244407 52.320686743,5.545199699 52.320780706,5.545173164 52.320837516,5.545126123 52.320935356,5.54499829 52.320912438)),((5.545126123 52.320935356,5.545173164 52.320837516,5.545199699 52.320780706,5.545244407 52.320686743,5.545369656 52.32070917,5.545349943 52.320750252,5.545352057 52.320750627,5.545313331 52.320831676,5.545253207 52.320958078,5.545126123 52.320935356)),((5.545024514 52.321723755,5.544897956 52.321701023,5.544939899 52.321612654,5.544964282 52.321560709,5.545000798 52.321485092,5.545127531 52.321507715,5.545073677 52.321620214,5.54503689 52.321697908,5.545024514 52.321723755)),((5.545121229 52.321867149,5.544716443 52.321794728,5.544720461 52.321786283,5.544739941 52.321745489,5.544786966 52.321753965,5.545144697 52.321817875,5.545121229 52.321867149)),((5.545176522 52.321751063,5.545144697 52.321817875,5.544786966 52.321753965,5.544739941 52.321745489,5.544771971 52.321678389,5.544897956 52.321701023,5.545024514 52.321723755,5.545176522 52.321751063)),((5.545176522 52.321751063,5.545024514 52.321723755,5.54503689 52.321697908,5.545073677 52.321620214,5.545127531 52.321507715,5.545278775 52.321534719,5.545176522 52.321751063)),((5.545009331 52.317582691,5.545075037 52.317706723,5.544900984 52.317740857,5.544803405 52.317760104,5.544637738 52.317793426,5.544571975 52.317669484,5.545009331 52.317582691)),((5.544941411 52.317454465,5.545009331 52.317582691,5.544571975 52.317669484,5.544504115 52.317541239,5.544941411 52.317454465)),((5.544907466 52.317390392,5.544941411 52.317454465,5.544504115 52.317541239,5.544435888 52.317412833,5.544873521 52.317326328,5.544907466 52.317390392)),((5.54480541 52.31719776,5.544873521 52.317326328,5.544435888 52.317412833,5.544368513 52.317284912,5.54480541 52.31719776)),((5.545011101 52.316674826,5.545102675 52.316848175,5.545075489 52.316853622,5.545074397 52.316851664,5.544665025 52.31693282,5.544619742 52.316847318,5.544574473 52.316761807,5.545011101 52.316674826)),((5.544904164 52.318123475,5.544926637 52.318166146,5.545015125 52.318332731,5.544864506 52.318362717,5.544814245 52.318267856,5.544782236 52.318208122,5.544753531 52.318153461,5.544904164 52.318123475)),((5.544713873 52.318392694,5.544625283 52.318226145,5.544602766 52.318183483,5.544753531 52.318153461,5.544782236 52.318208122,5.544814245 52.318267856,5.544864506 52.318362717,5.544713873 52.318392694)),((5.544932309 52.318523641,5.545014924 52.318679925,5.545059361 52.318765662,5.545076657 52.318800025,5.544948754 52.318825505,5.544864576 52.318662635,5.544804362 52.318549058,5.544932309 52.318523641)),((5.544804362 52.318549058,5.544864576 52.318662635,5.544948754 52.318825505,5.54482085 52.318850985,5.544803554 52.31881663,5.54475903 52.318730903,5.54467643 52.318574465,5.544804362 52.318549058)),((5.544984837 52.319205626,5.544963644 52.319209852,5.544895455 52.319080817,5.544834122 52.318965938,5.544914027 52.318950004,5.544932394 52.318984348,5.544974642 52.319065037,5.54498892 52.319091945,5.545026096 52.319160822,5.544967281 52.319172512,5.544984837 52.319205626)),((5.544754202 52.318981872,5.544834122 52.318965938,5.544895455 52.319080817,5.544963644 52.319209852,5.544883753 52.319225777,5.544815579 52.319096742,5.544754202 52.318981872)),((5.54463175 52.319006274,5.544754202 52.318981872,5.544815579 52.319096742,5.544883753 52.319225777,5.544761183 52.319250207,5.544709604 52.31915205,5.544660304 52.319059452,5.54463175 52.319006274)),((5.544720405 52.320862612,5.544839 52.320614161,5.544948765 52.320633814,5.544929199 52.32067504,5.544931313 52.320675414,5.544892675 52.320756499,5.544851079 52.320843294,5.544892056 52.320850609,5.544877308 52.320881583,5.544872982 52.320889974,5.544720405 52.320862612)),((5.544948765 52.320633814,5.545033903 52.320649051,5.545014337 52.320690196,5.54497611 52.320771379,5.54493428 52.320858166,5.544919533 52.32088913,5.544915324 52.320897557,5.544872982 52.320889974,5.544877308 52.320881583,5.544892056 52.320850609,5.544851079 52.320843294,5.544892675 52.320756499,5.544931313 52.320675414,5.544929199 52.32067504,5.544948765 52.320633814)),((5.544775044 52.321672319,5.544646902 52.321649625,5.544747318 52.321439836,5.544874065 52.321462468,5.544820254 52.321574841,5.544775044 52.321672319)),((5.544897956 52.321701023,5.544771971 52.321678389,5.544775044 52.321672319,5.544820254 52.321574841,5.544874065 52.321462468,5.545000798 52.321485092,5.544964282 52.321560709,5.544939899 52.321612654,5.544897956 52.321701023)),((5.545097804 52.321916316,5.544692944 52.321843939,5.544716443 52.321794728,5.545121229 52.321867149,5.545097804 52.321916316)),((5.544970342 52.320160495,5.544828687 52.320188699,5.544705392 52.319956172,5.544847032 52.319928032,5.544865091 52.319962143,5.544908075 52.320043217,5.544970342 52.320160495)),((5.544908075 52.320043217,5.544865091 52.319962143,5.544847032 52.319928032,5.544976859 52.319902235,5.545100477 52.320134581,5.544970342 52.320160495,5.544908075 52.320043217)),((5.547555696 52.324447059,5.547478858 52.324433313,5.547938349 52.323545087,5.548079636 52.323267445,5.54822749 52.322985211,5.548370449 52.322688424,5.548483257 52.322413877,5.548605601 52.322055731,5.548698659 52.321747678,5.548760854 52.321471492,5.548806358 52.321195418,5.548843283 52.320867777,5.548876678 52.32056961,5.548862908 52.320216315,5.548844777 52.31986565,5.548791196 52.319454349,5.548726464 52.319158393,5.548640657 52.318834136,5.548530531 52.318513166,5.548416249 52.318222212,5.548273871 52.317911972,5.548121992 52.317601825,5.547382844 52.31620771,5.548157992 52.316053426,5.548894625 52.31744798,5.549076157 52.317804363,5.549216913 52.318114793,5.549329896 52.318406018,5.549434324 52.318727714,5.549522922 52.319051607,5.549612424 52.319461582,5.54966437 52.319872795,5.549682683 52.320223468,5.549686178 52.320576769,5.54967039 52.320875001,5.549628909 52.321202649,5.549561398 52.321591827,5.549493484 52.321867122,5.549407476 52.322176236,5.54927532 52.322532949,5.549156632 52.322806606,5.549016452 52.323103849,5.548875955 52.323387153,5.548733205 52.323664518,5.547973353 52.325128223,5.547829523 52.325102561,5.548117946 52.324547613,5.547555696 52.324447059)),((5.546942948 52.31806709,5.546093588 52.316464304,5.547104852 52.316263028,5.54795426 52.317865815,5.546942948 52.31806709)),((5.545769696 52.320072398,5.545121905 52.318849999,5.546133214 52.318648749,5.546781045 52.319871133,5.546534862 52.319920124,5.545769696 52.320072398),(5.545375344 52.318858738,5.545279127 52.318877875,5.545390405 52.319088532,5.545408036 52.319121898,5.545411432 52.319128274,5.545387103 52.31913307,5.545507295 52.319358949,5.546309424 52.319198431,5.546189817 52.318973091,5.546167392 52.318977436,5.546163996 52.318971059,5.546146468 52.318937954,5.546035085 52.318727487,5.545939836 52.318746435,5.545859931 52.318762334,5.545780027 52.318778223,5.54565759 52.318802582,5.545535154 52.318826941,5.545455249 52.318842839,5.545375344 52.318858738),(5.545594121 52.319522948,5.545713877 52.319749186,5.545737913 52.319744301,5.54574131 52.319750947,5.545864607 52.319982574,5.545981858 52.319959255,5.54611167 52.319933439,5.546241276 52.319907658,5.546371087 52.319881842,5.546500679 52.31985607,5.54661853 52.319832633,5.546495665 52.319599569,5.546492269 52.319593282,5.546516012 52.319588577,5.546395815 52.319363148,5.545594121 52.319522948)),((5.546933319 52.318817977,5.547012842 52.318802186,5.547034856 52.318797816,5.54719783 52.318765464,5.547530097 52.319393521,5.547388533 52.319421719,5.547259618 52.3194474,5.547130072 52.3194732,5.547000908 52.319498926,5.546869764 52.319525042,5.546752735 52.319548352,5.546749486 52.319542245,5.54672501 52.319547042,5.546398516 52.318930928,5.546420354 52.318926584,5.546417398 52.318920387,5.546582586 52.318887593,5.54660309 52.31888353,5.546682467 52.318867766,5.546807893 52.318842872,5.546933319 52.318817977)),((5.547582389 52.319050481,5.547534571 52.318960013,5.547615795 52.318943914,5.547716804 52.318923887,5.547747416 52.318981564,5.547764666 52.319014409,5.547582389 52.319050481)),((5.547534571 52.318960013,5.547486252 52.318868611,5.547668131 52.318832153,5.547686206 52.318866237,5.547716804 52.318923887,5.547615795 52.318943914,5.547534571 52.318960013)),((5.547668131 52.318832153,5.547660112 52.318817029,5.547809793 52.318787247,5.547893478 52.318770587,5.547950111 52.318877418,5.54781752 52.318903932,5.547716804 52.318923887,5.547686206 52.318866237,5.547668131 52.318832153)),((5.54760348 52.318710395,5.547633887 52.318767947,5.547650366 52.318798779,5.547468532 52.318835291,5.547421498 52.31874653,5.547502794 52.318730403,5.54760348 52.318710395)),((5.547650366 52.318798779,5.547633887 52.318767947,5.54760348 52.318710395,5.54770424 52.318690378,5.547836845 52.318663756,5.547893478 52.318770587,5.547809793 52.318787247,5.547660112 52.318817029,5.547650366 52.318798779)),((5.547490333 52.31849648,5.547538149 52.318586885,5.547356154 52.318623334,5.547308251 52.318533325,5.547389398 52.318516426,5.547490333 52.31849648)),((5.547490333 52.31849648,5.547591326 52.318476526,5.54772358 52.318450093,5.547780212 52.318556924,5.547696528 52.318573584,5.547546906 52.31860342,5.547538149 52.318586885,5.547490333 52.31849648)),((5.547442693 52.318406219,5.547459823 52.318438767,5.547490333 52.31849648,5.547389398 52.318516426,5.547308251 52.318533325,5.547260024 52.318442723,5.547442693 52.318406219)),((5.547377495 52.318282754,5.547408077 52.31834044,5.547425252 52.318373078,5.547242303 52.318409313,5.547194297 52.318319016,5.547276458 52.318302798,5.547377495 52.318282754)),((5.547433936 52.318389559,5.547425252 52.318373078,5.547408077 52.31834044,5.547377495 52.318282754,5.5474784 52.318262745,5.547610316 52.31823643,5.547666948 52.318343262,5.547583439 52.31835993,5.547433936 52.318389559)),((5.547194297 52.318319016,5.547146469 52.31822906,5.547329372 52.318192592,5.547346898 52.318225077,5.547377495 52.318282754,5.547276458 52.318302798,5.547194297 52.318319016)),((5.547610316 52.31823643,5.5474784 52.318262745,5.547377495 52.318282754,5.547346898 52.318225077,5.547329372 52.318192592,5.547311798 52.318159002,5.547330523 52.318145765,5.547540099 52.318103957,5.547610316 52.31823643)),((5.548276284 52.321930263,5.548292719 52.321895926,5.548338065 52.321801485,5.54842011 52.321816283,5.548549748 52.321838351,5.548488395 52.321967722,5.548403475 52.321952721,5.548276284 52.321930263)),((5.548338065 52.321801485,5.54838297 52.3217069,5.548399295 52.321666577,5.5486111 52.32170898,5.548549748 52.321838351,5.54842011 52.321816283,5.548338065 52.321801485)),((5.548188404 52.321633341,5.548399295 52.321666577,5.54838297 52.3217069,5.548338065 52.321801485,5.548255888 52.321786668,5.548126599 52.321763629,5.548188404 52.321633341)),((5.548276284 52.321930263,5.548065405 52.321892622,5.548126599 52.321763629,5.548255888 52.321786668,5.548338065 52.321801485,5.548292719 52.321895926,5.548276284 52.321930263)),((5.547654763 52.321678807,5.547784391 52.321702286,5.547866655 52.321717103,5.547821691 52.321811696,5.547805227 52.321846178,5.547592954 52.321808331,5.547654763 52.321678807)),((5.548077534 52.321754807,5.548016237 52.321883792,5.547805227 52.321846178,5.547821691 52.321811696,5.547866655 52.321717103,5.547948832 52.321731902,5.548077534 52.321754807)),((5.548077534 52.321754807,5.547948832 52.321731902,5.547866655 52.321717103,5.547911518 52.321622591,5.547927876 52.321587175,5.54813909 52.321624708,5.548077534 52.321754807)),((5.547654763 52.321678807,5.547716397 52.321549633,5.547927876 52.321587175,5.547911518 52.321622591,5.547866655 52.321717103,5.547784391 52.321702286,5.547654763 52.321678807)),((5.547716397 52.321549633,5.547778322 52.321419857,5.547907393 52.321443724,5.547989569 52.321458352,5.547944589 52.321552838,5.547927876 52.321587175,5.547716397 52.321549633)),((5.54813909 52.321624708,5.547927876 52.321587175,5.547944589 52.321552838,5.547989569 52.321458352,5.548071832 52.321472989,5.548200388 52.321496254,5.54813909 52.321624708)),((5.548200388 52.321496254,5.548071832 52.321472989,5.547989569 52.321458352,5.548034548 52.321363794,5.548050732 52.32132917,5.548262033 52.321366532,5.548200388 52.321496254)),((5.547839417 52.321291799,5.548050732 52.32132917,5.548034548 52.321363794,5.547989569 52.321458352,5.547907393 52.321443724,5.547778322 52.321419857,5.547839417 52.321291799)),((5.547901516 52.321161672,5.548030686 52.321184891,5.548113316 52.321199609,5.548068 52.32129396,5.548050732 52.32132917,5.547839417 52.321291799,5.547901516 52.321161672)),((5.548113316 52.321199609,5.548323561 52.32123707,5.548262033 52.321366532,5.548050732 52.32132917,5.548068 52.32129396,5.548113316 52.321199609)),((5.548323561 52.32123707,5.548113316 52.321199609,5.548157884 52.321104953,5.548174518 52.321069186,5.548385365 52.321106997,5.548323561 52.32123707)),((5.547963279 52.321032238,5.548174518 52.321069186,5.548157884 52.321104953,5.548113316 52.321199609,5.548030686 52.321184891,5.547901516 52.321161672,5.547963279 52.321032238)),((5.547963279 52.321032238,5.548025072 52.320902713,5.548153758 52.320925969,5.548236784 52.320940811,5.548191321 52.321035208,5.548174518 52.321069186,5.547963279 52.321032238)),((5.548385365 52.321106997,5.548174518 52.321069186,5.548191321 52.321035208,5.548236784 52.320940811,5.548318415 52.320955404,5.548446354 52.320978651,5.548385365 52.321106997)),((5.548236784 52.320940811,5.548281233 52.320846048,5.548298078 52.320811791,5.548507793 52.320849361,5.548446354 52.320978651,5.548318415 52.320955404,5.548236784 52.320940811)),((5.548025072 52.320902713,5.548041739 52.320867792,5.548017156 52.320863601,5.548060081 52.320769154,5.548298078 52.320811791,5.548281233 52.320846048,5.548236784 52.320940811,5.548153758 52.320925969,5.548025072 52.320902713)),((5.547541765 52.320956999,5.547602724 52.3208278,5.547682417 52.320841766,5.547765135 52.320856726,5.547719422 52.32095106,5.547703047 52.320985856,5.547541765 52.320956999)),((5.547975863 52.320894664,5.5479147 52.321023721,5.547703047 52.320985856,5.547719422 52.32095106,5.547765135 52.320856726,5.547846855 52.320871517,5.547975863 52.320894664)),((5.548060081 52.320769154,5.548017156 52.320863601,5.547992573 52.32085941,5.547975863 52.320894664,5.547846855 52.320871517,5.547765135 52.320856726,5.547809556 52.320762044,5.547827046 52.3207274,5.548060081 52.320769154)),((5.547602724 52.3208278,5.547663886 52.320698169,5.547827046 52.3207274,5.547809556 52.320762044,5.547765135 52.320856726,5.547682417 52.320841766,5.547602724 52.3208278)),((5.547778322 52.321419857,5.547716397 52.321549633,5.547654763 52.321678807,5.547592954 52.321808331,5.547805227 52.321846178,5.548016237 52.321883792,5.548077534 52.321754807,5.54813909 52.321624708,5.548188404 52.321633341,5.548126599 52.321763629,5.548065405 52.321892622,5.548276284 52.321930263,5.548403475 52.321952721,5.548372208 52.322018355,5.547457008 52.321854658,5.547826894 52.321078179,5.547510127 52.32102152,5.547541765 52.320956999,5.547703047 52.320985856,5.5479147 52.321023721,5.547975863 52.320894664,5.547992573 52.32085941,5.548017156 52.320863601,5.548041739 52.320867792,5.548025072 52.320902713,5.547963279 52.321032238,5.547901516 52.321161672,5.547839417 52.321291799,5.547778322 52.321419857)),((5.547673488 52.319765056,5.547882222 52.319723699,5.5479493 52.319850828,5.54782251 52.319876481,5.547740845 52.31989268,5.547691211 52.319799051,5.547673488 52.319765056)),((5.547673488 52.319765056,5.547691211 52.319799051,5.547740845 52.31989268,5.547659444 52.319908833,5.547581267 52.319924245,5.54751498 52.319796459,5.547673488 52.319765056)),((5.547581267 52.319924245,5.547659444 52.319908833,5.547740845 52.31989268,5.547790671 52.319986344,5.547808543 52.320020932,5.547648057 52.320052966,5.547581267 52.319924245)),((5.547993883 52.319882009,5.5480425 52.319974228,5.547808543 52.320020932,5.547790671 52.319986344,5.547740845 52.31989268,5.54782251 52.319876481,5.5479493 52.319850828,5.547968513 52.319887247,5.547993883 52.319882009)),((5.5480425 52.319974228,5.547993883 52.319882009,5.548019809 52.319876662,5.548000551 52.319840171,5.548126508 52.319815589,5.548207865 52.319799489,5.548257647 52.319893172,5.548275622 52.319927696,5.5480425 52.319974228)),((5.548416494 52.319757601,5.548484487 52.319886005,5.548275622 52.319927696,5.548257647 52.319893172,5.548207865 52.319799489,5.548289632 52.319783308,5.548416494 52.319757601)),((5.548348871 52.31962988,5.548416494 52.319757601,5.548289632 52.319783308,5.548207865 52.319799489,5.548158435 52.319705806,5.548140477 52.319671858,5.548348871 52.31962988)),((5.548000551 52.319840171,5.547933724 52.3197135,5.548140477 52.319671858,5.548158435 52.319705806,5.548207865 52.319799489,5.548126508 52.319815589,5.548000551 52.319840171)),((5.548140477 52.319671858,5.547933724 52.3197135,5.547865466 52.319584108,5.547990967 52.319559482,5.548072352 52.319543004,5.548140477 52.319671858)),((5.548072352 52.319543004,5.548154032 52.319527219,5.548280938 52.319501566,5.548348871 52.31962988,5.548140477 52.319671858,5.548072352 52.319543004)),((5.548072352 52.319543004,5.548022895 52.319449753,5.548004685 52.319415004,5.548213123 52.319373503,5.548280938 52.319501566,5.548154032 52.319527219,5.548072352 52.319543004)),((5.548004685 52.319415004,5.548022895 52.319449753,5.548072352 52.319543004,5.547990967 52.319559482,5.547865466 52.319584108,5.547797961 52.319456161,5.548004685 52.319415004)),((5.547936929 52.319286878,5.547986285 52.319380687,5.548004685 52.319415004,5.547797961 52.319456161,5.547730234 52.319327792,5.54785525 52.319302915,5.547936929 52.319286878)),((5.548145412 52.319245611,5.548213123 52.319373503,5.548004685 52.319415004,5.547986285 52.319380687,5.547936929 52.319286878,5.548018608 52.319270778,5.548145412 52.319245611)),((5.548077655 52.319116982,5.548100279 52.319159705,5.548145412 52.319245611,5.548018608 52.319270778,5.547936929 52.319286878,5.547887515 52.319193087,5.547869189 52.319158752,5.548077655 52.319116982)),((5.547869189 52.319158752,5.547887515 52.319193087,5.547936929 52.319286878,5.54785525 52.319302915,5.547730234 52.319327792,5.547685148 52.319242336,5.547662863 52.319200106,5.547869189 52.319158752)),((5.5480425 52.319974228,5.548275622 52.319927696,5.548484487 52.319886005,5.548416494 52.319757601,5.548348871 52.31962988,5.548280938 52.319501566,5.548213123 52.319373503,5.548145412 52.319245611,5.548100279 52.319159705,5.548077655 52.319116982,5.548147388 52.319103109,5.548577816 52.319915168,5.547601342 52.320109508,5.547408787 52.3197462,5.547792384 52.319669859,5.547577191 52.319263819,5.547685148 52.319242336,5.547730234 52.319327792,5.547797961 52.319456161,5.547865466 52.319584108,5.547933724 52.3197135,5.548000551 52.319840171,5.548019809 52.319876662,5.547993883 52.319882009,5.547968513 52.319887247,5.5479493 52.319850828,5.547882222 52.319723699,5.547673488 52.319765056,5.54751498 52.319796459,5.547581267 52.319924245,5.547648057 52.320052966,5.547808543 52.320020932,5.5480425 52.319974228)),((5.547006607 52.321637066,5.547231514 52.321677089,5.547355358 52.321699354,5.547411526 52.321709219,5.547381756 52.321771498,5.546977027 52.32169921,5.547006607 52.321637066)),((5.54702869 52.321590677,5.547028763 52.321590515,5.547377573 52.321652768,5.547433784 52.321662641,5.547411526 52.321709219,5.547355358 52.321699354,5.547231514 52.321677089,5.547006607 52.321637066,5.54702869 52.321590677)),((5.547028763 52.321590515,5.547050787 52.321544235,5.547050918 52.321543965,5.547399772 52.321606191,5.547456042 52.321616064,5.547433784 52.321662641,5.547377573 52.321652768,5.547028763 52.321590515)),((5.547072987 52.321497595,5.547073074 52.321497424,5.547421986 52.321559605,5.547478315 52.321569487,5.547456042 52.321616064,5.547399772 52.321606191,5.547050918 52.321543965,5.547072987 52.321497595)),((5.547095128 52.321451081,5.54709523 52.321450874,5.547109569 52.32145329,5.547320254 52.321490951,5.5474442 52.321513019,5.547500573 52.3215229,5.547478315 52.321569487,5.547421986 52.321559605,5.547073074 52.321497424,5.547095128 52.321451081)),((5.547117299 52.321404531,5.547117386 52.321404333,5.547466399 52.321466441,5.547522831 52.321476323,5.547500573 52.3215229,5.5474442 52.321513019,5.547320254 52.321490951,5.547109569 52.32145329,5.54709523 52.321450874,5.547117299 52.321404531)),((5.547139483 52.321357909,5.547139542 52.321357783,5.547153953 52.3213601,5.547488526 52.321420026,5.547545103 52.321429746,5.547522831 52.321476323,5.547466399 52.321466441,5.547117386 52.321404333,5.547139483 52.321357909)),((5.547294011 52.321323547,5.547377434 52.321338317,5.547419702 52.3213458,5.547572311 52.321372817,5.547545103 52.321429746,5.547488526 52.321420026,5.547153953 52.3213601,5.547139542 52.321357783,5.547166574 52.32130098,5.547294011 52.321323547)),((5.547572311 52.321372817,5.547419702 52.3213458,5.547423894 52.321336717,5.547438639 52.321305645,5.547479485 52.321312932,5.547559593 52.321145393,5.547561706 52.321145776,5.547565011 52.321138878,5.547581107 52.321104227,5.547689921 52.321123699,5.547572311 52.321372817)),((5.547495806 52.321088965,5.547581107 52.321104227,5.547565011 52.321138878,5.547561706 52.321145776,5.547559593 52.321145393,5.547479485 52.321312932,5.547438639 52.321305645,5.547423894 52.321336717,5.547419702 52.3213458,5.547377434 52.321338317,5.547381639 52.32132918,5.5473964 52.321298117,5.547476581 52.321130442,5.547495806 52.321088965)),((5.547495806 52.321088965,5.547476581 52.321130442,5.5473964 52.321298117,5.547381639 52.32132918,5.547377434 52.321338317,5.547294011 52.321323547,5.547355125 52.321196441,5.547393422 52.321115473,5.547391309 52.32111509,5.547394613 52.321108192,5.547410637 52.32107372,5.547495806 52.321088965)),((5.547294011 52.321323547,5.547166574 52.32130098,5.547214106 52.321202133,5.547240581 52.321145636,5.547285357 52.321051304,5.547410637 52.32107372,5.547394613 52.321108192,5.547391309 52.32111509,5.547393422 52.321115473,5.547355125 52.321196441,5.547294011 52.321323547)),((5.547166574 52.32130098,5.547039722 52.321278054,5.54710069 52.321151011,5.547137226 52.321069767,5.547140749 52.321070401,5.547144083 52.321063503,5.547160356 52.321028932,5.547285357 52.321051304,5.547240581 52.321145636,5.547214106 52.321202133,5.547166574 52.32130098)),((5.547039722 52.321278054,5.546956739 52.321263058,5.546975736 52.321223091,5.547017371 52.32113616,5.547055433 52.321055138,5.547075055 52.321013661,5.547160356 52.321028932,5.547144083 52.321063503,5.547140749 52.321070401,5.547137226 52.321069767,5.54710069 52.321151011,5.547039722 52.321278054)),((5.546989901 52.320998425,5.547075055 52.321013661,5.547055433 52.321055138,5.547017371 52.32113616,5.546975736 52.321223091,5.546956739 52.321263058,5.546914264 52.321255377,5.546933217 52.321215509,5.546892651 52.321208274,5.546972363 52.321040277,5.54697025 52.321039894,5.546989901 52.320998425)),((5.546914264 52.321255377,5.546762946 52.321228025,5.546880942 52.320978925,5.546989901 52.320998425,5.54697025 52.321039894,5.546972363 52.321040277,5.546892651 52.321208274,5.546933217 52.321215509,5.546914264 52.321255377)),((5.546436215 52.321672069,5.546806132 52.320895585,5.547510127 52.32102152,5.547826894 52.321078179,5.547457008 52.321854658,5.546436215 52.321672069),(5.546601804 52.321564489,5.546571844 52.321627029,5.546977027 52.32169921,5.547381756 52.321771498,5.547411526 52.321709219,5.547433784 52.321662641,5.547456042 52.321616064,5.547478315 52.321569487,5.547500573 52.3215229,5.547522831 52.321476323,5.547545103 52.321429746,5.547572311 52.321372817,5.547689921 52.321123699,5.547581107 52.321104227,5.547495806 52.321088965,5.547410637 52.32107372,5.547285357 52.321051304,5.547160356 52.321028932,5.547075055 52.321013661,5.546989901 52.320998425,5.546880942 52.320978925,5.546762946 52.321228025,5.546735621 52.32128507,5.546713318 52.32133163,5.546691016 52.321378216,5.546668713 52.321424784,5.54664641 52.321471352,5.546624107 52.32151792,5.546601804 52.321564489)),((5.546552306 52.321190174,5.546399052 52.321162798,5.54641818 52.32112248,5.546458996 52.321129768,5.546500151 52.321043719,5.546538552 52.320962796,5.546540651 52.32096318,5.546560521 52.320921459,5.546669451 52.320940923,5.546552306 52.321190174)),((5.545415445 52.321489463,5.545785364 52.32071299,5.546806132 52.320895585,5.546436215 52.321672069,5.545415445 52.321489463),(5.545581169 52.321382099,5.545551471 52.32144463,5.54595649 52.321517031,5.546361921 52.32158951,5.546552306 52.321190174,5.546669451 52.320940923,5.546560521 52.320921459,5.546475368 52.320906241,5.546390214 52.320891023,5.546265097 52.320868659,5.546139847 52.320846278,5.546054694 52.320831059,5.545969541 52.320815841,5.545860333 52.320796322,5.545741129 52.321045261,5.54571395 52.321102504,5.545691807 52.321149107,5.54566968 52.321195702,5.545647552 52.321242306,5.545625425 52.321288901,5.545603413 52.321335252,5.545581169 52.321382099)),((5.546582586 52.318887593,5.546578747 52.318880327,5.546564869 52.318854821,5.546506758 52.318866305,5.546453285 52.31876478,5.546412152 52.318688746,5.546395606 52.318655613,5.546475071 52.318639795,5.546492202 52.318672802,5.54653275 52.318748927,5.546578206 52.318835902,5.546601187 52.318831386,5.546611569 52.31885128,5.546588588 52.318855787,5.54660309 52.31888353,5.546582586 52.318887593)),((5.546682467 52.318867766,5.54660309 52.31888353,5.546588588 52.318855787,5.546611569 52.31885128,5.546601187 52.318831386,5.546578206 52.318835902,5.54653275 52.318748927,5.546492202 52.318672802,5.546475071 52.318639795,5.54655455 52.318623969,5.546571711 52.318656966,5.546612214 52.318733073,5.546682467 52.318867766)),((5.546807893 52.318842872,5.546682467 52.318867766,5.546612214 52.318733073,5.546571711 52.318656966,5.54655455 52.318623969,5.546679902 52.318599021,5.546730419 52.318694374,5.546807893 52.318842872)),((5.546933319 52.318817977,5.546807893 52.318842872,5.546730419 52.318694374,5.546679902 52.318599021,5.546805253 52.318574072,5.546863153 52.318683006,5.546933319 52.318817977)),((5.546933319 52.318817977,5.546863153 52.318683006,5.546805253 52.318574072,5.546884732 52.318558255,5.546942632 52.318667152,5.546988282 52.318754953,5.546965242 52.318759451,5.546975596 52.31877939,5.54699865 52.318774892,5.547012842 52.318802186,5.546933319 52.318817977)),((5.547012842 52.318802186,5.54699865 52.318774892,5.546975596 52.31877939,5.546965242 52.318759451,5.546988282 52.318754953,5.546942632 52.318667152,5.546884732 52.318558255,5.546964211 52.318542428,5.546981885 52.318575272,5.547022096 52.318651298,5.547064133 52.318733523,5.54707478 52.31875356,5.547017592 52.31876498,5.547034856 52.318797816,5.547012842 52.318802186)),((5.547180581 52.318732754,5.547101087 52.318748312,5.54707478 52.31875356,5.547064133 52.318733523,5.547022096 52.318651298,5.546981885 52.318575272,5.546964211 52.318542428,5.547069205 52.318521533,5.547180581 52.318732754)),((5.547180581 52.318732754,5.54719783 52.318765464,5.547034856 52.318797816,5.547017592 52.31876498,5.54707478 52.31875356,5.547101087 52.318748312,5.547180581 52.318732754)),((5.546781045 52.319871133,5.546133214 52.318648749,5.547144543 52.318447481,5.547577191 52.319263819,5.547792384 52.319669859,5.547408787 52.3197462,5.546781045 52.319871133),(5.546395606 52.318655613,5.546289072 52.318676814,5.546400017 52.318887399,5.546417398 52.318920387,5.546420354 52.318926584,5.546398516 52.318930928,5.54672501 52.319547042,5.546749486 52.319542245,5.546752735 52.319548352,5.546876042 52.319781595,5.546993336 52.319758231,5.547122032 52.319732604,5.547252619 52.319706596,5.547381887 52.319680851,5.547512093 52.319654925,5.547654433 52.319626582,5.547530097 52.319393521,5.54719783 52.318765464,5.547180581 52.318732754,5.547069205 52.318521533,5.546964211 52.318542428,5.546884732 52.318558255,5.546805253 52.318574072,5.546679902 52.318599021,5.54655455 52.318623969,5.546475071 52.318639795,5.546395606 52.318655613)),((5.54671732 52.318168164,5.546864258 52.318138756,5.547011182 52.318414748,5.546863949 52.318444085,5.546796307 52.318317343,5.54671732 52.318168164)),((5.546738481 52.318469088,5.546716172 52.318427918,5.546688188 52.318374803,5.546591955 52.318193256,5.54671732 52.318168164,5.546796307 52.318317343,5.546863949 52.318444085,5.546738481 52.318469088)),((5.546612998 52.31849409,5.546545576 52.318367455,5.546466605 52.318218339,5.546591955 52.318193256,5.546688188 52.318374803,5.546716172 52.318427918,5.546738481 52.318469088,5.546612998 52.31849409)),((5.546389867 52.318233703,5.546466605 52.318218339,5.546545576 52.318367455,5.546612998 52.31849409,5.546487529 52.318519092,5.546465352 52.318477949,5.546436578 52.318425213,5.546423717 52.318401035,5.546341401 52.318243403,5.546387771 52.31823412,5.546389867 52.318233703)),((5.547447873 52.324427774,5.547907554 52.323539197,5.548048914 52.323261411,5.54819671 52.322979294,5.548339349 52.322683163,5.548451765 52.322409569,5.548573979 52.322051847,5.548666805 52.321744575,5.548728855 52.321468929,5.548774202 52.32119389,5.548811113 52.320866419,5.548844394 52.320569214,5.548830657 52.32021679,5.548812558 52.319866782,5.548759113 52.319456469,5.54869456 52.319161294,5.548608917 52.318837703,5.548499147 52.318517721,5.548385013 52.31822717,5.548242827 52.317917335,5.548091111 52.31760753,5.547352157 52.316213809,5.547382844 52.31620771,5.548121992 52.317601825,5.548273871 52.317911972,5.548416249 52.318222212,5.548530531 52.318513166,5.548640657 52.318834136,5.548726464 52.319158393,5.548791196 52.319454349,5.548844777 52.31986565,5.548862908 52.320216315,5.548876678 52.32056961,5.548843283 52.320867777,5.548806358 52.321195418,5.548760854 52.321471492,5.548698659 52.321747678,5.548605601 52.322055731,5.548483257 52.322413877,5.548370449 52.322688424,5.54822749 52.322985211,5.548079636 52.323267445,5.547938349 52.323545087,5.547478858 52.324433313,5.547447873 52.324427774)),((5.542968551 52.323626509,5.542996403 52.323558939,5.544528715 52.319840314,5.544758338 52.320273654,5.545769696 52.320072398,5.546534862 52.319920124,5.546781045 52.319871133,5.547408787 52.3197462,5.547601342 52.320109508,5.548577816 52.319915168,5.548147388 52.319103109,5.548461245 52.319040639,5.548291342 52.318720074,5.54839597 52.318699251,5.54795426 52.317865815,5.547104852 52.316263028,5.547352157 52.316213809,5.548091111 52.31760753,5.548242827 52.317917335,5.548385013 52.31822717,5.548499147 52.318517721,5.548608917 52.318837703,5.54869456 52.319161294,5.548759113 52.319456469,5.548812558 52.319866782,5.548830657 52.32021679,5.548844394 52.320569214,5.548811113 52.320866419,5.548774202 52.32119389,5.548728855 52.321468929,5.548666805 52.321744575,5.548573979 52.322051847,5.548451765 52.322409569,5.548339349 52.322683163,5.54819671 52.322979294,5.548048914 52.323261411,5.547907554 52.323539197,5.547447873 52.324427774,5.546411903 52.324242473,5.543823711 52.323779499,5.542968551 52.323626509),(5.543757537 52.322644113,5.543387566 52.323420588,5.545429187 52.323785809,5.547470855 52.324151004,5.547840761 52.323374517,5.548477794 52.322037238,5.548372208 52.322018355,5.548403475 52.321952721,5.548488395 52.321967722,5.548549748 52.321838351,5.5486111 52.32170898,5.548399295 52.321666577,5.548188404 52.321633341,5.54813909 52.321624708,5.548200388 52.321496254,5.548262033 52.321366532,5.548323561 52.32123707,5.548385365 52.321106997,5.548446354 52.320978651,5.548507793 52.320849361,5.548298078 52.320811791,5.548060081 52.320769154,5.547827046 52.3207274,5.547663886 52.320698169,5.547602724 52.3208278,5.547541765 52.320956999,5.547510127 52.32102152,5.546806132 52.320895585,5.545785364 52.32071299,5.544764619 52.320530387,5.544394684 52.321306856,5.543757537 52.322644113)),((5.547716804 52.318923887,5.54781752 52.318903932,5.547950111 52.318877418,5.547993144 52.318958608,5.547951301 52.318966943,5.547978488 52.319018216,5.5480134 52.319084516,5.54796763 52.31909362,5.547932704 52.319027491,5.547910537 52.318985531,5.547764666 52.319014409,5.547747416 52.318981564,5.547716804 52.318923887)),((5.548020331 52.319009891,5.548055243 52.319076181,5.54801362 52.319084471,5.5480134 52.319084516,5.547978488 52.319018216,5.547951301 52.318966943,5.547993144 52.318958608,5.548020331 52.319009891)),((5.545614157 52.323397573,5.546436215 52.321672069,5.547457008 52.321854658,5.546819946 52.323191931,5.546634987 52.323580169,5.545614157 52.323397573),(5.545883336 52.323129047,5.545774081 52.323356114,5.545889298 52.323376721,5.545965341 52.323390316,5.546040284 52.323403715,5.546117428 52.323417515,5.546193457 52.32343111,5.546269472 52.323444705,5.54634553 52.3234583,5.546421574 52.323471904,5.546559865 52.323496631,5.546667518 52.323269763,5.546696256 52.323209561,5.546719709 52.323160394,5.546743177 52.323111227,5.546766644 52.32306206,5.546790112 52.323012892,5.546813565 52.322963734,5.546837032 52.322914567,5.546874286 52.322836504,5.546535257 52.322775818,5.54646886 52.322797559,5.546454756 52.322795044,5.546501356 52.322697339,5.546905875 52.322769952,5.546943011 52.322691862,5.546966405 52.322642677,5.546989784 52.322593492,5.547013178 52.322544307,5.547036557 52.322495122,5.54705995 52.322445937,5.547088716 52.322385447,5.547196087 52.322159217,5.546411939 52.322018756,5.546299844 52.322254123,5.546275788 52.322249779,5.545863123 52.323116627,5.545887194 52.323121034,5.545883336 52.323129047),(5.547280406 52.321893688,5.547254934 52.321948008,5.547294561 52.321955055,5.547320034 52.321900825,5.547280406 52.321893688)),((5.54778673 52.319056477,5.547604879 52.319092755,5.547582389 52.319050481,5.547764666 52.319014409,5.54778673 52.319056477)),((5.547764666 52.319014409,5.547910537 52.318985531,5.547932704 52.319027491,5.54778673 52.319056477,5.547764666 52.319014409)),((5.547144543 52.318447481,5.546942948 52.31806709,5.54795426 52.317865815,5.54839597 52.318699251,5.548291342 52.318720074,5.548461245 52.319040639,5.548147388 52.319103109,5.548077655 52.319116982,5.547869189 52.319158752,5.547662863 52.319200106,5.547685148 52.319242336,5.547577191 52.319263819,5.547144543 52.318447481),(5.547146469 52.31822906,5.547194297 52.318319016,5.547242303 52.318409313,5.547425252 52.318373078,5.547433936 52.318389559,5.547442693 52.318406219,5.547260024 52.318442723,5.547308251 52.318533325,5.547356154 52.318623334,5.547538149 52.318586885,5.547546906 52.31860342,5.547555929 52.318620466,5.547373874 52.318656655,5.547421498 52.31874653,5.547468532 52.318835291,5.547650366 52.318798779,5.547660112 52.318817029,5.547668131 52.318832153,5.547486252 52.318868611,5.547534571 52.318960013,5.547582389 52.319050481,5.547604879 52.319092755,5.54778673 52.319056477,5.547932704 52.319027491,5.54796763 52.31909362,5.5480134 52.319084516,5.54801362 52.319084471,5.548055243 52.319076181,5.548020331 52.319009891,5.548076624 52.318998589,5.548006448 52.318866152,5.547949859 52.318759366,5.547893196 52.318652445,5.547836622 52.318545694,5.54777999 52.318438818,5.547723387 52.318331995,5.547666784 52.318225164,5.547596581 52.318092691,5.547540099 52.318103957,5.547330523 52.318145765,5.547311798 52.318159002,5.547329372 52.318192592,5.547146469 52.31822906)),((5.546438188 52.319738973,5.546395845 52.31965736,5.546377727 52.31962324,5.546495665 52.319599569,5.54661853 52.319832633,5.546500679 52.31985607,5.546438188 52.319738973)),((5.546752735 52.319548352,5.546869764 52.319525042,5.546887972 52.319559467,5.546931473 52.319640693,5.546993336 52.319758231,5.546876042 52.319781595,5.546752735 52.319548352)),((5.546869764 52.319525042,5.547000908 52.319498926,5.547122032 52.319732604,5.546993336 52.319758231,5.546931473 52.319640693,5.546887972 52.319559467,5.546869764 52.319525042)),((5.547130072 52.3194732,5.547252619 52.319706596,5.547122032 52.319732604,5.547000908 52.319498926,5.547130072 52.3194732)),((5.547259618 52.3194474,5.547381887 52.319680851,5.547252619 52.319706596,5.547130072 52.3194732,5.547259618 52.3194474)),((5.547388533 52.319421719,5.547406874 52.319456368,5.547449994 52.319537361,5.547512093 52.319654925,5.547381887 52.319680851,5.547259618 52.3194474,5.547388533 52.319421719)),((5.547449994 52.319537361,5.547406874 52.319456368,5.547388533 52.319421719,5.547530097 52.319393521,5.547654433 52.319626582,5.547512093 52.319654925,5.547449994 52.319537361)),((5.546506164 52.32823633,5.546581703 52.328090862,5.546674685 52.328109018,5.546798114 52.328133127,5.546817708 52.328095397,5.549082933 52.323732095,5.549226482 52.323453155,5.549367749 52.323168295,5.549509557 52.322867589,5.549631429 52.322586701,5.549767286 52.322219997,5.549855521 52.321902854,5.549925167 52.321620555,5.549994096 52.321223142,5.5500366 52.320887349,5.550052895 52.320579697,5.550049326 52.320219324,5.550030584 52.319860481,5.5499772 52.319437991,5.549885562 52.319018213,5.549794999 52.318687133,5.549688195 52.318358116,5.549572026 52.318058672,5.549427912 52.317740868,5.549243807 52.317379457,5.547968186 52.314964441,5.550373647 52.314487287,5.552716016 52.319769696,5.553063683 52.320946944,5.553148735 52.321988458,5.550607069 52.328871479,5.549772141 52.329084568,5.549728751 52.329017481,5.549525546 52.328977837,5.549555802 52.328919609,5.549267614 52.328863392,5.549256936 52.328883925,5.548743069 52.328783697,5.548734125 52.328800921,5.54863491 52.328651008,5.548503524 52.328625662,5.548377994 52.328601189,5.548306665 52.328478812,5.548267942 52.328455847,5.548228366 52.328432381,5.547099523 52.32821279,5.546651044 52.328126962,5.54663984 52.328156537,5.546637741 52.32817243,5.546639125 52.328186171,5.54664359 52.328199996,5.546656868 52.32822092,5.546671589 52.328235289,5.546688061 52.328246906,5.546712162 52.328258674,5.546703741 52.328274818,5.546506164 52.32823633),(5.547698357 52.327793505,5.547749252 52.327872266,5.547846278 52.327848767,5.547795544 52.327769744,5.547698357 52.327793505),(5.548387922 52.325767578,5.54837168 52.325798824,5.548393346 52.325803045,5.548374818 52.32583885,5.548402517 52.325844223,5.548375963 52.325895624,5.548515591 52.325922558,5.548550811 52.325854141,5.548620449 52.325867653,5.548655802 52.32579964,5.548586237 52.325785993,5.548622088 52.325717611,5.548483031 52.325690191,5.548456081 52.32574152,5.548428161 52.325736022,5.548409442 52.325771791,5.548387922 52.325767578)),((5.545160636 52.315737248,5.545158126 52.315732524,5.545196917 52.315728617,5.545231617 52.315725173,5.545668146 52.316548973,5.546093588 52.316464304,5.546942948 52.31806709,5.547144543 52.318447481,5.546133214 52.318648749,5.545931641 52.318268356,5.545805982 52.318293367,5.545770298 52.318182381,5.545946905 52.318152565,5.546393551 52.318062735,5.54628936 52.317866189,5.546203274 52.317703826,5.546117204 52.317541454,5.546031163 52.317379171,5.545926976 52.317182625,5.545822731 52.316985989,5.545740785 52.31683205,5.545623031 52.316609844,5.545505338 52.316387719,5.545417914 52.316222751,5.545330638 52.316058043,5.545243259 52.315893155,5.545160636 52.315737248),(5.546087065 52.318294301,5.546073304 52.31829743,5.546130066 52.318404756,5.546144019 52.318401987,5.546232809 52.318569847,5.546362045 52.318544094,5.546487529 52.318519092,5.546612998 52.31849409,5.546738481 52.318469088,5.546863949 52.318444085,5.547011182 52.318414748,5.546864258 52.318138756,5.54671732 52.318168164,5.546591955 52.318193256,5.546466605 52.318218339,5.546389867 52.318233703,5.546364471 52.318182211,5.546334909 52.318122294,5.546325867 52.318103945,5.546323757 52.318104334,5.546362375 52.318182637,5.546387771 52.31823412,5.546341401 52.318243403,5.546216035 52.318268486,5.546101002 52.318291514,5.546087065 52.318294301)),((5.547973353 52.325128223,5.548733205 52.323664518,5.548875955 52.323387153,5.549016452 52.323103849,5.549156632 52.322806606,5.54927532 52.322532949,5.549407476 52.322176236,5.549493484 52.321867122,5.549561398 52.321591827,5.549628909 52.321202649,5.54967039 52.320875001,5.549686178 52.320576769,5.549682683 52.320223468,5.54966437 52.319872795,5.549612424 52.319461582,5.549522922 52.319051607,5.549434324 52.318727714,5.549329896 52.318406018,5.549216913 52.318114793,5.549076157 52.317804363,5.548894625 52.31744798,5.548157992 52.316053426,5.547180144 52.314202035,5.547527117 52.314129357,5.547968186 52.314964441,5.549243807 52.317379457,5.549427912 52.317740868,5.549572026 52.318058672,5.549688195 52.318358116,5.549794999 52.318687133,5.549885562 52.319018213,5.5499772 52.319437991,5.550030584 52.319860481,5.550049326 52.320219324,5.550052895 52.320579697,5.5500366 52.320887349,5.549994096 52.321223142,5.549925167 52.321620555,5.549855521 52.321902854,5.549767286 52.322219997,5.549631429 52.322586701,5.549509557 52.322867589,5.549367749 52.323168295,5.549226482 52.323453155,5.549082933 52.323732095,5.546817708 52.328095397,5.546798114 52.328133127,5.546674685 52.328109018,5.546581703 52.328090862,5.546506164 52.32823633,5.546373165 52.328210355,5.547973353 52.325128223)),((5.546977027 52.32169921,5.546571844 52.321627029,5.546601804 52.321564489,5.546770809 52.321595097,5.546957381 52.321628387,5.547006607 52.321637066,5.546977027 52.32169921)),((5.546624107 52.32151792,5.546793156 52.321548538,5.546979654 52.32158181,5.54702869 52.321590677,5.547006607 52.321637066,5.546957381 52.321628387,5.546770809 52.321595097,5.546601804 52.321564489,5.546624107 52.32151792)),((5.546624107 52.32151792,5.54664641 52.321471352,5.546815503 52.321501979,5.547002045 52.321535421,5.547050787 52.321544235,5.547028763 52.321590515,5.54702869 52.321590677,5.546979654 52.32158181,5.546793156 52.321548538,5.546624107 52.32151792)),((5.546668713 52.321424784,5.546837835 52.32145541,5.547024274 52.321488835,5.547072987 52.321497595,5.547050918 52.321543965,5.547050787 52.321544235,5.547002045 52.321535421,5.546815503 52.321501979,5.54664641 52.321471352,5.546668713 52.321424784)),((5.546668713 52.321424784,5.546691016 52.321378216,5.546860181 52.321408851,5.547046576 52.321442114,5.547095128 52.321451081,5.547073074 52.321497424,5.547072987 52.321497595,5.547024274 52.321488835,5.546837835 52.32145541,5.546668713 52.321424784)),((5.546713318 52.32133163,5.546882513 52.321362292,5.547068688 52.3213956,5.547117299 52.321404531,5.54709523 52.321450874,5.547095128 52.321451081,5.547046576 52.321442114,5.546860181 52.321408851,5.546691016 52.321378216,5.546713318 52.32133163)),((5.546735621 52.32128507,5.54690486 52.321315723,5.5470908 52.321349095,5.547126054 52.321355482,5.547139483 52.321357909,5.547117386 52.321404333,5.547117299 52.321404531,5.547068688 52.3213956,5.546882513 52.321362292,5.546713318 52.32133163,5.546735621 52.32128507)),((5.546956739 52.321263058,5.547039722 52.321278054,5.547166574 52.32130098,5.547139542 52.321357783,5.547139483 52.321357909,5.547126054 52.321355482,5.5470908 52.321349095,5.54690486 52.321315723,5.546735621 52.32128507,5.546762946 52.321228025,5.546914264 52.321255377,5.546956739 52.321263058)),((5.54772358 52.318450093,5.547666948 52.318343262,5.547723387 52.318331995,5.54777999 52.318438818,5.54772358 52.318450093)),((5.54760348 52.318710395,5.547502794 52.318730403,5.547421498 52.31874653,5.547373874 52.318656655,5.547555929 52.318620466,5.547573015 52.318652763,5.54760348 52.318710395)),((5.547546906 52.31860342,5.547696528 52.318573584,5.547780212 52.318556924,5.547836845 52.318663756,5.54770424 52.318690378,5.54760348 52.318710395,5.547573015 52.318652763,5.547555929 52.318620466,5.547546906 52.31860342)),((5.547490333 52.31849648,5.547459823 52.318438767,5.547442693 52.318406219,5.547433936 52.318389559,5.547583439 52.31835993,5.547666948 52.318343262,5.54772358 52.318450093,5.547591326 52.318476526,5.547490333 52.31849648)),((5.547950111 52.318877418,5.547893478 52.318770587,5.547949859 52.318759366,5.548006448 52.318866152,5.547950111 52.318877418)),((5.547893478 52.318770587,5.547836845 52.318663756,5.547893196 52.318652445,5.547949859 52.318759366,5.547893478 52.318770587)),((5.547836622 52.318545694,5.547893196 52.318652445,5.547836845 52.318663756,5.547780212 52.318556924,5.547836622 52.318545694)),((5.54772358 52.318450093,5.54777999 52.318438818,5.547836622 52.318545694,5.547780212 52.318556924,5.54772358 52.318450093)),((5.547666784 52.318225164,5.547723387 52.318331995,5.547666948 52.318343262,5.547610316 52.31823643,5.547666784 52.318225164)),((5.547666784 52.318225164,5.547610316 52.31823643,5.547540099 52.318103957,5.547596581 52.318092691,5.547666784 52.318225164)),((5.548020331 52.319009891,5.547993144 52.318958608,5.547950111 52.318877418,5.548006448 52.318866152,5.548076624 52.318998589,5.548020331 52.319009891)),((5.545623031 52.316609844,5.545740785 52.31683205,5.545294705 52.316921096,5.545176983 52.316698934,5.545623031 52.316609844)),((5.545926976 52.317182625,5.545847968 52.317198271,5.545510482 52.317265592,5.545406825 52.317069017,5.545822731 52.316985989,5.545926976 52.317182625)),((5.545575429 52.317743532,5.545648591 52.317881152,5.545213345 52.317967791,5.545140743 52.317830755,5.545308258 52.317797465,5.545575429 52.317743532)),((5.545584962 52.317468595,5.545480779 52.317272507,5.545510482 52.317265592,5.545847968 52.317198271,5.545926976 52.317182625,5.546031163 52.317379171,5.545584962 52.317468595)),((5.545506679 52.318003493,5.545659274 52.317973117,5.545673598 52.318000421,5.545770298 52.318182381,5.545617599 52.318212784,5.545590946 52.318162354,5.545506679 52.318003493)),((5.545584962 52.317468595,5.546031163 52.317379171,5.546117204 52.317541454,5.5459931 52.317566112,5.545670899 52.317631067,5.545584962 52.317468595)),((5.545670899 52.317631067,5.545757189 52.317793574,5.545842849 52.317956199,5.545946905 52.318152565,5.545770298 52.318182381,5.545673598 52.318000421,5.545659274 52.317973117,5.545648591 52.317881152,5.545575429 52.317743532,5.545510532 52.317620371,5.545445251 52.317496509,5.545343751 52.317304408,5.545316448 52.317309972,5.545315872 52.317308885,5.545213288 52.317116596,5.54516375 52.317022786,5.545075489 52.316853622,5.545102675 52.316848175,5.545011101 52.316674826,5.544920298 52.316503849,5.544854991 52.316380068,5.544789466 52.316256638,5.544717013 52.316118954,5.544671395 52.316033991,5.544642887 52.315981002,5.544543925 52.315795152,5.5446905 52.315781035,5.544796877 52.315981534,5.54488449 52.316146646,5.544971824 52.31631157,5.545059143 52.316476476,5.545176983 52.316698934,5.545294705 52.316921096,5.545740785 52.31683205,5.545822731 52.316985989,5.545406825 52.317069017,5.545510482 52.317265592,5.545480779 52.317272507,5.545584962 52.317468595,5.545670899 52.317631067)),((5.545444052 52.318421989,5.545571983 52.31839658,5.545631977 52.318509762,5.545679958 52.318602046,5.545716158 52.318672614,5.545588255 52.318698095,5.545571105 52.318663713,5.545526418 52.31857803,5.545444052 52.318421989)),((5.54584406 52.318647133,5.545716158 52.318672614,5.545679958 52.318602046,5.545631977 52.318509762,5.545571983 52.31839658,5.545699915 52.318371162,5.545782164 52.318527087,5.545827042 52.318612724,5.54584406 52.318647133)),((5.545664107 52.319070801,5.545584232 52.319086745,5.54551629 52.318957611,5.545455249 52.318842839,5.545535154 52.318826941,5.54555336 52.318861205,5.545595828 52.318941776,5.545664107 52.319070801)),((5.545699915 52.318371162,5.545823112 52.318346694,5.545880523 52.318455233,5.54593141 52.31855189,5.545968856 52.318622267,5.54584406 52.318647133,5.545827042 52.318612724,5.545782164 52.318527087,5.545699915 52.318371162)),((5.546073304 52.31829743,5.546087065 52.318294301,5.546144019 52.318401987,5.546130066 52.318404756,5.546073304 52.31829743)),((5.5457865 52.319046379,5.545664107 52.319070801,5.545595828 52.318941776,5.54555336 52.318861205,5.545535154 52.318826941,5.54565759 52.318802582,5.545735007 52.318948285,5.5457865 52.319046379)),((5.5457865 52.319046379,5.545735007 52.318948285,5.54565759 52.318802582,5.545780027 52.318778223,5.545798438 52.318812406,5.545841508 52.318892859,5.545855801 52.318919794,5.545908893 52.319021957,5.5457865 52.319046379)),((5.545988769 52.319006023,5.545908893 52.319021957,5.545855801 52.318919794,5.545841508 52.318892859,5.545798438 52.318812406,5.545780027 52.318778223,5.545859931 52.318762334,5.545878504 52.318796462,5.545921457 52.318876943,5.545988769 52.319006023)),((5.546051234 52.318957136,5.545992888 52.318968728,5.546010386 52.319001707,5.545988769 52.319006023,5.545921457 52.318876943,5.545878504 52.318796462,5.545859931 52.318762334,5.545939836 52.318746435,5.546001405 52.318861026,5.546051234 52.318957136)),((5.545378471 52.320980478,5.545382768 52.320972015,5.545397544 52.32094097,5.545438506 52.320948285,5.545518371 52.320780468,5.545520484 52.320780852,5.545540064 52.32073968,5.5456487 52.320759128,5.545530637 52.321007687,5.545378471 52.320980478)),((5.545741129 52.321045261,5.545860333 52.320796322,5.545969541 52.320815841,5.545949492 52.320857301,5.545951606 52.320857675,5.545913073 52.320938922,5.545872137 52.321024935,5.545912791 52.321032196,5.545898029 52.321063241,5.545893428 52.321072469,5.545741129 52.321045261)),((5.545893428 52.321072469,5.545898029 52.321063241,5.545912791 52.321032196,5.545872137 52.321024935,5.545913073 52.320938922,5.545951606 52.320857675,5.545949492 52.320857301,5.545969541 52.320815841,5.546054694 52.320831059,5.54603469 52.320872555,5.545996289 52.320953765,5.545955001 52.321039743,5.545935755 52.321080033,5.545893428 52.321072469)),((5.545935755 52.321080033,5.545955001 52.321039743,5.545996289 52.320953765,5.54603469 52.320872555,5.546054694 52.320831059,5.546139847 52.320846278,5.546119887 52.320887809,5.546117774 52.320887426,5.546079241 52.320968555,5.546018795 52.321094868,5.546014509 52.321094092,5.545935755 52.321080033)),((5.546146716 52.321117714,5.54611964 52.32117475,5.546070505 52.321166646,5.545883289 52.32113287,5.54571395 52.321102504,5.545741129 52.321045261,5.545893428 52.321072469,5.545935755 52.321080033,5.546014509 52.321094092,5.546018795 52.321094868,5.546146716 52.321117714)),((5.544164684 52.318676123,5.544247547 52.318832793,5.544291528 52.31891863,5.544309249 52.318952903,5.544185668 52.318977523,5.544101478 52.318814644,5.544041529 52.31870058,5.544164684 52.318676123)),((5.544437139 52.318927424,5.544309249 52.318952903,5.544291528 52.31891863,5.544247547 52.318832793,5.544164684 52.318676123,5.544292617 52.318650706,5.544353094 52.318764518,5.544400384 52.318856974,5.544437139 52.318927424)),((5.544355003 52.319294653,5.54424279 52.319083816,5.544349487 52.319062544,5.544368161 52.31909679,5.544461965 52.319273479,5.544436947 52.319278519,5.544355003 52.319294653)),((5.54453794 52.319294697,5.544372573 52.319327659,5.544355003 52.319294653,5.544436947 52.319278519,5.544461965 52.319273479,5.544520296 52.319261735,5.54453794 52.319294697)),((5.544349487 52.319062544,5.544429392 52.31904662,5.544447935 52.319080892,5.544559001 52.319290507,5.54453794 52.319294697,5.544520296 52.319261735,5.544461965 52.319273479,5.544368161 52.31909679,5.544349487 52.319062544)),((5.544437139 52.318927424,5.544400384 52.318856974,5.544353094 52.318764518,5.544292617 52.318650706,5.54442055 52.318625299,5.544503149 52.318781871,5.544547614 52.318867617,5.544565043 52.318901945,5.544437139 52.318927424)),((5.544210045 52.3181663,5.543779162 52.318252398,5.543685383 52.318072994,5.54411524 52.317987266,5.544137874 52.318029999,5.544210045 52.3181663)),((5.544070856 52.317903434,5.54411524 52.317987266,5.543685383 52.318072994,5.543590886 52.317893554,5.544020272 52.317807899,5.544070856 52.317903434)),((5.544020272 52.317807899,5.543590886 52.317893554,5.543496581 52.317714043,5.543925202 52.317628353,5.543937103 52.317650833,5.544003972 52.317777138,5.544020272 52.317807899)),((5.543869953 52.317524016,5.543925202 52.317628353,5.543496581 52.317714043,5.54340185 52.317534513,5.543830089 52.317448726,5.543869953 52.317524016)),((5.543802848 52.31739728,5.543830089 52.317448726,5.54340185 52.317534513,5.543307737 52.317354884,5.543734932 52.317269017,5.543802848 52.31739728)),((5.543618206 52.317048812,5.54368525 52.317175342,5.543498435 52.317212636,5.54325804 52.317260975,5.543157077 52.317068404,5.543583333 52.316983024,5.543618206 52.317048812)),((5.543484178 52.316795915,5.543551192 52.316922364,5.543583333 52.316983024,5.543157077 52.317068404,5.543055881 52.316876138,5.543481461 52.316790787,5.543484178 52.316795915)),((5.54337956 52.316598468,5.543417179 52.316669466,5.543481461 52.316790787,5.543055881 52.316876138,5.542954392 52.316683711,5.54337956 52.316598468)),((5.543484178 52.316795915,5.543481461 52.316790787,5.543417179 52.316669466,5.543844194 52.3165843,5.543911385 52.316710856,5.543484178 52.316795915)),((5.543551192 52.316922364,5.543484178 52.316795915,5.543911385 52.316710856,5.543978297 52.316837305,5.543713325 52.316889829,5.543551192 52.316922364)),((5.543551192 52.316922364,5.543713325 52.316889829,5.543978297 52.316837305,5.544045841 52.316963761,5.543618206 52.317048812,5.543583333 52.316983024,5.543551192 52.316922364)),((5.544045841 52.316963761,5.544112681 52.317090237,5.543913336 52.317130065,5.54380868 52.317150903,5.54368525 52.317175342,5.543618206 52.317048812,5.544045841 52.316963761)),((5.543802848 52.31739728,5.543734932 52.317269017,5.544131191 52.317190263,5.544198872 52.317318158,5.543802848 52.31739728)),((5.543869953 52.317524016,5.543830089 52.317448726,5.543802848 52.31739728,5.544198872 52.317318158,5.54422902 52.317312428,5.544296477 52.317438912,5.544042072 52.317490372,5.543869953 52.317524016)),((5.543869953 52.317524016,5.544042072 52.317490372,5.544296477 52.317438912,5.544363332 52.31756519,5.543937103 52.317650833,5.543925202 52.317628353,5.543869953 52.317524016)),((5.543937103 52.317650833,5.544363332 52.31756519,5.544430468 52.317691719,5.544219192 52.317734116,5.544003972 52.317777138,5.543937103 52.317650833)),((5.544020272 52.317807899,5.544003972 52.317777138,5.544219192 52.317734116,5.544430468 52.317691719,5.544497662 52.317818239,5.54428939 52.317860075,5.544070856 52.317903434,5.544020272 52.317807899)),((5.544497662 52.317818239,5.544564739 52.31794466,5.54430608 52.31799662,5.544137874 52.318029999,5.54411524 52.317987266,5.544070856 52.317903434,5.54428939 52.317860075,5.544497662 52.317818239)),((5.544637264 52.318081167,5.544210045 52.3181663,5.544137874 52.318029999,5.54430608 52.31799662,5.544564739 52.31794466,5.544637264 52.318081167)),((5.544687749 52.316975751,5.544755579 52.317103843,5.544349603 52.317183915,5.544282008 52.317055778,5.544687749 52.316975751)),((5.544619742 52.316847318,5.544665025 52.31693282,5.544687749 52.316975751,5.544282008 52.317055778,5.544281801 52.317055266,5.544250877 52.317061311,5.544183479 52.316934531,5.544619742 52.316847318)),((5.54411577 52.316807041,5.544370171 52.316755715,5.544551971 52.316719307,5.544574473 52.316761807,5.544619742 52.316847318,5.544183479 52.316934531,5.54411577 52.316807041)),((5.54411577 52.316807041,5.544047663 52.316678778,5.544483862 52.316590694,5.544551971 52.316719307,5.544370171 52.316755715,5.54411577 52.316807041)),((5.544000231 52.318303461,5.544111262 52.318512672,5.543958693 52.318543046,5.543862132 52.318361075,5.543847516 52.318333871,5.544000231 52.318303461)),((5.544150865 52.318273467,5.544179804 52.318328064,5.544262014 52.318482651,5.544111262 52.318512672,5.544000231 52.318303461,5.544150865 52.318273467)),((5.544301499 52.318243472,5.544385748 52.318402298,5.544412634 52.318452665,5.544262014 52.318482651,5.544179804 52.318328064,5.544150865 52.318273467,5.544301499 52.318243472)),((5.544452132 52.318213478,5.544480881 52.318268121,5.544512934 52.318327837,5.544563253 52.31842268,5.544412634 52.318452665,5.544385748 52.318402298,5.544301499 52.318243472,5.544452132 52.318213478)),((5.544563253 52.31842268,5.544512934 52.318327837,5.544480881 52.318268121,5.544452132 52.318213478,5.544602766 52.318183483,5.544625283 52.318226145,5.544713873 52.318392694,5.544563253 52.31842268)),((5.544778215 52.318054735,5.544637264 52.318081167,5.544564739 52.31794466,5.544497662 52.317818239,5.544430468 52.317691719,5.544363332 52.31756519,5.544296477 52.317438912,5.54422902 52.317312428,5.544198872 52.317318158,5.544131191 52.317190263,5.543734932 52.317269017,5.543307737 52.317354884,5.54325804 52.317260975,5.543498435 52.317212636,5.54368525 52.317175342,5.54380868 52.317150903,5.543913336 52.317130065,5.544112681 52.317090237,5.544045841 52.316963761,5.543978297 52.316837305,5.543911385 52.316710856,5.543844194 52.3165843,5.543776944 52.316457519,5.543704455 52.31632147,5.543843768 52.316293576,5.543915967 52.316430489,5.54398155 52.316554602,5.544047663 52.316678778,5.54411577 52.316807041,5.544183479 52.316934531,5.544250877 52.317061311,5.544281801 52.317055266,5.544282008 52.317055778,5.544349603 52.317183915,5.544755579 52.317103843,5.544857566 52.317083422,5.544976217 52.317059806,5.54516375 52.317022786,5.545213288 52.317116596,5.54480541 52.31719776,5.544368513 52.317284912,5.544435888 52.317412833,5.544504115 52.317541239,5.544571975 52.317669484,5.544637738 52.317793426,5.544704294 52.317917448,5.544778215 52.318054735)),((5.542703138 52.321763519,5.542726534 52.321864177,5.542754294 52.321983712,5.542771643 52.322058404,5.54273704 52.322061874,5.542705956 52.322069087,5.542691734 52.322075002,5.542677326 52.322081869,5.542648247 52.322088073,5.54263077 52.322094288,5.542575778 52.321766913,5.542703138 52.321763519)),((5.542874153 52.322041085,5.542810774 52.322053517,5.542771643 52.322058404,5.542754294 52.321983712,5.542726534 52.321864177,5.542703138 52.321763519,5.542809218 52.321760701,5.54283117 52.321855438,5.542856251 52.321963751,5.542874153 52.322041085)),((5.542975722 52.322019273,5.542962307 52.322020845,5.54294403 52.322024725,5.542907673 52.322038371,5.542874153 52.322041085,5.542856251 52.321963751,5.54283117 52.321855438,5.542809218 52.321760701,5.542915254 52.321757883,5.542935807 52.321846699,5.542958311 52.321944015,5.542975722 52.322019273)),((5.543030242 52.322011031,5.543016745 52.322014446,5.542975722 52.322019273,5.542958311 52.321944015,5.542935807 52.321846699,5.542915254 52.321757883,5.543130273 52.321752162,5.543121464 52.321770778,5.543090615 52.321840527,5.543052107 52.321922231,5.543030242 52.322011031)),((5.543094422 52.321997141,5.543090491 52.321997093,5.543079451 52.321998572,5.543030242 52.322011031,5.543052107 52.321922231,5.543090615 52.321840527,5.543121464 52.321770778,5.543130273 52.321752162,5.543136169 52.321739734,5.543167724 52.321745336,5.54321055 52.321752946,5.543162736 52.321853365,5.543123949 52.321934989,5.543094422 52.321997141)),((5.543168797 52.322004359,5.54316056 52.322001979,5.543127147 52.321997592,5.543094422 52.321997141,5.543123949 52.321934989,5.543162736 52.321853365,5.54321055 52.321752946,5.543251263 52.321760172,5.543282392 52.321765704,5.543267688 52.321796784,5.54323471 52.321866168,5.543195791 52.321947755,5.543168797 52.322004359)),((5.543282392 52.321765704,5.543313243 52.321771181,5.543354234 52.32177847,5.543306406 52.321878925,5.543267648 52.321960513,5.543239941 52.322018825,5.543228352 52.322018346,5.543197692 52.322012715,5.543168797 52.322004359,5.543195791 52.321947755,5.54323471 52.321866168,5.543267688 52.321796784,5.543282392 52.321765704)),((5.543354234 52.32177847,5.543394947 52.321785696,5.543425944 52.321791201,5.54341124 52.321822282,5.543378233 52.32189171,5.54333949 52.32197327,5.543313866 52.322027203,5.543264689 52.322019844,5.543239941 52.322018825,5.543267648 52.321960513,5.543306406 52.321878925,5.543354234 52.32177847)),((5.543425944 52.321791201,5.543456545 52.321796634,5.543529062 52.321809516,5.543417435 52.322044547,5.543383971 52.322042461,5.543334088 52.322030223,5.543313866 52.322027203,5.54333949 52.32197327,5.543378233 52.32189171,5.54341124 52.321822282,5.543425944 52.321791201)),((5.542634442 52.321359578,5.542658987 52.321465888,5.542689146 52.321596421,5.542705946 52.321669145,5.542704216 52.321669282,5.542685364 52.321672336,5.542657539 52.321680497,5.542642222 52.321687474,5.542610244 52.321690716,5.542595027 52.321692956,5.542566206 52.321709935,5.542508433 52.32136306,5.542634442 52.321359578)),((5.542634442 52.321359578,5.542740345 52.321356644,5.542763637 52.321457185,5.542791279 52.321576532,5.542808197 52.321649543,5.542798213 52.321650842,5.542780318 52.321654847,5.54275515 52.321663481,5.542744086 52.32166621,5.542705946 52.321669145,5.542689146 52.321596421,5.542658987 52.321465888,5.542634442 52.321359578)),((5.542910006 52.321629277,5.542902383 52.321630608,5.542844262 52.321644849,5.542808197 52.321649543,5.542791279 52.321576532,5.542763637 52.321457185,5.542740345 52.321356644,5.542846408 52.321353709,5.542868287 52.321448473,5.54289325 52.321556652,5.542910006 52.321629277)),((5.543011528 52.321606908,5.542983633 52.321611618,5.542952937 52.321625023,5.54292377 52.321626877,5.542910006 52.321629277,5.54289325 52.321556652,5.542868287 52.321448473,5.542846408 52.321353709,5.542952369 52.321350783,5.542972923 52.32143977,5.542995428 52.321537194,5.543011528 52.321606908)),((5.543049699 52.321600458,5.543011528 52.321606908,5.542995428 52.321537194,5.542972923 52.32143977,5.542952369 52.321350783,5.543167107 52.321344838,5.54315843 52.321363265,5.543127392 52.321433545,5.543089133 52.321515122,5.543049699 52.321600458)),((5.543138059 52.321576389,5.543131835 52.321575004,5.543067838 52.321594835,5.543049699 52.321600458,5.543089133 52.321515122,5.543127392 52.321433545,5.54315843 52.321363265,5.543167107 52.321344838,5.543172988 52.321332319,5.543204543 52.321337949,5.543247354 52.321345595,5.543199512 52.321446374,5.543160975 52.321527898,5.543138059 52.321576389)),((5.543207935 52.32159332,5.543202242 52.321592788,5.543169706 52.321583412,5.543138059 52.321576389,5.543160975 52.321527898,5.543199512 52.321446374,5.543247354 52.321345595,5.543287627 52.321352786,5.543318741 52.321358335,5.543303978 52.321389398,5.543271354 52.321459149,5.543232816 52.321540664,5.543207935 52.32159332)),((5.543280024 52.321605547,5.543240581 52.321596368,5.543207935 52.32159332,5.543232816 52.321540664,5.543271354 52.321459149,5.543303978 52.321389398,5.543318741 52.321358335,5.543349576 52.32136384,5.543390979 52.321371236,5.543343181 52.321471934,5.543304658 52.32155344,5.543280024 52.321605547)),((5.543348445 52.321625553,5.543310406 52.321611214,5.543283694 52.321606396,5.543280024 52.321605547,5.543304658 52.32155344,5.543343181 52.321471934,5.543390979 52.321371236,5.543432102 52.321378578,5.543462938 52.321384083,5.543448175 52.321415146,5.543415022 52.321484718,5.5433765 52.321566215,5.543348445 52.321625553)),((5.542594228 52.321059174,5.542678595 52.321026105,5.542863799 52.320980635,5.5429745 52.321187385,5.542931668 52.321194839,5.542904638 52.321203511,5.542848955 52.32123532,5.542829973 52.321251325,5.542811175 52.321265281,5.542594228 52.321059174)),((5.543425863 52.321626529,5.543421182 52.321626032,5.543382512 52.321624115,5.54335338 52.321627407,5.543348445 52.321625553,5.5433765 52.321566215,5.543415022 52.321484718,5.543448175 52.321415146,5.543462938 52.321384083,5.54349392 52.321389614,5.543534618 52.321396876,5.543486864 52.321497493,5.543448342 52.321578981,5.543425863 52.321626529)),((5.543494778 52.321645501,5.543490524 52.321645389,5.543455517 52.321634012,5.543444967 52.321628544,5.543425863 52.321626529,5.543448342 52.321578981,5.543486864 52.321497493,5.543534618 52.321396876,5.543576021 52.321404263,5.543606856 52.321409768,5.543592093 52.32144084,5.543558691 52.321510278,5.543520183 52.321591757,5.543494778 52.321645501)),((5.543606856 52.321409768,5.543637442 52.321415237,5.543707171 52.321427799,5.543595713 52.321664538,5.543574241 52.321660504,5.543559792 52.321656119,5.543532536 52.321646538,5.543494778 52.321645501,5.543520183 52.321591757,5.543558691 52.321510278,5.543592093 52.32144084,5.543606856 52.321409768)),((5.542811175 52.321265281,5.542774011 52.321287143,5.54273861 52.321301129,5.542707271 52.321306923,5.542645873 52.321315074,5.542576808 52.321320037,5.54250125 52.321322428,5.542495568 52.321287293,5.542467106 52.321264098,5.542499629 52.32122379,5.542496668 52.321148981,5.542503106 52.321119502,5.54252944 52.321091839,5.542564833 52.321071337,5.542594228 52.321059174,5.542811175 52.321265281)),((5.54305206 52.321204063,5.54298588 52.321187002,5.54298208 52.32118654,5.542978194 52.321186671,5.5429745 52.321187385,5.542863799 52.320980635,5.542979229 52.3209553,5.543086006 52.320934604,5.543202141 52.321155556,5.543184674 52.321172611,5.543181896 52.321175338,5.543179927 52.321178325,5.543178838 52.321181472,5.543176313 52.321185088,5.543172761 52.321188364,5.543168297 52.321191192,5.543163069 52.321193482,5.543134752 52.32120337,5.543115016 52.321205086,5.543074012 52.321206659,5.543066516 52.321206426,5.54305915 52.321205555,5.54305206 52.321204063)),((5.543381344 52.321130136,5.543378032 52.321126968,5.543373799 52.32112425,5.543368789 52.321122064,5.54336321 52.321120508,5.543357238 52.321119617,5.543351106 52.321119445,5.543315236 52.321121137,5.543293848 52.321124464,5.543234478 52.321137601,5.543214044 52.321145214,5.543207606 52.321149878,5.543202141 52.321155556,5.543086006 52.320934604,5.543207232 52.320914258,5.54331038 52.320900029,5.543394098 52.32089946,5.543381344 52.321130136)),((5.543394098 52.32089946,5.543572919 52.320911582,5.54369495 52.320928326,5.543558552 52.321212966,5.543471716 52.321190414,5.543464198 52.321188078,5.543457118 52.321185265,5.54345055 52.32118203,5.543444583 52.321178379,5.543439259 52.321174369,5.543381344 52.321130136,5.543394098 52.32089946)),((5.54369495 52.320928326,5.543807859 52.320945307,5.543821415 52.321116477,5.543846071 52.321137404,5.543782183 52.321270838,5.543721747 52.321268923,5.543668193 52.321259701,5.54361202 52.321227204,5.543558552 52.321212966,5.54369495 52.320928326)),((5.543861211 52.320175515,5.543283446 52.320290423,5.543281969 52.320287549,5.543239611 52.320296053,5.543182471 52.320188366,5.543197275 52.320185471,5.543186645 52.320165532,5.543608793 52.320092354,5.543515477 52.319916139,5.543089743 52.320012061,5.543039395 52.319917038,5.543636795 52.319798151,5.543649493 52.319822041,5.543663563 52.319819236,5.543818451 52.320111669,5.543826513 52.320110131,5.543861211 52.320175515)),((5.54292181 52.319703637,5.542772179 52.319419428,5.543358527 52.319303945,5.543508744 52.319587281,5.54292181 52.319703637)),((5.544098331 52.318853816,5.544116082 52.31888817,5.544074135 52.318896315,5.544056385 52.318861952,5.544098331 52.318853816)),((5.544002316 52.318652278,5.543909 52.318670854,5.543059738 52.317068047,5.542766816 52.317126331,5.542173597 52.316006708,5.542282997 52.315996822,5.5422853 52.316001151,5.542415684 52.316246424,5.542458519 52.316287324,5.542620368 52.316441861,5.54285327 52.316490852,5.542954392 52.316683711,5.543055881 52.316876138,5.543157077 52.317068404,5.54325804 52.317260975,5.543307737 52.317354884,5.54340185 52.317534513,5.543496581 52.317714043,5.543590886 52.317893554,5.543685383 52.318072994,5.543779162 52.318252398,5.543847516 52.318333871,5.543862132 52.318361075,5.543958693 52.318543046,5.544014817 52.318649799,5.544004412 52.318651862,5.543971998 52.318593503,5.543969917 52.318593937,5.544002316 52.318652278)),((5.539654788 52.31732754,5.539602804 52.317350688,5.54000977 52.316495561,5.541528262 52.31609289,5.54196009 52.316025997,5.542173597 52.316006708,5.542766816 52.317126331,5.543059738 52.317068047,5.543909 52.318670854,5.543997339 52.318837548,5.544110573 52.31905125,5.544528715 52.319840314,5.542996403 52.323558939,5.542806141 52.323524902,5.541648151 52.320466276,5.541266758 52.319746709,5.541295328 52.319712788,5.541732494 52.320539927,5.541972791 52.320491654,5.541883963 52.320322138,5.541815428 52.320192679,5.542001819 52.320156215,5.542121125 52.320132421,5.542296649 52.320096384,5.542154822 52.319828171,5.541349768 52.319678079,5.54069501 52.317948392,5.540141178 52.318069518,5.539747606 52.31730949,5.539654788 52.31732754),(5.540130874 52.316651394,5.540328145 52.317025601,5.541042246 52.316883432,5.541044518 52.316887375,5.541215425 52.317201604,5.541917717 52.317058457,5.541747699 52.316743985,5.541729116 52.31670991,5.541928843 52.316670292,5.541944906 52.316701026,5.541986807 52.316692802,5.541970699 52.316661986,5.541932711 52.316589335,5.541758559 52.316623967,5.541619954 52.316363147,5.541284285 52.316430273,5.541175163 52.316224832,5.540692622 52.316352365,5.540721749 52.316407808,5.540668562 52.316447342,5.540703491 52.316513824,5.540919764 52.316470779,5.540930969 52.316492128,5.540130874 52.316651394),(5.542451779 52.320531273,5.542470085 52.320565348,5.542512003 52.32055689,5.542493712 52.320522814,5.542451779 52.320531273),(5.542467106 52.321264098,5.542495568 52.321287293,5.54250125 52.321322428,5.542576808 52.321320037,5.542645873 52.321315074,5.542707271 52.321306923,5.54273861 52.321301129,5.542774011 52.321287143,5.542811175 52.321265281,5.542829973 52.321251325,5.542848955 52.32123532,5.542904638 52.321203511,5.542931668 52.321194839,5.5429745 52.321187385,5.542978194 52.321186671,5.54298208 52.32118654,5.54298588 52.321187002,5.54305206 52.321204063,5.54305915 52.321205555,5.543066516 52.321206426,5.543074012 52.321206659,5.543115016 52.321205086,5.543134752 52.32120337,5.543163069 52.321193482,5.543168297 52.321191192,5.543172761 52.321188364,5.543176313 52.321185088,5.543178838 52.321181472,5.543179927 52.321178325,5.543181896 52.321175338,5.543184674 52.321172611,5.543202141 52.321155556,5.543207606 52.321149878,5.543214044 52.321145214,5.543234478 52.321137601,5.543293848 52.321124464,5.543315236 52.321121137,5.543351106 52.321119445,5.543357238 52.321119617,5.54336321 52.321120508,5.543368789 52.321122064,5.543373799 52.32112425,5.543378032 52.321126968,5.543381344 52.321130136,5.543439259 52.321174369,5.543444583 52.321178379,5.54345055 52.32118203,5.543457118 52.321185265,5.543464198 52.321188078,5.543471716 52.321190414,5.543558552 52.321212966,5.54361202 52.321227204,5.543668193 52.321259701,5.543721747 52.321268923,5.543782183 52.321270838,5.543846071 52.321137404,5.543821415 52.321116477,5.543807859 52.320945307,5.54369495 52.320928326,5.543572919 52.320911582,5.543394098 52.32089946,5.54331038 52.320900029,5.543207232 52.320914258,5.543086006 52.320934604,5.542979229 52.3209553,5.542863799 52.320980635,5.542678595 52.321026105,5.542594228 52.321059174,5.542564833 52.321071337,5.54252944 52.321091839,5.542503106 52.321119502,5.542496668 52.321148981,5.542499629 52.32122379,5.542467106 52.321264098),(5.542508433 52.32136306,5.542566206 52.321709935,5.542595027 52.321692956,5.542610244 52.321690716,5.542642222 52.321687474,5.542657539 52.321680497,5.542685364 52.321672336,5.542704216 52.321669282,5.542705946 52.321669145,5.542744086 52.32166621,5.54275515 52.321663481,5.542780318 52.321654847,5.542798213 52.321650842,5.542808197 52.321649543,5.542844262 52.321644849,5.542902383 52.321630608,5.542910006 52.321629277,5.54292377 52.321626877,5.542952937 52.321625023,5.542983633 52.321611618,5.543011528 52.321606908,5.543049699 52.321600458,5.543067838 52.321594835,5.543131835 52.321575004,5.543138059 52.321576389,5.543169706 52.321583412,5.543202242 52.321592788,5.543207935 52.32159332,5.543240581 52.321596368,5.543280024 52.321605547,5.543283694 52.321606396,5.543310406 52.321611214,5.543348445 52.321625553,5.54335338 52.321627407,5.543382512 52.321624115,5.543421182 52.321626032,5.543425863 52.321626529,5.543444967 52.321628544,5.543455517 52.321634012,5.543490524 52.321645389,5.543494778 52.321645501,5.543532536 52.321646538,5.543559792 52.321656119,5.543574241 52.321660504,5.543595713 52.321664538,5.543707171 52.321427799,5.543637442 52.321415237,5.543606856 52.321409768,5.543576021 52.321404263,5.543534618 52.321396876,5.54349392 52.321389614,5.543462938 52.321384083,5.543432102 52.321378578,5.543390979 52.321371236,5.543349576 52.32136384,5.543318741 52.321358335,5.543287627 52.321352786,5.543247354 52.321345595,5.543204543 52.321337949,5.543172988 52.321332319,5.543167107 52.321344838,5.542952369 52.321350783,5.542846408 52.321353709,5.542740345 52.321356644,5.542634442 52.321359578,5.542508433 52.32136306),(5.542575778 52.321766913,5.54263077 52.322094288,5.542648247 52.322088073,5.542677326 52.322081869,5.542691734 52.322075002,5.542705956 52.322069087,5.54273704 52.322061874,5.542771643 52.322058404,5.542810774 52.322053517,5.542874153 52.322041085,5.542907673 52.322038371,5.54294403 52.322024725,5.542962307 52.322020845,5.542975722 52.322019273,5.543016745 52.322014446,5.543030242 52.322011031,5.543079451 52.321998572,5.543090491 52.321997093,5.543094422 52.321997141,5.543127147 52.321997592,5.54316056 52.322001979,5.543168797 52.322004359,5.543197692 52.322012715,5.543228352 52.322018346,5.543239941 52.322018825,5.543264689 52.322019844,5.543313866 52.322027203,5.543334088 52.322030223,5.543383971 52.322042461,5.543417435 52.322044547,5.543529062 52.321809516,5.543456545 52.321796634,5.543425944 52.321791201,5.543394947 52.321785696,5.543354234 52.32177847,5.543313243 52.321771181,5.543282392 52.321765704,5.543251263 52.321760172,5.54321055 52.321752946,5.543167724 52.321745336,5.543136169 52.321739734,5.543130273 52.321752162,5.542915254 52.321757883,5.542809218 52.321760701,5.542703138 52.321763519,5.542575778 52.321766913),(5.542644294 52.322178009,5.542702137 52.322460558,5.542716805 52.322477535,5.542731723 52.322465211,5.542738591 52.322462137,5.542768095 52.322455681,5.542803514 52.322442315,5.542821432 52.322440512,5.542834682 52.32244213,5.542840581 52.32244285,5.542871053 52.322440734,5.542906846 52.322425165,5.542926752 52.322425633,5.54293789 52.3224272,5.542942938 52.322427913,5.542979194 52.322422769,5.542995626 52.322415683,5.54300762 52.322410508,5.543051225 52.322397428,5.543059615 52.322397498,5.543092883 52.322397759,5.543126928 52.32240255,5.543133918 52.322404697,5.543163769 52.32241387,5.543205142 52.322416566,5.543238497 52.322420935,5.543332001 52.322187195,5.543244513 52.322171789,5.543173038 52.322159202,5.543100579 52.322146445,5.543092791 52.322163065,5.542879652 52.322170167,5.542773706 52.322173695,5.542644294 52.322178009),(5.542772179 52.319419428,5.54292181 52.319703637,5.543508744 52.319587281,5.543358527 52.319303945,5.542772179 52.319419428),(5.542790179 52.322633797,5.542875253 52.323005836,5.542882761 52.323026229,5.542898409 52.323008709,5.542989288 52.322832512,5.543046664 52.322822936,5.543142461 52.322619213,5.542962467 52.322588074,5.542921765 52.322625948,5.542790179 52.322633797),(5.543039395 52.319917038,5.543089743 52.320012061,5.543515477 52.319916139,5.543608793 52.320092354,5.543186645 52.320165532,5.543197275 52.320185471,5.543182471 52.320188366,5.543239611 52.320296053,5.543281969 52.320287549,5.543283446 52.320290423,5.543861211 52.320175515,5.543826513 52.320110131,5.543818451 52.320111669,5.543663563 52.319819236,5.543649493 52.319822041,5.543636795 52.319798151,5.543039395 52.319917038)),((5.546389867 52.318233703,5.546387771 52.31823412,5.546362375 52.318182637,5.546323757 52.318104334,5.546325867 52.318103945,5.546334909 52.318122294,5.546364471 52.318182211,5.546389867 52.318233703)),((5.543997339 52.318837548,5.543909 52.318670854,5.544002316 52.318652278,5.544034243 52.318709766,5.544036324 52.318709332,5.544004412 52.318651862,5.544014817 52.318649799,5.54492034 52.318469605,5.545805982 52.318293367,5.545931641 52.318268356,5.546133214 52.318648749,5.545121905 52.318849999,5.544110573 52.31905125,5.543997339 52.318837548),(5.544041529 52.31870058,5.544101478 52.318814644,5.544185668 52.318977523,5.544309249 52.318952903,5.544437139 52.318927424,5.544565043 52.318901945,5.544692947 52.318876465,5.54482085 52.318850985,5.544948754 52.318825505,5.545076657 52.318800025,5.545204546 52.318774545,5.545332449 52.318749056,5.545460352 52.318723575,5.545588255 52.318698095,5.545716158 52.318672614,5.54584406 52.318647133,5.545968856 52.318622267,5.54593141 52.31855189,5.545880523 52.318455233,5.545895165 52.31845232,5.545837768 52.318343781,5.545823112 52.318346694,5.545699915 52.318371162,5.545571983 52.31839658,5.545444052 52.318421989,5.545316105 52.318447407,5.545188174 52.318472815,5.545060242 52.318498232,5.544932309 52.318523641,5.544804362 52.318549058,5.54467643 52.318574465,5.544548497 52.318599882,5.54442055 52.318625299,5.544292617 52.318650706,5.544164684 52.318676123,5.544041529 52.31870058),(5.544056385 52.318861952,5.544074135 52.318896315,5.544116082 52.31888817,5.544098331 52.318853816,5.544056385 52.318861952)),((5.544692944 52.321843939,5.544669548 52.321892953,5.544646137 52.321942003,5.544622565 52.321991386,5.544611195 52.322015182,5.54420626 52.321942508,5.544315469 52.321713285,5.544720461 52.321786283,5.544716443 52.321794728,5.544692944 52.321843939)),((5.544771971 52.321678389,5.544739941 52.321745489,5.544720461 52.321786283,5.544315469 52.321713285,5.544369235 52.321600445,5.544520742 52.321627279,5.544646902 52.321649625,5.544775044 52.321672319,5.544771971 52.321678389)),((5.545126123 52.320935356,5.54493628 52.321333628,5.544530824 52.321260991,5.544720405 52.320862612,5.544872982 52.320889974,5.544915324 52.320897557,5.54499829 52.320912438,5.545126123 52.320935356)),((5.545484089 52.319801443,5.545366427 52.319824825,5.545236615 52.319850613,5.545107038 52.319876365,5.544976859 52.319902235,5.544847032 52.319928032,5.544705392 52.319956172,5.544372573 52.319327659,5.54453794 52.319294697,5.544559001 52.319290507,5.544639038 52.319274556,5.544761183 52.319250207,5.544883753 52.319225777,5.544963644 52.319209852,5.544984837 52.319205626,5.545149792 52.319172754,5.54515319 52.31917949,5.545177812 52.319174514,5.545504583 52.319790451,5.545480693 52.319795246,5.545484089 52.319801443)),((5.544429392 52.31904662,5.544509444 52.319030659,5.54452784 52.319064967,5.544570513 52.319145575,5.544639038 52.319274556,5.544559001 52.319290507,5.544447935 52.319080892,5.544429392 52.31904662)),((5.544509444 52.319030659,5.54463175 52.319006274,5.544660304 52.319059452,5.544709604 52.31915205,5.544761183 52.319250207,5.544639038 52.319274556,5.544570513 52.319145575,5.54452784 52.319064967,5.544509444 52.319030659)),((5.544528715 52.319840314,5.544110573 52.31905125,5.545121905 52.318849999,5.545769696 52.320072398,5.544758338 52.320273654,5.544528715 52.319840314),(5.544349487 52.319062544,5.54424279 52.319083816,5.544355003 52.319294653,5.544372573 52.319327659,5.544705392 52.319956172,5.544828687 52.320188699,5.544970342 52.320160495,5.545100477 52.320134581,5.545229924 52.320108802,5.54535956 52.320082987,5.545489299 52.320057153,5.545606653 52.32003379,5.545484089 52.319801443,5.545480693 52.319795246,5.545504583 52.319790451,5.545177812 52.319174514,5.54515319 52.31917949,5.545149792 52.319172754,5.545132177 52.319139568,5.545020298 52.318928822,5.544914027 52.318950004,5.544834122 52.318965938,5.544754202 52.318981872,5.54463175 52.319006274,5.544509444 52.319030659,5.544429392 52.31904662,5.544349487 52.319062544)),((5.544548497 52.318599882,5.54467643 52.318574465,5.54475903 52.318730903,5.544803554 52.31881663,5.54482085 52.318850985,5.544692947 52.318876465,5.544656308 52.318805934,5.544608623 52.318713622,5.544548497 52.318599882)),((5.54442055 52.318625299,5.544548497 52.318599882,5.544608623 52.318713622,5.544656308 52.318805934,5.544692947 52.318876465,5.544565043 52.318901945,5.544547614 52.318867617,5.544503149 52.318781871,5.54442055 52.318625299)),((5.544394684 52.321306856,5.544764619 52.320530387,5.545785364 52.32071299,5.545415445 52.321489463,5.544394684 52.321306856),(5.544720405 52.320862612,5.544530824 52.321260991,5.54493628 52.321333628,5.54534014 52.321406491,5.545530637 52.321007687,5.5456487 52.320759128,5.545540064 52.32073968,5.545454647 52.32072439,5.545369656 52.32070917,5.545244407 52.320686743,5.545119173 52.320664324,5.545033903 52.320649051,5.544948765 52.320633814,5.544839 52.320614161,5.544720405 52.320862612)),((5.544520742 52.321627279,5.544369235 52.321600445,5.54446877 52.321390109,5.544620585 52.321417212,5.544603899 52.321451891,5.544566788 52.321529557,5.544520742 52.321627279)),((5.544646902 52.321649625,5.544520742 52.321627279,5.544566788 52.321529557,5.544603899 52.321451891,5.544620585 52.321417212,5.544747318 52.321439836,5.544646902 52.321649625)),((5.543757537 52.322644113,5.544394684 52.321306856,5.545415445 52.321489463,5.544778327 52.322826725,5.543757537 52.322644113),(5.543993635 52.322388784,5.543893681 52.322598006,5.544045779 52.322625252,5.544172412 52.322647931,5.544299046 52.322670609,5.54442568 52.322693297,5.544552299 52.322715975,5.544703561 52.322743069,5.544806744 52.322527326,5.544838483 52.322460703,5.544861923 52.322411501,5.544885392 52.322362235,5.544908817 52.322313059,5.544932286 52.322263775,5.544968217 52.322188366,5.545004046 52.322113127,5.545027529 52.322063844,5.545050983 52.322014605,5.545074423 52.321965411,5.545097804 52.321916316,5.545121229 52.321867149,5.545144697 52.321817875,5.545176522 52.321751063,5.545278775 52.321534719,5.545127531 52.321507715,5.545000798 52.321485092,5.544874065 52.321462468,5.544747318 52.321439836,5.544620585 52.321417212,5.54446877 52.321390109,5.544369235 52.321600445,5.544315469 52.321713285,5.54420626 52.321942508,5.544072358 52.32222355,5.543993635 52.322388784)),((5.544864506 52.318362717,5.545015125 52.318332731,5.545165744 52.318302744,5.545316363 52.318272758,5.545466981 52.318242771,5.545617599 52.318212784,5.545770298 52.318182381,5.545805982 52.318293367,5.54492034 52.318469605,5.544014817 52.318649799,5.543958693 52.318543046,5.544111262 52.318512672,5.544262014 52.318482651,5.544412634 52.318452665,5.544563253 52.31842268,5.544713873 52.318392694,5.544864506 52.318362717)),((5.545659274 52.317973117,5.545506679 52.318003493,5.545356061 52.318033489,5.545205429 52.318063485,5.545054796 52.31809348,5.544904164 52.318123475,5.544753531 52.318153461,5.544602766 52.318183483,5.544452132 52.318213478,5.544301499 52.318243472,5.544150865 52.318273467,5.544000231 52.318303461,5.543847516 52.318333871,5.543779162 52.318252398,5.544210045 52.3181663,5.544637264 52.318081167,5.544778215 52.318054735,5.545213345 52.317967791,5.545648591 52.317881152,5.545659274 52.317973117)),((5.545823112 52.318346694,5.545837768 52.318343781,5.545895165 52.31845232,5.545880523 52.318455233,5.545823112 52.318346694)),((5.545100477 52.320134581,5.544976859 52.319902235,5.545107038 52.319876365,5.545229924 52.320108802,5.545100477 52.320134581)),((5.545229924 52.320108802,5.545107038 52.319876365,5.545236615 52.319850613,5.54535956 52.320082987,5.545229924 52.320108802)),((5.545489299 52.320057153,5.54535956 52.320082987,5.545236615 52.319850613,5.545366427 52.319824825,5.545384545 52.319859025,5.545427236 52.319940019,5.545489299 52.320057153)),((5.545427236 52.319940019,5.545384545 52.319859025,5.545366427 52.319824825,5.545484089 52.319801443,5.545606653 52.32003379,5.545489299 52.320057153,5.545427236 52.319940019)),((5.545858663 52.319727395,5.545876441 52.319760877,5.54591975 52.319842148,5.545981858 52.319959255,5.545864607 52.319982574,5.54574131 52.319750947,5.545858663 52.319727395)),((5.545858663 52.319727395,5.545988077 52.319701426,5.54611167 52.319933439,5.545981858 52.319959255,5.54591975 52.319842148,5.545876441 52.319760877,5.545858663 52.319727395)),((5.544002316 52.318652278,5.543969917 52.318593937,5.543971998 52.318593503,5.544004412 52.318651862,5.544036324 52.318709332,5.544034243 52.318709766,5.544002316 52.318652278)),((5.545581169 52.321382099,5.545750216 52.321412421,5.54593683 52.321445821,5.545986349 52.321454526,5.54595649 52.321517031,5.545551471 52.32144463,5.545581169 52.321382099)),((5.545603413 52.321335252,5.545772387 52.321365827,5.546008637 52.321407859,5.545986349 52.321454526,5.54593683 52.321445821,5.545750216 52.321412421,5.545581169 52.321382099,5.545603413 52.321335252)),((5.545625425 52.321288901,5.545794573 52.321319232,5.545981878 52.321352954,5.546030955 52.321361147,5.546008637 52.321407859,5.545772387 52.321365827,5.545603413 52.321335252,5.545625425 52.321288901)),((5.545647552 52.321242306,5.545816745 52.321272646,5.546053127 52.321314714,5.546030955 52.321361147,5.545981878 52.321352954,5.545794573 52.321319232,5.545625425 52.321288901,5.545647552 52.321242306)),((5.54566968 52.321195702,5.545838931 52.321226051,5.546025781 52.321259702,5.5460754 52.321267975,5.546064366 52.321291196,5.546053127 52.321314714,5.545816745 52.321272646,5.545647552 52.321242306,5.54566968 52.321195702)),((5.545691807 52.321149107,5.545861103 52.321179456,5.546097455 52.321221516,5.5460754 52.321267975,5.546025781 52.321259702,5.545838931 52.321226051,5.54566968 52.321195702,5.545691807 52.321149107)),((5.54571395 52.321102504,5.545883289 52.32113287,5.546070505 52.321166646,5.54611964 52.32117475,5.546097455 52.321221516,5.545861103 52.321179456,5.545691807 52.321149107,5.54571395 52.321102504)),((5.545315872 52.317308885,5.545316448 52.317309972,5.545343751 52.317304408,5.545445251 52.317496509,5.545009331 52.317582691,5.544941411 52.317454465,5.544907466 52.317390392,5.545315872 52.317308885)),((5.545445251 52.317496509,5.545510532 52.317620371,5.545075037 52.317706723,5.545009331 52.317582691,5.545445251 52.317496509)),((5.545075037 52.317706723,5.545510532 52.317620371,5.545575429 52.317743532,5.545308258 52.317797465,5.545140743 52.317830755,5.545075037 52.317706723)),((5.545316363 52.318272758,5.545289725 52.318222328,5.545227991 52.318106146,5.545205429 52.318063485,5.545356061 52.318033489,5.545384943 52.318088122,5.545416835 52.318147884,5.545466981 52.318242771,5.545316363 52.318272758)),((5.545466981 52.318242771,5.545416835 52.318147884,5.545384943 52.318088122,5.545356061 52.318033489,5.545506679 52.318003493,5.545590946 52.318162354,5.545617599 52.318212784,5.545466981 52.318242771)),((5.545188174 52.318472815,5.545316105 52.318447407,5.545375894 52.318560778,5.54542386 52.318653026,5.545460352 52.318723575,5.545332449 52.318749056,5.545315167 52.318714701,5.545270393 52.318629037,5.545188174 52.318472815)),((5.545316105 52.318447407,5.545444052 52.318421989,5.545526418 52.31857803,5.545571105 52.318663713,5.545588255 52.318698095,5.545460352 52.318723575,5.54542386 52.318653026,5.545375894 52.318560778,5.545316105 52.318447407)),((5.545390405 52.319088532,5.545279127 52.318877875,5.545375344 52.318858738,5.545394473 52.318892838,5.545436356 52.318973536,5.545486798 52.319069331,5.545462 52.319074299,5.545390405 52.319088532)),((5.545390405 52.319088532,5.545462 52.319074299,5.545486798 52.319069331,5.545545452 52.319057596,5.545563186 52.319090943,5.545408036 52.319121898,5.545390405 52.319088532)),((5.545455249 52.318842839,5.54551629 52.318957611,5.545584232 52.319086745,5.545563186 52.319090943,5.545545452 52.319057596,5.545486798 52.319069331,5.545436356 52.318973536,5.545394473 52.318892838,5.545375344 52.318858738,5.545455249 52.318842839)),((5.545253207 52.320958078,5.545313331 52.320831676,5.545352057 52.320750627,5.545349943 52.320750252,5.545369656 52.32070917,5.545454647 52.32072439,5.545435008 52.320765508,5.545340529 52.320964468,5.545336203 52.320972922,5.545253207 52.320958078)),((5.545336203 52.320972922,5.545340529 52.320964468,5.545435008 52.320765508,5.545454647 52.32072439,5.545540064 52.32073968,5.545520484 52.320780852,5.545518371 52.320780468,5.545438506 52.320948285,5.545397544 52.32094097,5.545382768 52.320972015,5.545378471 52.320980478,5.545336203 52.320972922)),((5.545378471 52.320980478,5.545530637 52.321007687,5.54534014 52.321406491,5.54493628 52.321333628,5.545126123 52.320935356,5.545253207 52.320958078,5.545336203 52.320972922,5.545378471 52.320980478))) diff --git a/rust/sedona-geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt b/rust/sedona-geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt deleted file mode 100644 index 277c8c7f..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/nl_plots_epsg_28992.wkt +++ /dev/null @@ -1 +0,0 @@ -MULTIPOLYGON(((165810.88331013816 481105.4135319523,165805.03924028226 481087.31955796864,165827.0243031839 481080.140574016,165835.492344386 481077.4156058137,165841.32134709298 481095.4945620494,165810.88331013816 481105.4135319523)),((165841.32134709298 481095.4945620494,165847.1513999863 481113.57252679195,165816.684352003 481123.520548419,165810.88331013816 481105.4135319523,165841.32134709298 481095.4945620494)),((165816.684352003 481123.520548419,165847.1513999863 481113.57252679195,165854.20752218604 481135.45653249667,165823.73143364282 481145.3844633131,165816.684352003 481123.520548419)),((165833.25349588718 481161.17546683183,165834.20445387694 481160.8674610125,165842.05346714336 481158.3225058388,165847.36754182985 481174.9205297333,165851.94157576005 481189.0094869923,165843.1235316795 481191.85549232556,165837.11053207144 481173.1655096956,165833.25349588718 481161.17546683183)),((165837.1465972164 481232.7994343237,165832.3686351562 481234.366448736,165830.64859399022 481234.9194398026,165827.27456949902 481224.218452369,165823.10456946667 481211.45945178793,165829.60356585556 481209.3654743581,165837.1465972164 481232.7994343237)),((165837.1465972164 481232.7994343237,165838.33361808676 481236.48543613846,165827.8525865298 481239.8724551546,165826.6675734102 481236.20047952776,165830.64859399022 481234.9194398026,165832.3686351562 481234.366448736,165837.1465972164 481232.7994343237)),((165851.94157576005 481189.0094869923,165847.36754182985 481174.9205297333,165842.05346714336 481158.3225058388,165850.60753492877 481155.55046525295,165856.1815873062 481173.1014900736,165857.05258033366 481175.793547097,165859.00158758258 481181.6654534509,165860.50362192755 481186.2464934498,165851.94157576005 481189.0094869923)),((165854.44664577578 481227.21249125793,165846.93358080686 481203.7654415951,165854.2025963923 481201.4225106706,165855.32264947437 481205.11148452404,165858.10862015767 481213.5774607407,165861.72971818765 481224.8815075602,165859.98968400923 481225.4384499416,165854.44664577578 481227.21249125793)),((165838.33361808676 481236.48543613846,165838.56360882698 481237.1954718372,165840.09366832077 481236.7153893235,165848.1937031559 481261.8054207434,165793.46357298896 481279.5453289056,165785.32353432756 481254.3953284019,165786.98351243007 481253.8653332394,165786.7535148305 481253.1554111886,165797.33956570356 481249.73437673337,165798.77555773532 481249.27043149626,165804.22552325492 481247.50836312154,165812.5765474452 481244.8093578957,165820.9275807907 481242.11036678863,165826.3776279051 481240.34943564463,165827.8525865298 481239.8724551546,165838.33361808676 481236.48543613846)),((165866.8946775674 481227.2614635345,165855.62366086923 481230.8854573256,165854.44664577578 481227.21249125793,165859.98968400923 481225.4384499416,165861.72971818765 481224.8815075602,165865.69470760453 481223.61247728474,165866.63470314653 481226.45244678966,165866.8946775674 481227.2614635345)),((165834.9897973112 481314.85237311217,165843.37386738468 481340.70629521617,165834.53086462567 481343.55537642253,165826.1607530206 481317.7223063045,165834.9897973112 481314.85237311217)),((165843.37386738468 481340.70629521617,165834.9897973112 481314.85237311217,165843.82383160238 481311.9813540052,165852.23086611537 481337.8533663467,165843.37386738468 481340.70629521617)),((165826.1607530206 481317.7223063045,165817.33076423616 481320.5923644494,165809.32371226288 481323.19531513343,165809.09371874726 481322.4553506549,165807.4537167706 481322.99528463103,165799.3436366324 481297.8053805152,165854.04375129592 481280.1453590037,165862.18384853032 481305.2454062637,165860.56385632814 481305.7653391327,165860.79386263408 481306.4653622439,165852.74684928128 481309.0813951317,165843.82383160238 481311.9813540052,165834.9897973112 481314.85237311217,165826.1607530206 481317.7223063045)),((165856.84086455274 481321.967319789,165861.07293261477 481335.00531610136,165852.23086611537 481337.8533663467,165843.82383160238 481311.9813540052,165852.74684928128 481309.0813951317,165853.9738187968 481312.8804221144,165856.84086455274 481321.967319789)),((165827.9150598663 481472.76617049647,165832.06707809644 481458.72118103574,165834.7140592224 481449.70024741895,165834.85802961228 481449.74317757157,165836.22904270093 481445.12527897663,165844.7631001899 481447.63422229275,165839.82106861868 481464.42724634655,165836.6310674592 481475.3272369474,165827.9150598663 481472.76617049647)),((165845.2901032648 481477.87217160105,165836.6310674592 481475.3272369474,165839.82106861868 481464.42724634655,165844.7631001899 481447.63422229275,165853.2880852939 481450.14126894844,165851.9171189479 481454.76227839023,165852.06109124355 481454.8042076756,165849.44014112678 481463.8181797485,165845.2901032648 481477.87217160105)),((165859.0901429811 481451.847246296,165857.7221495504 481456.47827446036,165855.10815529912 481465.4872519917,165852.2621572328 481475.0532652427,165850.94713900573 481479.5352067781,165845.2901032648 481477.87217160105,165849.44014112678 481463.8181797485,165852.06109124355 481454.8042076756,165851.9171189479 481454.76227839023,165853.2880852939 481450.14126894844,165859.0901429811 481451.847246296)),((165859.0901429811 481451.847246296,165864.89212849856 481453.5532303068,165863.52718054497 481458.19227461156,165863.38416540896 481458.1492344596,165860.74618647926 481467.1472523947,165857.91919632955 481476.7151957553,165855.13816786418 481475.8981865053,165853.82416749134 481480.38124216447,165850.94713900573 481479.5352067781,165852.2621572328 481475.0532652427,165855.10815529912 481465.4872519917,165857.7221495504 481456.47827446036,165859.0901429811 481451.847246296)),((165845.2901032648 481477.87217160105,165850.94713900573 481479.5352067781,165853.82416749134 481480.38124216447,165864.26622637178 481483.4501794296,165851.18822609202 481527.8531666835,165823.56413966522 481519.7282063275,165825.61514416043 481512.7781425044,165827.14610558908 481507.58913941676,165828.6791265633 481502.39513447497,165830.20212846796 481497.23215074255,165830.97413562768 481494.6171360007,165831.73209434262 481492.0351359933,165833.24713194987 481486.86924293207,165834.77111099343 481481.66921192576,165836.6310674592 481475.3272369474,165845.2901032648 481477.87217160105)),((165730.21619993297 481708.4439375155,165742.92118772503 481665.2739500047,165786.68302267324 481516.58014388575,165856.23329322916 481537.0501121804,165799.76645236128 481728.91290228424,165730.21619993297 481708.4439375155),(165746.97817681843 481678.1249967319,165739.51720045673 481703.3929706164,165748.98228750372 481706.1839397019,165754.16228786216 481707.71197579463,165759.34330791573 481709.2399082823,165764.5213269664 481710.7669495632,165769.70131799649 481712.29489069746,165774.88035331282 481713.8219450789,165780.06040613883 481715.3498972343,165785.24938222612 481716.87998835195,165793.0064036057 481719.1679565437,165800.49241780592 481693.8509380728,165800.76337957833 481692.93493719323,165802.38537803394 481693.4000103697,165830.76330596063 481597.13106763444,165829.1522768488 481596.65610686253,165829.66733507172 481594.80413330207,165836.8522983434 481570.4530650798,165783.23205589326 481554.6271463925,165776.42312722164 481578.01311732817,165775.83611402218 481579.7920612626,165773.39511176312 481588.10706181667,165771.791149101 481593.5750843673,165770.18610154392 481599.0419924757,165768.58214810936 481604.5090147985,165766.97710735357 481609.97603531193,165765.37316096094 481615.44305877335,165763.76812530853 481620.9109705391,165761.39818000598 481628.9870259021,165759.00317022737 481637.1490350176,165757.3981507424 481642.6159476773,165755.7941550114 481648.0839757768,165754.18914232866 481653.55100084655,165752.58515606486 481659.0179174441,165750.98021860325 481664.4849438074,165749.3761709623 481669.95197266684,165746.97817681843 481678.1249967319)),((165764.62994572392 481000.72964452335,165770.60704551917 481019.56454185536,165757.8109932328 481023.6556331221,165749.7149720541 481026.265607322,165742.755978062 481028.52258053963,165738.16194859543 481014.2605593478,165736.62288285774 481009.4805378496,165764.5559616496 481000.51162832347,165764.62994572392 481000.72964452335)),((165780.9100788994 481051.4195472039,165753.04303926002 481060.4275618781,165750.7440165607 481053.2945383054,165746.13098868445 481038.97950592457,165773.96205107903 481030.0095373427,165780.9100788994 481051.4195472039)),((165764.39215046004 481095.6485469322,165768.84218902295 481109.45854900277,165752.09916741413 481114.8585235,165739.06214865297 481119.03948478634,165734.55407641333 481105.2304959504,165745.858077976 481101.5475506689,165752.5161283254 481099.4205502416,165764.39215046004 481095.6485469322)),((165739.06214865297 481119.03948478634,165752.09916741413 481114.8585235,165768.84218902295 481109.45854900277,165773.7592437802 481124.71645183617,165744.0691597118 481134.3254810618,165739.06214865297 481119.03948478634)),((165760.15524713008 481165.29146753036,165754.1621837003 481146.74349274713,165752.64022651344 481141.99243090645,165762.91820267861 481138.67746517947,165764.86823752327 481144.76151637506,165767.0322865295 481151.4134816525,165770.4322916698 481161.9774055011,165760.15524713008 481165.29146753036)),((165770.4322916698 481161.9774055011,165767.0322865295 481151.4134816525,165764.86823752327 481144.76151637506,165762.91820267861 481138.67746517947,165773.19626086665 481135.36252099246,165774.72427119376 481140.1124897321,165778.90532097794 481153.0484925419,165780.70934980048 481158.6634761236,165770.4322916698 481161.9774055011)),((165754.46226726277 481186.5204745377,165763.1913428137 481183.7123919793,165767.25433634454 481196.3463805137,165770.48439554079 481206.6294380334,165772.96339762883 481214.47740331833,165764.23735355845 481217.29337498534,165763.0663964398 481213.4674561492,165760.05733901297 481203.9214529135,165754.46226726277 481186.5204745377)),((165763.1913428137 481183.7123919793,165771.9203620799 481180.90343458427,165777.4883933551 481198.2974753085,165780.52041607565 481207.835417028,165781.69040843003 481211.6604477769,165772.96339762883 481214.47740331833,165770.48439554079 481206.6294380334,165767.25433634454 481196.3463805137,165763.1913428137 481183.7123919793)),((165767.94046532223 481255.0803727385,165762.39442858525 481256.88432944176,165760.70244359746 481257.4293949917,165758.18439427088 481249.7603739864,165757.21740785558 481246.7643741759,165754.35638811823 481237.780357234,165753.1123999269 481233.956395535,165760.36338960959 481231.6154014575,165767.94046532223 481255.0803727385)),((165767.94046532223 481255.0803727385,165769.13344454192 481258.7753833276,165757.8784395208 481262.4083133824,165756.68945809107 481258.72132523236,165760.70244359746 481257.4293949917,165762.39442858525 481256.88432944176,165767.94046532223 481255.0803727385)),((165752.72879604952 481450.6481872374,165753.01780734822 481449.7111945327,165754.03076075122 481446.2682207337,165756.9037671212 481436.61820636754,165759.5297725321 481427.5911792049,165760.87376458934 481423.0161490942,165766.68378131933 481424.7281545481,165765.33678659622 481429.30217518256,165765.1928150116 481429.2592470541,165762.5888224881 481438.28620799293,165758.38179191307 481452.3162255302,165752.72879604952 481450.6481872374)),((165758.38179191307 481452.3162255302,165762.5888224881 481438.28620799293,165765.1928150116 481429.2592470541,165765.33678659622 481429.30217518256,165766.68378131933 481424.7281545481,165775.2168089457 481427.24120325147,165772.145797014 481437.6892057502,165770.32284964234 481444.0061394648,165767.09185403027 481454.8851670778,165758.38179191307 481452.3162255302)),((165767.09185403027 481454.8851670778,165770.32284964234 481444.0061394648,165772.145797014 481437.6892057502,165775.2168089457 481427.24120325147,165783.75084868493 481429.75515904836,165782.39683007967 481434.32315151556,165782.5408714928 481434.36519018246,165779.88083834152 481443.37722162984,165775.75088814163 481457.4322048577,165767.09185403027 481454.8851670778)),((165759.97295779423 481542.59013106796,165751.349929424 481540.0420859427,165754.23096464516 481530.2160663096,165755.90595991243 481524.44010320725,165758.41391373967 481516.0321128274,165767.04893821903 481518.56806844496,165763.34993966614 481531.07709912147,165760.82300474338 481539.71614134696,165759.97295779423 481542.59013106796)),((165766.5320427976 481558.5590362891,165738.95195147427 481550.44109771407,165739.22793669422 481549.5020729691,165740.56592901776 481544.9660771371,165743.769969775 481545.91612452094,165768.14401146414 481553.08012593735,165766.5320427976 481558.5590362891)),((165770.3300088621 481545.6511190906,165768.14401146414 481553.08012593735,165743.769969775 481545.91612452094,165740.56592901776 481544.9660771371,165742.76593479898 481537.5050447366,165751.349929424 481540.0420859427,165759.97295779423 481542.59013106796,165770.3300088621 481545.6511190906)),((165770.3300088621 481545.6511190906,165759.97295779423 481542.59013106796,165760.82300474338 481539.71614134696,165763.34993966614 481531.07709912147,165767.04893821903 481518.56806844496,165777.35402061223 481521.5951332937,165770.3300088621 481545.6511190906)),((165759.94208684235 481081.8385492149,165764.39215046004 481095.6485469322,165752.5161283254 481099.4205502416,165745.858077976 481101.5475506689,165734.55407641333 481105.2304959504,165730.10002995466 481091.43053018703,165759.94208684235 481081.8385492149)),((165755.3420530924 481067.5615879822,165759.94208684235 481081.8385492149,165730.10002995466 481091.43053018703,165725.50401482623 481077.15149142453,165755.3420530924 481067.5615879822)),((165753.04303926002 481060.4275618781,165755.3420530924 481067.5615879822,165725.50401482623 481077.15149142453,165720.882987899 481062.85448954423,165750.7440165607 481053.2945383054,165753.04303926002 481060.4275618781)),((165746.13098868445 481038.97950592457,165750.7440165607 481053.2945383054,165720.882987899 481062.85448954423,165716.31991080538 481048.61158124864,165746.13098868445 481038.97950592457)),((165760.2829465038 480980.82661333535,165766.48497205196 481000.12763493793,165764.62994572392 481000.72964452335,165764.5559616496 481000.51162832347,165736.62288285774 481009.4805378496,165733.55590598722 480999.96057572326,165730.4898739962 480990.4396163693,165760.2829465038 480980.82661333535)),((165752.64022651344 481141.99243090645,165754.1621837003 481146.74349274713,165760.15524713008 481165.29146753036,165749.87821666626 481168.6054396765,165746.4742134789 481158.04341274337,165744.30618292658 481151.3924491705,165742.36219818195 481145.3064164967,165752.64022651344 481141.99243090645)),((165739.60024764334 481171.918429759,165733.6001518292 481153.37447009963,165732.07517469442 481148.62440939253,165742.36219818195 481145.3064164967,165744.30618292658 481151.3924491705,165746.4742134789 481158.04341274337,165749.87821666626 481168.6054396765,165739.60024764334 481171.918429759)),((165754.46226726277 481186.5204745377,165760.05733901297 481203.9214529135,165763.0663964398 481213.4674561492,165764.23735355845 481217.29337498534,165755.51036490736 481220.10935998964,165749.8103211655 481201.9753728406,165745.73224516274 481189.3294605534,165754.46226726277 481186.5204745377)),((165745.73224516274 481189.3294605534,165749.8103211655 481201.9753728406,165755.51036490736 481220.10935998964,165746.78331805518 481222.92536026856,165745.61234685374 481219.1003356426,165742.59732487198 481209.55544268835,165737.0032581936 481192.1373515939,165745.73224516274 481189.3294605534)),((165757.8784395208 481262.4083133824,165756.43242557545 481262.8753640524,165751.8144077858 481248.50834933895,165747.66039481142 481235.71740314807,165753.1123999269 481233.956395535,165754.35638811823 481237.780357234,165757.21740785558 481246.7643741759,165758.18439427088 481249.7603739864,165760.70244359746 481257.4293949917,165756.68945809107 481258.72132523236,165757.8784395208 481262.4083133824)),((165742.20737085477 481237.47841455427,165747.66039481142 481235.71740314807,165751.8144077858 481248.50834933895,165756.43242557545 481262.8753640524,165750.98140785462 481264.635368777,165746.36439863997 481250.2683613508,165742.20737085477 481237.47841455427)),((165733.85235512824 481240.17530463496,165742.20737085477 481237.47841455427,165746.36439863997 481250.2683613508,165750.98140785462 481264.635368777,165742.61838084552 481267.3353419938,165739.1253645554 481256.40639819385,165735.78637572107 481246.0963088247,165733.85235512824 481240.17530463496)),((165739.44771866192 481446.73115084914,165747.59369677713 481419.1052129124,165755.07273490838 481421.3081755765,165753.72872813584 481425.89221959456,165753.872770279 481425.93414616835,165751.21877611184 481434.9502114409,165748.3617320527 481444.60115392786,165751.15376605676 481445.4211310361,165750.1407438861 481448.8652179072,165749.84376477124 481449.7981879186,165739.44771866192 481446.73115084914)),((165755.07273490838 481421.3081755765,165760.87376458934 481423.0161490942,165759.5297725321 481427.5911792049,165756.9037671212 481436.61820636754,165754.03076075122 481446.2682207337,165753.01780734822 481449.7111945327,165752.72879604952 481450.6481872374,165749.84376477124 481449.7981879186,165750.1407438861 481448.8652179072,165751.15376605676 481445.4211310361,165748.3617320527 481444.60115392786,165751.21877611184 481434.9502114409,165753.872770279 481425.93414616835,165753.72872813584 481425.89221959456,165755.07273490838 481421.3081755765)),((165742.97691753737 481536.8301309427,165734.24586626413 481534.2861086722,165741.1428862153 481510.9591321961,165749.7788806756 481513.49606105307,165746.0828843547 481525.99109169544,165742.97691753737 481536.8301309427)),((165751.349929424 481540.0420859427,165742.76593479898 481537.5050447366,165742.97691753737 481536.8301309427,165746.0828843547 481525.99109169544,165749.7788806756 481513.49606105307,165758.41391373967 481516.0321128274,165755.90595991243 481524.44010320725,165754.23096464516 481530.2160663096,165751.349929424 481540.0420859427)),((165764.92303530494 481564.0260484118,165737.3379160775 481555.91300334374,165738.95195147427 481550.44109771407,165766.5320427976 481558.5590362891,165764.92303530494 481564.0260484118)),((165756.65861975378 481368.6482390871,165746.99361894192 481371.7652784169,165738.64354107963 481345.87521031464,165748.30754891026 481342.7652734014,165749.53056963885 481346.5632645032,165752.44162214728 481355.59022616025,165756.65861975378 481368.6482390871)),((165752.44162214728 481355.59022616025,165749.53056963885 481346.5632645032,165748.30754891026 481342.7652734014,165757.1655748783 481339.9142905514,165765.53763238693 481365.7842990672,165756.65861975378 481368.6482390871,165752.44162214728 481355.59022616025)),((165931.8740897101 481845.97389222414,165926.63909579924 481844.43286302045,165958.18401185697 481745.6750893561,165967.88499884465 481714.8050392654,165978.03495803892 481683.42508322693,165987.85492324663 481650.42518802424,165995.61388665624 481619.89523620025,166004.04382546115 481580.0652253856,166010.46478895945 481545.80430237454,166014.77372129864 481515.08432910295,166017.944697256 481484.37428252696,166020.5436071265 481447.925407236,166022.89455435504 481414.75537924014,166022.04348282522 481375.44443781814,166020.8944038609 481336.42545843904,166017.34331388713 481290.65451334784,166013.00322002955 481257.715565682,166007.23313360344 481221.6245515634,165999.8039932762 481185.89557452104,165992.08393542428 481153.505664375,165982.45284189627 481118.96567873587,165972.17376532574 481084.43462164776,165922.1182438914 480929.20882226096,165975.01141201917 480912.1598730747,166024.8938545033 481067.4346662247,166037.18297547125 481107.11472961167,166046.7030684515 481141.6757140136,166054.33414940542 481174.0956631055,166061.37422548773 481209.90462836804,166067.3343192893 481245.95563193766,166073.33447668666 481291.5845675772,166076.77359289434 481337.3455119879,166077.9346373195 481376.3654226637,166078.08471020023 481415.6754693985,166076.93381866926 481448.8553972129,166074.02386650007 481485.3043251416,166069.32390902136 481528.5953227781,166064.62495930243 481559.2152395635,166058.68402618731 481593.5952206984,166049.5850707105 481633.26420126244,166041.42513576322 481663.6941479141,166031.79418719656 481696.74509726476,166022.14521790974 481728.24511586566,166012.34424551582 481759.0840178028,165960.17927882302 481921.8258100093,165950.38024911226 481918.9487982852,165970.180244166 481857.2469406328,165931.8740897101 481845.97389222414)),((165891.6666154965 481136.02359245205,165834.14510546066 480957.56464399444,165903.14921352794 480935.321792724,165960.67176963005 481113.7816573767,165891.6666154965 481136.02359245205)),((165811.18078064197 481358.96532213397,165767.3103702741 481222.86038524355,165836.31353847278 481200.6194925535,165880.18498152556 481336.7233748839,165863.38789269142 481342.1373177792,165811.18078064197 481358.96532213397),(165784.58846067498 481223.87043900834,165778.02345562194 481225.98536036786,165785.55950023342 481249.4403665603,165786.7535148305 481253.1554111886,165786.98351243007 481253.8653332394,165785.32353432756 481254.3953284019,165793.46357298896 481279.5453289056,165848.1937031559 481261.8054207434,165840.09366832077 481236.7153893235,165838.56360882698 481237.1954718372,165838.33361808676 481236.48543613846,165837.1465972164 481232.7994343237,165829.60356585556 481209.3654743581,165823.10456946667 481211.45945178793,165817.6525229432 481213.2164879185,165812.20055093075 481214.97241758025,165803.84649189602 481217.6644071663,165795.49251017885 481220.3564110396,165790.040483603 481222.11336638086,165784.58846067498 481223.87043900834),(165799.3436366324 481297.8053805152,165807.4537167706 481322.99528463103,165809.09371874726 481322.4553506549,165809.32371226288 481323.19531513343,165817.67381487784 481348.9853649841,165825.6738182269 481346.4083368862,165834.53086462567 481343.55537642253,165843.37386738468 481340.70629521617,165852.23086611537 481337.8533663467,165861.07293261477 481335.00531610136,165869.11391915628 481332.4153192787,165860.79386263408 481306.4653622439,165860.56385632814 481305.7653391327,165862.18384853032 481305.2454062637,165854.04375129592 481280.1453590037,165799.3436366324 481297.8053805152)),((165890.8257503115 481219.568445799,165896.25174365405 481217.8234493365,165897.75379771486 481217.34054124047,165908.87381045165 481213.76548845315,165931.37404637353 481283.6954208855,165921.7149745366 481286.811464343,165912.9189682873 481289.6493829797,165904.0799201045 481292.50046260294,165895.26694583046 481295.34338203387,165886.31888588314 481298.2294122301,165878.3339113341 481300.80537398526,165878.1138858439 481300.1253995869,165876.44389041603 481300.6554533546,165854.33365392467 481232.05545480386,165855.82369299646 481231.57540042157,165855.62366086923 481230.8854573256,165866.8946775674 481227.2614635345,165868.29369451493 481226.81247772946,165873.70971056758 481225.07043869596,165882.26772553523 481222.31949046534,165890.8257503115 481219.568445799)),((165935.02397284005 481245.53548755957,165931.78590693325 481235.4624807737,165937.3279522924 481233.68351704546,165944.21996750988 481231.4705071231,165946.2929498066 481237.89247930876,165947.4609974654 481241.54953687976,165935.02397284005 481245.53548755957)),((165931.78590693325 481235.4624807737,165928.51389815565 481225.28548057156,165940.92392673437 481221.25650576956,165942.14792768657 481225.0515421137,165944.21996750988 481231.4705071231,165937.3279522924 481233.68351704546,165931.78590693325 481235.4624807737)),((165940.92392673437 481221.25650576956,165940.38089696498 481219.5725450003,165950.59394445625 481216.2815246088,165956.30395514896 481214.44053561985,165960.13897532108 481226.33549698483,165951.09199357682 481229.2654734652,165944.21996750988 481231.4705071231,165942.14792768657 481225.0515421137,165940.92392673437 481221.25650576956)),((165936.54584356796 481207.699518199,165938.6048992502 481214.10754797957,165939.7208855557 481217.54051367636,165927.31390358304 481221.5755064988,165924.12884127168 481211.6925502743,165929.67582654592 481209.9104735108,165936.54584356796 481207.699518199)),((165939.7208855557 481217.54051367636,165938.6048992502 481214.10754797957,165936.54584356796 481207.699518199,165943.42091453492 481205.48758226004,165952.46891637606 481202.5455774916,165956.30395514896 481214.44053561985,165950.59394445625 481216.2815246088,165940.38089696498 481219.5725450003,165939.7208855557 481217.54051367636)),((165928.88381791487 481183.8815045006,165932.12180322534 481193.94749854505,165919.70380637315 481197.9754764354,165916.45976908074 481187.9535376864,165921.9968088786 481186.08553448814,165928.88381791487 481183.8815045006)),((165928.88381791487 481183.8815045006,165935.77478973227 481181.6766027653,165944.79885145818 481178.7555598329,165948.63385924912 481190.6505113363,165942.92389217904 481192.4915092783,165932.71481026363 481195.78856254957,165932.12180322534 481193.94749854505,165928.88381791487 481183.8815045006)),((165925.6577841699 481173.8315612609,165926.81775358738 481177.45555016235,165928.88381791487 481183.8815045006,165921.9968088786 481186.08553448814,165916.45976908074 481187.9535376864,165913.1937729216 481177.86557317525,165925.6577841699 481173.8315612609)),((165921.24274012144 481160.08457912493,165923.31373494447 481166.50753767864,165924.47675393053 481170.1415464862,165911.99370911228 481174.1455892804,165908.7426881924 481164.09159663186,165914.34872256077 481162.2995081409,165921.24274012144 481160.08457912493)),((165925.0648026079 481171.97659024666,165924.47675393053 481170.1415464862,165923.31373494447 481166.50753767864,165921.24274012144 481160.08457912493,165928.1277549979 481157.87353403826,165937.12878032168 481154.9655552655,165940.9638250668 481166.8606115619,165935.2657636092 481168.7025348458,165925.0648026079 481171.97659024666)),((165908.7426881924 481164.09159663186,165905.50370686068 481154.0755739703,165917.98371786345 481150.0455835623,165919.17071490118 481153.6626206272,165921.24274012144 481160.08457912493,165914.34872256077 481162.2995081409,165908.7426881924 481164.09159663186)),((165937.12878032168 481154.9655552655,165928.1277549979 481157.87353403826,165921.24274012144 481160.08457912493,165919.17071490118 481153.6626206272,165917.98371786345 481150.0455835623,165916.79371812948 481146.3055934274,165918.07372073093 481144.83562240377,165932.37375480027 481140.215544091,165937.12878032168 481154.9655552655)),((165981.62270644 481566.05520726903,165982.7517157374 481562.23724365025,165985.8667134712 481551.73628236784,165991.4567438497 481553.39521309774,166000.28978018748 481555.8702663668,165996.0747680759 481570.2552233033,165990.2887963984 481568.5732643481,165981.62270644 481566.05520726903)),((165985.8667134712 481551.73628236784,165988.95169326712 481541.2192343411,165990.07469705105 481536.73523226037,166004.50474845723 481541.48531321733,166000.28978018748 481555.8702663668,165991.4567438497 481553.39521309774,165985.8667134712 481551.73628236784)),((165975.7046653689 481533.0052850057,165990.07469705105 481536.73523226037,165988.95169326712 481541.2192343411,165985.8667134712 481551.73628236784,165980.26768450555 481550.0752239369,165971.4586622845 481547.49222248094,165975.7046653689 481533.0052850057)),((165981.62270644 481566.05520726903,165967.25466094722 481561.8351702114,165971.4586622845 481547.49222248094,165980.26768450555 481550.0752239369,165985.8667134712 481551.73628236784,165982.7517157374 481562.23724365025,165981.62270644 481566.05520726903)),((165939.31052736257 481537.98322753777,165948.14258714658 481540.61517884233,165953.74756907398 481542.2762139906,165950.6586404207 481552.79416514596,165949.52764086245 481556.6282648508,165935.0645508778 481552.3851903837,165939.31052736257 481537.98322753777)),((165968.11566737344 481546.5032211833,165963.90465453628 481560.84526602336,165949.52764086245 481556.6282648508,165950.6586404207 481552.79416514596,165953.74756907398 481542.2762139906,165959.34662016534 481543.9352395898,165968.11566737344 481546.5032211833)),((165968.11566737344 481546.5032211833,165959.34662016534 481543.9352395898,165953.74756907398 481542.2762139906,165956.82960471738 481531.76726200926,165957.95361929305 481527.8292279403,165972.34463824946 481532.0372719382,165968.11566737344 481546.5032211833)),((165939.31052736257 481537.98322753777,165943.5445107696 481523.62018447777,165957.95361929305 481527.8292279403,165956.82960471738 481531.76726200926,165953.74756907398 481542.2762139906,165948.14258714658 481540.61517884233,165939.31052736257 481537.98322753777)),((165943.5445107696 481523.62018447777,165947.79850722943 481509.19020873844,165956.59254258088 481511.865261011,165962.1916013131 481513.50526350754,165959.10157256975 481524.011301254,165957.95361929305 481527.8292279403,165943.5445107696 481523.62018447777)),((165972.34463824946 481532.0372719382,165957.95361929305 481527.8292279403,165959.10157256975 481524.011301254,165962.1916013131 481513.50526350754,165967.79658568368 481515.1462869073,165976.5556365254 481517.7543160746,165972.34463824946 481532.0372719382)),((165976.5556365254 481517.7543160746,165967.79658568368 481515.1462869073,165962.1916013131 481513.50526350754,165965.2815927043 481502.9912167502,165966.3935615073 481499.1412791612,165980.7906309283 481503.33033460635,165976.5556365254 481517.7543160746)),((165951.99551549152 481494.95126221766,165966.3935615073 481499.1412791612,165965.2815927043 481502.9912167502,165962.1916013131 481513.50526350754,165956.59254258088 481511.865261011,165947.79850722943 481509.19020873844,165951.99551549152 481494.95126221766)),((165956.26151080034 481480.4822672796,165965.0625026999 481483.08525067125,165970.69252246595 481484.73534517415,165967.57958312554 481495.2263056233,165966.3935615073 481499.1412791612,165951.99551549152 481494.95126221766,165956.26151080034 481480.4822672796)),((165970.69252246595 481484.73534517415,165985.017608498 481488.9352678822,165980.7906309283 481503.33033460635,165966.3935615073 481499.1412791612,165967.57958312554 481495.2263056233,165970.69252246595 481484.73534517415)),((165985.017608498 481488.9352678822,165970.69252246595 481484.73534517415,165973.75455211758 481474.21033811977,165974.8974974293 481470.2332966167,165989.26357937 481474.4722649936,165985.017608498 481488.9352678822)),((165960.50445133742 481466.0903311382,165974.8974974293 481470.2332966167,165973.75455211758 481474.21033811977,165970.69252246595 481484.73534517415,165965.0625026999 481483.08525067125,165956.26151080034 481480.4822672796,165960.50445133742 481466.0903311382)),((165960.50445133742 481466.0903311382,165964.74948427 481451.6882785512,165973.51751495776 481454.29532028775,165979.1745332628 481455.9592810538,165976.05152430522 481466.4553314901,165974.8974974293 481470.2332966167,165960.50445133742 481466.0903311382)),((165989.26357937 481474.4722649936,165974.8974974293 481470.2332966167,165976.05152430522 481466.4553314901,165979.1745332628 481455.9592810538,165984.73649874856 481457.595332028,165993.45358051884 481460.20129447326,165989.26357937 481474.4722649936)),((165979.1745332628 481455.9592810538,165982.22851159697 481445.4223565114,165983.38548240822 481441.61335710034,165997.67452061403 481445.8253634295,165993.45358051884 481460.20129447326,165984.73649874856 481457.595332028,165979.1745332628 481455.9592810538)),((165964.74948427 481451.6882785512,165965.8944682684 481447.80536906695,165964.21943920254 481447.3353404566,165967.16940644267 481436.83333526517,165983.38548240822 481441.61335710034,165982.22851159697 481445.4223565114,165979.1745332628 481455.9592810538,165973.51751495776 481454.29532028775,165964.74948427 481451.6882785512)),((165931.78434320926 481457.6552447277,165935.97235709074 481443.2893136629,165941.40237306454 481444.85526083026,165947.03838439108 481446.5322673152,165943.89840851355 481457.0212904519,165942.7733832031 481460.8903412712,165931.78434320926 481457.6552447277)),((165961.39641423512 481450.78526691074,165957.19445905197 481465.1353463633,165942.7733832031 481460.8903412712,165943.89840851355 481457.0212904519,165947.03838439108 481446.5322673152,165952.60639016278 481448.19032571657,165961.39641423512 481450.78526691074)),((165967.16940644267 481436.83333526517,165964.21943920254 481447.3353404566,165962.54440981965 481446.8653124131,165961.39641423512 481450.78526691074,165952.60639016278 481448.19032571657,165947.03838439108 481446.5322673152,165950.09037083114 481436.00433123333,165951.29139067512 481432.15236295323,165967.16940644267 481436.83333526517)),((165935.97235709074 481443.2893136629,165940.17434220857 481428.87535132206,165951.29139067512 481432.15236295323,165950.09037083114 481436.00433123333,165947.03838439108 481446.5322673152,165941.40237306454 481444.85526083026,165935.97235709074 481443.2893136629)),((165947.79850722943 481509.19020873844,165943.5445107696 481523.62018447777,165939.31052736257 481537.98322753777,165935.0645508778 481552.3851903837,165949.52764086245 481556.6282648508,165963.90465453628 481560.84526602336,165968.11566737344 481546.5032211833,165972.34463824946 481532.0372719382,165975.7046653689 481533.0052850057,165971.4586622845 481547.49222248094,165967.25466094722 481561.8351702114,165981.62270644 481566.05520726903,165990.2887963984 481568.5732643481,165988.14081311575 481575.871190598,165925.78456217595 481557.5191725351,165951.19443893305 481471.1812507268,165929.6113786002 481464.82930264046,165931.78434320926 481457.6552447277,165942.7733832031 481460.8903412712,165957.19445905197 481465.1353463633,165961.39641423512 481450.78526691074,165962.54440981965 481446.8653124131,165964.21943920254 481447.3353404566,165965.8944682684 481447.80536906695,165964.74948427 481451.6882785512,165960.50445133742 481466.0903311382,165956.26151080034 481480.4822672796,165951.99551549152 481494.95126221766,165947.79850722943 481509.19020873844)),((165941.05912179363 481325.0553667046,165955.3011366293 481320.4854062049,165959.84321633418 481334.64037687157,165951.19216527854 481337.4754338825,165945.62013845862 481339.26544198627,165942.2591185958 481328.84044813446,165941.05912179363 481325.0553667046)),((165941.05912179363 481325.0553667046,165942.2591185958 481328.84044813446,165945.62013845862 481339.26544198627,165940.0661268979 481341.050378153,165934.73211844507 481342.753361227,165930.24406786144 481328.52543277247,165941.05912179363 481325.0553667046)),((165934.73211844507 481342.753361227,165940.0661268979 481341.050378153,165945.62013845862 481339.26544198627,165948.99422618406 481349.69436158845,165950.20422346052 481353.54544691474,165939.25420752895 481357.08540151204,165934.73211844507 481342.753361227)),((165962.87524257202 481338.1164342519,165966.16722080676 481348.3844067348,165950.20422346052 481353.54544691474,165948.99422618406 481349.69436158845,165945.62013845862 481339.26544198627,165951.19216527854 481337.4754338825,165959.84321633418 481334.64037687157,165961.14418771747 481338.6953912655,165962.87524257202 481338.1164342519)),((165966.16722080676 481348.3844067348,165962.87524257202 481338.1164342519,165964.64423360457 481337.52543432114,165963.3402144063 481333.4624012245,165971.93421949708 481330.74640247505,165977.48524113596 481328.96739244333,165980.85626413499 481339.39844098384,165982.07327767808 481343.2424288156,165966.16722080676 481348.3844067348)),((165991.720251199 481324.3384400168,165996.32429299227 481338.6354442758,165982.07327767808 481343.2424288156,165980.85626413499 481339.39844098384,165977.48524113596 481328.96739244333,165983.06424125226 481327.1794385015,165991.720251199 481324.3384400168)),((165987.1412406636 481310.11748955015,165991.720251199 481324.3384400168,165983.06424125226 481327.1794385015,165977.48524113596 481328.96739244333,165974.13820372755 481318.53639975237,165972.92219446276 481314.7565044081,165987.1412406636 481310.11748955015)),((165963.3402144063 481333.4624012245,165958.81514406268 481319.35842404625,165972.92219446276 481314.7565044081,165974.13820372755 481318.53639975237,165977.48524113596 481328.96739244333,165971.93421949708 481330.74640247505,165963.3402144063 481333.4624012245)),((165972.92219446276 481314.7565044081,165958.81514406268 481319.35842404625,165954.19315136166 481304.9514868698,165962.75612083622 481302.2305076738,165968.30917366338 481300.4094340397,165972.92219446276 481314.7565044081)),((165968.30917366338 481300.4094340397,165973.88217284554 481298.6655169666,165982.5412139683 481295.8305174183,165987.1412406636 481310.11748955015,165972.92219446276 481314.7565044081,165968.30917366338 481300.4094340397)),((165968.30917366338 481300.4094340397,165964.9601495697 481290.02650985704,165963.7271422241 481286.15745674213,165977.94914385804 481281.5714949763,165982.5412139683 481295.8305174183,165973.88217284554 481298.6655169666,165968.30917366338 481300.4094340397)),((165963.7271422241 481286.15745674213,165964.9601495697 481290.02650985704,165968.30917366338 481300.4094340397,165962.75612083622 481302.2305076738,165954.19315136166 481304.9514868698,165949.62211592981 481290.70544403687,165963.7271422241 481286.15745674213)),((165959.13904705815 481271.891451392,165962.4810715889 481282.33644102496,165963.7271422241 481286.15745674213,165949.62211592981 481290.70544403687,165945.03602160158 481276.4124190493,165953.5660289468 481273.6634235794,165959.13904705815 481271.891451392)),((165973.36409571537 481267.33151899016,165977.94914385804 481281.5714949763,165963.7271422241 481286.15745674213,165962.4810715889 481282.33644102496,165959.13904705815 481271.891451392,165964.71208475076 481270.1124758971,165973.36409571537 481267.33151899016)),((165968.77606675995 481253.0095394675,165970.30806429673 481257.7664775316,165973.36409571537 481267.33151899016,165964.71208475076 481270.1124758971,165959.13904705815 481271.891451392,165955.79304926845 481261.4484581901,165954.55201612142 481257.6254531015,165968.77606675995 481253.0095394675)),((165954.55201612142 481257.6254531015,165955.79304926845 481261.4484581901,165959.13904705815 481271.891451392,165953.5660289468 481273.6634235794,165945.03602160158 481276.4124190493,165941.9830346947 481266.89747067,165940.47400505433 481262.19544545864,165954.55201612142 481257.6254531015)),((165966.16722080676 481348.3844067348,165982.07327767808 481343.2424288156,165996.32429299227 481338.6354442758,165991.720251199 481324.3384400168,165987.1412406636 481310.11748955015,165982.5412139683 481295.8305174183,165977.94914385804 481281.5714949763,165973.36409571537 481267.33151899016,165970.30806429673 481257.7664775316,165968.77606675995 481253.0095394675,165973.53406971783 481251.476547989,166002.68035683886 481341.89440115006,165936.05519068605 481363.369405808,165923.01604604002 481322.9174133205,165949.18912624416 481314.4813888294,165934.61698036632 481269.27143408824,165941.9830346947 481266.89747067,165945.03602160158 481276.4124190493,165949.62211592981 481290.70544403687,165954.19315136166 481304.9514868698,165958.81514406268 481319.35842404625,165963.3402144063 481333.4624012245,165964.64423360457 481337.52543432114,165962.87524257202 481338.1164342519,165961.14418771747 481338.6953912655,165959.84321633418 481334.64037687157,165955.3011366293 481320.4854062049,165941.05912179363 481325.0553667046,165930.24406786144 481328.52543277247,165934.73211844507 481342.753361227,165939.25420752895 481357.08540151204,165950.20422346052 481353.54544691474,165966.16722080676 481348.3844067348)),((165895.13041732486 481533.24123828445,165910.45443059667 481537.7282090086,165918.892460091 481540.224162435,165922.71948440833 481541.33024989034,165920.67447837786 481548.2551416977,165893.09843377655 481540.1511493943,165895.13041732486 481533.24123828445)),((165896.64740066387 481528.08315691736,165896.65241750143 481528.06514321023,165920.4185142213 481535.0441892801,165924.24847192867 481536.1511745033,165922.71948440833 481541.33024989034,165918.892460091 481540.224162435,165910.45443059667 481537.7282090086,165895.13041732486 481533.24123828445,165896.64740066387 481528.08315691736)),((165896.65241750143 481528.06514321023,165898.16535466668 481522.9191811999,165898.17435241595 481522.8891597626,165921.94347844977 481529.86521559535,165925.7774623816 481530.9722108921,165924.24847192867 481536.1511745033,165920.4185142213 481535.0441892801,165896.65241750143 481528.06514321023)),((165899.69038288604 481517.7331913193,165899.69635646036 481517.7141783537,165923.4694707462 481524.6852433193,165927.30747869454 481525.7932500641,165925.7774623816 481530.9722108921,165921.94347844977 481529.86521559535,165898.17435241595 481522.8891597626,165899.69038288604 481517.7331913193)),((165901.21136076152 481512.5612122759,165901.218365878 481512.5381960822,165902.19538995755 481512.8091679609,165916.5504016183 481517.0312113604,165924.99546621574 481519.5052715604,165928.8364779695 481520.61317485454,165927.30747869454 481525.7932500641,165923.4694707462 481524.6852433193,165899.69635646036 481517.7141783537,165901.21136076152 481512.5612122759)),((165902.7343960123 481507.3852327769,165902.74037624605 481507.3632156981,165926.5204402043 481514.3261881598,165930.36547795995 481515.43421280093,165928.8364779695 481520.61317485454,165924.99546621574 481519.5052715604,165916.5504016183 481517.0312113604,165902.19538995755 481512.8091679609,165901.218365878 481512.5381960822,165902.7343960123 481507.3852327769)),((165904.25833845264 481502.20124477724,165904.2623919882 481502.18723446043,165905.24435118132 481502.44720268424,165928.0404683249 481509.1652303686,165931.89543563488 481510.25525337853,165930.36547795995 481515.43421280093,165926.5204402043 481514.3261881598,165902.74037624605 481507.3632156981,165904.25833845264 481502.20124477724)),((165914.80236954536 481498.40129218134,165920.4864416878 481500.0572347831,165923.36639387568 481500.89619632973,165933.76447955295 481503.92523969157,165931.89543563488 481510.25525337853,165928.0404683249 481509.1652303686,165905.24435118132 481502.44720268424,165904.2623919882 481502.18723446043,165906.11937296687 481495.87120313005,165914.80236954536 481498.40129218134)),((165933.76447955295 481503.92523969157,165923.36639387568 481500.89619632973,165923.65443714958 481499.88622205233,165924.6673896757 481496.43126609793,165927.45044080383 481497.24820778926,165932.95342380035 481478.61931950756,165933.09739250087 481478.6622525252,165933.3244254117 481477.8952557339,165934.4303817035 481474.0422937281,165941.84446005966 481476.2252570742,165933.76447955295 481503.92523969157)),((165928.61836432802 481472.3313100361,165934.4303817035 481474.0422937281,165933.3244254117 481477.8952557339,165933.09739250087 481478.6622525252,165932.95342380035 481478.61931950756,165927.45044080383 481497.24820778926,165924.6673896757 481496.43126609793,165923.65443714958 481499.88622205233,165923.36639387568 481500.89619632973,165920.4864416878 481500.0572347831,165920.77538404206 481499.0412540726,165921.78942337478 481495.5873013189,165927.29739742447 481476.94328597013,165928.61836432802 481472.3313100361)),((165928.61836432802 481472.3313100361,165927.29739742447 481476.94328597013,165921.78942337478 481495.5873013189,165920.77538404206 481499.0412540726,165920.4864416878 481500.0572347831,165914.80236954536 481498.40129218134,165919.0003527469 481484.2682437183,165921.6313492792 481475.26523400156,165921.4873803808 481475.22230131645,165921.71434346386 481474.4553038453,165922.81533845488 481470.62224457925,165928.61836432802 481472.3313100361)),((165914.80236954536 481498.40129218134,165906.11937296687 481495.87120313005,165909.38437225827 481484.88029707095,165911.20331499135 481478.59823054564,165914.2793231971 481468.1092675604,165922.81533845488 481470.62224457925,165921.71434346386 481474.4553038453,165921.4873803808 481475.22230131645,165921.6313492792 481475.26523400156,165919.0003527469 481484.2682437183,165914.80236954536 481498.40129218134)),((165906.11937296687 481495.87120313005,165897.47634055186 481493.30127379094,165901.6643087399 481479.175198381,165904.17528002078 481470.14120556315,165904.41532065 481470.21227725974,165904.6443266929 481469.44528353587,165905.76231058137 481465.6012429256,165914.2793231971 481468.1092675604,165911.20331499135 481478.59823054564,165909.38437225827 481484.88029707095,165906.11937296687 481495.87120313005)),((165897.47634055186 481493.30127379094,165891.82230733614 481491.62027832307,165893.12732160438 481487.17626645276,165895.98731684854 481477.5102808174,165898.60226602363 481468.5012153713,165899.950275644 481463.88929162023,165905.76231058137 481465.6012429256,165904.6443266929 481469.44528353587,165904.41532065 481470.21227725974,165904.17528002078 481470.14120556315,165901.6643087399 481479.175198381,165897.47634055186 481493.30127379094)),((165894.1482505075 481462.18126349826,165899.950275644 481463.88929162023,165898.60226602363 481468.5012153713,165895.98731684854 481477.5102808174,165893.12732160438 481487.17626645276,165891.82230733614 481491.62027832307,165888.9282799268 481490.7592738712,165890.23026762213 481486.32626971306,165887.46628168572 481485.51517682313,165892.9422399973 481466.8352261978,165892.79827060597 481466.7922943458,165894.1482505075 481462.18126349826)),((165888.9282799268 481490.7592738712,165878.61824088683 481487.69324565696,165886.72425100228 481459.99523461866,165894.1482505075 481462.18126349826,165892.79827060597 481466.7922943458,165892.9422399973 481466.8352261978,165887.46628168572 481485.51517682313,165890.23026762213 481486.32626971306,165888.9282799268 481490.7592738712)),((165856.23329322916 481537.0501121804,165881.64417191545 481450.71128487133,165929.6113786002 481464.82930264046,165951.19443893305 481471.1812507268,165925.78456217595 481557.5191725351,165856.23329322916 481537.0501121804),(165867.54927288933 481525.10522256023,165865.49131977314 481532.05914822913,165893.09843377655 481540.1511493943,165920.67447837786 481548.2551416977,165922.71948440833 481541.33024989034,165924.24847192867 481536.1511745033,165925.7774623816 481530.9722108921,165927.30747869454 481525.7932500641,165928.8364779695 481520.61317485454,165930.36547795995 481515.43421280093,165931.89543563488 481510.25525337853,165933.76447955295 481503.92523969157,165941.84446005966 481476.2252570742,165934.4303817035 481474.0422937281,165928.61836432802 481472.3313100361,165922.81533845488 481470.62224457925,165914.2793231971 481468.1092675604,165905.76231058137 481465.6012429256,165899.950275644 481463.88929162023,165894.1482505075 481462.18126349826,165886.72425100228 481459.99523461866,165878.61824088683 481487.69324565696,165876.74125623505 481494.0361689687,165875.20924209635 481499.2132491519,165873.67729294812 481504.3932228555,165872.1452832179 481509.57119418646,165870.61327667205 481514.749166038,165869.08127331096 481519.9271384061,165867.54927288933 481525.10522256023)),((165864.26622637178 481483.4501794296,165853.82416749134 481480.38124216447,165855.13816786418 481475.8981865053,165857.91919632955 481476.7151957553,165860.74618647926 481467.1472523947,165863.38416540896 481458.1492344596,165863.52718054497 481458.19227461156,165864.89212849856 481453.5532303068,165872.31417887198 481455.7352165087,165864.26622637178 481483.4501794296)),((165786.68302267324 481516.58014388575,165812.09292220575 481430.24218691647,165881.64417191545 481450.71128487133,165856.23329322916 481537.0501121804,165786.68302267324 481516.58014388575),(165798.00803197207 481504.65914855164,165795.9680335119 481511.61214057665,165823.56413966522 481519.7282063275,165851.18822609202 481527.8531666835,165864.26622637178 481483.4501794296,165872.31417887198 481455.7352165087,165864.89212849856 481453.5532303068,165859.0901429811 481451.847246296,165853.2880852939 481450.14126894844,165844.7631001899 481447.63422229275,165836.22904270093 481445.12527897663,165830.42703771713 481443.41921739513,165824.62502849937 481441.7132738949,165817.18399556502 481439.5251983774,165808.99602089508 481467.20522848406,165807.1290240118 481473.57022994,165805.60797486416 481478.7521396871,165804.0880216979 481483.9331622273,165802.56800132265 481489.1151865056,165801.0480544796 481494.29621007456,165799.53601079423 481499.45010300004,165798.00803197207 481504.65914855164)),((165866.8946775674 481227.2614635345,165866.63470314653 481226.45244678966,165865.69470760453 481223.61247728474,165861.72971818765 481224.8815075602,165858.10862015767 481213.5774607407,165855.32264947437 481205.11148452404,165854.2025963923 481201.4225106706,165859.62464855894 481199.67446122796,165860.78461601818 481203.3495048612,165863.5306689735 481211.82552133844,165866.60869701818 481221.50948498544,165868.17671572493 481221.01046857407,165868.8797176592 481223.22550298803,165867.311701787 481223.7235178127,165868.29369451493 481226.81247772946,165866.8946775674 481227.2614635345)),((165873.70971056758 481225.07043869596,165868.29369451493 481226.81247772946,165867.311701787 481223.7235178127,165868.8797176592 481223.22550298803,165868.17671572493 481221.01046857407,165866.60869701818 481221.50948498544,165863.5306689735 481211.82552133844,165860.78461601818 481203.3495048612,165859.62464855894 481199.67446122796,165865.04766110049 481197.9255297347,165866.20967289337 481201.5994664963,165868.9526537095 481210.0734764689,165873.70971056758 481225.07043869596)),((165882.26772553523 481222.31949046534,165873.70971056758 481225.07043869596,165868.9526537095 481210.0734764689,165866.20967289337 481201.5994664963,165865.04766110049 481197.9255297347,165873.60068580566 481195.1685472645,165877.02172582838 481205.785442737,165882.26772553523 481222.31949046534)),((165890.8257503115 481219.568445799,165882.26772553523 481222.31949046534,165877.02172582838 481205.785442737,165873.60068580566 481195.1685472645,165882.15365215074 481192.4114681889,165886.07474011733 481204.540549042,165890.8257503115 481219.568445799)),((165890.8257503115 481219.568445799,165886.07474011733 481204.540549042,165882.15365215074 481192.4114681889,165887.5766784854 481190.6635628014,165891.4977636454 481202.7885311759,165894.58876734154 481212.5644449591,165893.0167248861 481213.0614413691,165893.71779667106 481215.2814819412,165895.29079305512 481214.7844878564,165896.25174365405 481217.8234493365,165890.8257503115 481219.568445799)),((165896.25174365405 481217.8234493365,165895.29079305512 481214.7844878564,165893.71779667106 481215.2814819412,165893.0167248861 481213.0614413691,165894.58876734154 481212.5644449591,165891.4977636454 481202.7885311759,165887.5766784854 481190.6635628014,165892.9997111255 481188.9145507321,165894.19671993738 481192.5715478998,165896.91976828402 481201.0365170132,165899.76578669314 481210.19148501434,165900.4868094275 481212.4224744692,165896.5847507168 481213.6844948627,165897.75379771486 481217.34054124047,165896.25174365405 481217.8234493365)),((165907.70576258353 481210.1234609238,165902.2817912834 481211.8425247669,165900.4868094275 481212.4224744692,165899.76578669314 481210.19148501434,165896.91976828402 481201.0365170132,165894.19671993738 481192.5715478998,165892.9997111255 481188.9145507321,165900.16369288534 481186.6055023801,165907.70576258353 481210.1234609238)),((165907.70576258353 481210.1234609238,165908.87381045165 481213.76548845315,165897.75379771486 481217.34054124047,165896.5847507168 481213.6844948627,165900.4868094275 481212.4224744692,165902.2817912834 481211.8425247669,165907.70576258353 481210.1234609238)),((165880.18498152556 481336.7233748839,165836.31353847278 481200.6194925535,165905.31869812732 481178.3775641539,165934.61698036632 481269.27143408824,165949.18912624416 481314.4813888294,165923.01604604002 481322.9174133205,165880.18498152556 481336.7233748839),(165854.2025963923 481201.4225106706,165846.93358080686 481203.7654415951,165854.44664577578 481227.21249125793,165855.62366086923 481230.8854573256,165855.82369299646 481231.57540042157,165854.33365392467 481232.05545480386,165876.44389041603 481300.6554533546,165878.1138858439 481300.1253995869,165878.3339113341 481300.80537398526,165886.68397781134 481326.77534298535,165894.68699622378 481324.19342627533,165903.4679854846 481321.36145030503,165912.37800999396 481318.48738357215,165921.19804856065 481315.64239624795,165930.08209634136 481312.7774275843,165939.79406761308 481309.6453844185,165931.37404637353 481283.6954208855,165908.87381045165 481213.76548845315,165907.70576258353 481210.1234609238,165900.16369288534 481186.6055023801,165892.9997111255 481188.9145507321,165887.5766784854 481190.6635628014,165882.15365215074 481192.4114681889,165873.60068580566 481195.1685472645,165865.04766110049 481197.9255297347,165859.62464855894 481199.67446122796,165854.2025963923 481201.4225106706)),((165876.25758868846 481147.235518126,165886.28362180485 481143.98556564905,165896.2337106576 481174.71549742355,165886.18763645564 481177.9574857892,165881.60664909615 481163.8455611428,165876.25758868846 481147.235518126)),((165877.62665215324 481180.720548479,165876.1156383474 481176.1364793717,165874.2206071835 481170.222516107,165867.70355799777 481150.00851581164,165876.25758868846 481147.235518126,165881.60664909615 481163.8455611428,165886.18763645564 481177.9574857892,165877.62665215324 481180.720548479)),((165869.06465495183 481183.48351249145,165864.4985981491 481169.38354181446,165859.15056190282 481152.7805291889,165867.70355799777 481150.00851581164,165874.2206071835 481170.222516107,165876.1156383474 481176.1364793717,165877.62665215324 481180.720548479,165869.06465495183 481183.48351249145)),((165853.91450703648 481154.47847423767,165859.15056190282 481152.7805291889,165864.4985981491 481169.38354181446,165869.06465495183 481183.48351249145,165860.50362192755 481186.2464934498,165859.00158758258 481181.6654534509,165857.05258033366 481175.793547097,165856.1815873062 481173.1014900736,165850.60753492877 481155.55046525295,165853.77149161507 481154.5245568851,165853.91450703648 481154.47847423767)),((165924.52807736598 481843.81189789885,165956.08599516712 481745.01508612063,165965.7919827646 481714.12902105553,165975.93794683047 481682.76206980716,165985.7359202118 481649.83511083043,165993.46790969896 481619.4111303698,166001.88886370874 481579.6282719317,166008.29380160503 481545.4542077084,166012.5927007486 481514.79429283564,166015.75270217698 481484.19937875186,166018.35059922235 481447.76941500005,166020.69352027407 481414.70640413306,166019.8444648481 481375.4923786521,166018.69738716728 481336.5465047899,166015.15530439743 481290.8855103039,166010.82720700584 481258.03348857275,166005.06812188454 481222.01660339045,165997.66299492292 481186.39761198557,165989.9529152416 481154.0525668103,165980.3347990849 481119.55767611903,165970.06673855023 481085.06470021605,165920.02428878422 480929.8827890846,165922.1182438914 480929.20882226096,165972.17376532574 481084.43462164776,165982.45284189627 481118.96567873587,165992.08393542428 481153.505664375,165999.8039932762 481185.89557452104,166007.23313360344 481221.6245515634,166013.00322002955 481257.715565682,166017.34331388713 481290.65451334784,166020.8944038609 481336.42545843904,166022.04348282522 481375.44443781814,166022.89455435504 481414.75537924014,166020.5436071265 481447.925407236,166017.944697256 481484.37428252696,166014.77372129864 481515.08432910295,166010.46478895945 481545.80430237454,166004.04382546115 481580.0652253856,165995.61388665624 481619.89523620025,165987.85492324663 481650.42518802424,165978.03495803892 481683.42508322693,165967.88499884465 481714.8050392654,165958.18401185697 481745.6750893561,165926.63909579924 481844.43286302045,165924.52807736598 481843.81189789885)),((165619.34493397814 481753.9937822201,165621.25993950333 481746.4797864231,165726.6254969247 481332.95825022587,165742.17659175242 481381.20723075565,165811.18078064197 481358.96532213397,165863.38789269142 481342.1373177792,165880.18498152556 481336.7233748839,165923.01604604002 481322.9174133205,165936.05519068605 481363.369405808,166002.68035683886 481341.89440115006,165973.53406971783 481251.476547989,165994.94911866274 481244.573534503,165983.4440417146 481208.88056617026,165990.58306434262 481206.5796042553,165960.67176963005 481113.7816573767,165903.14921352794 480935.321792724,165920.02428878422 480929.8827890846,165970.06673855023 481085.06470021605,165980.3347990849 481119.55767611903,165989.9529152416 481154.0525668103,165997.66299492292 481186.39761198557,166005.06812188454 481222.01660339045,166010.82720700584 481258.03348857275,166015.15530439743 481290.8855103039,166018.69738716728 481336.5465047899,166019.8444648481 481375.4923786521,166020.69352027407 481414.70640413306,166018.35059922235 481447.76941500005,166015.75270217698 481484.19937875186,166012.5927007486 481514.79429283564,166008.29380160503 481545.4542077084,166001.88886370874 481579.6282719317,165993.46790969896 481619.4111303698,165985.7359202118 481649.83511083043,165975.93794683047 481682.76206980716,165965.7919827646 481714.12902105553,165956.08599516712 481745.01508612063,165924.52807736598 481843.81189789885,165853.94681607577 481823.0388199289,165677.60915791194 481771.1417838235,165619.34493397814 481753.9937822201),(165673.3708977106 481644.8049006763,165647.9609629814 481731.14381613344,165787.06153932825 481772.0818594473,165926.16303056382 481813.0209374773,165951.5729883572 481726.68209263764,165995.3347822398 481577.9882105603,165988.14081311575 481575.871190598,165990.2887963984 481568.5732643481,165996.0747680759 481570.2552233033,166000.28978018748 481555.8702663668,166004.50474845723 481541.48531321733,165990.07469705105 481536.73523226037,165975.7046653689 481533.0052850057,165972.34463824946 481532.0372719382,165976.5556365254 481517.7543160746,165980.7906309283 481503.33033460635,165985.017608498 481488.9352678822,165989.26357937 481474.4722649936,165993.45358051884 481460.20129447326,165997.67452061403 481445.8253634295,165983.38548240822 481441.61335710034,165967.16940644267 481436.83333526517,165951.29139067512 481432.15236295323,165940.17434220857 481428.87535132206,165935.97235709074 481443.2893136629,165931.78434320926 481457.6552447277,165929.6113786002 481464.82930264046,165881.64417191545 481450.71128487133,165812.09292220575 481430.24218691647,165742.54266873017 481409.7731823477,165717.13279208494 481496.11104573845,165673.3708977106 481644.8049006763)),((165944.21996750988 481231.4705071231,165951.09199357682 481229.2654734652,165960.13897532108 481226.33549698483,165963.05302768055 481235.37549498817,165960.19799728072 481236.29654102743,165962.03901342853 481242.00547000783,165964.4030222143 481249.38752608956,165961.2800567513 481250.39353844704,165958.91504699853 481243.0305077823,165957.41400492916 481238.35853659053,165947.4609974654 481241.54953687976,165946.2929498066 481237.89247930876,165944.21996750988 481231.4705071231)),((165964.89403841048 481241.0855376612,165967.25804585416 481248.46648246696,165964.41803350058 481249.3825525534,165964.4030222143 481249.38752608956,165962.03901342853 481242.00547000783,165960.19799728072 481236.29654102743,165963.05302768055 481235.37549498817,165964.89403841048 481241.0855376612)),((165799.76645236128 481728.91290228424,165856.23329322916 481537.0501121804,165925.78456217595 481557.5191725351,165882.02270928613 481706.2129920733,165869.31776905607 481749.3819606654,165799.76645236128 481728.91290228424),(165818.18347132907 481699.0759244936,165810.6795268119 481724.3238936018,165818.52953724368 481726.63391340274,165823.7105264967 481728.1579079759,165828.8165668759 481729.65993579174,165834.0725614319 481731.2069149638,165839.2525866725 481732.73092375806,165844.43165426826 481734.254935893,165849.6136502441 481735.7789599037,165854.79468637242 481737.3039886345,165864.21673524188 481740.07594691927,165871.61166309135 481714.8499591504,165873.5856655602 481708.1559845713,165875.19665619102 481702.68901061267,165876.80867300337 481697.2220394776,165878.42062517727 481691.7550687749,165880.0326493108 481686.2879875313,165881.64365188024 481680.82201724674,165883.25561466636 481675.3550482706,165885.81462477864 481666.6750804727,165862.71556835776 481659.87201639387,165858.18350495028 481662.28103755135,165857.22255387413 481661.9990944326,165860.42351585196 481651.13507619646,165887.98459628696 481659.2750171646,165890.5355846362 481650.59203018417,165892.1425944516 481645.1230506564,165893.74858513728 481639.6540694473,165895.3556020077 481634.18509106763,165896.961599746 481628.7161110021,165898.56855549413 481623.2471336177,165900.5446102156 481616.5211311452,165907.9205223746 481591.3661466478,165854.4933637975 481575.62010088266,165846.79339518113 481601.7910717138,165845.1543742347 481601.3041389397,165816.8084509125 481697.6910105642,165818.44844988626 481698.18494588154,165818.18347132907 481699.0759244936),(165913.7345330837 481561.835152511,165911.98453541263 481567.87514941185,165914.68449818296 481568.66519705893,165916.4345449143 481562.6352149766,165913.7345330837 481561.835152511)),((165948.95499848967 481246.2335059524,165936.5469794084 481250.24243752443,165935.02397284005 481245.53548755957,165947.4609974654 481241.54953687976,165948.95499848967 481246.2335059524)),((165947.4609974654 481241.54953687976,165957.41400492916 481238.35853659053,165958.91504699853 481243.0305077823,165948.95499848967 481246.2335059524,165947.4609974654 481241.54953687976)),((165905.31869812732 481178.3775641539,165891.6666154965 481136.02359245205,165960.67176963005 481113.7816573767,165990.58306434262 481206.5796042553,165983.4440417146 481208.88056617026,165994.94911866274 481244.573534503,165973.53406971783 481251.476547989,165968.77606675995 481253.0095394675,165954.55201612142 481257.6254531015,165940.47400505433 481262.19544545864,165941.9830346947 481266.89747067,165934.61698036632 481269.27143408824,165905.31869812732 481178.3775641539),(165905.50370686068 481154.0755739703,165908.7426881924 481164.09159663186,165911.99370911228 481174.1455892804,165924.47675393053 481170.1415464862,165925.0648026079 481171.97659024666,165925.6577841699 481173.8315612609,165913.1937729216 481177.86557317525,165916.45976908074 481187.9535376864,165919.70380637315 481197.9754764354,165932.12180322534 481193.94749854505,165932.71481026363 481195.78856254957,165933.3258276864 481197.68652243924,165920.90381222923 481201.6855597624,165924.12884127168 481211.6925502743,165927.31390358304 481221.5755064988,165939.7208855557 481217.54051367636,165940.38089696498 481219.5725450003,165940.92392673437 481221.25650576956,165928.51389815565 481225.28548057156,165931.78590693325 481235.4624807737,165935.02397284005 481245.53548755957,165936.5469794084 481250.24243752443,165948.95499848967 481246.2335059524,165958.91504699853 481243.0305077823,165961.2800567513 481250.39353844704,165964.4030222143 481249.38752608956,165964.41803350058 481249.3825525534,165967.25804585416 481248.46648246696,165964.89403841048 481241.0855376612,165968.73504042928 481239.8365646448,165963.9829787248 481225.09053244634,165960.15095575404 481213.20058163744,165956.3139019831 481201.2956022904,165952.48285594245 481189.4095544417,165948.64786753405 481177.50959311274,165944.81482477117 481165.61553636834,165940.9817653917 481153.7205927461,165936.22770472043 481138.9705800083,165932.37375480027 481140.215544091,165918.07372073093 481144.83562240377,165916.79371812948 481146.3055934274,165917.98371786345 481150.0455835623,165905.50370686068 481154.0755739703)),((165856.84086455274 481321.967319789,165853.9738187968 481312.8804221144,165852.74684928128 481309.0813951317,165860.79386263408 481306.4653622439,165869.11391915628 481332.4153192787,165861.07293261477 481335.00531610136,165856.84086455274 481321.967319789)),((165878.3339113341 481300.80537398526,165886.31888588314 481298.2294122301,165887.55189386752 481302.06239640043,165890.49793373534 481311.10642862413,165894.68699622378 481324.19342627533,165886.68397781134 481326.77534298535,165878.3339113341 481300.80537398526)),((165886.31888588314 481298.2294122301,165895.26694583046 481295.34338203387,165903.4679854846 481321.36145030503,165894.68699622378 481324.19342627533,165890.49793373534 481311.10642862413,165887.55189386752 481302.06239640043,165886.31888588314 481298.2294122301)),((165904.0799201045 481292.50046260294,165912.37800999396 481318.48738357215,165903.4679854846 481321.36145030503,165895.26694583046 481295.34338203387,165904.0799201045 481292.50046260294)),((165912.9189682873 481289.6493829797,165921.19804856065 481315.64239624795,165912.37800999396 481318.48738357215,165904.0799201045 481292.50046260294,165912.9189682873 481289.6493829797)),((165921.7149745366 481286.811464343,165922.95697104238 481290.6694003715,165925.87703315547 481299.68747166824,165930.08209634136 481312.7774275843,165921.19804856065 481315.64239624795,165912.9189682873 481289.6493829797,165921.7149745366 481286.811464343)),((165925.87703315547 481299.68747166824,165922.95697104238 481290.6694003715,165921.7149745366 481286.811464343,165931.37404637353 481283.6954208855,165939.79406761308 481309.6453844185,165930.08209634136 481312.7774275843,165925.87703315547 481299.68747166824)),((165859.39522142088 482267.4240714624,165864.58023530198 482251.2500981201,165870.91425172254 482253.2841598908,165879.3223348805 482255.98515759007,165880.66728750238 482251.79012318875,166036.17032815237 481766.6561312795,166046.02629930346 481735.6421578694,166055.72829030015 481703.96917686274,166065.4712408115 481670.5332167183,166073.85019402683 481639.2992494934,166083.20415541553 481598.5192454308,166089.29909334317 481563.24629943684,166094.11802925434 481531.8473813481,166098.9169394697 481487.64036907634,166101.8988601309 481450.2853709817,166103.08684389706 481416.0574241747,166102.93369437646 481375.9605096085,166101.7456417802 481336.0315043455,166098.21153095478 481289.0156036395,166092.06841256854 481242.295594639,166085.97631042093 481205.444609844,166078.7762296343 481168.82068623864,166070.93011676625 481135.4857379878,166061.18305531278 481100.10373740544,166048.71992073982 481059.8637894088,165962.33810554908 480790.9669277343,166126.4834736357 480738.2440844735,166284.86517634048 481326.3456167291,166308.26957530715 481457.38460489427,166313.80279147168 481573.28041882324,166138.78833844126 482338.71614736825,166081.8201098793 482362.2970864991,166078.87909140653 482354.8260973728,166065.03704142952 482350.38408176304,166067.1140423639 482343.91004357993,166047.4829979523 482337.61111607857,166046.74999094714 482339.89406430745,166011.74583306516 482328.6640402399,166011.13186545088 482330.5790858652,166004.40580526416 482313.8841250333,165995.45578310077 482311.04407232424,165986.90472601514 482308.30205776816,165982.0726736712 482294.6751175899,165979.4386831764 482292.11407342803,165976.74666644353 482289.497158236,165899.84941197015 482264.8940946159,165869.29827784642 482255.2771259079,165868.52726891052 482258.56606753974,165868.38028862118 482260.3340663107,165868.4712669673 482261.86314850824,165868.77225205908 482263.40203940653,165869.67226675144 482265.7321144773,165870.67225428545 482267.33307287534,165871.79227875813 482268.6280967436,165873.43232301722 482269.94106750196,165872.85431873804 482271.73604384495,165859.39522142088 482267.4240714624),(165940.77448270976 482218.33322843845,165944.22452076612 482227.1041601321,165950.84449544462 482224.5042468528,165947.40550719973 482215.704183836,165940.77448270976 482218.33322843845),(165988.2834341863 481993.02561051334,165987.16844019052 481996.4996890827,165988.64441476608 481996.9726212037,165987.372450483 482000.9536037061,165989.25942115605 482001.5556273442,165987.4364448771 482007.27065934683,165996.94850338978 482010.288634211,165999.36648882768 482002.6816601978,166004.11051088283 482004.19563692395,166006.53747695938 481996.633637221,166001.79845842728 481995.1046486911,166004.25946674342 481987.5016673862,165994.78641562958 481984.4296911814,165992.936448327 481990.13664986735,165991.03443861072 481989.5206833329,165989.74945852134 481993.497630687,165988.2834341863 481993.02561051334)),((165770.70677304774 480876.53069712035,165770.536768592 480876.0047152948,165773.1827870658 480875.57578046166,165775.54973754956 480875.19775313267,165805.11504480283 480966.92162979336,165834.14510546066 480957.56464399444,165891.6666154965 481136.02359245205,165905.31869812732 481178.3775641539,165836.31353847278 481200.6194925535,165822.6624279071 481158.26549094514,165814.0884203272 481161.02952517034,165811.68239555878 481148.67550719803,165823.73143364282 481145.3844633131,165854.20752218604 481135.45653249667,165847.1513999863 481113.57252679195,165841.32134709298 481095.4945620494,165835.492344386 481077.4156058137,165829.66525436094 481059.3465638337,165822.60918593645 481037.46259682236,165815.54912171973 481015.56861839304,165809.99907371998 480998.4285956074,165802.02399302027 480973.6876148568,165794.05297156327 480948.95566952834,165788.1319265725 480930.5877322591,165782.22086577112 480912.2487532343,165776.30278118345 480893.88973914855,165770.70677304774 480876.53069712035),(165833.25349588718 481161.17546683183,165832.3144548628 481161.5215512784,165836.15848971994 481173.47150982666,165837.11053207144 481173.1655096956,165843.1235316795 481191.85549232556,165851.94157576005 481189.0094869923,165860.50362192755 481186.2464934498,165869.06465495183 481183.48351249145,165877.62665215324 481180.720548479,165886.18763645564 481177.9574857892,165896.2337106576 481174.71549742355,165886.28362180485 481143.98556564905,165876.25758868846 481147.235518126,165867.70355799777 481150.00851581164,165859.15056190282 481152.7805291889,165853.91450703648 481154.47847423767,165852.19550400035 481148.7454882739,165850.19450258528 481142.07448384096,165849.5824694122 481140.03155528376,165849.43850588406 481140.07452058146,165852.05248622812 481148.7925723464,165853.77149161507 481154.5245568851,165850.60753492877 481155.55046525295,165842.05346714336 481158.3225058388,165834.20445387694 481160.8674610125,165833.25349588718 481161.17546683183)),((165960.17927882302 481921.8258100093,166012.34424551582 481759.0840178028,166022.14521790974 481728.24511586566,166031.79418719656 481696.74509726476,166041.42513576322 481663.6941479141,166049.5850707105 481633.26420126244,166058.68402618731 481593.5952206984,166064.62495930243 481559.2152395635,166069.32390902136 481528.5953227781,166074.02386650007 481485.3043251416,166076.93381866926 481448.8553972129,166078.08471020023 481415.6754693985,166077.9346373195 481376.3654226637,166076.77359289434 481337.3455119879,166073.33447668666 481291.5845675772,166067.3343192893 481245.95563193766,166061.37422548773 481209.90462836804,166054.33414940542 481174.0956631055,166046.7030684515 481141.6757140136,166037.18297547125 481107.11472961167,166024.8938545033 481067.4346662247,165975.01141201917 480912.1598730747,165908.78982323577 480706.0200216608,165932.4678412107 480697.9859559182,165962.33810554908 480790.9669277343,166048.71992073982 481059.8637894088,166061.18305531278 481100.10373740544,166070.93011676625 481135.4857379878,166078.7762296343 481168.82068623864,166085.97631042093 481205.444609844,166092.06841256854 481242.295594639,166098.21153095478 481289.0156036395,166101.7456417802 481336.0315043455,166102.93369437646 481375.9605096085,166103.08684389706 481416.0574241747,166101.8988601309 481450.2853709817,166098.9169394697 481487.64036907634,166094.11802925434 481531.8473813481,166089.29909334317 481563.24629943684,166083.20415541553 481598.5192454308,166073.85019402683 481639.2992494934,166065.4712408115 481670.5332167183,166055.72829030015 481703.96917686274,166046.02629930346 481735.6421578694,166036.17032815237 481766.6561312795,165880.66728750238 482251.79012318875,165879.3223348805 482255.98515759007,165870.91425172254 482253.2841598908,165864.58023530198 482251.2500981201,165859.39522142088 482267.4240714624,165850.33523032715 482264.5140551999,165960.17927882302 481921.8258100093)),((165893.09843377655 481540.1511493943,165865.49131977314 481532.05914822913,165867.54927288933 481525.10522256023,165879.0643191656 481528.5361596588,165891.77638575548 481532.2681751332,165895.13041732486 481533.24123828445,165893.09843377655 481540.1511493943)),((165869.08127331096 481519.9271384061,165880.59932803316 481523.3591982882,165893.3063660066 481527.08920379117,165896.64740066387 481528.08315691736,165895.13041732486 481533.24123828445,165891.77638575548 481532.2681751332,165879.0643191656 481528.5361596588,165867.54927288933 481525.10522256023,165869.08127331096 481519.9271384061)),((165869.08127331096 481519.9271384061,165870.61327667205 481514.749166038,165882.13434009094 481518.1822374329,165894.84434836917 481521.9311682699,165898.16535466668 481522.9191811999,165896.65241750143 481528.06514321023,165896.64740066387 481528.08315691736,165893.3063660066 481527.08920379117,165880.59932803316 481523.3591982882,165869.08127331096 481519.9271384061)),((165872.1452832179 481509.57119418646,165883.66833510826 481513.0041622153,165896.3713373239 481516.7511899681,165899.69038288604 481517.7331913193,165898.17435241595 481522.8891597626,165898.16535466668 481522.9191811999,165894.84434836917 481521.9311682699,165882.13434009094 481518.1822374329,165870.61327667205 481514.749166038,165872.1452832179 481509.57119418646)),((165872.1452832179 481509.57119418646,165873.67729294812 481504.3932228555,165885.20328536665 481507.8272022588,165897.90333968002 481511.55620259815,165901.21136076152 481512.5612122759,165899.69635646036 481517.7141783537,165899.69038288604 481517.7331913193,165896.3713373239 481516.7511899681,165883.66833510826 481513.0041622153,165872.1452832179 481509.57119418646)),((165875.20924209635 481499.2132491519,165886.73728430836 481502.6502407134,165899.42234036024 481506.3842186977,165902.7343960123 481507.3852327769,165901.218365878 481512.5381960822,165901.21136076152 481512.5612122759,165897.90333968002 481511.55620259815,165885.20328536665 481507.8272022588,165873.67729294812 481504.3932228555,165875.20924209635 481499.2132491519)),((165876.74125623505 481494.0361689687,165888.2723115794 481497.4721693098,165900.94134198249 481501.21323667804,165903.3433580554 481501.92918564315,165904.25833845264 481502.20124477724,165902.74037624605 481507.3632156981,165902.7343960123 481507.3852327769,165899.42234036024 481506.3842186977,165886.73728430836 481502.6502407134,165875.20924209635 481499.2132491519,165876.74125623505 481494.0361689687)),((165891.82230733614 481491.62027832307,165897.47634055186 481493.30127379094,165906.11937296687 481495.87120313005,165904.2623919882 481502.18723446043,165904.25833845264 481502.20124477724,165903.3433580554 481501.92918564315,165900.94134198249 481501.21323667804,165888.2723115794 481497.4721693098,165876.74125623505 481494.0361689687,165878.61824088683 481487.69324565696,165888.9282799268 481490.7592738712,165891.82230733614 481491.62027832307)),((165944.79885145818 481178.7555598329,165940.9638250668 481166.8606115619,165944.81482477117 481165.61553636834,165948.64786753405 481177.50959311274,165944.79885145818 481178.7555598329)),((165936.54584356796 481207.699518199,165929.67582654592 481209.9104735108,165924.12884127168 481211.6925502743,165920.90381222923 481201.6855597624,165933.3258276864 481197.68652243924,165934.48284759425 481201.28257951763,165936.54584356796 481207.699518199)),((165932.71481026363 481195.78856254957,165942.92389217904 481192.4915092783,165948.63385924912 481190.6505113363,165952.46891637606 481202.5455774916,165943.42091453492 481205.48758226004,165936.54584356796 481207.699518199,165934.48284759425 481201.28257951763,165933.3258276864 481197.68652243924,165932.71481026363 481195.78856254957)),((165928.88381791487 481183.8815045006,165926.81775358738 481177.45555016235,165925.6577841699 481173.8315612609,165925.0648026079 481171.97659024666,165935.2657636092 481168.7025348458,165940.9638250668 481166.8606115619,165944.79885145818 481178.7555598329,165935.77478973227 481181.6766027653,165928.88381791487 481183.8815045006)),((165960.13897532108 481226.33549698483,165956.30395514896 481214.44053561985,165960.15095575404 481213.20058163744,165963.9829787248 481225.09053244634,165960.13897532108 481226.33549698483)),((165956.30395514896 481214.44053561985,165952.46891637606 481202.5455774916,165956.3139019831 481201.2956022904,165960.15095575404 481213.20058163744,165956.30395514896 481214.44053561985)),((165952.48285594245 481189.4095544417,165956.3139019831 481201.2956022904,165952.46891637606 481202.5455774916,165948.63385924912 481190.6505113363,165952.48285594245 481189.4095544417)),((165944.79885145818 481178.7555598329,165948.64786753405 481177.50959311274,165952.48285594245 481189.4095544417,165948.63385924912 481190.6505113363,165944.79885145818 481178.7555598329)),((165940.9817653917 481153.7205927461,165944.81482477117 481165.61553636834,165940.9638250668 481166.8606115619,165937.12878032168 481154.9655552655,165940.9817653917 481153.7205927461)),((165940.9817653917 481153.7205927461,165937.12878032168 481154.9655552655,165932.37375480027 481140.215544091,165936.22770472043 481138.9705800083,165940.9817653917 481153.7205927461)),((165964.89403841048 481241.0855376612,165963.05302768055 481235.37549498817,165960.13897532108 481226.33549698483,165963.9829787248 481225.09053244634,165968.73504042928 481239.8365646448,165964.89403841048 481241.0855376612)),((165802.02399302027 480973.6876148568,165809.99907371998 480998.4285956074,165779.5610147902 481008.2696508966,165771.58796925325 480983.53361928085,165802.02399302027 480973.6876148568)),((165822.60918593645 481037.46259682236,165817.2181719826 481039.1916174552,165794.19015259045 481046.6316150005,165787.17005423043 481024.74455156905,165815.54912171973 481015.56861839304,165822.60918593645 481037.46259682236)),((165798.50226476917 481099.8185601817,165803.45727884932 481115.1415537492,165773.7592437802 481124.71645183617,165768.84218902295 481109.45854900277,165780.27220397923 481105.77951771766,165798.50226476917 481099.8185601817)),((165799.21918812083 481069.22953836713,165792.16316066612 481047.3965737889,165794.19015259045 481046.6316150005,165817.2181719826 481039.1916174552,165822.60918593645 481037.46259682236,165829.66525436094 481059.3465638337,165799.21918812083 481069.22953836713)),((165793.75132829722 481128.7324718677,165804.16329833507 481125.3754932473,165805.13332047366 481128.41556881135,165811.68239555878 481148.67550719803,165801.26337168008 481152.0354586903,165799.45834097321 481146.42046541837,165793.75132829722 481128.7324718677)),((165799.21918812083 481069.22953836713,165829.66525436094 481059.3465638337,165835.492344386 481077.4156058137,165827.0243031839 481080.140574016,165805.03924028226 481087.31955796864,165799.21918812083 481069.22953836713)),((165805.03924028226 481087.31955796864,165810.88331013816 481105.4135319523,165816.684352003 481123.520548419,165823.73143364282 481145.3844633131,165811.68239555878 481148.67550719803,165805.13332047366 481128.41556881135,165804.16329833507 481125.3754932473,165803.45727884932 481115.1415537492,165798.50226476917 481099.8185601817,165794.10724982165 481086.1055626836,165789.6861977294 481072.3145165163,165782.8121049136 481050.9255724577,165780.94908950687 481051.5405763582,165780.9100788994 481051.4195472039,165773.96205107903 481030.0095373427,165770.60704551917 481019.56454185536,165764.62994572392 481000.72964452335,165766.48497205196 481000.12763493793,165760.2829465038 480980.82661333535,165754.13286905934 480961.78963160724,165749.70980006928 480948.00763282424,165745.2717564758 480934.2646594566,165740.36473812314 480918.93471362256,165737.27473821864 480909.47467202117,165735.34367652657 480903.5747064268,165728.6406590719 480882.8817283568,165738.63867681925 480881.33275286073,165745.8437160834 480903.65674301836,165751.77780333883 480922.0406786393,165757.69286757722 480940.40366301994,165763.60686910295 480958.7646501255,165771.58796925325 480983.53361928085,165779.5610147902 481008.2696508966,165809.99907371998 480998.4285956074,165815.54912171973 481015.56861839304,165787.17005423043 481024.74455156905,165794.19015259045 481046.6316150005,165792.16316066612 481047.3965737889,165799.21918812083 481069.22953836713,165805.03924028226 481087.31955796864)),((165789.3793831147 481175.28645827976,165798.1083621269 481172.4784371293,165802.17141415383 481185.08041044057,165805.42044916144 481195.3554100336,165807.87149465547 481203.2124552643,165799.14445585056 481206.0284744372,165797.98348239536 481202.20045515895,165794.95742641244 481192.6604017623,165789.3793831147 481175.28645827976)),((165816.59847525915 481200.39645136514,165807.87149465547 481203.2124552643,165805.42044916144 481195.3554100336,165802.17141415383 481185.08041044057,165798.1083621269 481172.4784371293,165806.8374214708 481169.66943018365,165812.40746069382 481187.03046920174,165815.44652074503 481196.56544361706,165816.59847525915 481200.39645136514)),((165804.22552325492 481247.50836312154,165798.77555773532 481249.27043149626,165794.17451525794 481234.89239922474,165790.040483603 481222.11336638086,165795.49251017885 481220.3564110396,165796.72551110067 481224.17145823693,165799.6014908201 481233.142403265,165804.22552325492 481247.50836312154)),((165806.8374214708 481169.66943018365,165815.2434093422 481166.9654316354,165819.13143646508 481179.05043658486,165822.57751450696 481189.81243685796,165825.1135385119 481197.6484255169,165816.59847525915 481200.39645136514,165815.44652074503 481196.56544361706,165812.40746069382 481187.03046920174,165806.8374214708 481169.66943018365)),((165832.3144548628 481161.5215512784,165833.25349588718 481161.17546683183,165837.11053207144 481173.1655096956,165836.15848971994 481173.47150982666,165832.3144548628 481161.5215512784)),((165812.5765474452 481244.8093578957,165804.22552325492 481247.50836312154,165799.6014908201 481233.142403265,165796.72551110067 481224.17145823693,165795.49251017885 481220.3564110396,165803.84649189602 481217.6644071663,165809.0895179343 481233.8873874305,165812.5765474452 481244.8093578957)),((165812.5765474452 481244.8093578957,165809.0895179343 481233.8873874305,165803.84649189602 481217.6644071663,165812.20055093075 481214.97241758025,165813.447537585 481218.7784872005,165816.36456501708 481227.73640273476,165817.3325355461 481230.73542040045,165820.9275807907 481242.11036678863,165812.5765474452 481244.8093578957)),((165826.3776279051 481240.34943564463,165820.9275807907 481242.11036678863,165817.3325355461 481230.73542040045,165816.36456501708 481227.73640273476,165813.447537585 481218.7784872005,165812.20055093075 481214.97241758025,165817.6525229432 481213.2164879185,165818.91056491237 481217.01646362,165821.8195992788 481225.9774802488,165826.3776279051 481240.34943564463)),((165830.64859399022 481234.9194398026,165826.6675734102 481236.20047952776,165827.8525865298 481239.8724551546,165826.3776279051 481240.34943564463,165821.8195992788 481225.9774802488,165818.91056491237 481217.01646362,165817.6525229432 481213.2164879185,165823.10456946667 481211.45945178793,165827.27456949902 481224.218452369,165830.64859399022 481234.9194398026)),((165784.28590465026 481459.9431598627,165784.580929966 481459.00217660615,165785.5959004123 481455.5502011837,165788.38689940557 481456.3701971199,165793.87290232416 481437.7101881182,165794.01687317196 481437.75322834554,165795.3618555604 481433.1752054869,165802.763925968 481435.3552630413,165794.65391076147 481462.99320677517,165784.28590465026 481459.9431598627)),((165808.99602089508 481467.20522848406,165817.18399556502 481439.5251983774,165824.62502849937 481441.7132738949,165823.24797464852 481446.3232626617,165823.3920156111 481446.3651912605,165820.74502463543 481455.3992599747,165817.9330455101 481464.9632532137,165820.70304772386 481465.77721317613,165819.68900930948 481469.22918355267,165819.3730647613 481470.2552359135,165808.99602089508 481467.20522848406)),((165819.3730647613 481470.2552359135,165819.68900930948 481469.22918355267,165820.70304772386 481465.77721317613,165817.9330455101 481464.9632532137,165820.74502463543 481455.3992599747,165823.3920156111 481446.3651912605,165823.24797464852 481446.3232626617,165824.62502849937 481441.7132738949,165830.42703771713 481443.41921739513,165829.05303822085 481448.0332167751,165826.41504651489 481457.0631854822,165823.5790666665 481466.6232286844,165822.25705417473 481471.10315962805,165819.3730647613 481470.2552359135)),((165822.25705417473 481471.10315962805,165823.5790666665 481466.6232286844,165826.41504651489 481457.0631854822,165829.05303822085 481448.0332167751,165830.42703771713 481443.41921739513,165836.22904270093 481445.12527897663,165834.85802961228 481449.74317757157,165834.7140592224 481449.70024741895,165832.06707809644 481458.72118103574,165827.9150598663 481472.76617049647,165827.6230319796 481472.67918898124,165822.25705417473 481471.10315962805)),((165836.6310674592 481475.3272369474,165834.77111099343 481481.66921192576,165831.42309653418 481480.7601800219,165818.66706306094 481476.97414995317,165807.1290240118 481473.57022994,165808.99602089508 481467.20522848406,165819.3730647613 481470.2552359135,165822.25705417473 481471.10315962805,165827.6230319796 481472.67918898124,165827.9150598663 481472.76617049647,165836.6310674592 481475.3272369474)),((165702.08617533752 481203.37240525684,165707.698228188 481220.81630912225,165710.67626070618 481230.3733395914,165711.8762536899 481234.1892952708,165703.4442182028 481236.91032514203,165697.7431872291 481218.77539447945,165693.68317810545 481206.0753786871,165702.08617533752 481203.37240525684)),((165720.60230581425 481231.373342504,165711.8762536899 481234.1892952708,165710.67626070618 481230.3733395914,165707.698228188 481220.81630912225,165702.08617533752 481203.37240525684,165710.81519307548 481200.5633400208,165714.9112243282 481213.23540953355,165718.11326585078 481223.5293871783,165720.60230581425 481231.373342504)),((165714.91335148847 481272.22036780615,165707.31329987882 481248.74530289543,165714.59331353637 481246.3942909105,165715.8582840432 481250.2073845911,165722.21137888666 481269.8803100119,165720.5043766146 481270.4373732078,165714.91335148847 481272.22036780615)),((165727.38639761863 481272.2523536715,165716.10334139835 481275.895331588,165714.91335148847 481272.22036780615,165720.5043766146 481270.4373732078,165722.21137888666 481269.8803100119,165726.19135907304 481268.5822718183,165727.38639761863 481272.2523536715)),((165714.59331353637 481246.3942909105,165720.04529258763 481244.63435943174,165721.30132114777 481248.45032795117,165728.82339729104 481271.7892804257,165727.38639761863 481272.2523536715,165726.19135907304 481268.5822718183,165722.21137888666 481269.8803100119,165715.8582840432 481250.2073845911,165714.59331353637 481246.3942909105)),((165720.60230581425 481231.373342504,165718.11326585078 481223.5293871783,165714.9112243282 481213.23540953355,165710.81519307548 481200.5633400208,165719.54421835704 481197.7554028533,165725.1382394831 481215.1883834767,165728.14926428013 481224.7353711206,165729.32932247905 481228.5574072319,165720.60230581425 481231.373342504)),((165705.3020483263 481146.65442658326,165675.90201051926 481156.17036465387,165669.55094053983 481136.19542623137,165698.88103838265 481126.7204665121,165700.41401468738 481131.47843376535,165705.3020483263 481146.65442658326)),((165695.87495793874 481117.38646867196,165698.88103838265 481126.7204665121,165669.55094053983 481136.19542623137,165663.1508710861 481116.216385467,165692.44894243017 481106.7494406987,165695.87495793874 481117.38646867196)),((165692.44894243017 481106.7494406987,165663.1508710861 481116.216385467,165656.7638580151 481096.22948227986,165686.00988237115 481086.7584927733,165686.81593508384 481089.2614522431,165691.34494702617 481103.3244577809,165692.44894243017 481106.7494406987)),((165682.26786047127 481075.1414428623,165686.00988237115 481086.7584927733,165656.7638580151 481096.22948227986,165650.34775066923 481076.2404114006,165679.56785737386 481066.7585352824,165682.26786047127 481075.1414428623)),((165677.7228085178 481061.03045700997,165679.56785737386 481066.7585352824,165650.34775066923 481076.2404114006,165643.97375326228 481056.2404253602,165673.12279942227 481046.74945683393,165677.7228085178 481061.03045700997)),((165665.2167271966 481022.23148489284,165669.75774128851 481036.3195289759,165657.01070788447 481040.44147329027,165640.6076735651 481045.7844793601,165633.76962697253 481024.34352915717,165662.85469769547 481014.9065478738,165665.2167271966 481022.23148489284)),((165656.1386727924 480994.0735551053,165660.6777128998 481008.1525733653,165662.85469769547 481014.9065478738,165633.76962697253 481024.34352915717,165626.91556022537 481002.9364904099,165655.95464276624 480993.50259621587,165656.1386727924 480994.0735551053)),((165649.0525699072 480972.0895271607,165651.6006294285 480979.9945435866,165655.95464276624 480993.50259621587,165626.91556022537 481002.9364904099,165620.04149362512 480981.51150561386,165649.0525699072 480972.0895271607)),((165656.1386727924 480994.0735551053,165655.95464276624 480993.50259621587,165651.6006294285 480979.9945435866,165680.7376970608 480970.5815901459,165685.28873225473 480984.6725617586,165656.1386727924 480994.0735551053)),((165660.6777128998 481008.1525733653,165656.1386727924 480994.0735551053,165685.28873225473 480984.6725617586,165689.82074318492 480998.7515915497,165671.74072219664 481004.55650303455,165660.6777128998 481008.1525733653)),((165660.6777128998 481008.1525733653,165671.74072219664 481004.55650303455,165689.82074318492 480998.7515915497,165694.39581986226 481012.8314980565,165665.2167271966 481022.23148489284,165662.85469769547 481014.9065478738,165660.6777128998 481008.1525733653)),((165694.39581986226 481012.8314980565,165698.92286276966 481026.9135303987,165685.32080501522 481031.3154916907,165678.1797602082 481033.61855879077,165669.75774128851 481036.3195289759,165665.2167271966 481022.23148489284,165694.39581986226 481012.8314980565)),((165677.7228085178 481061.03045700997,165673.12279942227 481046.74945683393,165700.16085605856 481038.04550473945,165704.7448605624 481052.2855502074,165677.7228085178 481061.03045700997)),((165682.26786047127 481075.1414428623,165679.56785737386 481066.7585352824,165677.7228085178 481061.03045700997,165704.7448605624 481052.2855502074,165706.80189334918 481051.65246858,165711.3709330973 481065.73549467267,165694.0118988219 481071.4235043166,165682.26786047127 481075.1414428623)),((165682.26786047127 481075.1414428623,165694.0118988219 481071.4235043166,165711.3709330973 481065.73549467267,165715.89894905448 481079.7955159842,165686.81593508384 481089.2614522431,165686.00988237115 481086.7584927733,165682.26786047127 481075.1414428623)),((165686.81593508384 481089.2614522431,165715.89894905448 481079.7955159842,165720.4460383135 481093.8835105415,165706.03001425508 481098.5694844996,165691.34494702617 481103.3244577809,165686.81593508384 481089.2614522431)),((165692.44894243017 481106.7494406987,165691.34494702617 481103.3244577809,165706.03001425508 481098.5694844996,165720.4460383135 481093.8835105415,165724.99705833508 481107.97051686584,165710.78603248336 481112.59450324246,165695.87495793874 481117.38646867196,165692.44894243017 481106.7494406987)),((165724.99705833508 481107.97051686584,165729.54009859625 481122.04649532033,165711.89106420428 481127.78944391175,165700.41401468738 481131.47843376535,165698.88103838265 481126.7204665121,165695.87495793874 481117.38646867196,165710.78603248336 481112.59450324246,165724.99705833508 481107.97051686584)),((165734.4521396814 481137.24548951746,165705.3020483263 481146.65442658326,165700.41401468738 481131.47843376535,165711.89106420428 481127.78944391175,165729.54009859625 481122.04649532033,165734.4521396814 481137.24548951746)),((165738.16194859543 481014.2605593478,165742.755978062 481028.52258053963,165715.05491697186 481037.37150660635,165710.47685048796 481023.1045389031,165738.16194859543 481014.2605593478)),((165733.55590598722 480999.96057572326,165736.62288285774 481009.4805378496,165738.16194859543 481014.2605593478,165710.47685048796 481023.1045389031,165710.46285964557 481023.0475413903,165708.35282638256 481023.71555468504,165703.78783296674 481009.5996071852,165733.55590598722 480999.96057572326)),((165699.20177862456 480995.4046212557,165716.56078040772 480989.73153913725,165728.96582642768 480985.70758491463,165730.4898739962 480990.4396163693,165733.55590598722 480999.96057572326,165703.78783296674 481009.5996071852,165699.20177862456 480995.4046212557)),((165699.20177862456 480995.4046212557,165694.5887459312 480981.1235745071,165724.35281870016 480971.3875680756,165728.96582642768 480985.70758491463,165716.56078040772 480989.73153913725,165699.20177862456 480995.4046212557)),((165690.96304236684 481161.88443377306,165698.48310648455 481185.17838073144,165688.07310791782 481188.53536355897,165681.53306035264 481168.2743844818,165680.54303647086 481165.24541627563,165690.96304236684 481161.88443377306)),((165701.241071616 481158.56945126434,165703.20107209298 481164.64838160586,165708.76914462214 481181.860427097,165698.48310648455 481185.17838073144,165690.96304236684 481161.88443377306,165701.241071616 481158.56945126434)),((165711.51911494508 481155.254378882,165717.22517172978 481172.9383812277,165719.04618793767 481178.5463695621,165708.76914462214 481181.860427097,165703.20107209298 481164.64838160586,165701.241071616 481158.56945126434,165711.51911494508 481155.254378882)),((165721.79710368768 481151.9394390017,165723.74411552557 481158.02346741577,165725.91517520873 481164.6724258073,165729.32317666116 481175.2324445252,165719.04618793767 481178.5463695621,165717.22517172978 481172.9383812277,165711.51911494508 481155.254378882,165721.79710368768 481151.9394390017)),((165729.32317666116 481175.2324445252,165725.91517520873 481164.6724258073,165723.74411552557 481158.02346741577,165721.79710368768 481151.9394390017,165732.07517469442 481148.62440939253,165733.6001518292 481153.37447009963,165739.60024764334 481171.918429759,165729.32317666116 481175.2324445252)),((165744.0691597118 481134.3254810618,165734.4521396814 481137.24548951746,165729.54009859625 481122.04649532033,165724.99705833508 481107.97051686584,165720.4460383135 481093.8835105415,165715.89894905448 481079.7955159842,165711.3709330973 481065.73549467267,165706.80189334918 481051.65246858,165704.7448605624 481052.2855502074,165700.16085605856 481038.04550473945,165673.12279942227 481046.74945683393,165643.97375326228 481056.2404253602,165640.6076735651 481045.7844793601,165657.01070788447 481040.44147329027,165669.75774128851 481036.3195289759,165678.1797602082 481033.61855879077,165685.32080501522 481031.3154916907,165698.92286276966 481026.9135303987,165694.39581986226 481012.8314980565,165689.82074318492 480998.7515915497,165685.28873225473 480984.6725617586,165680.7376970608 480970.5815901459,165676.18266685502 480956.4655801002,165671.2726088129 480941.31761282677,165680.77863373855 480938.2345733982,165685.66868356994 480953.4786388692,165690.1106654938 480967.2975605761,165694.5887459312 480981.1235745071,165699.20177862456 480995.4046212557,165703.78783296674 481009.5996071852,165708.35282638256 481023.71555468504,165710.46285964557 481023.0475413903,165710.47685048796 481023.1045389031,165715.05491697186 481037.37150660635,165742.755978062 481028.52258053963,165749.7149720541 481026.265607322,165757.8109932328 481023.6556331221,165770.60704551917 481019.56454185536,165773.96205107903 481030.0095373427,165746.13098868445 481038.97950592457,165716.31991080538 481048.61158124864,165720.882987899 481062.85448954423,165725.50401482623 481077.15149142453,165730.10002995466 481091.43053018703,165734.55407641333 481105.2304959504,165739.06214865297 481119.03948478634,165744.0691597118 481134.3254810618)),((165601.6954647942 481546.6719394332,165603.2665091612 481557.8749336627,165605.13056301366 481571.1788902562,165606.29552746078 481579.4919302932,165603.93553425858 481579.8729459884,165601.81456528604 481580.6709376807,165600.84352435562 481581.3269791026,165599.85957510618 481582.0889164069,165597.87554561417 481582.77493841195,165596.68251470744 481583.4638832395,165593.01144504713 481547.03092506714,165601.6954647942 481546.6719394332)),((165613.28859894958 481577.5799795205,165608.9645699642 481578.9539187594,165606.29552746078 481579.4919302932,165605.13056301366 481571.1788902562,165603.2665091612 481557.8749336627,165601.6954647942 481546.6719394332,165608.92851025684 481546.3739382984,165610.40250501593 481556.91793163173,165612.08657528792 481568.9728984502,165613.28859894958 481577.5799795205)),((165620.21859594 481575.1679933951,165619.30361080015 481575.3409318947,165618.05659153924 481575.7699537777,165615.57457625074 481577.282924743,165613.28859894958 481577.5799795205,165612.08657528792 481568.9728984502,165610.40250501593 481556.91793163173,165608.92851025684 481546.3739382984,165616.15855676873 481546.07594130037,165617.5385718406 481555.9609400558,165619.04956229002 481566.7919658535,165620.21859594 481575.1679933951)),((165623.9376382452 481574.2589582951,165623.01662087196 481574.6369428262,165620.21859594 481575.1679933951,165619.04956229002 481566.7919658535,165617.5385718406 481555.9609400558,165616.15855676873 481546.07594130037,165630.81959485167 481545.47095438227,165630.21454977486 481547.5409433741,165628.09460247122 481555.2969364661,165625.4496212022 481564.38196237275,165623.9376382452 481574.2589582951)),((165628.31663550483 481572.72292747104,165628.04863887076 481572.71700972883,165627.295598274 481572.8799478917,165623.9376382452 481574.2589582951,165625.4496212022 481564.38196237275,165628.09460247122 481555.2969364661,165630.21454977486 481547.5409433741,165630.81959485167 481545.47095438227,165631.22455350097 481544.08903662313,165633.3745833264 481544.7169693225,165636.29257085733 481545.5699760255,165633.00861587102 481556.7359281843,165630.34462376888 481565.81200944126,165628.31663550483 481572.72292747104)),((165633.3856519854 481573.5369492708,165632.82463946828 481573.27093218954,165630.5476559399 481572.77791210177,165628.31663550483 481572.72292747104,165630.34462376888 481565.81200944126,165633.00861587102 481556.7359281843,165636.29257085733 481545.5699760255,165639.0665883725 481546.3799487256,165641.1875889794 481547.00003377564,165640.17763841612 481550.4559441469,165637.91261260203 481558.1710089705,165635.23962159565 481567.2429514656,165633.3856519854 481573.5369492708)),((165641.1875889794 481547.00003377564,165643.28964864177 481547.61395936704,165646.08260235947 481548.430986488,165642.7976639682 481559.6009356378,165640.13564119017 481568.67301044683,165638.23264531 481575.1569398359,165637.4426444891 481575.10194171686,165635.3536547517 481574.47091204784,165633.3856519854 481573.5369492708,165635.23962159565 481567.2429514656,165637.91261260203 481558.1710089705,165640.17763841612 481550.4559441469,165641.1875889794 481547.00003377564)),((165646.08260235947 481548.430986488,165648.85661667652 481549.24096469354,165650.96862176774 481549.85803041206,165649.958664692 481553.31405006663,165647.69163715083 481561.03400178667,165645.03063553 481570.10296081327,165643.2706992526 481576.0999714038,165639.91967184047 481575.27395426604,165638.23264531 481575.1569398359,165640.13564119017 481568.67301044683,165642.7976639682 481559.6009356378,165646.08260235947 481548.430986488)),((165650.96862176774 481549.85803041206,165653.05364497183 481550.467027788,165657.99464405555 481551.91099821345,165650.32766874752 481578.0449577952,165648.0466597634 481577.8079396033,165644.648671317 481576.43896047387,165643.2706992526 481576.0999714038,165645.03063553 481570.10296081327,165647.69163715083 481561.03400178667,165649.958664692 481553.31405006663,165650.96862176774 481549.85803041206)),((165597.10836855051 481501.71796845895,165598.75642536755 481513.5499901675,165600.78144138883 481528.0779719089,165601.90946393978 481536.1719631933,165601.79148220416 481536.1869529567,165600.50544929018 481536.5239913413,165598.6064298529 481537.42793941393,165597.56047163295 481538.20198303956,165595.37948262927 481538.55801897385,165594.34147427918 481538.8050224204,165592.372445522 481540.68994923134,165588.5163591032 481502.0869509593,165597.10836855051 481501.71796845895)),((165597.10836855051 481501.71796845895,165604.32943953897 481501.40702809585,165605.8934301998 481512.59698919836,165607.74949452898 481525.88001087715,165608.8854826356 481534.00595366396,165608.20447646998 481534.1490220308,165606.98346215248 481534.59201060794,165605.26547829775 481535.54897306906,165604.510497712 481535.8509906347,165601.90946393978 481536.1719631933,165600.78144138883 481528.0779719089,165598.75642536755 481513.5499901675,165597.10836855051 481501.71796845895)),((165615.8315313926 481531.766010167,165615.3114868945 481531.91298419517,165611.34546807274 481533.4889680317,165608.8854826356 481534.00595366396,165607.74949452898 481525.88001087715,165605.8934301998 481512.59698919836,165604.32943953897 481501.40702809585,165611.56142035974 481501.0960104723,165613.03043996624 481511.64299716364,165614.70650677482 481523.6830372915,165615.8315313926 481531.766010167)),((165622.75852275462 481529.29204706463,165620.85555015082 481529.8120057646,165618.75952816228 481531.2989910082,165616.7705169842 481531.50099598616,165615.8315313926 481531.766010167,165614.70650677482 481523.6830372915,165613.03043996624 481511.64299716364,165611.56142035974 481501.0960104723,165618.78644569792 481500.7859898448,165620.16649585604 481510.6900147568,165621.67753720444 481521.5330571065,165622.75852275462 481529.29204706463)),((165625.36251695952 481528.5799986202,165622.75852275462 481529.29204706463,165621.67753720444 481521.5330571065,165620.16649585604 481510.6900147568,165618.78644569792 481500.7859898448,165633.42851383932 481500.1560463788,165632.83250715226 481502.20502546395,165630.69952356882 481510.02007002296,165628.0715206423 481519.09099991864,165625.36251695952 481528.5799986202)),((165631.39255629783 481525.9149679285,165630.9685436477 481525.75995393127,165626.60055760553 481527.95702596626,165625.36251695952 481528.5799986202,165628.0715206423 481519.09099991864,165630.69952356882 481510.02007002296,165632.83250715226 481502.20502546395,165633.42851383932 481500.1560463788,165633.83247599567 481498.76400175615,165635.98251853054 481499.39505090343,165638.89950109937 481500.2520623487,165635.61351528965 481511.4580626708,165632.96656307607 481520.5230521847,165631.39255629783 481525.9149679285)),((165636.15255543543 481527.8090347562,165635.76454149632 481527.74900617154,165633.54852585605 481526.7010197023,165631.39255629783 481525.9149679285,165632.96656307607 481520.5230521847,165635.61351528965 481511.4580626708,165638.89950109937 481500.2520623487,165641.6435532639 481501.0580775339,165643.76354626822 481501.6800529023,165642.74956631157 481505.1340623208,165640.50856337114 481512.89001112076,165637.8615369034 481521.9539965238,165636.15255543543 481527.8090347562)),((165641.0645587276 481529.1800476667,165638.37758717962 481528.1529627594,165636.15255543543 481527.8090347562,165637.8615369034 481521.9539965238,165640.50856337114 481512.89001112076,165642.74956631157 481505.1340623208,165643.76354626822 481501.6800529023,165645.86452733708 481502.2970925542,165648.68557037693 481503.12608684925,165645.4025835435 481514.32307485805,165642.75657368667 481523.3860584972,165641.0645587276 481529.1800476667)),((165645.72461313903 481531.4160453151,165643.13460460407 481529.8150443105,165641.31457092945 481529.27504986216,165641.0645587276 481529.1800476667,165642.75657368667 481523.3860584972,165645.4025835435 481514.32307485805,165648.68557037693 481503.12608684925,165651.4875353038 481503.949033332,165653.5885826305 481504.5660764206,165652.57459638227 481508.0200838466,165650.2975556335 481515.7560342427,165647.65160788404 481524.81801406626,165645.72461313903 481531.4160453151)),((165594.43835523605 481468.28806687647,165600.1983606112 481464.6210421077,165612.83637232205 481459.5890219916,165620.33443431728 481482.60899424774,165617.41239246196 481483.43207033456,165615.567429844 481484.39298408286,165611.76339167368 481487.9240030302,165610.4653846653 481489.7019940075,165609.1804135772 481491.25203327456,165594.43835523605 481468.28806687647)),((165651.00263553346 481531.53602544207,165650.68361048083 481531.4800387959,165648.0476012429 481531.2610583079,165646.0606299827 481531.6230536444,165645.72461313903 481531.4160453151,165647.65160788404 481524.81801406626,165650.2975556335 481515.7560342427,165652.57459638227 481508.0200838466,165653.5885826305 481504.5660764206,165655.69957732878 481505.1860347452,165658.47258306312 481506.00002155197,165655.1925952362 481517.1879972574,165652.54664141696 481526.2489731121,165651.00263553346 481531.53602544207)),((165655.69661185972 481533.65705866605,165655.4066068051 481533.64397103206,165653.0226090003 481532.37297374895,165652.3046370842 481531.7630322554,165651.00263553346 481531.53602544207,165652.54664141696 481526.2489731121,165655.1925952362 481517.1879972574,165658.47258306312 481506.00002155197,165661.29362405348 481506.82802168775,165663.39460076226 481507.4450688031,165662.38060607156 481510.9000756058,165660.08660692768 481518.6210755559,165657.4416015454 481527.68104950315,165655.69661185972 481533.65705866605)),((165663.39460076226 481507.4450688031,165665.47860903255 481508.0580746425,165670.22964096483 481509.46604211105,165662.57364781812 481535.79004389286,165661.11068602707 481535.338044527,165660.1266268186 481534.8480261718,165658.27065199334 481533.7779970369,165655.69661185972 481533.65705866605,165657.4416015454 481527.68104950315,165660.08660692768 481518.6210755559,165662.38060607156 481510.9000756058,165663.39460076226 481507.4450688031)),((165609.1804135772 481491.25203327456,165606.64137371397 481493.6790316174,165604.2244188458 481495.22997775994,165602.0863669969 481495.8700489089,165597.89835535063 481496.7679685144,165593.188377013 481497.3100615866,165588.03632643542 481497.5650396594,165587.65731793118 481493.6549637098,165585.72233638985 481491.07004353654,165587.94934977996 481486.58998821466,165587.7653250545 481478.26604016084,165588.21129993236 481474.9870435183,165590.01334120362 481471.9130116907,165592.43131333546 481469.63706420065,165594.43835523605 481468.28806687647,165609.1804135772 481491.25203327456)),((165625.61842997943 481484.47602831735,165621.1104070053 481482.5680497702,165620.85143608338 481482.51608853386,165620.5864597661 481482.53009397513,165620.33443431728 481482.60899424774,165612.83637232205 481459.5890219916,165620.71241652773 481456.7870874901,165627.99739901253 481454.5000468303,165635.8624803692 481479.10100514797,165634.66750241435 481480.9960390412,165634.4774464169 481481.29904667084,165634.34248522227 481481.63110167166,165634.2674835271 481481.98108809546,165634.09446386903 481482.3830462035,165633.8515055482 481482.7470238606,165633.54647508613 481483.0610215058,165633.18948459928 481483.31504716893,165631.25648065427 481484.411062512,165629.91048233415 481484.59909278114,165627.1144806144 481484.76809059485,165626.603464249 481484.74106588034,165626.10146400786 481484.64307415194,165625.61842997943 481484.47602831735)),((165648.08653428173 481476.2990276144,165647.86148435998 481475.94605757366,165647.57353313183 481475.643020685,165647.2324787548 481475.39906175155,165646.85247903992 481475.2251152005,165646.44552518346 481475.1251011414,165646.02749005595 481475.10506207735,165643.58148713713 481475.28804590553,165642.12246694972 481475.65507555055,165638.07150308546 481477.1080192522,165636.6764993843 481477.95206626377,165636.23644210448 481478.47005359555,165635.8624803692 481479.10100514797,165627.99739901253 481454.5000468303,165636.2674338283 481452.2540818349,165643.30345424515 481450.68607193313,165649.01146646184 481450.635073883,165648.08653428173 481476.2990276144)),((165649.01146646184 481450.635073883,165661.20053165723 481452.01012863585,165669.51655038618 481453.89110264566,165660.14857230982 481485.5410656815,165654.23356992472 481483.0190674538,165653.72155860608 481482.7580494559,165653.2395243348 481482.4440232437,165652.79249916642 481482.08311920054,165652.38654961833 481481.6760179917,165652.02452553634 481481.2290678083,165648.08653428173 481476.2990276144,165649.01146646184 481450.635073883)),((165669.51655038618 481453.89110264566,165677.21057037477 481455.7971147626,165678.09361457388 481474.8440950918,165679.7696094002 481477.1761442125,165675.3816531761 481492.013062,165671.26163448754 481491.7910823835,165667.6125819265 481490.75711747725,165663.79056113077 481487.1331103664,165660.14857230982 481485.5410656815,165669.51655038618 481453.89110264566)),((165681.03342769816 481370.15520559694,165641.61332610715 481382.8551930367,165641.5133125544 481382.5352045473,165638.62327390848 481383.47516436345,165634.75324187803 481371.4851336322,165635.76328570157 481371.1652004403,165635.0433026686 481368.94515537814,165663.8433302382 481360.86520960403,165657.52328062925 481341.24516691454,165628.47320274284 481351.8552004529,165625.06317551967 481341.27521638497,165665.82326523197 481328.1352726176,165666.68328978316 481330.79522885894,165667.64327717246 481330.48520777485,165678.1333795042 481363.04516690416,165678.6834249223 481362.87523271586,165681.03342769816 481370.15520559694)),((165617.09714722337 481317.51421955513,165606.96301187953 481285.8701942276,165646.96914224676 481273.1072177767,165657.14321245725 481304.6542777951,165617.09714722337 481317.51421955513)),((165697.51917027353 481223.1333431713,165698.7212011478 481226.9583123765,165695.85917038817 481227.8583556615,165694.65720787522 481224.0323859261,165697.51917027353 481223.1333431713)),((165691.0211510048 481200.6953381686,165684.65409020818 481202.74839304714,165627.13258731828 481024.289515661,165607.1455695246 481030.731438868,165566.96323440745 480906.0715719191,165574.42528150935 480904.9875946103,165574.58128517252 480905.4695904154,165583.41331453214 480932.7785604291,165586.3243433018 480937.3354978831,165597.32340997134 480954.55349533306,165613.19249478946 480960.0385192044,165620.04149362512 480981.51150561386,165626.91556022537 481002.9364904099,165633.76962697253 481024.34352915717,165640.6076735651 481045.7844793601,165643.97375326228 481056.2404253602,165650.34775066923 481076.2404114006,165656.7638580151 481096.22948227986,165663.1508710861 481116.216385467,165669.55094053983 481136.19542623137,165675.90201051926 481156.17036465387,165680.54303647086 481165.24541627563,165681.53306035264 481168.2743844818,165688.07310791782 481188.53536355897,165691.87410709585 481200.42136204895,165691.16416331995 481200.64936207084,165688.9681318548 481194.1513498069,165688.82613778592 481194.19933092536,165691.0211510048 481200.6953381686)),((165394.9029742899 481052.66726315656,165391.35300913145 481055.2353273808,165419.3029016435 480960.14942550805,165522.93914092943 480915.56648424943,165552.40018022567 480908.1865915554,165566.96323440745 480906.0715719191,165607.1455695246 481030.731438868,165627.13258731828 481024.289515661,165684.65409020818 481202.74839304714,165690.637159789 481221.30839094444,165698.30625700488 481245.10234980984,165726.6254969247 481332.95825022587,165621.25993950333 481746.4797864231,165608.29683258527 481742.66481066804,165530.07598408076 481402.1821074725,165504.24280883875 481322.0651372312,165506.19878915494 481318.29511296586,165535.80903714304 481410.38904937153,165552.20405153732 481405.0530219699,165546.18801888666 481386.17912897764,165541.54601756966 481371.76508184953,165554.2629943963 481367.735124824,165562.40305383655 481365.1051199224,165574.37903995242 481361.12113882875,165564.77300100867 481331.25810891256,165509.9188188538 481314.44116910786,165465.68434751168 481121.8952823013,165427.8932166291 481135.29226641194,165401.2360271267 481050.67228847835,165394.9029742899 481052.66726315656),(165427.52394187503 480977.50537967804,165440.88706372227 481019.16937753715,165489.6121819983 481003.45438690356,165489.7661682667 481003.89342792385,165501.345250247 481038.8804116276,165549.2653961326 481023.05548012163,165537.74729069465 480988.0414772943,165536.48827910237 480984.2474703807,165550.1163297019 480979.8685207914,165551.204297186 480983.2904326845,165554.06332501216 480982.3815094123,165552.97231042304 480978.9504667289,165550.39932501575 480970.86152901244,165538.51629952638 480974.6894406412,165529.12722465204 480945.6495404934,165506.22314893643 480953.0694465758,165498.83109759056 480930.19554248103,165465.89800546746 480944.3154379804,165467.87100096743 480950.48842851777,165464.2350314395 480954.8794289921,165466.6010389317 480962.2814950371,165481.35811240494 480957.5234483394,165482.11709943743 480959.9004340465,165427.52394187503 480977.50537967804),(165584.85220088865 481409.5310950002,165586.09217947957 481413.3250766451,165588.95218029778 481412.39013984415,165587.7132266067 481408.5960484149,165584.85220088865 481409.5310950002),(165585.72233638985 481491.07004353654,165587.65731793118 481493.6549637098,165588.03632643542 481497.5650396594,165593.188377013 481497.3100615866,165597.89835535063 481496.7679685144,165602.0863669969 481495.8700489089,165604.2244188458 481495.22997775994,165606.64137371397 481493.6790316174,165609.1804135772 481491.25203327456,165610.4653846653 481489.7019940075,165611.76339167368 481487.9240030302,165615.567429844 481484.39298408286,165617.41239246196 481483.43207033456,165620.33443431728 481482.60899424774,165620.5864597661 481482.53009397513,165620.85143608338 481482.51608853386,165621.1104070053 481482.5680497702,165625.61842997943 481484.47602831735,165626.10146400786 481484.64307415194,165626.603464249 481484.74106588034,165627.1144806144 481484.76809059485,165629.91048233415 481484.59909278114,165631.25648065427 481484.411062512,165633.18948459928 481483.31504716893,165633.54647508613 481483.0610215058,165633.8515055482 481482.7470238606,165634.09446386903 481482.3830462035,165634.2674835271 481481.98108809546,165634.34248522227 481481.63110167166,165634.4774464169 481481.29904667084,165634.66750241435 481480.9960390412,165635.8624803692 481479.10100514797,165636.23644210448 481478.47005359555,165636.6764993843 481477.95206626377,165638.07150308546 481477.1080192522,165642.12246694972 481475.65507555055,165643.58148713713 481475.28804590553,165646.02749005595 481475.10506207735,165646.44552518346 481475.1251011414,165646.85247903992 481475.2251152005,165647.2324787548 481475.39906175155,165647.57353313183 481475.643020685,165647.86148435998 481475.94605757366,165648.08653428173 481476.2990276144,165652.02452553634 481481.2290678083,165652.38654961833 481481.6760179917,165652.79249916642 481482.08311920054,165653.2395243348 481482.4440232437,165653.72155860608 481482.7580494559,165654.23356992472 481483.0190674538,165660.14857230982 481485.5410656815,165663.79056113077 481487.1331103664,165667.6125819265 481490.75711747725,165671.26163448754 481491.7910823835,165675.3816531761 481492.013062,165679.7696094002 481477.1761442125,165678.09361457388 481474.8440950918,165677.21057037477 481455.7971147626,165669.51655038618 481453.89110264566,165661.20053165723 481452.01012863585,165649.01146646184 481450.635073883,165643.30345424515 481450.68607193313,165636.2674338283 481452.2540818349,165627.99739901253 481454.5000468303,165620.71241652773 481456.7870874901,165612.83637232205 481459.5890219916,165600.1983606112 481464.6210421077,165594.43835523605 481468.28806687647,165592.43131333546 481469.63706420065,165590.01334120362 481471.9130116907,165588.21129993236 481474.9870435183,165587.7653250545 481478.26604016084,165587.94934977996 481486.58998821466,165585.72233638985 481491.07004353654),(165588.5163591032 481502.0869509593,165592.372445522 481540.68994923134,165594.34147427918 481538.8050224204,165595.37948262927 481538.55801897385,165597.56047163295 481538.20198303956,165598.6064298529 481537.42793941393,165600.50544929018 481536.5239913413,165601.79148220416 481536.1869529567,165601.90946393978 481536.1719631933,165604.510497712 481535.8509906347,165605.26547829775 481535.54897306906,165606.98346215248 481534.59201060794,165608.20447646998 481534.1490220308,165608.8854826356 481534.00595366396,165611.34546807274 481533.4889680317,165615.3114868945 481531.91298419517,165615.8315313926 481531.766010167,165616.7705169842 481531.50099598616,165618.75952816228 481531.2989910082,165620.85555015082 481529.8120057646,165622.75852275462 481529.29204706463,165625.36251695952 481528.5799986202,165626.60055760553 481527.95702596626,165630.9685436477 481525.75995393127,165631.39255629783 481525.9149679285,165633.54852585605 481526.7010197023,165635.76454149632 481527.74900617154,165636.15255543543 481527.8090347562,165638.37758717962 481528.1529627594,165641.0645587276 481529.1800476667,165641.31457092945 481529.27504986216,165643.13460460407 481529.8150443105,165645.72461313903 481531.4160453151,165646.0606299827 481531.6230536444,165648.0476012429 481531.2610583079,165650.68361048083 481531.4800387959,165651.00263553346 481531.53602544207,165652.3046370842 481531.7630322554,165653.0226090003 481532.37297374895,165655.4066068051 481533.64397103206,165655.69661185972 481533.65705866605,165658.27065199334 481533.7779970369,165660.1266268186 481534.8480261718,165661.11068602707 481535.338044527,165662.57364781812 481535.79004389286,165670.22964096483 481509.46604211105,165665.47860903255 481508.0580746425,165663.39460076226 481507.4450688031,165661.29362405348 481506.82802168775,165658.47258306312 481506.00002155197,165655.69957732878 481505.1860347452,165653.5885826305 481504.5660764206,165651.4875353038 481503.949033332,165648.68557037693 481503.12608684925,165645.86452733708 481502.2970925542,165643.76354626822 481501.6800529023,165641.6435532639 481501.0580775339,165638.89950109937 481500.2520623487,165635.98251853054 481499.39505090343,165633.83247599567 481498.76400175615,165633.42851383932 481500.1560463788,165618.78644569792 481500.7859898448,165611.56142035974 481501.0960104723,165604.32943953897 481501.40702809585,165597.10836855051 481501.71796845895,165588.5163591032 481502.0869509593),(165593.01144504713 481547.03092506714,165596.68251470744 481583.4638832395,165597.87554561417 481582.77493841195,165599.85957510618 481582.0889164069,165600.84352435562 481581.3269791026,165601.81456528604 481580.6709376807,165603.93553425858 481579.8729459884,165606.29552746078 481579.4919302932,165608.9645699642 481578.9539187594,165613.28859894958 481577.5799795205,165615.57457625074 481577.282924743,165618.05659153924 481575.7699537777,165619.30361080015 481575.3409318947,165620.21859594 481575.1679933951,165623.01662087196 481574.6369428262,165623.9376382452 481574.2589582951,165627.295598274 481572.8799478917,165628.04863887076 481572.71700972883,165628.31663550483 481572.72292747104,165630.5476559399 481572.77791210177,165632.82463946828 481573.27093218954,165633.3856519854 481573.5369492708,165635.3536547517 481574.47091204784,165637.4426444891 481575.10194171686,165638.23264531 481575.1569398359,165639.91967184047 481575.27395426604,165643.2706992526 481576.0999714038,165644.648671317 481576.43896047387,165648.0466597634 481577.8079396033,165650.32766874752 481578.0449577952,165657.99464405555 481551.91099821345,165653.05364497183 481550.467027788,165650.96862176774 481549.85803041206,165648.85661667652 481549.24096469354,165646.08260235947 481548.430986488,165643.28964864177 481547.61395936704,165641.1875889794 481547.00003377564,165639.0665883725 481546.3799487256,165636.29257085733 481545.5699760255,165633.3745833264 481544.7169693225,165631.22455350097 481544.08903662313,165630.81959485167 481545.47095438227,165616.15855676873 481546.07594130037,165608.92851025684 481546.3739382984,165601.6954647942 481546.6719394332,165593.01144504713 481547.03092506714),(165597.5845531633 481592.7809603289,165601.46063956618 481624.22684115765,165602.4566080327 481626.1179109706,165603.4766237798 481624.7488834811,165603.94560087743 481624.40786518116,165605.9586501752 481623.6938694143,165608.3766218822 481622.2119098665,165609.59865615456 481622.0139273513,165610.50162004144 481622.1958936819,165610.90362644003 481622.2768680413,165612.98163506953 481622.0459009408,165615.42563522808 481620.3188860079,165616.78266352086 481620.37387635745,165617.541648888 481620.5498598102,165617.8856379771 481620.6299310871,165620.35871091337 481620.06290929666,165621.48069942274 481619.27690625296,165622.2996590703 481618.7028769826,165625.2756705811 481617.25394821167,165625.84766296556 481617.26296805777,165628.1157292097 481617.2968912284,165630.43568379804 481617.8349535341,165630.91172989132 481618.07486284024,165632.94469717392 481619.0998674647,165635.7647570934 481619.4059113776,165638.03776862158 481619.89692265476,165644.46871871245 481593.9039186575,165638.50767270915 481592.1769323115,165633.6376789234 481590.7659570493,165628.70063606824 481589.335927328,165628.16568494434 481591.1839845278,165613.63262675228 481591.94290989527,165606.4086137545 481592.319920889,165597.5845531633 481592.7809603289),(165606.96301187953 481285.8701942276,165617.09714722337 481317.51421955513,165657.14321245725 481304.6542777951,165646.96914224676 481273.1072177767,165606.96301187953 481285.8701942276),(165607.4216895084 481643.51492878806,165613.1327812483 481684.9217904698,165613.63977163073 481687.1918895534,165614.71079015185 481685.2448456506,165620.94879263086 481665.6538638274,165624.86279959895 481664.59682269074,165631.44275984986 481641.9439352179,165619.17873585294 481638.4528815434,165616.39472356904 481642.6609089703,165607.4216895084 481643.51492878806),(165625.06317551967 481341.27521638497,165628.47320274284 481351.8552004529,165657.52328062925 481341.24516691454,165663.8433302382 481360.86520960403,165635.0433026686 481368.94515537814,165635.76328570157 481371.1652004403,165634.75324187803 481371.4851336322,165638.62327390848 481383.47516436345,165641.5133125544 481382.5352045473,165641.61332610715 481382.8551930367,165681.03342769816 481370.15520559694,165678.6834249223 481362.87523271586,165678.1333795042 481363.04516690416,165667.64327717246 481330.48520777485,165666.68328978316 481330.79522885894,165665.82326523197 481328.1352726176,165625.06317551967 481341.27521638497)),((165853.91450703648 481154.47847423767,165853.77149161507 481154.5245568851,165852.05248622812 481148.7925723464,165849.43850588406 481140.07452058146,165849.5824694122 481140.03155528376,165850.19450258528 481142.07448384096,165852.19550400035 481148.7454882739,165853.91450703648 481154.47847423767)),((165690.637159789 481221.30839094444,165684.65409020818 481202.74839304714,165691.0211510048 481200.6953381686,165693.18418155596 481207.09636898787,165693.32617529767 481207.04838799126,165691.16416331995 481200.64936207084,165691.87410709585 481200.42136204895,165753.65927694863 481180.5064628724,165814.0884203272 481161.02952517034,165822.6624279071 481158.26549094514,165836.31353847278 481200.6194925535,165767.3103702741 481222.86038524355,165698.30625700488 481245.10234980984,165690.637159789 481221.30839094444),(165693.68317810545 481206.0753786871,165697.7431872291 481218.77539447945,165703.4442182028 481236.91032514203,165711.8762536899 481234.1892952708,165720.60230581425 481231.373342504,165729.32932247905 481228.5574072319,165738.05634936754 481225.7413761125,165746.78331805518 481222.92536026856,165755.51036490736 481220.10935998964,165764.23735355845 481217.29337498534,165772.96339762883 481214.47740331833,165781.69040843003 481211.6604477769,165790.41742727094 481208.8443977667,165799.14445585056 481206.0284744372,165807.87149465547 481203.2124552643,165816.59847525915 481200.39645136514,165825.1135385119 481197.6484255169,165822.57751450696 481189.81243685796,165819.13143646508 481179.05043658486,165820.13049025944 481178.728514202,165816.24341989227 481166.6435105667,165815.2434093422 481166.9654316354,165806.8374214708 481169.66943018365,165798.1083621269 481172.4784371293,165789.3793831147 481175.28645827976,165780.6493209348 481178.09549384686,165771.9203620799 481180.90343458427,165763.1913428137 481183.7123919793,165754.46226726277 481186.5204745377,165745.73224516274 481189.3294605534,165737.0032581936 481192.1373515939,165728.27421057862 481194.94637054345,165719.54421835704 481197.7554028533,165710.81519307548 481200.5633400208,165702.08617533752 481203.37240525684,165693.68317810545 481206.0753786871),(165694.65720787522 481224.0323859261,165695.85917038817 481227.8583556615,165698.7212011478 481226.9583123765,165697.51917027353 481223.1333431713,165694.65720787522 481224.0323859261)),((165737.3379160775 481555.91300334374,165735.73095426153 481561.36300590524,165734.12296457813 481566.8170122977,165732.5039211776 481572.30804616894,165731.722979526 481574.95398846315,165704.13282570825 481566.80807221646,165711.63384485795 481541.3200574355,165739.22793669422 481549.5020729691,165738.95195147427 481550.44109771407,165737.3379160775 481555.91300334374)),((165742.76593479898 481537.5050447366,165740.56592901776 481544.9660771371,165739.22793669422 481549.5020729691,165711.63384485795 481541.3200574355,165715.32678747826 481528.77303401113,165725.64985202887 481531.7811151973,165734.24586626413 481534.2861086722,165742.97691753737 481536.8301309427,165742.76593479898 481537.5050447366)),((165767.09185403027 481454.8851670778,165754.05186441253 481499.1701048759,165726.42579294113 481491.028104843,165739.44771866192 481446.73115084914,165749.84376477124 481449.7981879186,165752.72879604952 481450.6481872374,165758.38179191307 481452.3162255302,165767.09185403027 481454.8851670778)),((165791.7737026315 481328.7753049603,165783.7456507334 481331.359336259,165774.88861889107 481334.2092723015,165766.04762865734 481337.0552536876,165757.1655748783 481339.9142905514,165748.30754891026 481342.7652734014,165738.64354107963 481345.87521031464,165716.10334139835 481275.895331588,165727.38639761863 481272.2523536715,165728.82339729104 481271.7892804257,165734.2843600761 481270.0263800398,165742.61838084552 481267.3353419938,165750.98140785462 481264.635368777,165756.43242557545 481262.8753640524,165757.8784395208 481262.4083133824,165769.13344454192 481258.7753833276,165769.3634933841 481259.5253597224,165771.04348919258 481258.97537535493,165793.1736878639 481327.55535145255,165791.54366571992 481328.0852987592,165791.7737026315 481328.7753049603)),((165720.04529258763 481244.63435943174,165725.5073073317 481242.8703389998,165726.75330058602 481246.6902926032,165729.64336236584 481255.6653443158,165734.2843600761 481270.0263800398,165728.82339729104 481271.7892804257,165721.30132114777 481248.45032795117,165720.04529258763 481244.63435943174)),((165725.5073073317 481242.8703389998,165733.85235512824 481240.17530463496,165735.78637572107 481246.0963088247,165739.1253645554 481256.40639819385,165742.61838084552 481267.3353419938,165734.2843600761 481270.0263800398,165729.64336236584 481255.6653443158,165726.75330058602 481246.6902926032,165725.5073073317 481242.8703389998)),((165726.6254969247 481332.95825022587,165698.30625700488 481245.10234980984,165767.3103702741 481222.86038524355,165811.18078064197 481358.96532213397,165742.17659175242 481381.20723075565,165726.6254969247 481332.95825022587),(165714.59331353637 481246.3942909105,165707.31329987882 481248.74530289543,165714.91335148847 481272.22036780615,165716.10334139835 481275.895331588,165738.64354107963 481345.87521031464,165746.99361894192 481371.7652784169,165756.65861975378 481368.6482390871,165765.53763238693 481365.7842990672,165774.3697140342 481362.9352931985,165783.21470086896 481360.0823257834,165792.06672522734 481357.2272755572,165800.07373514827 481354.6453257462,165791.7737026315 481328.7753049603,165791.54366571992 481328.0852987592,165793.1736878639 481327.55535145255,165771.04348919258 481258.97537535493,165769.3634933841 481259.5253597224,165769.13344454192 481258.7753833276,165767.94046532223 481255.0803727385,165760.36338960959 481231.6154014575,165753.1123999269 481233.956395535,165747.66039481142 481235.71740314807,165742.20737085477 481237.47841455427,165733.85235512824 481240.17530463496,165725.5073073317 481242.8703389998,165720.04529258763 481244.63435943174,165714.59331353637 481246.3942909105)),((165728.27421057862 481194.94637054345,165737.0032581936 481192.1373515939,165742.59732487198 481209.55544268835,165745.61234685374 481219.1003356426,165746.78331805518 481222.92536026856,165738.05634936754 481225.7413761125,165735.57526303138 481217.8884169158,165732.34628696222 481207.6103914263,165728.27421057862 481194.94637054345)),((165719.54421835704 481197.7554028533,165728.27421057862 481194.94637054345,165732.34628696222 481207.6103914263,165735.57526303138 481217.8884169158,165738.05634936754 481225.7413761125,165729.32932247905 481228.5574072319,165728.14926428013 481224.7353711206,165725.1382394831 481215.1883834767,165719.54421835704 481197.7554028533)),((165717.13279208494 481496.11104573845,165742.54266873017 481409.7731823477,165812.09292220575 481430.24218691647,165786.68302267324 481516.58014388575,165717.13279208494 481496.11104573845),(165739.44771866192 481446.73115084914,165726.42579294113 481491.028104843,165754.05186441253 481499.1701048759,165781.5689765867 481507.33716742526,165794.65391076147 481462.99320677517,165802.763925968 481435.3552630413,165795.3618555604 481433.1752054869,165789.54184028375 481431.46125288424,165783.75084868493 481429.75515904836,165775.2168089457 481427.24120325147,165766.68378131933 481424.7281545481,165760.87376458934 481423.0161490942,165755.07273490838 481421.3081755765,165747.59369677713 481419.1052129124,165739.44771866192 481446.73115084914)),((165725.64985202887 481531.7811151973,165715.32678747826 481528.77303401113,165722.1637920794 481505.38503976824,165732.5078354939 481508.4231106378,165731.36181199265 481512.2791458858,165728.8128404287 481520.9150407567,165725.64985202887 481531.7811151973)),((165734.24586626413 481534.2861086722,165725.64985202887 481531.7811151973,165728.8128404287 481520.9150407567,165731.36181199265 481512.2791458858,165732.5078354939 481508.4231106378,165741.1428862153 481510.9591321961,165734.24586626413 481534.2861086722)),((165673.3708977106 481644.8049006763,165717.13279208494 481496.11104573845,165786.68302267324 481516.58014388575,165742.92118772503 481665.2739500047,165673.3708977106 481644.8049006763),(165689.5289023787 481616.43091684714,165682.66390541804 481639.6949511576,165693.02695096543 481642.74889270985,165701.65495568834 481645.29095071973,165710.28301998795 481647.8329127002,165718.91107302954 481650.3760023997,165727.5380969889 481652.91799232236,165737.844128147 481655.95499203826,165744.93108682157 481631.96596303635,165747.11110594447 481624.55796098587,165748.72110548115 481619.0870505108,165750.3331012124 481613.60902404686,165751.94207886027 481608.14100534626,165753.55408603878 481602.66097729624,165756.02206237818 481594.2760404996,165758.48305164994 481585.91000471317,165760.09602746696 481580.43009233876,165761.7070189946 481574.9550718272,165763.31704865114 481569.4850566739,165764.92303530494 481564.0260484118,165766.5320427976 481558.5590362891,165768.14401146414 481553.08012593735,165770.3300088621 481545.6511190906,165777.35402061223 481521.5951332937,165767.04893821903 481518.56806844496,165758.41391373967 481516.0321128274,165749.7788806756 481513.49606105307,165741.1428862153 481510.9591321961,165732.5078354939 481508.4231106378,165722.1637920794 481505.38503976824,165715.32678747826 481528.77303401113,165711.63384485795 481541.3200574355,165704.13282570825 481566.80807221646,165694.93587527092 481598.058018297,165689.5289023787 481616.43091684714)),((165749.87821666626 481168.6054396765,165760.15524713008 481165.29146753036,165770.4322916698 481161.9774055011,165780.70934980048 481158.6634761236,165790.9863538234 481155.3494567121,165801.26337168008 481152.0354586903,165811.68239555878 481148.67550719803,165814.0884203272 481161.02952517034,165753.65927694863 481180.5064628724,165691.87410709585 481200.42136204895,165688.07310791782 481188.53536355897,165698.48310648455 481185.17838073144,165708.76914462214 481181.860427097,165719.04618793767 481178.5463695621,165729.32317666116 481175.2324445252,165739.60024764334 481171.918429759,165749.87821666626 481168.6054396765)),((165804.16329833507 481125.3754932473,165793.75132829722 481128.7324718677,165783.4742649519 481132.0474867819,165773.19626086665 481135.36252099246,165762.91820267861 481138.67746517947,165752.64022651344 481141.99243090645,165742.36219818195 481145.3064164967,165732.07517469442 481148.62440939253,165721.79710368768 481151.9394390017,165711.51911494508 481155.254378882,165701.241071616 481158.56945126434,165690.96304236684 481161.88443377306,165680.54303647086 481165.24541627563,165675.90201051926 481156.17036465387,165705.3020483263 481146.65442658326,165734.4521396814 481137.24548951746,165744.0691597118 481134.3254810618,165773.7592437802 481124.71645183617,165803.45727884932 481115.1415537492,165804.16329833507 481125.3754932473)),((165815.2434093422 481166.9654316354,165816.24341989227 481166.6435105667,165820.13049025944 481178.728514202,165819.13143646508 481179.05043658486,165815.2434093422 481166.9654316354)),((165765.53763238693 481365.7842990672,165757.1655748783 481339.9142905514,165766.04762865734 481337.0552536876,165774.3697140342 481362.9352931985,165765.53763238693 481365.7842990672)),((165774.3697140342 481362.9352931985,165766.04762865734 481337.0552536876,165774.88861889107 481334.2092723015,165783.21470086896 481360.0823257834,165774.3697140342 481362.9352931985)),((165792.06672522734 481357.2272755572,165783.21470086896 481360.0823257834,165774.88861889107 481334.2092723015,165783.7456507334 481331.359336259,165784.97264818248 481335.1672473105,165787.86368516678 481344.1852849584,165792.06672522734 481357.2272755572)),((165787.86368516678 481344.1852849584,165784.97264818248 481335.1672473105,165783.7456507334 481331.359336259,165791.7737026315 481328.7753049603,165800.07373514827 481354.6453257462,165792.06672522734 481357.2272755572,165787.86368516678 481344.1852849584)),((165817.33076423616 481320.5923644494,165818.53473190608 481324.32034577214,165821.46778268923 481333.36931528937,165825.6738182269 481346.4083368862,165817.67381487784 481348.9853649841,165809.32371226288 481323.19531513343,165817.33076423616 481320.5923644494)),((165817.33076423616 481320.5923644494,165826.1607530206 481317.7223063045,165834.53086462567 481343.55537642253,165825.6738182269 481346.4083368862,165821.46778268923 481333.36931528937,165818.53473190608 481324.32034577214,165817.33076423616 481320.5923644494)),((165691.0211510048 481200.6953381686,165688.82613778592 481194.19933092536,165688.9681318548 481194.1513498069,165691.16416331995 481200.64936207084,165693.32617529767 481207.04838799126,165693.18418155596 481207.09636898787,165691.0211510048 481200.6953381686)),((165798.00803197207 481504.65914855164,165809.52610699498 481508.05810830294,165822.24111503712 481511.8021899461,165825.61514416043 481512.7781425044,165823.56413966522 481519.7282063275,165795.9680335119 481511.61214057665,165798.00803197207 481504.65914855164)),((165799.53601079423 481499.45010300004,165811.0490582101 481502.8772050506,165827.14610558908 481507.58913941676,165825.61514416043 481512.7781425044,165822.24111503712 481511.8021899461,165809.52610699498 481508.05810830294,165798.00803197207 481504.65914855164,165799.53601079423 481499.45010300004)),((165801.0480544796 481494.29621007456,165812.57303552347 481497.69619328826,165825.33510116214 481501.4762128732,165828.6791265633 481502.39513447497,165827.14610558908 481507.58913941676,165811.0490582101 481502.8772050506,165799.53601079423 481499.45010300004,165801.0480544796 481494.29621007456)),((165802.56800132265 481489.1151865056,165814.09605930385 481492.51618132205,165830.20212846796 481497.23215074255,165828.6791265633 481502.39513447497,165825.33510116214 481501.4762128732,165812.57303552347 481497.69619328826,165801.0480544796 481494.29621007456,165802.56800132265 481489.1151865056)),((165804.0880216979 481483.9331622273,165815.62004295533 481487.3351705922,165828.35112886416 481491.10723019537,165831.73209434262 481492.0351359933,165830.97413562768 481494.6171360007,165830.20212846796 481497.23215074255,165814.09605930385 481492.51618132205,165802.56800132265 481489.1151865056,165804.0880216979 481483.9331622273)),((165805.60797486416 481478.7521396871,165817.14307526563 481482.1541582829,165833.24713194987 481486.86924293207,165831.73209434262 481492.0351359933,165828.35112886416 481491.10723019537,165815.62004295533 481487.3351705922,165804.0880216979 481483.9331622273,165805.60797486416 481478.7521396871)),((165807.1290240118 481473.57022994,165818.66706306094 481476.97414995317,165831.42309653418 481480.7601800219,165834.77111099343 481481.66921192576,165833.24713194987 481486.86924293207,165817.14307526563 481482.1541582829,165805.60797486416 481478.7521396871,165807.1290240118 481473.57022994)),((165780.9100788994 481051.4195472039,165780.94908950687 481051.5405763582,165782.8121049136 481050.9255724577,165789.6861977294 481072.3145165163,165759.94208684235 481081.8385492149,165755.3420530924 481067.5615879822,165753.04303926002 481060.4275618781,165780.9100788994 481051.4195472039)),((165789.6861977294 481072.3145165163,165794.10724982165 481086.1055626836,165764.39215046004 481095.6485469322,165759.94208684235 481081.8385492149,165789.6861977294 481072.3145165163)),((165764.39215046004 481095.6485469322,165794.10724982165 481086.1055626836,165798.50226476917 481099.8185601817,165780.27220397923 481105.77951771766,165768.84218902295 481109.45854900277,165764.39215046004 481095.6485469322)),((165780.70934980048 481158.6634761236,165778.90532097794 481153.0484925419,165774.72427119376 481140.1124897321,165773.19626086665 481135.36252099246,165783.4742649519 481132.0474867819,165785.43027980113 481138.130446508,165787.59027662704 481144.78452594153,165790.9863538234 481155.3494567121,165780.70934980048 481158.6634761236)),((165790.9863538234 481155.3494567121,165787.59027662704 481144.78452594153,165785.43027980113 481138.130446508,165783.4742649519 481132.0474867819,165793.75132829722 481128.7324718677,165799.45834097321 481146.42046541837,165801.26337168008 481152.0354586903,165790.9863538234 481155.3494567121)),((165771.9203620799 481180.90343458427,165780.6493209348 481178.09549384686,165784.69838921897 481190.71845116117,165787.94644276387 481200.9894316278,165790.41742727094 481208.8443977667,165781.69040843003 481211.6604477769,165780.52041607565 481207.835417028,165777.4883933551 481198.2974753085,165771.9203620799 481180.90343458427)),((165780.6493209348 481178.09549384686,165789.3793831147 481175.28645827976,165794.95742641244 481192.6604017623,165797.98348239536 481202.20045515895,165799.14445585056 481206.0284744372,165790.41742727094 481208.8443977667,165787.94644276387 481200.9894316278,165784.69838921897 481190.71845116117,165780.6493209348 481178.09549384686)),((165785.55950023342 481249.4403665603,165778.02345562194 481225.98536036786,165784.58846067498 481223.87043900834,165785.88444177373 481227.66737380484,165788.72052130097 481236.65235585446,165792.13649313548 481247.3183605189,165790.44449281244 481247.86742136953,165785.55950023342 481249.4403665603)),((165785.55950023342 481249.4403665603,165790.44449281244 481247.86742136953,165792.13649313548 481247.3183605189,165796.1385307854 481246.02142821206,165797.33956570356 481249.73437673337,165786.7535148305 481253.1554111886,165785.55950023342 481249.4403665603)),((165790.040483603 481222.11336638086,165794.17451525794 481234.89239922474,165798.77555773532 481249.27043149626,165797.33956570356 481249.73437673337,165796.1385307854 481246.02142821206,165792.13649313548 481247.3183605189,165788.72052130097 481236.65235585446,165785.88444177373 481227.66737380484,165784.58846067498 481223.87043900834,165790.040483603 481222.11336638086)),((165775.75088814163 481457.4322048577,165779.88083834152 481443.37722162984,165782.5408714928 481434.36519018246,165782.39683007967 481434.32315151556,165783.75084868493 481429.75515904836,165789.54184028375 481431.46125288424,165788.19285334527 481436.0332602932,165781.70292275774 481458.1561794963,165781.4059229174 481459.0961572339,165775.75088814163 481457.4322048577)),((165781.4059229174 481459.0961572339,165781.70292275774 481458.1561794963,165788.19285334527 481436.0332602932,165789.54184028375 481431.46125288424,165795.3618555604 481433.1752054869,165794.01687317196 481437.75322834554,165793.87290232416 481437.7101881182,165788.38689940557 481456.3701971199,165785.5959004123 481455.5502011837,165784.580929966 481459.00217660615,165784.28590465026 481459.9431598627,165781.4059229174 481459.0961572339)),((165784.28590465026 481459.9431598627,165794.65391076147 481462.99320677517,165781.5689765867 481507.33716742526,165754.05186441253 481499.1701048759,165767.09185403027 481454.8851670778,165775.75088814163 481457.4322048577,165781.4059229174 481459.0961572339,165784.28590465026 481459.9431598627))) diff --git a/rust/sedona-geo-test-fixtures/fixtures/nl_zones.wkt b/rust/sedona-geo-test-fixtures/fixtures/nl_zones.wkt deleted file mode 100644 index 1aa1b1c8..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/nl_zones.wkt +++ /dev/null @@ -1 +0,0 @@ -MULTIPOLYGON(((5.543993 52.322388,5.544071 52.322222,5.544205 52.321941,5.544315 52.321712,5.544368 52.321599,5.544468 52.321389,5.54462 52.321416,5.544746 52.321439,5.544873 52.321461,5.545 52.321484,5.545127 52.321507,5.545278 52.321534,5.545176 52.32175,5.545144 52.321817,5.54512 52.321866,5.545097 52.321915,5.545073 52.321964,5.54505 52.322013,5.545027 52.322063,5.545003 52.322112,5.544967 52.322187,5.544931 52.322263,5.544908 52.322312,5.544884 52.322361,5.544861 52.32241,5.544838 52.32246,5.544806 52.322526,5.544703 52.322742,5.544551 52.322715,5.544425 52.322692,5.544298 52.322669,5.544171 52.322647,5.544045 52.322624,5.543893 52.322597,5.543993 52.322388)),((5.544655 52.322696,5.544481 52.322665,5.544402 52.32265,5.544227 52.322619,5.544148 52.322605,5.543974 52.322574,5.544011 52.322496,5.544057 52.322399,5.544049 52.322398,5.544053 52.32239,5.544153 52.322181,5.544252 52.321972,5.544272 52.321931,5.544421 52.321617,5.544509 52.321434,5.544516 52.321435,5.54469 52.321466,5.544857 52.321496,5.545023 52.321526,5.545197 52.321557,5.545205 52.321558,5.545111 52.321756,5.544993 52.322003,5.544922 52.322152,5.544899 52.322202,5.544757 52.3225,5.544708 52.322602,5.544723 52.322605,5.544711 52.322631,5.544688 52.322627,5.544655 52.322696)),((5.547922 52.321005,5.547914 52.321023,5.547702 52.320985,5.547541 52.320956,5.547549 52.320938,5.547922 52.321005)),((5.548023 52.321865,5.548015 52.321883,5.547804 52.321845,5.547592 52.321807,5.547654 52.321678,5.547715 52.321548,5.547777 52.321419,5.547816 52.321337,5.547838 52.321291,5.547901 52.32116,5.547962 52.321031,5.548024 52.320902,5.548041 52.320867,5.548069 52.320871,5.548052 52.320907,5.54799 52.321036,5.547929 52.321166,5.547867 52.321296,5.547845 52.321342,5.547806 52.321424,5.547744 52.321553,5.547682 52.321683,5.547628 52.321795,5.547812 52.321828,5.548023 52.321865)),((5.548496 52.321949,5.548411 52.321934,5.548283 52.321912,5.548073 52.321874,5.548126 52.321762,5.548187 52.321632,5.548203 52.321635,5.548398 52.321665,5.548545 52.321695,5.54861 52.321708,5.548573 52.321785,5.548549 52.321837,5.548546 52.321844,5.548496 52.321949)),((5.542525 52.32132,5.542617 52.321284,5.542718 52.321243,5.542791 52.321177,5.542892 52.321137,5.543013 52.321155,5.543127 52.321132,5.543225 52.321079,5.54334 52.321056,5.543423 52.321104,5.543539 52.321124,5.543634 52.321187,5.54375 52.321208,5.543806 52.321218,5.543781 52.32127,5.543721 52.321268,5.543667 52.321259,5.543611 52.321226,5.543558 52.321212,5.543471 52.321189,5.543463 52.321187,5.543456 52.321184,5.54345 52.321181,5.543444 52.321177,5.543438 52.321173,5.54338 52.321129,5.543377 52.321126,5.543373 52.321123,5.543368 52.321121,5.543362 52.321119,5.543356 52.321118,5.54335 52.321118,5.543314 52.32112,5.543293 52.321123,5.543234 52.321136,5.543213 52.321144,5.543207 52.321149,5.543201 52.321154,5.543184 52.321171,5.543181 52.321174,5.543179 52.321177,5.543178 52.32118,5.543175 52.321184,5.543172 52.321187,5.543167 52.32119,5.543162 52.321192,5.543134 52.321202,5.543114 52.321204,5.543073 52.321205,5.543066 52.321205,5.543058 52.321204,5.543051 52.321203,5.542985 52.321186,5.542981 52.321185,5.542977 52.321185,5.542974 52.321186,5.542931 52.321194,5.542904 52.321202,5.542848 52.321234,5.542829 52.32125,5.54281 52.321264,5.542773 52.321286,5.542738 52.3213,5.542706 52.321306,5.542645 52.321314,5.542576 52.321319,5.542525 52.32132)),((5.542594 52.321692,5.542565 52.321709,5.542552 52.321627,5.542589 52.321624,5.542632 52.321621,5.54304 52.321541,5.543037 52.321527,5.543072 52.321521,5.543068 52.32151,5.543593 52.321604,5.543621 52.321609,5.543595 52.321663,5.543573 52.321659,5.543559 52.321655,5.543532 52.321645,5.543494 52.321644,5.54349 52.321644,5.543455 52.321633,5.543444 52.321627,5.543425 52.321625,5.54342 52.321625,5.543382 52.321623,5.543352 52.321626,5.543347 52.321624,5.543309 52.32161,5.543283 52.321605,5.543279 52.321604,5.54324 52.321595,5.543207 52.321592,5.543201 52.321592,5.543169 52.321582,5.543137 52.321575,5.543131 52.321574,5.543067 52.321594,5.543049 52.321599,5.543011 52.321606,5.542983 52.32161,5.542952 52.321624,5.542923 52.321626,5.542909 52.321628,5.542901 52.321629,5.542843 52.321644,5.542807 52.321648,5.542797 52.32165,5.542779 52.321654,5.542754 52.321662,5.542743 52.321665,5.542705 52.321668,5.542703 52.321668,5.542684 52.321671,5.542657 52.321679,5.542641 52.321686,5.542609 52.32169,5.542594 52.321692)),((5.547922 52.321005,5.547549 52.320938,5.547602 52.320827,5.547618 52.320793,5.547663 52.320697,5.547826 52.320726,5.548059 52.320768,5.548297 52.320811,5.548507 52.320848,5.548468 52.32093,5.548445 52.320977,5.548384 52.321106,5.548323 52.321236,5.548275 52.321336,5.548261 52.321365,5.548199 52.321495,5.548138 52.321624,5.548077 52.321754,5.548023 52.321865,5.547812 52.321828,5.547628 52.321795,5.547682 52.321683,5.547744 52.321553,5.547806 52.321424,5.547845 52.321342,5.547867 52.321296,5.547929 52.321166,5.54799 52.321036,5.548052 52.320907,5.548069 52.320871,5.548041 52.320867,5.548016 52.320862,5.547992 52.320858,5.547975 52.320893,5.547922 52.321005)),((5.542507 52.321321,5.5425 52.321321,5.542495 52.321286,5.542466 52.321263,5.542499 52.321223,5.542496 52.321148,5.542502 52.321118,5.542528 52.321091,5.542564 52.32107,5.542593 52.321058,5.542678 52.321025,5.542863 52.320979,5.542978 52.320954,5.543085 52.320933,5.543206 52.320913,5.543309 52.320899,5.543393 52.320898,5.543572 52.32091,5.543694 52.320927,5.543807 52.320944,5.54382 52.321115,5.543845 52.321136,5.543806 52.321218,5.54375 52.321208,5.543634 52.321187,5.543539 52.321124,5.543423 52.321104,5.54334 52.321056,5.543225 52.321079,5.543127 52.321132,5.543013 52.321155,5.542892 52.321137,5.542791 52.321177,5.542718 52.321243,5.542617 52.321284,5.542525 52.32132,5.542507 52.321321)),((5.542552 52.321627,5.542507 52.321362,5.542633 52.321358,5.542739 52.321355,5.542845 52.321353,5.542951 52.32135,5.543166 52.321344,5.543166 52.321343,5.543172 52.321331,5.543204 52.321337,5.543239 52.321343,5.543246 52.321344,5.543287 52.321352,5.543318 52.321357,5.543349 52.321363,5.54339 52.32137,5.543431 52.321377,5.543462 52.321383,5.543493 52.321388,5.543534 52.321396,5.543575 52.321403,5.543606 52.321409,5.543636 52.321414,5.543706 52.321427,5.543621 52.321609,5.543593 52.321604,5.543068 52.32151,5.543072 52.321521,5.543037 52.321527,5.54304 52.321541,5.542632 52.321621,5.542589 52.321624,5.542552 52.321627)),((5.544719 52.320861,5.544838 52.320613,5.544948 52.320633,5.545033 52.320648,5.545118 52.320663,5.545243 52.320686,5.545369 52.320708,5.545454 52.320723,5.545539 52.320738,5.545648 52.320758,5.54553 52.321006,5.54537 52.32134,5.545339 52.321405,5.544981 52.321341,5.544935 52.321332,5.54453 52.32126,5.544719 52.320861)),((5.545969 52.320815,5.546054 52.32083,5.546139 52.320845,5.546264 52.320867,5.546389 52.32089,5.546474 52.320905,5.54656 52.32092,5.546668 52.32094,5.546551 52.321189,5.54648 52.321339,5.546361 52.321588,5.545551 52.321443,5.5456 52.32134,5.54574 52.321044,5.545859 52.320795,5.545969 52.320815)),((5.546709 52.321338,5.546762 52.321227,5.54688 52.320978,5.546989 52.320997,5.547074 52.321012,5.547159 52.321028,5.547284 52.32105,5.54741 52.321073,5.547495 52.321088,5.54758 52.321103,5.547689 52.321122,5.547588 52.321337,5.547571 52.321372,5.547544 52.321429,5.547522 52.321475,5.5475 52.321522,5.547477 52.321568,5.547455 52.321615,5.547433 52.321661,5.547411 52.321708,5.547381 52.32177,5.546976 52.321698,5.546571 52.321626,5.546709 52.321338)),((5.546076 52.321924,5.545379 52.3218,5.545384 52.321792,5.545411 52.321734,5.545452 52.321648,5.545463 52.321624,5.545488 52.321574,5.545556 52.321586,5.545682 52.321609,5.54578 52.321627,5.545783 52.321625,5.545792 52.321627,5.545843 52.321636,5.545916 52.321649,5.545921 52.32165,5.545919 52.321652,5.546242 52.32171,5.546286 52.321716,5.546298 52.321718,5.546249 52.321822,5.546191 52.321945,5.546175 52.321942,5.546098 52.321928,5.546076 52.321924)),((5.547511 52.32137,5.547331 52.321747,5.546747 52.321642,5.546634 52.321622,5.546814 52.321245,5.546818 52.321237,5.546789 52.321232,5.546889 52.321024,5.546969 52.321039,5.546973 52.321032,5.547143 52.321062,5.54714 52.321069,5.54722 52.321084,5.547309 52.3211,5.54739 52.321114,5.547394 52.321107,5.547564 52.321138,5.547561 52.321145,5.547641 52.321159,5.547603 52.32124,5.547543 52.321367,5.547515 52.321362,5.547511 52.32137)),((5.546311 52.321564,5.546198 52.321544,5.545726 52.32146,5.545613 52.32144,5.545793 52.321063,5.545797 52.321054,5.545769 52.321049,5.545829 52.320923,5.545868 52.320842,5.545949 52.320856,5.545952 52.320849,5.546122 52.32088,5.546119 52.320887,5.5462 52.320901,5.546289 52.320917,5.546369 52.320931,5.546373 52.320924,5.546543 52.320955,5.54654 52.320962,5.546621 52.320976,5.546568 52.321088,5.546523 52.321184,5.546494 52.321179,5.54649 52.321187,5.546311 52.321564)),((5.545601 52.320794,5.545562 52.320875,5.545502 52.321002,5.545473 52.320996,5.545289 52.321382,5.545177 52.321362,5.544719 52.32128,5.544592 52.321257,5.544776 52.320872,5.544749 52.320867,5.544796 52.320767,5.544847 52.320659,5.544928 52.320674,5.544932 52.320667,5.545102 52.320697,5.545099 52.320704,5.545179 52.320719,5.545268 52.320735,5.545349 52.320749,5.545352 52.320742,5.545523 52.320773,5.54552 52.32078,5.545601 52.320794)),((5.547269 52.318403,5.547241 52.318408,5.547193 52.318318,5.547146 52.318228,5.547173 52.318222,5.547221 52.318312,5.547269 52.318403)),((5.547604 52.319092,5.547632 52.319086,5.547786 52.319056,5.547932 52.319026,5.547967 52.319092,5.547968 52.319094,5.547945 52.319099,5.547904 52.319088,5.547695 52.31913,5.547667 52.319154,5.547657 52.319137,5.547631 52.319142,5.547604 52.319092)),((5.547967 52.319092,5.547932 52.319026,5.548019 52.319009,5.548054 52.319075,5.548013 52.319083,5.547967 52.319092)),((5.547604 52.319092,5.547581 52.319049,5.547534 52.318959,5.547485 52.318867,5.547513 52.318862,5.547562 52.318953,5.547609 52.319044,5.547632 52.319086,5.547604 52.319092)),((5.542459 52.316451,5.542465 52.316449,5.542473 52.316456,5.542473 52.316456,5.542473 52.316456,5.542474 52.316457,5.542474 52.316457,5.542475 52.316458,5.542475 52.316458,5.542476 52.316459,5.542477 52.316459,5.542477 52.31646,5.542478 52.31646,5.542479 52.316461,5.542479 52.316461,5.54248 52.316462,5.542481 52.316462,5.542482 52.316463,5.542482 52.316463,5.542483 52.316464,5.542484 52.316464,5.542484 52.316465,5.542485 52.316465,5.542486 52.316466,5.542487 52.316466,5.542488 52.316467,5.542488 52.316467,5.542489 52.316467,5.54249 52.316468,5.542491 52.316468,5.542492 52.316469,5.542492 52.316469,5.542493 52.316469,5.542494 52.31647,5.542495 52.31647,5.542496 52.31647,5.542497 52.316471,5.542498 52.316471,5.542499 52.316472,5.542499 52.316472,5.5425 52.316472,5.542501 52.316472,5.542502 52.316473,5.542503 52.316473,5.542504 52.316473,5.542505 52.316474,5.542506 52.316474,5.542507 52.316474,5.542508 52.316475,5.542509 52.316475,5.54251 52.316475,5.542511 52.316475,5.542512 52.316476,5.542513 52.316476,5.542514 52.316476,5.542515 52.316476,5.542516 52.316476,5.542517 52.316477,5.542518 52.316477,5.542519 52.316477,5.54252 52.316477,5.542521 52.316477,5.542522 52.316477,5.542523 52.316478,5.542524 52.316478,5.542525 52.316478,5.542526 52.316478,5.542527 52.316478,5.542528 52.316478,5.542529 52.316478,5.54253 52.316478,5.542531 52.316478,5.542532 52.316479,5.542533 52.316479,5.542534 52.316479,5.542535 52.316479,5.542536 52.316479,5.542537 52.316479,5.542538 52.316479,5.542539 52.316479,5.542541 52.316479,5.542542 52.316479,5.542543 52.316479,5.542544 52.316479,5.542545 52.316479,5.542546 52.316479,5.542547 52.316479,5.542548 52.316479,5.542549 52.316479,5.54255 52.316479,5.542551 52.316478,5.542552 52.316478,5.542553 52.316478,5.542554 52.316478,5.542555 52.316478,5.542556 52.316478,5.542557 52.316478,5.542558 52.316478,5.542559 52.316478,5.54256 52.316477,5.542561 52.316477,5.542562 52.316477,5.542563 52.316477,5.542563 52.316477,5.542578 52.316474,5.542561 52.316449,5.542502 52.316391,5.54242 52.31632,5.542352 52.316228,5.542251 52.31604,5.542256 52.316035,5.54225 52.316018,5.542248 52.316011,5.542266 52.31601,5.542288 52.316007,5.542415 52.316245,5.542458 52.316286,5.542577 52.316401,5.542619 52.316441,5.542866 52.316392,5.542843 52.316348,5.542777 52.316223,5.542804 52.316217,5.542805 52.316218,5.542833 52.316212,5.542899 52.316337,5.542922 52.316381,5.543206 52.316325,5.543444 52.316277,5.543681 52.31623,5.543918 52.316183,5.544155 52.316135,5.544392 52.316088,5.54467 52.316033,5.544652 52.315999,5.544642 52.31598,5.544543 52.315794,5.54469 52.31578,5.544796 52.31598,5.544884 52.316145,5.544971 52.31631,5.545058 52.316475,5.545176 52.316698,5.545255 52.316846,5.545294 52.31692,5.545325 52.316914,5.545406 52.317068,5.54551 52.317264,5.54548 52.317271,5.545584 52.317467,5.54567 52.31763,5.545756 52.317792,5.545842 52.317955,5.545946 52.318151,5.545979 52.318207,5.545932 52.318217,5.545983 52.318314,5.545995 52.318312,5.546044 52.318302,5.546072 52.318296,5.546129 52.318404,5.546143 52.318401,5.546214 52.318534,5.546232 52.318569,5.546361 52.318543,5.546487 52.318518,5.546612 52.318493,5.546738 52.318468,5.546863 52.318443,5.54701 52.318414,5.546992 52.318379,5.546907 52.31822,5.546909 52.31822,5.547121 52.318178,5.547129 52.318195,5.547148 52.318192,5.547311 52.318159,5.547328 52.318191,5.547173 52.318222,5.547146 52.318228,5.547193 52.318318,5.547241 52.318408,5.547269 52.318403,5.547424 52.318372,5.547433 52.318388,5.547442 52.318405,5.547287 52.318436,5.547259 52.318442,5.547307 52.318532,5.547355 52.318622,5.547383 52.318617,5.547537 52.318586,5.547546 52.318602,5.547555 52.318619,5.547401 52.31865,5.547373 52.318655,5.547421 52.318745,5.547468 52.318834,5.547495 52.318828,5.547649 52.318798,5.547659 52.318816,5.547667 52.318831,5.547513 52.318862,5.547485 52.318867,5.547534 52.318959,5.547581 52.319049,5.547604 52.319092,5.547631 52.319142,5.547657 52.319137,5.547667 52.319154,5.547695 52.31913,5.547904 52.319088,5.547945 52.319099,5.547968 52.319094,5.547967 52.319092,5.548013 52.319083,5.548054 52.319075,5.54806 52.319085,5.548125 52.319073,5.548174 52.319167,5.548501 52.319783,5.548436 52.319796,5.548416 52.319756,5.548348 52.319629,5.54828 52.3195,5.548212 52.319372,5.548144 52.319244,5.548099 52.319159,5.548077 52.319116,5.547868 52.319158,5.54769 52.319193,5.547662 52.319199,5.547684 52.319241,5.547729 52.319327,5.547797 52.319455,5.547865 52.319583,5.547933 52.319712,5.547942 52.319729,5.548 52.319839,5.548019 52.319875,5.547993 52.319881,5.547968 52.319886,5.547948 52.31985,5.54789 52.31974,5.547881 52.319722,5.547673 52.319764,5.547514 52.319795,5.547523 52.319812,5.54758 52.319923,5.547608 52.319977,5.547558 52.319987,5.547456 52.31979,5.547435 52.319754,5.547131 52.319815,5.547125 52.319814,5.54712 52.31981,5.547115 52.319807,5.547109 52.319806,5.547103 52.319807,5.546954 52.319836,5.546948 52.319838,5.546946 52.319841,5.546944 52.319844,5.546944 52.319851,5.54694 52.319852,5.546939 52.319853,5.546813 52.319878,5.546811 52.319879,5.546762 52.319888,5.546636 52.319913,5.546093 52.320021,5.546047 52.32003,5.546024 52.320035,5.545919 52.320056,5.54587 52.320065,5.545659 52.320107,5.545141 52.32021,5.544775 52.320283,5.54478 52.320294,5.544734 52.320302,5.544588 52.320026,5.544593 52.320024,5.544596 52.320021,5.544597 52.320018,5.544596 52.320014,5.544394 52.319632,5.544371 52.319589,5.544228 52.319319,5.544225 52.319317,5.544215 52.319317,5.544211 52.319314,5.544112 52.319128,5.544104 52.319117,5.544094 52.319108,5.54408 52.319101,5.544065 52.319095,5.544057 52.319093,5.544039 52.31909,5.54402 52.31909,5.544002 52.319093,5.543982 52.319098,5.543975 52.319099,5.543975 52.319099,5.543975 52.319099,5.543974 52.319099,5.543974 52.3191,5.543973 52.3191,5.543973 52.3191,5.543973 52.3191,5.543972 52.3191,5.543972 52.3191,5.543971 52.319101,5.543971 52.319101,5.543971 52.319101,5.54397 52.319101,5.54397 52.319101,5.54397 52.319101,5.543969 52.319101,5.543969 52.319102,5.543968 52.319102,5.543968 52.319102,5.543968 52.319102,5.543967 52.319102,5.543967 52.319103,5.543967 52.319103,5.543966 52.319103,5.543966 52.319103,5.543965 52.319103,5.543965 52.319103,5.543965 52.319104,5.543964 52.319104,5.543964 52.319104,5.543964 52.319104,5.543963 52.319104,5.543963 52.319104,5.543963 52.319105,5.543962 52.319105,5.543962 52.319105,5.543962 52.319105,5.543961 52.319105,5.543961 52.319106,5.543961 52.319106,5.54396 52.319106,5.54396 52.319106,5.54396 52.319106,5.543959 52.319107,5.543959 52.319107,5.543959 52.319107,5.543958 52.319107,5.543958 52.319107,5.543958 52.319108,5.543957 52.319108,5.543957 52.319108,5.543957 52.319108,5.543956 52.319108,5.543956 52.319109,5.543956 52.319109,5.543955 52.319109,5.543955 52.319109,5.543955 52.31911,5.543955 52.31911,5.543954 52.31911,5.543954 52.31911,5.543954 52.31911,5.543953 52.319111,5.543953 52.319111,5.543953 52.319111,5.543953 52.319111,5.543952 52.319112,5.543952 52.319112,5.543952 52.319112,5.543951 52.319112,5.543951 52.319112,5.543951 52.319113,5.543951 52.319113,5.54395 52.319113,5.54395 52.319113,5.54395 52.319114,5.54395 52.319114,5.543949 52.319114,5.543949 52.319114,5.543949 52.319115,5.543948 52.319115,5.543948 52.319115,5.543948 52.319115,5.543948 52.319116,5.543948 52.319116,5.543947 52.319116,5.543947 52.319116,5.543947 52.319117,5.543947 52.319117,5.543946 52.319117,5.543946 52.319117,5.543946 52.319118,5.543946 52.319118,5.543945 52.319118,5.543945 52.319118,5.543945 52.319119,5.543945 52.319119,5.543945 52.319119,5.543944 52.319119,5.543944 52.31912,5.543944 52.31912,5.543848 52.318945,5.543897 52.318936,5.544135 52.318989,5.544185 52.318976,5.544308 52.318952,5.544436 52.318926,5.544564 52.318901,5.544692 52.318875,5.54482 52.31885,5.544948 52.318824,5.545076 52.318799,5.545204 52.318773,5.545332 52.318748,5.545459 52.318722,5.545587 52.318697,5.545715 52.318671,5.545843 52.318646,5.545968 52.318621,5.54595 52.318587,5.54593 52.318551,5.54588 52.318454,5.545894 52.318451,5.545837 52.318343,5.545918 52.318326,5.545932 52.318323,5.54588 52.318224,5.545789 52.318242,5.545769 52.318181,5.545681 52.318015,5.545673 52.317999,5.545658 52.317972,5.545506 52.318002,5.545355 52.318032,5.545204 52.318062,5.545054 52.318092,5.544903 52.318122,5.544753 52.318152,5.544602 52.318182,5.544451 52.318212,5.544301 52.318242,5.54415 52.318272,5.543999 52.318302,5.543847 52.318333,5.543846 52.318332,5.543738 52.318354,5.543735 52.318354,5.54361 52.318466,5.543595 52.318469,5.543569 52.318433,5.543545 52.318437,5.543535 52.318418,5.54346 52.318286,5.543467 52.318285,5.543474 52.318284,5.543474 52.318284,5.543474 52.318284,5.543475 52.318285,5.543475 52.318286,5.543476 52.318287,5.543476 52.318288,5.543477 52.318288,5.543478 52.318289,5.543478 52.31829,5.543479 52.318291,5.54348 52.318291,5.54348 52.318292,5.543481 52.318293,5.543482 52.318294,5.543482 52.318294,5.543483 52.318295,5.543484 52.318296,5.543485 52.318296,5.543486 52.318297,5.543486 52.318298,5.543487 52.318299,5.543488 52.318299,5.543489 52.3183,5.54349 52.318301,5.543491 52.318301,5.543492 52.318302,5.543493 52.318302,5.543494 52.318303,5.543495 52.318304,5.543496 52.318304,5.543497 52.318305,5.543498 52.318305,5.543499 52.318306,5.5435 52.318307,5.543501 52.318307,5.543502 52.318308,5.543503 52.318308,5.543504 52.318309,5.543505 52.318309,5.543507 52.31831,5.543508 52.31831,5.543509 52.318311,5.54351 52.318311,5.543511 52.318312,5.543513 52.318312,5.543514 52.318313,5.543515 52.318313,5.543516 52.318313,5.543517 52.318314,5.543519 52.318314,5.54352 52.318315,5.543521 52.318315,5.543523 52.318315,5.543524 52.318316,5.543525 52.318316,5.543526 52.318316,5.543528 52.318317,5.543529 52.318317,5.54353 52.318317,5.543532 52.318317,5.543533 52.318318,5.543534 52.318318,5.543536 52.318318,5.543537 52.318318,5.543539 52.318319,5.54354 52.318319,5.543541 52.318319,5.543543 52.318319,5.543544 52.318319,5.543545 52.318319,5.543547 52.31832,5.543548 52.31832,5.54355 52.31832,5.543551 52.31832,5.543552 52.31832,5.543554 52.31832,5.543555 52.31832,5.543557 52.31832,5.543558 52.31832,5.543559 52.31832,5.543561 52.31832,5.543562 52.31832,5.543564 52.31832,5.543565 52.31832,5.543567 52.31832,5.543568 52.31832,5.543569 52.31832,5.543571 52.31832,5.543572 52.31832,5.543574 52.318319,5.543575 52.318319,5.543576 52.318319,5.543578 52.318319,5.543579 52.318319,5.54358 52.318319,5.543582 52.318318,5.543583 52.318318,5.543585 52.318318,5.543586 52.318318,5.543587 52.318317,5.543587 52.318317,5.543594 52.318316,5.543601 52.318315,5.543603 52.318314,5.543609 52.318313,5.543625 52.318307,5.543639 52.318298,5.54365 52.318288,5.543658 52.318275,5.543661 52.318265,5.543662 52.31826,5.54366 52.318251,5.543656 52.318243,5.543653 52.31824,5.543648 52.318238,5.543628 52.318232,5.543624 52.31823,5.543613 52.31821,5.543606 52.318211,5.543198 52.317435,5.543205 52.317427,5.543219 52.317411,5.543216 52.3174,5.543108 52.317195,5.543104 52.317187,5.543099 52.317183,5.543072 52.317175,5.543061 52.317174,5.542756 52.316591,5.542758 52.316591,5.542763 52.316584,5.542774 52.316569,5.542774 52.316564,5.542758 52.316534,5.542749 52.316524,5.54274 52.316517,5.542737 52.316515,5.54273 52.316511,5.542726 52.316509,5.542708 52.316503,5.542691 52.3165,5.542674 52.3165,5.542666 52.3165,5.542634 52.316505,5.542631 52.316507,5.542625 52.316508,5.542598 52.316514,5.542598 52.316514,5.542597 52.316514,5.542596 52.316514,5.542595 52.316514,5.542594 52.316515,5.542593 52.316515,5.542592 52.316515,5.542591 52.316515,5.54259 52.316516,5.542589 52.316516,5.542588 52.316516,5.542587 52.316517,5.542586 52.316517,5.542585 52.316517,5.542584 52.316518,5.542583 52.316518,5.542582 52.316518,5.542582 52.316519,5.542581 52.316519,5.54258 52.316519,5.542579 52.31652,5.542578 52.31652,5.542577 52.316521,5.542576 52.316521,5.542576 52.316521,5.542575 52.316522,5.542574 52.316522,5.542573 52.316523,5.542572 52.316523,5.542572 52.316524,5.542571 52.316524,5.54257 52.316525,5.54257 52.316525,5.542569 52.316525,5.542568 52.316526,5.542567 52.316526,5.542567 52.316527,5.542566 52.316527,5.542565 52.316528,5.542565 52.316528,5.542564 52.316529,5.542564 52.31653,5.542563 52.31653,5.542562 52.316531,5.542562 52.316531,5.542561 52.316532,5.542561 52.316532,5.54256 52.316533,5.54256 52.316533,5.542559 52.316534,5.542559 52.316535,5.542558 52.316535,5.542558 52.316536,5.542557 52.316536,5.542557 52.316537,5.542556 52.316537,5.542556 52.316538,5.542556 52.316539,5.542555 52.316539,5.542555 52.31654,5.542555 52.31654,5.542554 52.316541,5.542554 52.316542,5.542554 52.316542,5.542553 52.316543,5.542553 52.316544,5.542553 52.316544,5.542553 52.316545,5.542552 52.316545,5.542552 52.316546,5.542552 52.316547,5.542552 52.316547,5.542552 52.316548,5.542552 52.316549,5.542551 52.316549,5.542551 52.31655,5.542551 52.316551,5.542551 52.316551,5.542551 52.316552,5.542551 52.316553,5.542551 52.316553,5.542551 52.316554,5.542551 52.316554,5.542551 52.316555,5.542551 52.316556,5.542551 52.316556,5.542551 52.316557,5.542551 52.316558,5.542551 52.316558,5.542552 52.316559,5.542552 52.31656,5.542552 52.31656,5.542552 52.316561,5.542552 52.316562,5.542552 52.316562,5.542553 52.316563,5.542553 52.316563,5.542553 52.316564,5.542553 52.316565,5.542554 52.316565,5.542554 52.316565,5.54256 52.316577,5.542553 52.316577,5.542459 52.316451)),((5.547495 52.318828,5.547468 52.318834,5.547421 52.318745,5.547373 52.318655,5.547401 52.31865,5.547448 52.31874,5.547495 52.318828)),((5.547383 52.318617,5.547355 52.318622,5.547307 52.318532,5.547259 52.318442,5.547287 52.318436,5.547335 52.318527,5.547383 52.318617)),((5.547523 52.319812,5.547514 52.319795,5.547673 52.319764,5.547881 52.319722,5.54789 52.31974,5.547682 52.319781,5.547523 52.319812)),((5.547942 52.319729,5.547933 52.319712,5.547865 52.319583,5.547797 52.319455,5.547729 52.319327,5.547684 52.319241,5.547662 52.319199,5.54769 52.319193,5.547712 52.319236,5.547757 52.319321,5.547825 52.319449,5.547892 52.319577,5.547961 52.319707,5.54797 52.319724,5.547942 52.319729)),((5.547173 52.318222,5.547328 52.318191,5.547311 52.318159,5.547311 52.318158,5.54733 52.318145,5.547539 52.318103,5.547596 52.318091,5.547666 52.318224,5.547722 52.318331,5.547779 52.318438,5.547836 52.318544,5.547892 52.318651,5.547949 52.318758,5.548005 52.318865,5.548076 52.318997,5.548019 52.319009,5.547932 52.319026,5.547786 52.319056,5.547632 52.319086,5.547609 52.319044,5.547562 52.318953,5.547513 52.318862,5.547667 52.318831,5.547659 52.318816,5.547649 52.318798,5.547495 52.318828,5.547448 52.31874,5.547401 52.31865,5.547555 52.318619,5.547546 52.318602,5.547537 52.318586,5.547383 52.318617,5.547335 52.318527,5.547287 52.318436,5.547442 52.318405,5.547433 52.318388,5.547424 52.318372,5.547269 52.318403,5.547221 52.318312,5.547173 52.318222)),((5.547523 52.319812,5.547682 52.319781,5.54789 52.31974,5.547948 52.31985,5.547968 52.319886,5.547993 52.319881,5.548019 52.319875,5.548 52.319839,5.547942 52.319729,5.54797 52.319724,5.547961 52.319707,5.547892 52.319577,5.547825 52.319449,5.547757 52.319321,5.547712 52.319236,5.54769 52.319193,5.547868 52.319158,5.548077 52.319116,5.548099 52.319159,5.548144 52.319244,5.548212 52.319372,5.54828 52.3195,5.548348 52.319629,5.548416 52.319756,5.548436 52.319796,5.548484 52.319885,5.548275 52.319926,5.548042 52.319973,5.547808 52.32002,5.547647 52.320052,5.547608 52.319977,5.54758 52.319923,5.547523 52.319812)),((5.543595 52.318469,5.54361 52.318466,5.543735 52.318354,5.543738 52.318354,5.543846 52.318332,5.543847 52.318333,5.543861 52.31836,5.543869 52.318375,5.543958 52.318542,5.54411 52.318511,5.544261 52.318481,5.544412 52.318451,5.544562 52.318421,5.544713 52.318391,5.544864 52.318362,5.545014 52.318332,5.545165 52.318302,5.545315 52.318272,5.545466 52.318242,5.545617 52.318212,5.545769 52.318181,5.545789 52.318242,5.54397 52.318592,5.543969 52.318591,5.543752 52.318633,5.543712 52.318642,5.543693 52.318647,5.54369 52.318648,5.543688 52.318648,5.54368 52.318633,5.543679 52.318631,5.543671 52.318596,5.54367 52.318595,5.543663 52.318596,5.543595 52.318469)),((5.546907 52.31822,5.546868 52.318147,5.546869 52.318147,5.547122 52.318095,5.547177 52.318084,5.547498 52.318017,5.547562 52.318027,5.547596 52.318091,5.547539 52.318103,5.54733 52.318145,5.547311 52.318158,5.547311 52.318159,5.547148 52.318192,5.547129 52.318195,5.547121 52.318178,5.546909 52.31822,5.546907 52.31822)),((5.546724 52.319546,5.546398 52.31893,5.546419 52.318925,5.546416 52.318919,5.54645 52.318912,5.546461 52.318933,5.546566 52.319131,5.546583 52.319128,5.546684 52.31932,5.546668 52.319323,5.546773 52.319521,5.546844 52.319657,5.546888 52.31974,5.54706 52.319705,5.547148 52.319688,5.547319 52.319654,5.547407 52.319636,5.547579 52.319602,5.547535 52.319519,5.547463 52.319383,5.547152 52.318795,5.547141 52.318775,5.547197 52.318764,5.547529 52.319392,5.547653 52.319625,5.547511 52.319654,5.547381 52.31968,5.547252 52.319705,5.547121 52.319731,5.546992 52.319757,5.546875 52.31978,5.546752 52.319547,5.546749 52.319541,5.546724 52.319546)),((5.546306 52.318709,5.54633 52.318704,5.546653 52.318639,5.54674 52.318622,5.547063 52.318558,5.547086 52.318553,5.54718 52.318732,5.547197 52.318764,5.547141 52.318775,5.547152 52.318795,5.547463 52.319383,5.547535 52.319519,5.547579 52.319602,5.547407 52.319636,5.547319 52.319654,5.547148 52.319688,5.54706 52.319705,5.546888 52.31974,5.546844 52.319657,5.546773 52.319521,5.546668 52.319323,5.546684 52.31932,5.546583 52.319128,5.546566 52.319131,5.546461 52.318933,5.54645 52.318912,5.546416 52.318919,5.546399 52.318886,5.546306 52.318709)),((5.534427 52.316093,5.534432 52.316092,5.53562 52.315857,5.536219 52.315738,5.537247 52.315534,5.541639 52.314661,5.542974 52.314395,5.546084 52.313775,5.546114 52.31377,5.546126 52.313793,5.546146 52.313838,5.546503 52.314521,5.546542 52.314519,5.546597 52.314629,5.546521 52.314644,5.546844 52.315257,5.547309 52.31614,5.547681 52.316843,5.548068 52.317581,5.548135 52.317708,5.548157 52.317756,5.54816 52.317759,5.54816 52.317763,5.548156 52.317766,5.548151 52.317768,5.547268 52.31793,5.546898 52.317997,5.546487 52.318064,5.546473 52.318069,5.546464 52.318056,5.546467 52.318047,5.546399 52.317929,5.5464 52.317912,5.5464 52.317907,5.54638 52.317882,5.546317 52.317731,5.546319 52.317721,5.54632 52.317707,5.546319 52.317694,5.546315 52.31768,5.54631 52.317667,5.546301 52.317655,5.546291 52.317642,5.546279 52.317631,5.546265 52.31762,5.546214 52.317533,5.546195 52.317458,5.546157 52.317425,5.546067 52.317249,5.546071 52.317228,5.546071 52.317215,5.546068 52.317203,5.546063 52.317191,5.546056 52.317179,5.546047 52.317168,5.546037 52.317157,5.546024 52.317147,5.54601 52.317138,5.545981 52.317078,5.545928 52.316968,5.54592 52.316924,5.545884 52.316883,5.545866 52.31685,5.545868 52.316808,5.545859 52.316799,5.545835 52.316787,5.545825 52.316766,5.545829 52.316752,5.54583 52.316744,5.545827 52.316728,5.545824 52.31672,5.545819 52.316712,5.545806 52.316698,5.545798 52.316691,5.545778 52.31668,5.54576 52.316635,5.54574 52.316586,5.545726 52.316565,5.545693 52.316513,5.545698 52.316473,5.545662 52.316433,5.54565 52.316429,5.545618 52.316358,5.545588 52.316307,5.545578 52.316254,5.545547 52.316224,5.545516 52.316169,5.545523 52.316134,5.545507 52.3161,5.54549 52.316063,5.545443 52.316022,5.5454 52.315938,5.545288 52.315812,5.545266 52.31578,5.545256 52.315761,5.545269 52.315748,5.545369 52.315714,5.545497 52.315669,5.546468 52.315331,5.546446 52.315296,5.546364 52.315318,5.546211 52.31535,5.54604 52.315397,5.545938 52.3154,5.545775 52.315415,5.54568 52.31548,5.545572 52.315554,5.545428 52.315621,5.545231 52.315667,5.544959 52.315683,5.544794 52.315704,5.544696 52.315724,5.544741 52.315775,5.54469 52.31578,5.544543 52.315794,5.544538 52.31578,5.544534 52.315762,5.544387 52.315731,5.544074 52.315771,5.543813 52.315794,5.543598 52.315828,5.543359 52.315856,5.543262 52.315866,5.543133 52.315879,5.543064 52.315867,5.542959 52.315896,5.542849 52.31591,5.542748 52.31591,5.542708 52.315907,5.542644 52.315903,5.542617 52.315901,5.54259 52.315904,5.542569 52.315908,5.54255 52.315918,5.542546 52.315932,5.542535 52.315935,5.542411 52.315946,5.542335 52.315962,5.542287 52.315979,5.542274 52.315981,5.542258 52.315982,5.542241 52.315985,5.542172 52.315984,5.542097 52.315961,5.54194 52.315947,5.541844 52.315923,5.54165 52.315863,5.541644 52.315873,5.541641 52.315876,5.541614 52.315915,5.541614 52.315915,5.541608 52.315913,5.541601 52.315911,5.541595 52.315908,5.541588 52.315906,5.541582 52.315903,5.541575 52.315901,5.541569 52.315899,5.541562 52.315896,5.541556 52.315894,5.541549 52.315891,5.541542 52.315889,5.541536 52.315887,5.541529 52.315885,5.541523 52.315882,5.541516 52.31588,5.541509 52.315878,5.541503 52.315875,5.541496 52.315873,5.541489 52.315871,5.541483 52.315869,5.541476 52.315867,5.541469 52.315865,5.541462 52.315862,5.541456 52.31586,5.541449 52.315858,5.541442 52.315856,5.541435 52.315854,5.541429 52.315852,5.541422 52.31585,5.541415 52.315848,5.541408 52.315846,5.541401 52.315844,5.541394 52.315842,5.541388 52.31584,5.541381 52.315838,5.541374 52.315836,5.541367 52.315834,5.54136 52.315832,5.541353 52.31583,5.541346 52.315828,5.541339 52.315826,5.541332 52.315824,5.541325 52.315822,5.541318 52.31582,5.541311 52.315819,5.541304 52.315817,5.541297 52.315815,5.54129 52.315813,5.541283 52.315811,5.541276 52.31581,5.541269 52.315808,5.541262 52.315806,5.541255 52.315804,5.541248 52.315803,5.541241 52.315801,5.541234 52.315799,5.541227 52.315798,5.54122 52.315796,5.541213 52.315794,5.541205 52.315793,5.541198 52.315791,5.541191 52.31579,5.541184 52.315788,5.541177 52.315787,5.54117 52.315785,5.541163 52.315783,5.541155 52.315782,5.541148 52.31578,5.541141 52.315779,5.541134 52.315778,5.541126 52.315776,5.541119 52.315775,5.541112 52.315773,5.541105 52.315772,5.541098 52.31577,5.54109 52.315769,5.541083 52.315768,5.541076 52.315766,5.541068 52.315765,5.541061 52.315764,5.541054 52.315762,5.541047 52.315761,5.541039 52.31576,5.541032 52.315759,5.541025 52.315757,5.541017 52.315756,5.54101 52.315755,5.541003 52.315754,5.540995 52.315753,5.540988 52.315751,5.54098 52.31575,5.540973 52.315749,5.540966 52.315748,5.540958 52.315747,5.540951 52.315746,5.540944 52.315745,5.540936 52.315744,5.540929 52.315743,5.540921 52.315742,5.540921 52.315742,5.540919 52.315741,5.540917 52.315741,5.540915 52.315741,5.540913 52.315741,5.540911 52.31574,5.540909 52.31574,5.540907 52.31574,5.540905 52.315739,5.540903 52.315739,5.5409 52.315739,5.540898 52.315739,5.540896 52.315738,5.540894 52.315738,5.540892 52.315738,5.54089 52.315738,5.540888 52.315737,5.540886 52.315737,5.540884 52.315737,5.540882 52.315737,5.540879 52.315736,5.540877 52.315736,5.540875 52.315736,5.540873 52.315736,5.540871 52.315735,5.540869 52.315735,5.540867 52.315735,5.540865 52.315734,5.540863 52.315734,5.540861 52.315734,5.540859 52.315734,5.540856 52.315734,5.540854 52.315733,5.540852 52.315733,5.54085 52.315733,5.540848 52.315733,5.540846 52.315732,5.540844 52.315732,5.540842 52.315732,5.54084 52.315732,5.540837 52.315731,5.540835 52.315731,5.540833 52.315731,5.540831 52.315731,5.540829 52.31573,5.540827 52.31573,5.540825 52.31573,5.540823 52.31573,5.540821 52.315729,5.540819 52.315729,5.540816 52.315729,5.540814 52.315729,5.540812 52.315729,5.54081 52.315728,5.540808 52.315728,5.540806 52.315728,5.540804 52.315728,5.540802 52.315728,5.5408 52.315727,5.540797 52.315727,5.540795 52.315727,5.540793 52.315727,5.540791 52.315726,5.540789 52.315726,5.540787 52.315726,5.540785 52.315726,5.540783 52.315726,5.540781 52.315725,5.540778 52.315725,5.540776 52.315725,5.540774 52.315725,5.540772 52.315725,5.54077 52.315724,5.540768 52.315724,5.540766 52.315724,5.540764 52.315724,5.540761 52.315724,5.540759 52.315724,5.540757 52.315723,5.540755 52.315723,5.540753 52.315723,5.540751 52.315723,5.540749 52.315723,5.540747 52.315722,5.540745 52.315722,5.540742 52.315722,5.54074 52.315722,5.540738 52.315722,5.540736 52.315722,5.540734 52.315721,5.540732 52.315721,5.54073 52.315721,5.540728 52.315721,5.540725 52.315721,5.540723 52.31572,5.540721 52.31572,5.540719 52.31572,5.540717 52.31572,5.540715 52.31572,5.540713 52.31572,5.540713 52.31572,5.540703 52.315719,5.540693 52.315718,5.540683 52.315717,5.540673 52.315717,5.540663 52.315716,5.540653 52.315716,5.540643 52.315715,5.540633 52.315714,5.540623 52.315714,5.540613 52.315713,5.540603 52.315713,5.540593 52.315712,5.540583 52.315712,5.540573 52.315712,5.540564 52.315711,5.540554 52.315711,5.540544 52.31571,5.540534 52.31571,5.540524 52.31571,5.540514 52.31571,5.540504 52.315709,5.540494 52.315709,5.540484 52.315709,5.540474 52.315709,5.540464 52.315709,5.540454 52.315709,5.540444 52.315709,5.540434 52.315709,5.540424 52.315709,5.540414 52.315709,5.540404 52.315709,5.540394 52.315709,5.540384 52.315709,5.540374 52.315709,5.540364 52.315709,5.540354 52.31571,5.540344 52.31571,5.540334 52.31571,5.540324 52.31571,5.540314 52.315711,5.540304 52.315711,5.540294 52.315711,5.540284 52.315712,5.540274 52.315712,5.540264 52.315712,5.540254 52.315713,5.540244 52.315713,5.540234 52.315714,5.540224 52.315715,5.540214 52.315715,5.540204 52.315716,5.540194 52.315716,5.540184 52.315717,5.540174 52.315718,5.540164 52.315718,5.540155 52.315719,5.540145 52.31572,5.540135 52.315721,5.540125 52.315721,5.540115 52.315722,5.540105 52.315723,5.540095 52.315724,5.540085 52.315725,5.540075 52.315726,5.540065 52.315727,5.540056 52.315728,5.540046 52.315729,5.540036 52.31573,5.540026 52.315731,5.540016 52.315732,5.540006 52.315733,5.539997 52.315735,5.539987 52.315736,5.539977 52.315737,5.539967 52.315738,5.539957 52.31574,5.539948 52.315741,5.539938 52.315742,5.539928 52.315744,5.539918 52.315745,5.539909 52.315746,5.539899 52.315748,5.539889 52.315749,5.53988 52.315751,5.53987 52.315752,5.53986 52.315754,5.539851 52.315755,5.539841 52.315757,5.539831 52.315759,5.539822 52.31576,5.539812 52.315762,5.539802 52.315764,5.539793 52.315765,5.539783 52.315767,5.539774 52.315769,5.539764 52.315771,5.539755 52.315772,5.539745 52.315774,5.539736 52.315776,5.539736 52.315776,5.539643 52.315795,5.537417 52.316237,5.537382 52.316244,5.537375 52.316245,5.537331 52.316254,5.537325 52.316255,5.536882 52.316344,5.536656 52.316387,5.536422 52.316424,5.536189 52.316453,5.536002 52.316471,5.535108 52.316552,5.534949 52.316564,5.53481 52.316572,5.534783 52.3165,5.534621 52.316384,5.53459 52.316331,5.53457 52.316304,5.534473 52.316194,5.53448 52.316165,5.534427 52.316093)),((5.544349 52.317183,5.544419 52.317169,5.544755 52.317103,5.544857 52.317082,5.544975 52.317059,5.545103 52.317033,5.545163 52.317022,5.545212 52.317115,5.545153 52.317127,5.544804 52.317197,5.544452 52.317267,5.544399 52.317277,5.544349 52.317183)),((5.544419 52.317169,5.544402 52.317136,5.544365 52.317067,5.544352 52.317041,5.544306 52.31705,5.544292 52.317022,5.544257 52.316956,5.544225 52.316895,5.544186 52.316821,5.544157 52.316767,5.544116 52.316691,5.544085 52.316632,5.54405 52.316567,5.544019 52.316507,5.543985 52.316442,5.543953 52.316383,5.543924 52.316329,5.543908 52.316298,5.544288 52.316222,5.544668 52.316146,5.544685 52.316178,5.544717 52.316238,5.544747 52.316295,5.544782 52.316361,5.544811 52.316416,5.544848 52.316486,5.544863 52.316514,5.544831 52.31652,5.544855 52.316565,5.544901 52.31665,5.544941 52.316727,5.544971 52.316783,5.545046 52.316925,5.54509 52.317008,5.545103 52.317033,5.544975 52.317059,5.544857 52.317082,5.544755 52.317103,5.544419 52.317169)),((5.543688 52.318648,5.54369 52.318648,5.543693 52.318647,5.543712 52.318642,5.543752 52.318633,5.543969 52.318591,5.54397 52.318592,5.545789 52.318242,5.54588 52.318224,5.545932 52.318323,5.545918 52.318326,5.545837 52.318343,5.545822 52.318345,5.545699 52.31837,5.545571 52.318395,5.545443 52.318421,5.545315 52.318446,5.545187 52.318472,5.545059 52.318497,5.544931 52.318522,5.544803 52.318548,5.544675 52.318573,5.544548 52.318599,5.54442 52.318624,5.544292 52.31865,5.544164 52.318675,5.544041 52.318699,5.544043 52.318704,5.544042 52.318704,5.544033 52.318706,5.543751 52.318757,5.543748 52.318758,5.543746 52.318758,5.543692 52.318655,5.543688 52.318648)),((5.543746 52.318758,5.543748 52.318758,5.543751 52.318757,5.544033 52.318706,5.544042 52.318704,5.544043 52.318704,5.544101 52.318813,5.544167 52.318942,5.544185 52.318976,5.544135 52.318989,5.543897 52.318936,5.543848 52.318945,5.54384 52.318931,5.54378 52.318818,5.543788 52.318816,5.543787 52.318815,5.54376 52.318783,5.543759 52.318782,5.543752 52.318768,5.543746 52.318758)),((5.545406 52.317068,5.545325 52.316914,5.545382 52.316902,5.545664 52.316846,5.54574 52.316831,5.545748 52.316846,5.545822 52.316985,5.545462 52.317057,5.545406 52.317068)),((5.545562 52.319347,5.545506 52.319358,5.545386 52.319132,5.54541 52.319127,5.545407 52.319121,5.545439 52.319114,5.54545 52.319134,5.545555 52.319333,5.545562 52.319347)),((5.54469 52.31578,5.544741 52.315775,5.544748 52.315774,5.544793 52.315858,5.54483 52.315928,5.544883 52.316028,5.544921 52.3161,5.544955 52.316165,5.544993 52.316235,5.544996 52.31624,5.545051 52.316345,5.545096 52.31643,5.545114 52.316464,5.545146 52.316458,5.545209 52.316579,5.545236 52.316631,5.5453 52.31675,5.545382 52.316902,5.545325 52.316914,5.545294 52.31692,5.545255 52.316846,5.545176 52.316698,5.545058 52.316475,5.544971 52.31631,5.544884 52.316145,5.544796 52.31598,5.54469 52.31578)),((5.545946 52.318151,5.545842 52.317955,5.545756 52.317792,5.54567 52.31763,5.545584 52.317467,5.54548 52.317271,5.54551 52.317264,5.545406 52.317068,5.545462 52.317057,5.545549 52.317219,5.545567 52.317253,5.545564 52.317254,5.545613 52.317346,5.545644 52.317404,5.545669 52.31745,5.545656 52.317453,5.54567 52.317479,5.545705 52.317545,5.545743 52.317615,5.545733 52.317617,5.545747 52.317643,5.545804 52.31775,5.54582 52.31778,5.545813 52.317781,5.545827 52.317807,5.545863 52.317876,5.545898 52.317944,5.545967 52.31807,5.54599 52.318113,5.546004 52.31814,5.545946 52.318151)),((5.543869 52.318375,5.543861 52.31836,5.543847 52.318333,5.543999 52.318302,5.54415 52.318272,5.544301 52.318242,5.544451 52.318212,5.544602 52.318182,5.544753 52.318152,5.544903 52.318122,5.545054 52.318092,5.545204 52.318062,5.545355 52.318032,5.545506 52.318002,5.545658 52.317972,5.545673 52.317999,5.545681 52.318015,5.545606 52.31803,5.545451 52.31806,5.545304 52.31809,5.54515 52.31812,5.545003 52.31815,5.544848 52.31818,5.544702 52.31821,5.544547 52.31824,5.5444 52.31827,5.544246 52.3183,5.544099 52.318329,5.543944 52.31836,5.543869 52.318375)),((5.546992 52.318379,5.54701 52.318414,5.546863 52.318443,5.546738 52.318468,5.546612 52.318493,5.546487 52.318518,5.546361 52.318543,5.546232 52.318569,5.546214 52.318534,5.546261 52.318525,5.546425 52.318492,5.546512 52.318475,5.546675 52.318442,5.546763 52.318425,5.546926 52.318392,5.546992 52.318379)),((5.544185 52.318976,5.544167 52.318942,5.544209 52.318934,5.544372 52.318901,5.544465 52.318883,5.544628 52.31885,5.544721 52.318832,5.544884 52.318799,5.544977 52.318781,5.54514 52.318748,5.545232 52.31873,5.545396 52.318697,5.545488 52.318679,5.545652 52.318646,5.545745 52.318628,5.545908 52.318595,5.54595 52.318587,5.545968 52.318621,5.545843 52.318646,5.545715 52.318671,5.545587 52.318697,5.545459 52.318722,5.545332 52.318748,5.545204 52.318773,5.545076 52.318799,5.544948 52.318824,5.54482 52.31885,5.544692 52.318875,5.544564 52.318901,5.544436 52.318926,5.544308 52.318952,5.544185 52.318976)),((5.545382 52.316902,5.5453 52.31675,5.545236 52.316631,5.545209 52.316579,5.545146 52.316458,5.545114 52.316464,5.545096 52.31643,5.545051 52.316345,5.544996 52.31624,5.544993 52.316235,5.544955 52.316165,5.544921 52.3161,5.544883 52.316028,5.54483 52.315928,5.544793 52.315858,5.544748 52.315774,5.54516 52.315736,5.545242 52.315892,5.54533 52.316057,5.545417 52.316222,5.545504 52.316387,5.545622 52.316609,5.54574 52.316831,5.545664 52.316846,5.545382 52.316902)),((5.54599 52.318113,5.545967 52.31807,5.545898 52.317944,5.545863 52.317876,5.545827 52.317807,5.545813 52.317781,5.54582 52.31778,5.545804 52.31775,5.545747 52.317643,5.545733 52.317617,5.545743 52.317615,5.545705 52.317545,5.54567 52.317479,5.545656 52.317453,5.545669 52.31745,5.545644 52.317404,5.545613 52.317346,5.545564 52.317254,5.545567 52.317253,5.545549 52.317219,5.545462 52.317057,5.545822 52.316985,5.545926 52.317181,5.54603 52.317378,5.546116 52.31754,5.546202 52.317703,5.546288 52.317865,5.546393 52.318062,5.546381 52.318064,5.546004 52.31814,5.54599 52.318113)),((5.545769 52.318181,5.545617 52.318212,5.545466 52.318242,5.545315 52.318272,5.545165 52.318302,5.545014 52.318332,5.544864 52.318362,5.544713 52.318391,5.544562 52.318421,5.544412 52.318451,5.544261 52.318481,5.54411 52.318511,5.543958 52.318542,5.543869 52.318375,5.543944 52.31836,5.544099 52.318329,5.544246 52.3183,5.5444 52.31827,5.544547 52.31824,5.544702 52.31821,5.544848 52.31818,5.545003 52.31815,5.54515 52.31812,5.545304 52.31809,5.545451 52.31806,5.545606 52.31803,5.545681 52.318015,5.545769 52.318181)),((5.544043 52.318704,5.544041 52.318699,5.544164 52.318675,5.544292 52.31865,5.54442 52.318624,5.544548 52.318599,5.544675 52.318573,5.544803 52.318548,5.544931 52.318522,5.545059 52.318497,5.545187 52.318472,5.545315 52.318446,5.545443 52.318421,5.545571 52.318395,5.545699 52.31837,5.545822 52.318345,5.545837 52.318343,5.545894 52.318451,5.54588 52.318454,5.54593 52.318551,5.54595 52.318587,5.545908 52.318595,5.545745 52.318628,5.545652 52.318646,5.545488 52.318679,5.545396 52.318697,5.545232 52.31873,5.54514 52.318748,5.544977 52.318781,5.544884 52.318799,5.544721 52.318832,5.544628 52.31885,5.544465 52.318883,5.544372 52.318901,5.544209 52.318934,5.544167 52.318942,5.544101 52.318813,5.544043 52.318704)),((5.546214 52.318534,5.546143 52.318401,5.546129 52.318404,5.546072 52.318296,5.546086 52.318293,5.5461 52.31829,5.546215 52.318267,5.54634 52.318242,5.546466 52.318217,5.546591 52.318192,5.546716 52.318167,5.546863 52.318138,5.546868 52.318147,5.546907 52.31822,5.546992 52.318379,5.546926 52.318392,5.546763 52.318425,5.546675 52.318442,5.546512 52.318475,5.546425 52.318492,5.546261 52.318525,5.546214 52.318534)),((5.545979 52.318207,5.545946 52.318151,5.546004 52.31814,5.546381 52.318064,5.546394 52.318095,5.546399 52.318106,5.546334 52.318121,5.546254 52.318145,5.545979 52.318207)),((5.544349 52.317183,5.544281 52.317055,5.544281 52.317054,5.54425 52.31706,5.544183 52.316933,5.544137 52.316848,5.544115 52.316806,5.544047 52.316678,5.543981 52.316553,5.543915 52.316429,5.543843 52.316292,5.543899 52.316281,5.544279 52.316205,5.544659 52.316129,5.544716 52.316118,5.544789 52.316255,5.544854 52.316379,5.544919 52.316503,5.54501 52.316674,5.545102 52.316847,5.545075 52.316852,5.545163 52.317022,5.545103 52.317033,5.54509 52.317008,5.545046 52.316925,5.544971 52.316783,5.544941 52.316727,5.544901 52.31665,5.544855 52.316565,5.544831 52.31652,5.544863 52.316514,5.544848 52.316486,5.544811 52.316416,5.544782 52.316361,5.544747 52.316295,5.544717 52.316238,5.544685 52.316178,5.544668 52.316146,5.544288 52.316222,5.543908 52.316298,5.543924 52.316329,5.543953 52.316383,5.543985 52.316442,5.544019 52.316507,5.54405 52.316567,5.544085 52.316632,5.544116 52.316691,5.544157 52.316767,5.544186 52.316821,5.544225 52.316895,5.544257 52.316956,5.544292 52.317022,5.544306 52.31705,5.544352 52.317041,5.544365 52.317067,5.544402 52.317136,5.544419 52.317169,5.544349 52.317183)),((5.545212 52.317115,5.545315 52.317308,5.545316 52.317309,5.545343 52.317303,5.545444 52.317495,5.54551 52.317619,5.545574 52.317742,5.545648 52.31788,5.545593 52.317891,5.545212 52.317967,5.544832 52.318043,5.544777 52.318054,5.544703 52.317916,5.544637 52.317792,5.544571 52.317668,5.544503 52.31754,5.544435 52.317412,5.544368 52.317284,5.544399 52.317277,5.544452 52.317267,5.54452 52.317395,5.544506 52.317398,5.544511 52.317407,5.544574 52.317526,5.54456 52.317529,5.544693 52.317781,5.544715 52.317776,5.544781 52.317901,5.54476 52.317905,5.544778 52.317939,5.544814 52.318008,5.544819 52.318016,5.54558 52.317866,5.545574 52.317856,5.545543 52.317797,5.545502 52.31772,5.545467 52.317655,5.545439 52.317602,5.545402 52.317532,5.545388 52.317506,5.545358 52.317512,5.545344 52.317486,5.545269 52.317346,5.54522 52.317253,5.545176 52.31717,5.545153 52.317127,5.545212 52.317115)),((5.546306 52.318709,5.546288 52.318676,5.546395 52.318654,5.546474 52.318639,5.546554 52.318623,5.546679 52.318598,5.546804 52.318573,5.546884 52.318557,5.546963 52.318541,5.547068 52.31852,5.547086 52.318553,5.547063 52.318558,5.54674 52.318622,5.546653 52.318639,5.54633 52.318704,5.546306 52.318709)),((5.545296 52.318911,5.545278 52.318877,5.545374 52.318858,5.545454 52.318842,5.545534 52.318826,5.545657 52.318801,5.545779 52.318777,5.545859 52.318761,5.545939 52.318745,5.546034 52.318726,5.546052 52.31876,5.546039 52.318763,5.545716 52.318827,5.545634 52.318844,5.545311 52.318908,5.545296 52.318911)),((5.54426 52.319117,5.544242 52.319083,5.544349 52.319061,5.544428 52.319045,5.544509 52.319029,5.544631 52.319005,5.544753 52.318981,5.544833 52.318965,5.544913 52.318949,5.545019 52.318928,5.545038 52.318962,5.545013 52.318967,5.54469 52.319031,5.544608 52.319048,5.54426 52.319117)),((5.544372 52.319326,5.544428 52.319315,5.544439 52.319336,5.54475 52.319924,5.544821 52.320059,5.544865 52.320142,5.545037 52.320108,5.545125 52.32009,5.545297 52.320056,5.545384 52.320039,5.545556 52.320005,5.545501 52.3199,5.54544 52.319786,5.545335 52.319588,5.545319 52.319591,5.545217 52.3194,5.545234 52.319397,5.545129 52.319198,5.545118 52.319178,5.545149 52.319172,5.545152 52.319178,5.545177 52.319173,5.545504 52.319789,5.54548 52.319794,5.545483 52.3198,5.545606 52.320033,5.545488 52.320056,5.545359 52.320082,5.545229 52.320108,5.5451 52.320133,5.544969 52.320159,5.544828 52.320187,5.544704 52.319955,5.544372 52.319326)),((5.545713 52.319748,5.545593 52.319522,5.545649 52.319511,5.545656 52.319524,5.545761 52.319722,5.545833 52.319858,5.545877 52.319941,5.546049 52.319907,5.546136 52.319889,5.546308 52.319855,5.546396 52.319838,5.546567 52.319804,5.546523 52.319721,5.546481 52.319639,5.546466 52.319611,5.546451 52.319585,5.546346 52.319387,5.546339 52.319373,5.546395 52.319362,5.546515 52.319587,5.546491 52.319592,5.546495 52.319598,5.546618 52.319831,5.5465 52.319855,5.54637 52.319881,5.54624 52.319906,5.546111 52.319932,5.545981 52.319958,5.545864 52.319981,5.54574 52.31975,5.545737 52.319743,5.545713 52.319748)),((5.546252 52.319208,5.546245 52.319195,5.54614 52.318997,5.546129 52.318977,5.546163 52.31897,5.546166 52.318976,5.546189 52.318972,5.546308 52.319197,5.546252 52.319208)),((5.544819 52.318016,5.544814 52.318008,5.544778 52.317939,5.54476 52.317905,5.544781 52.317901,5.544715 52.317776,5.544693 52.317781,5.54456 52.317529,5.544574 52.317526,5.544511 52.317407,5.544506 52.317398,5.54452 52.317395,5.544452 52.317267,5.544804 52.317197,5.545153 52.317127,5.545176 52.31717,5.54522 52.317253,5.545269 52.317346,5.545344 52.317486,5.545358 52.317512,5.545388 52.317506,5.545402 52.317532,5.545439 52.317602,5.545467 52.317655,5.545502 52.31772,5.545543 52.317797,5.545574 52.317856,5.54558 52.317866,5.544819 52.318016)),((5.545649 52.319511,5.546339 52.319373,5.546346 52.319387,5.546451 52.319585,5.546466 52.319611,5.546481 52.319639,5.546523 52.319721,5.546567 52.319804,5.546396 52.319838,5.546308 52.319855,5.546136 52.319889,5.546049 52.319907,5.545877 52.319941,5.545833 52.319858,5.545761 52.319722,5.545656 52.319524,5.545649 52.319511)),((5.54426 52.319117,5.544608 52.319048,5.54469 52.319031,5.545013 52.318967,5.545038 52.318962,5.545131 52.319138,5.545149 52.319172,5.545118 52.319178,5.545129 52.319198,5.545234 52.319397,5.545217 52.3194,5.545319 52.319591,5.545335 52.319588,5.54544 52.319786,5.545501 52.3199,5.545556 52.320005,5.545384 52.320039,5.545297 52.320056,5.545125 52.32009,5.545037 52.320108,5.544865 52.320142,5.544821 52.320059,5.54475 52.319924,5.544439 52.319336,5.544428 52.319315,5.544372 52.319326,5.544354 52.319293,5.54426 52.319117)),((5.545296 52.318911,5.545311 52.318908,5.545634 52.318844,5.545716 52.318827,5.546039 52.318763,5.546052 52.31876,5.546146 52.318937,5.546163 52.31897,5.546129 52.318977,5.54614 52.318997,5.546245 52.319195,5.546252 52.319208,5.545562 52.319347,5.545555 52.319333,5.54545 52.319134,5.545439 52.319114,5.545407 52.319121,5.545389 52.319087,5.545296 52.318911)),((5.545504 52.319789,5.545177 52.319173,5.545248 52.31916,5.545317 52.319147,5.545386 52.319132,5.545506 52.319358,5.545562 52.319347,5.546252 52.319208,5.546308 52.319197,5.546189 52.318972,5.546203 52.318969,5.546272 52.318955,5.546292 52.318951,5.546315 52.318946,5.546383 52.318933,5.546398 52.31893,5.546724 52.319546,5.54671 52.319549,5.546642 52.319562,5.546619 52.319567,5.546599 52.319571,5.54653 52.319585,5.546515 52.319587,5.546395 52.319362,5.546339 52.319373,5.545649 52.319511,5.545593 52.319522,5.545713 52.319748,5.545643 52.319761,5.545574 52.319775,5.545504 52.319789)),((5.540945 52.318346,5.540906 52.318242,5.54001 52.316532,5.54001 52.316528,5.540011 52.316523,5.540014 52.316519,5.540018 52.316515,5.540024 52.316511,5.540034 52.316508,5.540041 52.316507,5.540614 52.316356,5.541557 52.316106,5.541613 52.316092,5.541631 52.316101,5.541694 52.316134,5.54176 52.316174,5.541828 52.316218,5.541897 52.316265,5.541957 52.316308,5.542015 52.316351,5.542066 52.316391,5.542113 52.316432,5.542149 52.316467,5.542192 52.316516,5.542217 52.316546,5.542252 52.316589,5.54227 52.316624,5.543265 52.31852,5.543261 52.318531,5.543261 52.318538,5.543261 52.318545,5.543266 52.318559,5.543333 52.31868,5.543334 52.318682,5.543332 52.318684,5.543341 52.3187,5.543348 52.318714,5.543333 52.318718,5.543098 52.318761,5.541819 52.319015,5.541763 52.319026,5.541707 52.319037,5.541351 52.319108,5.541271 52.318958,5.541253 52.318924,5.540945 52.318346)),((5.540458 52.321156,5.54026 52.320781,5.539814 52.319939,5.53937 52.319101,5.539214 52.318809,5.539136 52.318795,5.539076 52.318794,5.537682 52.318544,5.536393 52.318313,5.536369 52.318309,5.534356 52.317949,5.534336 52.317945,5.534314 52.317916,5.534314 52.317915,5.534315 52.317893,5.534319 52.317884,5.534322 52.317878,5.534344 52.317858,5.5344 52.317843,5.534641 52.317886,5.536418 52.318205,5.536442 52.318209,5.537527 52.318403,5.539011 52.318669,5.539011 52.318669,5.539068 52.318669,5.539069 52.318669,5.539199 52.318694,5.540925 52.31835,5.54093 52.318349,5.540945 52.318346,5.541253 52.318924,5.541271 52.318958,5.541351 52.319108,5.541707 52.319037,5.541763 52.319026,5.541819 52.319015,5.543098 52.318761,5.543333 52.318718,5.543348 52.318714,5.543352 52.318721,5.543408 52.318826,5.542469 52.319014,5.541248 52.319256,5.541214 52.31934,5.541154 52.319456,5.541107 52.319533,5.541077 52.31954,5.54063 52.319428,5.540243 52.319359,5.54018 52.319498,5.540631 52.319579,5.540976 52.319639,5.541041 52.319653,5.54102 52.319754,5.54092 52.319974,5.540815 52.320204,5.540578 52.320708,5.540564 52.320718,5.540546 52.320721,5.540601 52.320829,5.54074 52.321101,5.540458 52.321156)),((5.54074 52.321101,5.540601 52.320829,5.540546 52.320721,5.540564 52.320718,5.540578 52.320708,5.540815 52.320204,5.54092 52.319974,5.54102 52.319754,5.541041 52.319653,5.540976 52.319639,5.540631 52.319579,5.54018 52.319498,5.540243 52.319359,5.54063 52.319428,5.541077 52.31954,5.541107 52.319533,5.541154 52.319456,5.541214 52.31934,5.541248 52.319256,5.542469 52.319014,5.543408 52.318826,5.543428 52.318862,5.543431 52.318863,5.543555 52.319097,5.543526 52.319103,5.54214 52.319381,5.541195 52.31957,5.541131 52.319582,5.541088 52.319571,5.54109 52.319567,5.540614 52.319449,5.540616 52.319444,5.540263 52.319382,5.540214 52.319486,5.541056 52.319636,5.541058 52.319632,5.541192 52.319656,5.541195 52.319649,5.541269 52.319662,5.541279 52.319682,5.541732 52.320539,5.541795 52.320526,5.541972 52.32049,5.541975 52.320496,5.542028 52.320486,5.542047 52.320522,5.542361 52.320458,5.542371 52.320478,5.542474 52.320458,5.542523 52.320548,5.542658 52.320521,5.542702 52.320605,5.542648 52.320616,5.542593 52.320625,5.542354 52.320708,5.542027 52.320821,5.541859 52.320876,5.541807 52.320886,5.541614 52.320925,5.541209 52.321004,5.541025 52.321041,5.540941 52.321062,5.540929 52.321064,5.540823 52.321085,5.54074 52.321101)),((5.531933 52.32246,5.531956 52.322414,5.531785 52.322383,5.531438 52.322323,5.531327 52.322304,5.531311 52.322302,5.53114 52.322287,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531181 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322201,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531182 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531183 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531184 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.531185 52.322202,5.53136 52.32225,5.531405 52.322258,5.531405 52.322258,5.531405 52.322258,5.531406 52.322258,5.531406 52.322258,5.531407 52.322258,5.531407 52.322258,5.531408 52.322258,5.531409 52.322258,5.531409 52.322258,5.53141 52.322258,5.53141 52.322258,5.531411 52.322258,5.531412 52.322258,5.531412 52.322258,5.531413 52.322258,5.531413 52.322258,5.531414 52.322258,5.531415 52.322258,5.531415 52.322258,5.531416 52.322258,5.531416 52.322258,5.531417 52.322258,5.531417 52.322258,5.531418 52.322257,5.531419 52.322257,5.531419 52.322257,5.53142 52.322257,5.53142 52.322257,5.531421 52.322257,5.531421 52.322257,5.531422 52.322257,5.531423 52.322257,5.531423 52.322257,5.531424 52.322257,5.531424 52.322256,5.531425 52.322256,5.531425 52.322256,5.531426 52.322256,5.531426 52.322256,5.531427 52.322256,5.531428 52.322256,5.531428 52.322256,5.531429 52.322255,5.531429 52.322255,5.53143 52.322255,5.53143 52.322255,5.531431 52.322255,5.531431 52.322255,5.531432 52.322254,5.531432 52.322254,5.531433 52.322254,5.531433 52.322254,5.531434 52.322254,5.531434 52.322253,5.531435 52.322253,5.531435 52.322253,5.531436 52.322253,5.531436 52.322253,5.531437 52.322252,5.531437 52.322252,5.531438 52.322252,5.531438 52.322252,5.531438 52.322252,5.531439 52.322251,5.531439 52.322251,5.53144 52.322251,5.53144 52.322251,5.531441 52.32225,5.531441 52.32225,5.531441 52.32225,5.531442 52.32225,5.531442 52.322249,5.531443 52.322249,5.531443 52.322249,5.531443 52.322248,5.531444 52.322248,5.531444 52.322248,5.531445 52.322248,5.531445 52.322247,5.531445 52.322247,5.531446 52.322247,5.531446 52.322246,5.531446 52.322246,5.531447 52.322246,5.531447 52.322246,5.531447 52.322245,5.531448 52.322245,5.531448 52.322245,5.531448 52.322244,5.531448 52.322244,5.531449 52.322244,5.531449 52.322243,5.531449 52.322243,5.531449 52.322243,5.53145 52.322242,5.53145 52.322242,5.53145 52.322242,5.53145 52.322241,5.531451 52.322241,5.531451 52.322241,5.531451 52.322241,5.531464 52.322214,5.531474 52.322194,5.531549 52.322038,5.531768 52.321581,5.531846 52.321423,5.531883 52.321357,5.531963 52.321238,5.532019 52.321172,5.532055 52.321129,5.53211 52.321063,5.532154 52.321021,5.532327 52.320873,5.532431 52.320796,5.532515 52.32074,5.532722 52.320605,5.53274 52.320593,5.532754 52.320584,5.532772 52.320573,5.532924 52.320474,5.532975 52.320441,5.533392 52.32017,5.533599 52.320016,5.533627 52.319992,5.533687 52.319936,5.533703 52.319922,5.533716 52.31991,5.533739 52.319887,5.533787 52.319836,5.533824 52.319794,5.533849 52.319761,5.53384 52.319758,5.533852 52.319741,5.533852 52.319741,5.533853 52.31974,5.533853 52.31974,5.533853 52.319739,5.533853 52.319739,5.533853 52.319738,5.533853 52.319737,5.533853 52.319737,5.533853 52.319736,5.533853 52.319736,5.533852 52.319735,5.533852 52.319735,5.533852 52.319734,5.533852 52.319734,5.533852 52.319733,5.533852 52.319732,5.533852 52.319732,5.533852 52.319731,5.533852 52.319731,5.533852 52.31973,5.533851 52.31973,5.533851 52.319729,5.533851 52.319729,5.533851 52.319728,5.533851 52.319727,5.533851 52.319727,5.53385 52.319726,5.53385 52.319726,5.53385 52.319725,5.53385 52.319725,5.533849 52.319724,5.533849 52.319724,5.533849 52.319723,5.533849 52.319723,5.533848 52.319722,5.533848 52.319722,5.533848 52.319721,5.533848 52.31972,5.533847 52.31972,5.533847 52.319719,5.533847 52.319719,5.533846 52.319718,5.533846 52.319718,5.533846 52.319717,5.533845 52.319717,5.533845 52.319716,5.533844 52.319716,5.533844 52.319715,5.533844 52.319715,5.533843 52.319714,5.533843 52.319714,5.533842 52.319713,5.533842 52.319713,5.533841 52.319712,5.533841 52.319712,5.533841 52.319711,5.53384 52.319711,5.53384 52.31971,5.533839 52.31971,5.533839 52.319709,5.533838 52.319709,5.533838 52.319709,5.533837 52.319708,5.533837 52.319708,5.533836 52.319707,5.533835 52.319707,5.533835 52.319706,5.533834 52.319706,5.533834 52.319705,5.533833 52.319705,5.533833 52.319705,5.533832 52.319704,5.533831 52.319704,5.533831 52.319703,5.53383 52.319703,5.53383 52.319702,5.533829 52.319702,5.533828 52.319702,5.533828 52.319701,5.533827 52.319701,5.533826 52.3197,5.533826 52.3197,5.533825 52.3197,5.533824 52.319699,5.533824 52.319699,5.533823 52.319699,5.533822 52.319698,5.533822 52.319698,5.533821 52.319698,5.53382 52.319697,5.53382 52.319697,5.533819 52.319696,5.533818 52.319696,5.533817 52.319696,5.533817 52.319695,5.533816 52.319695,5.533815 52.319695,5.533814 52.319695,5.533814 52.319694,5.533813 52.319694,5.533813 52.319694,5.533681 52.319652,5.533681 52.319652,5.533681 52.319652,5.53368 52.319651,5.53368 52.319651,5.533679 52.319651,5.533678 52.319651,5.533678 52.319651,5.533677 52.319651,5.533677 52.31965,5.533676 52.31965,5.533675 52.31965,5.533675 52.31965,5.533674 52.31965,5.533674 52.31965,5.533673 52.31965,5.533672 52.31965,5.533672 52.319649,5.533671 52.319649,5.533671 52.319649,5.53367 52.319649,5.533669 52.319649,5.533669 52.319649,5.533668 52.319649,5.533668 52.319648,5.533667 52.319648,5.533666 52.319648,5.533666 52.319648,5.533665 52.319648,5.533665 52.319648,5.533664 52.319648,5.533663 52.319648,5.533663 52.319647,5.533662 52.319647,5.533662 52.319647,5.533661 52.319647,5.53366 52.319647,5.53366 52.319647,5.533659 52.319647,5.533658 52.319647,5.533658 52.319647,5.533657 52.319646,5.533657 52.319646,5.533656 52.319646,5.533655 52.319646,5.533655 52.319646,5.533654 52.319646,5.533654 52.319646,5.533653 52.319646,5.533652 52.319646,5.533652 52.319645,5.533651 52.319645,5.53365 52.319645,5.53365 52.319645,5.533649 52.319645,5.533649 52.319645,5.533648 52.319645,5.533647 52.319645,5.533647 52.319645,5.533646 52.319645,5.533645 52.319645,5.533645 52.319644,5.533644 52.319644,5.533644 52.319644,5.533643 52.319644,5.533642 52.319644,5.533642 52.319644,5.533641 52.319644,5.53364 52.319644,5.53364 52.319644,5.533639 52.319644,5.533639 52.319644,5.533638 52.319644,5.533637 52.319644,5.533637 52.319643,5.533636 52.319643,5.533635 52.319643,5.533635 52.319643,5.533634 52.319643,5.533633 52.319643,5.533633 52.319643,5.533632 52.319643,5.533632 52.319643,5.533631 52.319643,5.53363 52.319643,5.53363 52.319643,5.533629 52.319643,5.533628 52.319643,5.533628 52.319643,5.533627 52.319643,5.533626 52.319643,5.533626 52.319643,5.533625 52.319642,5.533625 52.319642,5.533624 52.319642,5.533623 52.319642,5.533623 52.319642,5.533622 52.319642,5.533621 52.319642,5.533621 52.319642,5.53362 52.319642,5.53362 52.319642,5.533666 52.319578,5.533666 52.319578,5.533667 52.319579,5.533667 52.319579,5.533668 52.319579,5.533668 52.31958,5.533669 52.31958,5.533669 52.31958,5.53367 52.319581,5.53367 52.319581,5.533671 52.319581,5.533672 52.319582,5.533672 52.319582,5.533673 52.319582,5.533673 52.319583,5.533674 52.319583,5.533674 52.319583,5.533675 52.319584,5.533675 52.319584,5.533676 52.319584,5.533677 52.319585,5.533677 52.319585,5.533678 52.319585,5.533678 52.319586,5.533679 52.319586,5.533679 52.319586,5.53368 52.319587,5.53368 52.319587,5.533681 52.319587,5.533682 52.319588,5.533682 52.319588,5.533683 52.319588,5.533683 52.319588,5.533684 52.319589,5.533685 52.319589,5.533685 52.319589,5.533686 52.31959,5.533686 52.31959,5.533687 52.31959,5.533687 52.319591,5.533688 52.319591,5.533689 52.319591,5.533689 52.319592,5.53369 52.319592,5.53369 52.319592,5.533691 52.319592,5.533692 52.319593,5.533692 52.319593,5.533693 52.319593,5.533693 52.319594,5.533694 52.319594,5.533695 52.319594,5.533695 52.319594,5.533696 52.319595,5.533697 52.319595,5.533697 52.319595,5.533698 52.319596,5.533698 52.319596,5.533699 52.319596,5.5337 52.319596,5.5337 52.319597,5.533701 52.319597,5.533701 52.319597,5.533702 52.319598,5.533703 52.319598,5.533703 52.319598,5.533704 52.319598,5.533705 52.319599,5.533705 52.319599,5.533706 52.319599,5.533707 52.319599,5.533707 52.3196,5.533708 52.3196,5.533708 52.3196,5.533709 52.3196,5.53371 52.319601,5.53371 52.319601,5.533711 52.319601,5.533712 52.319601,5.533712 52.319602,5.533713 52.319602,5.533714 52.319602,5.533714 52.319602,5.533715 52.319603,5.533716 52.319603,5.533716 52.319603,5.533717 52.319603,5.533718 52.319604,5.533718 52.319604,5.533719 52.319604,5.53372 52.319604,5.53372 52.319605,5.533721 52.319605,5.533722 52.319605,5.533722 52.319605,5.533723 52.319606,5.533724 52.319606,5.533724 52.319606,5.533725 52.319606,5.533726 52.319606,5.533726 52.319607,5.533726 52.319607,5.533843 52.319644,5.533843 52.319644,5.533844 52.319644,5.533845 52.319645,5.533846 52.319645,5.533847 52.319645,5.533847 52.319645,5.533848 52.319646,5.533849 52.319646,5.53385 52.319646,5.533851 52.319646,5.533852 52.319646,5.533852 52.319647,5.533853 52.319647,5.533854 52.319647,5.533855 52.319647,5.533856 52.319647,5.533857 52.319647,5.533857 52.319648,5.533858 52.319648,5.533859 52.319648,5.53386 52.319648,5.533861 52.319648,5.533862 52.319648,5.533863 52.319648,5.533864 52.319648,5.533864 52.319649,5.533865 52.319649,5.533866 52.319649,5.533867 52.319649,5.533868 52.319649,5.533869 52.319649,5.53387 52.319649,5.533871 52.319649,5.533871 52.319649,5.533872 52.319649,5.533873 52.319649,5.533874 52.319649,5.533875 52.319649,5.533876 52.319649,5.533877 52.319649,5.533878 52.319649,5.533879 52.319649,5.533879 52.319649,5.53388 52.319649,5.533881 52.319649,5.533882 52.319649,5.533883 52.319649,5.533884 52.319649,5.533885 52.319649,5.533886 52.319649,5.533886 52.319649,5.533887 52.319649,5.533888 52.319649,5.533889 52.319649,5.53389 52.319649,5.533891 52.319649,5.533892 52.319649,5.533893 52.319649,5.533894 52.319649,5.533894 52.319649,5.533895 52.319648,5.533896 52.319648,5.533897 52.319648,5.533898 52.319648,5.533899 52.319648,5.5339 52.319648,5.5339 52.319648,5.533901 52.319648,5.533902 52.319647,5.533903 52.319647,5.533904 52.319647,5.533905 52.319647,5.533906 52.319647,5.533906 52.319647,5.533907 52.319646,5.533908 52.319646,5.533909 52.319646,5.53391 52.319646,5.533911 52.319646,5.533911 52.319645,5.533912 52.319645,5.533913 52.319645,5.533914 52.319645,5.533915 52.319644,5.533915 52.319644,5.533916 52.319644,5.533917 52.319644,5.533918 52.319643,5.533919 52.319643,5.533919 52.319643,5.53392 52.319643,5.533921 52.319642,5.533922 52.319642,5.533922 52.319642,5.533923 52.319642,5.533924 52.319641,5.533925 52.319641,5.533925 52.319641,5.533926 52.31964,5.533927 52.31964,5.533927 52.31964,5.533943 52.319618,5.533951 52.319621,5.533971 52.319592,5.533977 52.319582,5.533998 52.319547,5.534033 52.319478,5.534054 52.319431,5.534096 52.319322,5.534182 52.319045,5.534196 52.318999,5.534212 52.318947,5.53422 52.318921,5.534225 52.318904,5.534467 52.318122,5.534472 52.318111,5.534515 52.318119,5.534567 52.318128,5.534985 52.318203,5.534999 52.318205,5.535013 52.318208,5.535391 52.318276,5.535478 52.318291,5.535784 52.318346,5.535798 52.318348,5.535812 52.318351,5.536128 52.318408,5.53631 52.31844,5.536352 52.318448,5.536381 52.318453,5.536403 52.318456,5.536455 52.318474,5.536916 52.319012,5.536944 52.319044,5.537938 52.320205,5.538744 52.321176,5.538767 52.321186,5.538857 52.321219,5.538912 52.321234,5.538953 52.321246,5.53906 52.321273,5.539139 52.321291,5.539259 52.321309,5.539381 52.32132,5.539505 52.321323,5.539595 52.321319,5.539694 52.321308,5.539791 52.321291,5.540154 52.32122,5.540266 52.321193,5.540345 52.321178,5.540387 52.32117,5.540458 52.321156,5.54074 52.321101,5.540823 52.321085,5.540929 52.321064,5.540941 52.321062,5.541025 52.321041,5.541209 52.321004,5.541614 52.320925,5.541807 52.320886,5.541859 52.320876,5.542027 52.320821,5.542354 52.320708,5.542593 52.320625,5.542648 52.320616,5.542702 52.320605,5.542658 52.320521,5.542544 52.320304,5.542551 52.320303,5.542534 52.32027,5.542526 52.320272,5.542512 52.320245,5.54242 52.320071,5.542296 52.320095,5.542154 52.319827,5.541452 52.319696,5.541349 52.319677,5.541269 52.319662,5.541195 52.319649,5.541192 52.319656,5.541058 52.319632,5.541088 52.319571,5.541131 52.319582,5.541195 52.31957,5.54214 52.319381,5.543526 52.319103,5.543555 52.319097,5.54357 52.319126,5.5436 52.319178,5.543611 52.319197,5.543609 52.319198,5.542658 52.319388,5.542836 52.319723,5.542812 52.319728,5.542331 52.319823,5.542901 52.31993,5.542936 52.319939,5.542997 52.319927,5.543 52.319935,5.543122 52.320165,5.543183 52.32028,5.543204 52.32032,5.54322 52.320317,5.543868 52.320188,5.543918 52.320283,5.543893 52.320287,5.543255 52.320415,5.543301 52.320502,5.543311 52.320502,5.543311 52.320503,5.544044 52.320356,5.544044 52.320358,5.54405 52.320401,5.544064 52.32048,5.544071 52.320534,5.544078 52.320586,5.544089 52.320685,5.544085 52.320714,5.544084 52.320713,5.543794 52.320672,5.543464 52.320697,5.542883 52.32081,5.542713 52.320843,5.542318 52.320912,5.542295 52.320916,5.542289 52.320917,5.54227 52.320919,5.542038 52.320948,5.541209 52.321114,5.541084 52.321139,5.541069 52.321139,5.54106 52.321141,5.540994 52.321154,5.54099 52.321155,5.540977 52.321157,5.540871 52.321178,5.540788 52.321194,5.540785 52.321189,5.540777 52.321173,5.540496 52.321228,5.540426 52.321242,5.540384 52.32125,5.540304 52.321266,5.540287 52.321269,5.540273 52.321273,5.539887 52.321347,5.539806 52.321363,5.539777 52.321368,5.539729 52.321376,5.539672 52.321383,5.539643 52.321386,5.539599 52.32139,5.539585 52.321392,5.539556 52.321393,5.539511 52.321395,5.539477 52.321395,5.539447 52.321395,5.539403 52.321394,5.539359 52.321391,5.53933 52.321389,5.53931 52.321388,5.539297 52.321387,5.539294 52.321387,5.53929 52.321388,5.539278 52.321389,5.539273 52.32139,5.53927 52.32139,5.539243 52.321394,5.539241 52.321395,5.53922 52.321399,5.539219 52.321399,5.539197 52.321404,5.539195 52.321405,5.539192 52.321406,5.53919 52.321407,5.539182 52.321409,5.539176 52.321411,5.539176 52.321411,5.539175 52.321412,5.539175 52.321412,5.539174 52.321412,5.539174 52.321412,5.539173 52.321413,5.539173 52.321413,5.539172 52.321413,5.539172 52.321414,5.539171 52.321414,5.539171 52.321414,5.53917 52.321414,5.53917 52.321415,5.539169 52.321415,5.539169 52.321415,5.539168 52.321416,5.539168 52.321416,5.539167 52.321416,5.539167 52.321417,5.539166 52.321417,5.539166 52.321417,5.539165 52.321418,5.539165 52.321418,5.539164 52.321418,5.539164 52.321419,5.539164 52.321419,5.539163 52.321419,5.539163 52.32142,5.539162 52.32142,5.539162 52.32142,5.539161 52.321421,5.539161 52.321421,5.539161 52.321421,5.53916 52.321422,5.53916 52.321422,5.539159 52.321422,5.539159 52.321423,5.539159 52.321423,5.539158 52.321423,5.539158 52.321424,5.539157 52.321424,5.539157 52.321425,5.539157 52.321425,5.539156 52.321425,5.539156 52.321426,5.539156 52.321426,5.539155 52.321426,5.539155 52.321427,5.539155 52.321427,5.539154 52.321427,5.539154 52.321428,5.539154 52.321428,5.539153 52.321429,5.539153 52.321429,5.539153 52.321429,5.539152 52.32143,5.539152 52.32143,5.539152 52.321431,5.539151 52.321431,5.539151 52.321431,5.539151 52.321432,5.539151 52.321432,5.53915 52.321433,5.53915 52.321433,5.53915 52.321433,5.539149 52.321434,5.539149 52.321434,5.539149 52.321435,5.539149 52.321435,5.539148 52.321435,5.539148 52.321436,5.539148 52.321436,5.539148 52.321437,5.539148 52.321437,5.539147 52.321437,5.539147 52.321438,5.539147 52.321438,5.539147 52.321439,5.539147 52.321439,5.539146 52.321439,5.539146 52.32144,5.539146 52.32144,5.539146 52.321441,5.539146 52.321441,5.539146 52.321442,5.539145 52.321442,5.539145 52.321442,5.539145 52.321443,5.539145 52.321443,5.539145 52.321444,5.539145 52.321444,5.539145 52.321445,5.539145 52.321445,5.539144 52.321445,5.539144 52.321446,5.539144 52.321446,5.539144 52.321447,5.539144 52.321447,5.539144 52.321447,5.539144 52.321448,5.539144 52.321448,5.53914 52.321466,5.539136 52.321487,5.539129 52.321514,5.539129 52.321514,5.539129 52.321515,5.539129 52.321515,5.539129 52.321516,5.539129 52.321517,5.539129 52.321517,5.539129 52.321518,5.539129 52.321519,5.539129 52.321519,5.539129 52.32152,5.539129 52.32152,5.539129 52.321521,5.53913 52.321522,5.53913 52.321522,5.53913 52.321523,5.53913 52.321524,5.53913 52.321524,5.53913 52.321525,5.53913 52.321526,5.53913 52.321526,5.539131 52.321527,5.539131 52.321527,5.539131 52.321528,5.539131 52.321529,5.539131 52.321529,5.539132 52.32153,5.539132 52.321531,5.539132 52.321531,5.539132 52.321532,5.539133 52.321533,5.539133 52.321533,5.539133 52.321534,5.539134 52.321534,5.539134 52.321535,5.539134 52.321536,5.539135 52.321536,5.539135 52.321537,5.539135 52.321537,5.539136 52.321538,5.539136 52.321539,5.539137 52.321539,5.539137 52.32154,5.539138 52.32154,5.539138 52.321541,5.539138 52.321542,5.539139 52.321542,5.539139 52.321543,5.53914 52.321543,5.53914 52.321544,5.539141 52.321544,5.539141 52.321545,5.539142 52.321545,5.539143 52.321546,5.539143 52.321547,5.539144 52.321547,5.539144 52.321548,5.539145 52.321548,5.539145 52.321549,5.539146 52.321549,5.539147 52.32155,5.539147 52.32155,5.539148 52.321551,5.539149 52.321551,5.539149 52.321552,5.53915 52.321552,5.539151 52.321553,5.539151 52.321553,5.539152 52.321554,5.539153 52.321554,5.539153 52.321555,5.539154 52.321555,5.539155 52.321556,5.539156 52.321556,5.539156 52.321557,5.539157 52.321557,5.539158 52.321557,5.539159 52.321558,5.539159 52.321558,5.53916 52.321559,5.539161 52.321559,5.539162 52.32156,5.539163 52.32156,5.539164 52.32156,5.539164 52.321561,5.539165 52.321561,5.539166 52.321562,5.539167 52.321562,5.539168 52.321562,5.539169 52.321563,5.53917 52.321563,5.53917 52.321563,5.539171 52.321564,5.539172 52.321564,5.539173 52.321564,5.539174 52.321565,5.539175 52.321565,5.539176 52.321565,5.539177 52.321566,5.539178 52.321566,5.539179 52.321566,5.539179 52.321566,5.539223 52.321577,5.539223 52.321577,5.539224 52.321577,5.539225 52.321577,5.539226 52.321577,5.539226 52.321578,5.539227 52.321578,5.539228 52.321578,5.539228 52.321578,5.539229 52.321579,5.53923 52.321579,5.539231 52.321579,5.539231 52.321579,5.539232 52.32158,5.539233 52.32158,5.539233 52.32158,5.539234 52.32158,5.539235 52.321581,5.539235 52.321581,5.539236 52.321581,5.539237 52.321581,5.539237 52.321582,5.539238 52.321582,5.539239 52.321582,5.539239 52.321583,5.53924 52.321583,5.539241 52.321583,5.539241 52.321583,5.539242 52.321584,5.539243 52.321584,5.539243 52.321584,5.539244 52.321585,5.539245 52.321585,5.539245 52.321585,5.539246 52.321586,5.539247 52.321586,5.539247 52.321586,5.539248 52.321587,5.539248 52.321587,5.539249 52.321587,5.53925 52.321588,5.53925 52.321588,5.539251 52.321588,5.539252 52.321589,5.539252 52.321589,5.539253 52.321589,5.539253 52.32159,5.539254 52.32159,5.539255 52.32159,5.539255 52.321591,5.539256 52.321591,5.539256 52.321591,5.539257 52.321592,5.539257 52.321592,5.539258 52.321592,5.539259 52.321593,5.539259 52.321593,5.53926 52.321593,5.53926 52.321594,5.539261 52.321594,5.539261 52.321594,5.539262 52.321595,5.539263 52.321595,5.539263 52.321596,5.539264 52.321596,5.539264 52.321596,5.539265 52.321597,5.539265 52.321597,5.539266 52.321597,5.539266 52.321598,5.539267 52.321598,5.539267 52.321599,5.539268 52.321599,5.539268 52.321599,5.539269 52.3216,5.539269 52.3216,5.53927 52.321601,5.53927 52.321601,5.539271 52.321601,5.539271 52.321602,5.539272 52.321602,5.539272 52.321603,5.539273 52.321603,5.539273 52.321603,5.539274 52.321604,5.539274 52.321604,5.539275 52.321605,5.539275 52.321605,5.539276 52.321605,5.539276 52.321606,5.539276 52.321606,5.539277 52.321607,5.539277 52.321607,5.539278 52.321608,5.539278 52.321608,5.539279 52.321608,5.539279 52.321609,5.539279 52.321609,5.53928 52.32161,5.53928 52.32161,5.539281 52.321611,5.539281 52.321611,5.539287 52.321618,5.539287 52.321618,5.539287 52.321618,5.539287 52.321619,5.539287 52.321619,5.539287 52.321619,5.539287 52.321619,5.539287 52.321619,5.539288 52.321619,5.539288 52.321619,5.539288 52.321619,5.539288 52.321619,5.539288 52.321619,5.539288 52.321619,5.539288 52.32162,5.539288 52.32162,5.539288 52.32162,5.539288 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.539289 52.32162,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.53929 52.321621,5.539291 52.321621,5.539291 52.321621,5.539291 52.321621,5.539291 52.321621,5.539291 52.321621,5.539291 52.321621,5.539291 52.321621,5.539292 52.321622,5.539292 52.321622,5.539292 52.321622,5.539292 52.321622,5.539292 52.321622,5.539292 52.321622,5.539292 52.321622,5.539293 52.321622,5.539293 52.321622,5.539293 52.321622,5.539293 52.321622,5.539293 52.321622,5.539293 52.321622,5.539293 52.321622,5.539294 52.321622,5.539294 52.321622,5.539294 52.321622,5.539294 52.321622,5.539294 52.321623,5.539294 52.321623,5.539295 52.321623,5.539295 52.321623,5.539295 52.321623,5.539295 52.321623,5.539295 52.321623,5.539295 52.321623,5.539296 52.321623,5.539296 52.321623,5.539296 52.321623,5.539296 52.321623,5.539296 52.321623,5.539296 52.321623,5.539297 52.321623,5.539297 52.321623,5.539297 52.321623,5.539297 52.321623,5.539297 52.321623,5.539297 52.321623,5.539298 52.321623,5.539298 52.321623,5.539298 52.321623,5.539298 52.321623,5.539298 52.321623,5.539298 52.321623,5.539299 52.321623,5.539299 52.321623,5.539299 52.321623,5.539299 52.321623,5.539299 52.321623,5.539299 52.321623,5.5393 52.321623,5.5393 52.321623,5.5393 52.321623,5.5393 52.321623,5.5393 52.321623,5.5393 52.321623,5.539301 52.321623,5.539301 52.321623,5.539301 52.321623,5.539301 52.321623,5.539301 52.321623,5.539315 52.32164,5.539315 52.32164,5.539315 52.32164,5.539314 52.32164,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539314 52.321641,5.539313 52.321641,5.539313 52.321641,5.539313 52.321641,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539313 52.321642,5.539312 52.321642,5.539312 52.321642,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321643,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539312 52.321644,5.539311 52.321644,5.539311 52.321644,5.539311 52.321644,5.539311 52.321644,5.539311 52.321644,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321645,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321646,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321647,5.539311 52.321648,5.539311 52.321648,5.539311 52.321648,5.539342 52.321685,5.539422 52.321791,5.539535 52.321932,5.539643 52.32207,5.53971 52.322155,5.539726 52.322176,5.539753 52.32221,5.539883 52.322375,5.539894 52.322388,5.540347 52.322966,5.540363 52.322985,5.540444 52.323089,5.54042 52.323141,5.540341 52.323292,5.54032 52.323335,5.540265 52.32345,5.540244 52.323495,5.540214 52.323558,5.540206 52.323576,5.540194 52.323601,5.540121 52.323588,5.540104 52.323585,5.539972 52.323562,5.539502 52.323478,5.539275 52.323437,5.539259 52.323434,5.539172 52.323419,5.53894 52.323377,5.538396 52.32328,5.538391 52.323279,5.538381 52.323278,5.538372 52.323278,5.538354 52.323279,5.538336 52.323282,5.538325 52.323286,5.538316 52.32329,5.538302 52.323301,5.538296 52.323307,5.538289 52.323316,5.538261 52.323375,5.538256 52.323385,5.538233 52.323433,5.538233 52.323434,5.538231 52.323445,5.538233 52.323456,5.538239 52.323467,5.538248 52.323476,5.53826 52.323484,5.538275 52.323491,5.538291 52.323495,5.538295 52.323496,5.538307 52.323498,5.539038 52.323629,5.539054 52.323632,5.539069 52.323635,5.53915 52.323649,5.539166 52.323652,5.539189 52.323657,5.539762 52.323759,5.539829 52.323771,5.539984 52.323799,5.540007 52.323803,5.540027 52.323807,5.5401 52.32382,5.540109 52.323821,5.540131 52.323825,5.540244 52.323846,5.540713 52.32393,5.540786 52.323951,5.540851 52.323976,5.540889 52.323993,5.540896 52.323996,5.54092 52.324007,5.540881 52.324081,5.540787 52.324035,5.540722 52.32401,5.540322 52.32484,5.540308 52.324838,5.540263 52.32483,5.540259 52.324831,5.540258 52.324833,5.54026 52.324837,5.540268 52.324845,5.540278 52.324851,5.540291 52.324857,5.540307 52.32486,5.540328 52.324864,5.540339 52.324866,5.540386 52.324874,5.540425 52.324882,5.540435 52.324883,5.540453 52.324884,5.540472 52.324882,5.540445 52.324936,5.540442 52.324935,5.540428 52.324931,5.540414 52.324928,5.540394 52.324927,5.540382 52.324929,5.540366 52.324934,5.540353 52.324942,5.540345 52.324952,5.540311 52.325025,5.540307 52.325033,5.540308 52.325039,5.540374 52.325051,5.540379 52.325052,5.54038 52.325056,5.540297 52.325229,5.540293 52.325232,5.540288 52.325232,5.540222 52.32522,5.540216 52.325224,5.540208 52.325241,5.540208 52.325246,5.540275 52.325258,5.54028 52.32526,5.54028 52.325264,5.540197 52.325436,5.540194 52.325439,5.540189 52.325439,5.540122 52.325427,5.540117 52.325431,5.54005 52.325571,5.540051 52.325577,5.540119 52.325588,5.540122 52.32559,5.540123 52.325594,5.540053 52.325741,5.54005 52.325743,5.540045 52.325743,5.539977 52.325732,5.539972 52.325736,5.539964 52.325753,5.539964 52.325758,5.540032 52.32577,5.540036 52.325772,5.540037 52.325776,5.539966 52.325922,5.539963 52.325925,5.539958 52.325925,5.53989 52.325913,5.539886 52.325917,5.539848 52.325999,5.539835 52.326026,5.539826 52.326044,5.539825 52.326054,5.539826 52.326061,5.53983 52.326068,5.539838 52.326075,5.539849 52.326081,5.539861 52.326085,5.539877 52.326087,5.539887 52.326087,5.539899 52.326086,5.539899 52.326086,5.53987 52.326149,5.539861 52.326146,5.539852 52.326143,5.539839 52.326142,5.539824 52.326143,5.539803 52.326148,5.539795 52.326151,5.53978 52.326158,5.539774 52.326162,5.539764 52.326172,5.539757 52.326182,5.539735 52.32623,5.53972 52.326265,5.539721 52.32627,5.539787 52.326282,5.539792 52.326284,5.539792 52.326287,5.539722 52.326433,5.539718 52.326436,5.539714 52.326437,5.539646 52.326425,5.539641 52.326429,5.539633 52.326446,5.539633 52.326451,5.539701 52.326463,5.539705 52.326465,5.539706 52.326468,5.539637 52.32661,5.539634 52.326613,5.539629 52.326613,5.539562 52.326601,5.539558 52.326606,5.539544 52.326634,5.539543 52.32664,5.539611 52.326652,5.539616 52.326654,5.539616 52.326657,5.539538 52.326822,5.539534 52.326824,5.539528 52.326825,5.539461 52.326813,5.539457 52.326817,5.539448 52.326836,5.539436 52.326861,5.539432 52.326869,5.539431 52.326874,5.539498 52.326886,5.539503 52.326888,5.539504 52.326892,5.539445 52.327013,5.539442 52.327015,5.539437 52.327016,5.539373 52.327005,5.53937 52.327004,5.539364 52.327009,5.539331 52.327079,5.539311 52.327121,5.539343 52.327134,5.539354 52.327139,5.53936 52.327146,5.539362 52.32715,5.539363 52.327155,5.53936 52.327163,5.53934 52.327206,5.539298 52.327198,5.539308 52.327178,5.539308 52.327175,5.539304 52.327174,5.538958 52.327113,5.538933 52.327109,5.538184 52.326975,5.538118 52.326989,5.537998 52.327242,5.538021 52.327246,5.538213 52.327281,5.538203 52.327303,5.538193 52.327323,5.538185 52.327339,5.538143 52.327332,5.538136 52.327347,5.538128 52.327364,5.538125 52.327364,5.538043 52.327349,5.537904 52.327636,5.537855 52.327627,5.537799 52.327617,5.537793 52.327617,5.537789 52.327617,5.537784 52.32762,5.537781 52.327623,5.537756 52.327674,5.537735 52.32772,5.536908 52.327572,5.536752 52.327544,5.536417 52.327484,5.536416 52.327484,5.536411 52.327492,5.536406 52.327502,5.536322 52.32751,5.536299 52.327557,5.536302 52.327558,5.536278 52.327589,5.536263 52.327621,5.536221 52.327708,5.536198 52.327703,5.536182 52.327736,5.536159 52.327785,5.53608 52.327949,5.536071 52.327969,5.536048 52.328017,5.536051 52.328017,5.53605 52.328018,5.536026 52.328072,5.536026 52.328072,5.536026 52.328072,5.536026 52.328072,5.536026 52.328072,5.536026 52.328072,5.536026 52.328072,5.536026 52.328073,5.536026 52.328073,5.536025 52.328073,5.536025 52.328073,5.536025 52.328073,5.536025 52.328074,5.536025 52.328074,5.536025 52.328074,5.536025 52.328074,5.536025 52.328074,5.536025 52.328074,5.536025 52.328075,5.536025 52.328075,5.536025 52.328075,5.536025 52.328075,5.536025 52.328075,5.536025 52.328075,5.536025 52.328076,5.536025 52.328076,5.536024 52.328076,5.536024 52.328076,5.536024 52.328076,5.536024 52.328076,5.536024 52.328077,5.536024 52.328077,5.536024 52.328077,5.536024 52.328077,5.536024 52.328077,5.536024 52.328077,5.536024 52.328078,5.536024 52.328078,5.536024 52.328078,5.536024 52.328078,5.536024 52.328078,5.536024 52.328078,5.536024 52.328079,5.536024 52.328079,5.536024 52.328079,5.536024 52.328079,5.536024 52.328079,5.536024 52.32808,5.536024 52.32808,5.536024 52.32808,5.536024 52.32808,5.536024 52.32808,5.536024 52.32808,5.536024 52.328081,5.536024 52.328081,5.536024 52.328081,5.536024 52.328081,5.536024 52.328081,5.536024 52.328081,5.536023 52.328082,5.536023 52.328082,5.536023 52.328082,5.536023 52.328082,5.536023 52.328082,5.536023 52.328082,5.536023 52.328083,5.536023 52.328083,5.536023 52.328083,5.536023 52.328083,5.536023 52.328083,5.536023 52.328084,5.536023 52.328084,5.536023 52.328084,5.536023 52.328084,5.536023 52.328084,5.536023 52.328084,5.536023 52.328085,5.536023 52.328085,5.536023 52.328085,5.536023 52.328085,5.536023 52.328085,5.536023 52.328085,5.536023 52.328086,5.536023 52.328086,5.536024 52.328086,5.536024 52.328086,5.536024 52.328086,5.536024 52.328087,5.536024 52.328087,5.536024 52.328087,5.536024 52.328087,5.536024 52.328087,5.536024 52.328087,5.536024 52.328088,5.536024 52.328088,5.536024 52.328088,5.536024 52.328088,5.536024 52.328088,5.536024 52.328088,5.536024 52.328089,5.536024 52.328089,5.536024 52.328089,5.535822 52.327993,5.535427 52.327863,5.535471 52.327767,5.535493 52.327723,5.535512 52.327681,5.536047 52.327776,5.53606 52.327749,5.536057 52.327748,5.536081 52.327717,5.536096 52.327685,5.536136 52.327598,5.536153 52.327567,5.536159 52.327533,5.536163 52.327533,5.536185 52.327486,5.536136 52.327453,5.53614 52.327445,5.536141 52.327446,5.536146 52.327435,5.536129 52.327432,5.536097 52.327426,5.53607 52.327422,5.536056 52.327419,5.536029 52.327414,5.534805 52.327195,5.534734 52.327182,5.534211 52.32709,5.533553 52.326973,5.533383 52.326942,5.533378 52.326935,5.53336 52.326931,5.533373 52.326904,5.533386 52.326878,5.533509 52.326619,5.533594 52.32644,5.53368 52.326262,5.533765 52.326083,5.53385 52.325905,5.533876 52.325849,5.533891 52.325818,5.533935 52.325727,5.53402 52.325548,5.534105 52.32537,5.53419 52.32519,5.534113 52.325176,5.533889 52.325136,5.5337 52.325102,5.533683 52.325137,5.533667 52.325171,5.533653 52.325142,5.533664 52.325095,5.533672 52.325061,5.53365 52.325056,5.533675 52.325006,5.5337 52.324952,5.533721 52.324956,5.533765 52.324964,5.53378 52.324933,5.533931 52.32496,5.534064 52.324983,5.534149 52.324998,5.534233 52.325013,5.534318 52.325028,5.534402 52.325043,5.534476 52.325057,5.534483 52.325058,5.534489 52.325059,5.53452 52.325064,5.534526 52.325065,5.534564 52.325072,5.534571 52.325038,5.534564 52.325038,5.534565 52.325035,5.534571 52.325035,5.534606 52.324867,5.534598 52.324865,5.534592 52.324864,5.53461 52.324828,5.534601 52.324827,5.534513 52.324811,5.534428 52.324796,5.534344 52.324781,5.53426 52.324766,5.534174 52.32475,5.534042 52.324727,5.534047 52.324718,5.534523 52.324803,5.534621 52.324821,5.53465 52.324675,5.534679 52.324529,5.534709 52.324383,5.534739 52.324236,5.53475 52.324176,5.534765 52.324107,5.53478 52.324043,5.534799 52.323972,5.534815 52.323916,5.534838 52.323839,5.534857 52.323781,5.534884 52.323706,5.534906 52.323651,5.534937 52.323575,5.53496 52.323521,5.534996 52.323446,5.535045 52.323342,5.535094 52.323239,5.535143 52.323135,5.535192 52.323032,5.535204 52.323016,5.535212 52.323,5.535193 52.322993,5.535173 52.322989,5.534749 52.322914,5.534556 52.322879,5.534488 52.322867,5.534408 52.322852,5.534276 52.322828,5.533798 52.322743,5.533798 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533797 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533796 52.322743,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533795 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533794 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533793 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533792 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.533791 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.53379 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533789 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533788 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533787 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533786 52.322742,5.533785 52.322742,5.533785 52.322742,5.533785 52.322742,5.533766 52.322783,5.533693 52.322771,5.533598 52.322754,5.533511 52.322738,5.533532 52.322695,5.532206 52.322458,5.532185 52.322504,5.532114 52.322492,5.532021 52.322476,5.531933 52.32246)),((5.531048 52.322305,5.53083 52.322267,5.530883 52.322155,5.530888 52.322155,5.530909 52.322152,5.530937 52.322145,5.530978 52.322133,5.531008 52.322124,5.53103 52.322076,5.531068 52.321993,5.531371 52.321358,5.531469 52.321184,5.531529 52.321099,5.531685 52.320919,5.531788 52.320822,5.531966 52.32068,5.53208 52.320603,5.532826 52.32012,5.533115 52.319919,5.533149 52.319893,5.533274 52.319788,5.53329 52.31977,5.533292 52.319768,5.533308 52.319751,5.533327 52.319732,5.533327 52.319727,5.533326 52.319719,5.533326 52.319719,5.533326 52.319719,5.533326 52.319718,5.533326 52.319717,5.533327 52.319716,5.533327 52.319716,5.533327 52.319715,5.533327 52.319714,5.533327 52.319713,5.533327 52.319713,5.533327 52.319712,5.533327 52.319711,5.533327 52.31971,5.533327 52.319709,5.533327 52.319709,5.533327 52.319708,5.533327 52.319707,5.533327 52.319706,5.533327 52.319706,5.533327 52.319705,5.533327 52.319704,5.533327 52.319703,5.533327 52.319703,5.533326 52.319702,5.533326 52.319701,5.533326 52.3197,5.533326 52.319699,5.533326 52.319699,5.533326 52.319698,5.533326 52.319697,5.533326 52.319696,5.533326 52.319696,5.533325 52.319695,5.533325 52.319694,5.533325 52.319693,5.533325 52.319693,5.533325 52.319692,5.533325 52.319691,5.533324 52.31969,5.533324 52.31969,5.533324 52.319689,5.533324 52.319688,5.533324 52.319687,5.533323 52.319687,5.533323 52.319686,5.533323 52.319685,5.533323 52.319684,5.533322 52.319684,5.533322 52.319683,5.533322 52.319682,5.533322 52.319681,5.533321 52.319681,5.533321 52.31968,5.533321 52.319679,5.53332 52.319678,5.53332 52.319678,5.53332 52.319677,5.533319 52.319676,5.533319 52.319675,5.533319 52.319675,5.533318 52.319674,5.533318 52.319673,5.533318 52.319672,5.533317 52.319672,5.533317 52.319671,5.533316 52.31967,5.533316 52.31967,5.533316 52.319669,5.533315 52.319668,5.533315 52.319667,5.533314 52.319667,5.533314 52.319666,5.533313 52.319665,5.533313 52.319665,5.533312 52.319664,5.533312 52.319663,5.533312 52.319662,5.533311 52.319662,5.533311 52.319661,5.53331 52.31966,5.53331 52.31966,5.533309 52.319659,5.533309 52.319658,5.533308 52.319657,5.533307 52.319657,5.533307 52.319656,5.533306 52.319655,5.533306 52.319655,5.533305 52.319654,5.533305 52.319653,5.533304 52.319653,5.533304 52.319652,5.533303 52.319651,5.533302 52.319651,5.533302 52.31965,5.533301 52.319649,5.533301 52.319649,5.5333 52.319648,5.533299 52.319647,5.533299 52.319647,5.533299 52.319647,5.533299 52.319647,5.533299 52.319647,5.533299 52.319647,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319646,5.533298 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319645,5.533297 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533296 52.319644,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533295 52.319643,5.533294 52.319643,5.533294 52.319642,5.533294 52.319642,5.533337 52.319597,5.533341 52.319591,5.533371 52.319589,5.533389 52.319587,5.533406 52.319583,5.533422 52.319578,5.533437 52.319572,5.533452 52.319564,5.533464 52.319556,5.533476 52.319547,5.533502 52.319519,5.533535 52.319476,5.53356 52.31943,5.533674 52.319174,5.534042 52.317991,5.534052 52.317956,5.534088 52.317842,5.534115 52.317756,5.534128 52.317716,5.534226 52.317404,5.534301 52.317135,5.534317 52.317053,5.534328 52.316894,5.534323 52.316818,5.534317 52.316774,5.534305 52.316699,5.534256 52.316534,5.534205 52.31641,5.534108 52.316239,5.534083 52.316202,5.534056 52.316167,5.534055 52.316167,5.534089 52.31616,5.534157 52.316147,5.534208 52.316194,5.534275 52.31627,5.534348 52.316384,5.534416 52.31651,5.534425 52.316523,5.534425 52.316523,5.534426 52.316524,5.534426 52.316524,5.534426 52.316525,5.534427 52.316525,5.534427 52.316525,5.534427 52.316526,5.534427 52.316526,5.534428 52.316526,5.534428 52.316527,5.534428 52.316527,5.534429 52.316528,5.534429 52.316528,5.534429 52.316528,5.53443 52.316529,5.53443 52.316529,5.53443 52.316529,5.534431 52.31653,5.534431 52.31653,5.534431 52.31653,5.534432 52.316531,5.534432 52.316531,5.534432 52.316531,5.534433 52.316532,5.534433 52.316532,5.534433 52.316532,5.534434 52.316533,5.534434 52.316533,5.534435 52.316534,5.534435 52.316534,5.534435 52.316534,5.534436 52.316535,5.534436 52.316535,5.534437 52.316535,5.534437 52.316536,5.534437 52.316536,5.534438 52.316536,5.534438 52.316537,5.534439 52.316537,5.534439 52.316537,5.534439 52.316538,5.53444 52.316538,5.53444 52.316538,5.534441 52.316538,5.534441 52.316539,5.534442 52.316539,5.534442 52.316539,5.534442 52.31654,5.534443 52.31654,5.534443 52.31654,5.534444 52.316541,5.534444 52.316541,5.534445 52.316541,5.534445 52.316542,5.534446 52.316542,5.534446 52.316542,5.534447 52.316542,5.534447 52.316543,5.534448 52.316543,5.534448 52.316543,5.534449 52.316544,5.534449 52.316544,5.53445 52.316544,5.53445 52.316544,5.534451 52.316545,5.534451 52.316545,5.534452 52.316545,5.534452 52.316546,5.534453 52.316546,5.534453 52.316546,5.534454 52.316546,5.534454 52.316547,5.534455 52.316547,5.534455 52.316547,5.534456 52.316547,5.534456 52.316548,5.534457 52.316548,5.534457 52.316548,5.534458 52.316548,5.534458 52.316549,5.534459 52.316549,5.534459 52.316549,5.53446 52.316549,5.534461 52.31655,5.534461 52.31655,5.534462 52.31655,5.534462 52.31655,5.534463 52.316551,5.534463 52.316551,5.534464 52.316551,5.534464 52.316551,5.534465 52.316551,5.534466 52.316552,5.534466 52.316552,5.534467 52.316552,5.534467 52.316552,5.534468 52.316553,5.534468 52.316553,5.534469 52.316553,5.53447 52.316553,5.53447 52.316553,5.534548 52.31657,5.534552 52.316571,5.534625 52.316574,5.534684 52.316575,5.534722 52.316573,5.534786 52.316573,5.53481 52.316572,5.534949 52.316564,5.535108 52.316552,5.536002 52.316471,5.536189 52.316453,5.536422 52.316424,5.536656 52.316387,5.536882 52.316344,5.537325 52.316255,5.537331 52.316254,5.537375 52.316245,5.537382 52.316244,5.537417 52.316237,5.539643 52.315795,5.539736 52.315776,5.539736 52.315776,5.539745 52.315774,5.539755 52.315772,5.539764 52.315771,5.539774 52.315769,5.539783 52.315767,5.539793 52.315765,5.539802 52.315764,5.539812 52.315762,5.539822 52.31576,5.539831 52.315759,5.539841 52.315757,5.539851 52.315755,5.53986 52.315754,5.53987 52.315752,5.53988 52.315751,5.539889 52.315749,5.539899 52.315748,5.539909 52.315746,5.539918 52.315745,5.539928 52.315744,5.539938 52.315742,5.539948 52.315741,5.539957 52.31574,5.539967 52.315738,5.539977 52.315737,5.539987 52.315736,5.539997 52.315735,5.540006 52.315733,5.540016 52.315732,5.540026 52.315731,5.540036 52.31573,5.540046 52.315729,5.540056 52.315728,5.540065 52.315727,5.540075 52.315726,5.540085 52.315725,5.540095 52.315724,5.540105 52.315723,5.540115 52.315722,5.540125 52.315721,5.540135 52.315721,5.540145 52.31572,5.540155 52.315719,5.540164 52.315718,5.540174 52.315718,5.540184 52.315717,5.540194 52.315716,5.540204 52.315716,5.540214 52.315715,5.540224 52.315715,5.540234 52.315714,5.540244 52.315713,5.540254 52.315713,5.540264 52.315712,5.540274 52.315712,5.540284 52.315712,5.540294 52.315711,5.540304 52.315711,5.540314 52.315711,5.540324 52.31571,5.540334 52.31571,5.540344 52.31571,5.540354 52.31571,5.540364 52.315709,5.540374 52.315709,5.540384 52.315709,5.540394 52.315709,5.540404 52.315709,5.540414 52.315709,5.540424 52.315709,5.540434 52.315709,5.540444 52.315709,5.540454 52.315709,5.540464 52.315709,5.540474 52.315709,5.540484 52.315709,5.540494 52.315709,5.540504 52.315709,5.540514 52.31571,5.540524 52.31571,5.540534 52.31571,5.540544 52.31571,5.540554 52.315711,5.540564 52.315711,5.540573 52.315712,5.540583 52.315712,5.540593 52.315712,5.540603 52.315713,5.540613 52.315713,5.540623 52.315714,5.540633 52.315714,5.540643 52.315715,5.540653 52.315716,5.540663 52.315716,5.540673 52.315717,5.540683 52.315717,5.540693 52.315718,5.540703 52.315719,5.540713 52.31572,5.540713 52.31572,5.540715 52.31572,5.540717 52.31572,5.540719 52.31572,5.540721 52.31572,5.540723 52.31572,5.540725 52.315721,5.540728 52.315721,5.54073 52.315721,5.540732 52.315721,5.540734 52.315721,5.540736 52.315722,5.540738 52.315722,5.54074 52.315722,5.540742 52.315722,5.540745 52.315722,5.540747 52.315722,5.540749 52.315723,5.540751 52.315723,5.540753 52.315723,5.540755 52.315723,5.540757 52.315723,5.540759 52.315724,5.540761 52.315724,5.540764 52.315724,5.540766 52.315724,5.540768 52.315724,5.54077 52.315724,5.540772 52.315725,5.540774 52.315725,5.540776 52.315725,5.540778 52.315725,5.540781 52.315725,5.540783 52.315726,5.540785 52.315726,5.540787 52.315726,5.540789 52.315726,5.540791 52.315726,5.540793 52.315727,5.540795 52.315727,5.540797 52.315727,5.5408 52.315727,5.540802 52.315728,5.540804 52.315728,5.540806 52.315728,5.540808 52.315728,5.54081 52.315728,5.540812 52.315729,5.540814 52.315729,5.540816 52.315729,5.540819 52.315729,5.540821 52.315729,5.540823 52.31573,5.540825 52.31573,5.540827 52.31573,5.540829 52.31573,5.540831 52.315731,5.540833 52.315731,5.540835 52.315731,5.540837 52.315731,5.54084 52.315732,5.540842 52.315732,5.540844 52.315732,5.540846 52.315732,5.540848 52.315733,5.54085 52.315733,5.540852 52.315733,5.540854 52.315733,5.540856 52.315734,5.540859 52.315734,5.540861 52.315734,5.540863 52.315734,5.540865 52.315734,5.540867 52.315735,5.540869 52.315735,5.540871 52.315735,5.540873 52.315736,5.540875 52.315736,5.540877 52.315736,5.540879 52.315736,5.540882 52.315737,5.540884 52.315737,5.540886 52.315737,5.540888 52.315737,5.54089 52.315738,5.540892 52.315738,5.540894 52.315738,5.540896 52.315738,5.540898 52.315739,5.5409 52.315739,5.540903 52.315739,5.540905 52.315739,5.540907 52.31574,5.540909 52.31574,5.540911 52.31574,5.540913 52.315741,5.540915 52.315741,5.540917 52.315741,5.540919 52.315741,5.540921 52.315742,5.540921 52.315742,5.540929 52.315743,5.540936 52.315744,5.540944 52.315745,5.540951 52.315746,5.540958 52.315747,5.540966 52.315748,5.540973 52.315749,5.54098 52.31575,5.540988 52.315751,5.540995 52.315753,5.541003 52.315754,5.54101 52.315755,5.541017 52.315756,5.541025 52.315757,5.541032 52.315759,5.541039 52.31576,5.541047 52.315761,5.541054 52.315762,5.541061 52.315764,5.541068 52.315765,5.541076 52.315766,5.541083 52.315768,5.54109 52.315769,5.541098 52.31577,5.541105 52.315772,5.541112 52.315773,5.541119 52.315775,5.541126 52.315776,5.541134 52.315778,5.541141 52.315779,5.541148 52.31578,5.541155 52.315782,5.541163 52.315783,5.54117 52.315785,5.541177 52.315787,5.541184 52.315788,5.541191 52.31579,5.541198 52.315791,5.541205 52.315793,5.541213 52.315794,5.54122 52.315796,5.541227 52.315798,5.541234 52.315799,5.541241 52.315801,5.541248 52.315803,5.541255 52.315804,5.541262 52.315806,5.541269 52.315808,5.541276 52.31581,5.541283 52.315811,5.54129 52.315813,5.541297 52.315815,5.541304 52.315817,5.541311 52.315819,5.541318 52.31582,5.541325 52.315822,5.541332 52.315824,5.541339 52.315826,5.541346 52.315828,5.541353 52.31583,5.54136 52.315832,5.541367 52.315834,5.541374 52.315836,5.541381 52.315838,5.541388 52.31584,5.541394 52.315842,5.541401 52.315844,5.541408 52.315846,5.541415 52.315848,5.541422 52.31585,5.541429 52.315852,5.541435 52.315854,5.541442 52.315856,5.541449 52.315858,5.541456 52.31586,5.541462 52.315862,5.541469 52.315865,5.541476 52.315867,5.541483 52.315869,5.541489 52.315871,5.541496 52.315873,5.541503 52.315875,5.541509 52.315878,5.541516 52.31588,5.541523 52.315882,5.541529 52.315885,5.541536 52.315887,5.541542 52.315889,5.541549 52.315891,5.541556 52.315894,5.541562 52.315896,5.541569 52.315899,5.541575 52.315901,5.541582 52.315903,5.541588 52.315906,5.541595 52.315908,5.541601 52.315911,5.541608 52.315913,5.541614 52.315915,5.541614 52.315915,5.541615 52.315916,5.541616 52.315916,5.541617 52.315917,5.541618 52.315917,5.541619 52.315917,5.54162 52.315918,5.541621 52.315918,5.541622 52.315918,5.541623 52.315919,5.541624 52.315919,5.541625 52.31592,5.541626 52.31592,5.541627 52.31592,5.541628 52.315921,5.541629 52.315921,5.54163 52.315921,5.541631 52.315922,5.541631 52.315922,5.541632 52.315922,5.541633 52.315923,5.541634 52.315923,5.541635 52.315924,5.541636 52.315924,5.541637 52.315924,5.541638 52.315925,5.541639 52.315925,5.54164 52.315925,5.541641 52.315926,5.541642 52.315926,5.541643 52.315927,5.541644 52.315927,5.541645 52.315927,5.541646 52.315928,5.541647 52.315928,5.541648 52.315929,5.541649 52.315929,5.54165 52.315929,5.541651 52.31593,5.541652 52.31593,5.541652 52.31593,5.541653 52.315931,5.541654 52.315931,5.541655 52.315932,5.541656 52.315932,5.541657 52.315932,5.541658 52.315933,5.541659 52.315933,5.54166 52.315933,5.541661 52.315934,5.541662 52.315934,5.541663 52.315935,5.541664 52.315935,5.541665 52.315935,5.541666 52.315936,5.541667 52.315936,5.541668 52.315937,5.541669 52.315937,5.54167 52.315937,5.54167 52.315938,5.541671 52.315938,5.541672 52.315938,5.541673 52.315939,5.541674 52.315939,5.541675 52.31594,5.541676 52.31594,5.541677 52.31594,5.541678 52.315941,5.541679 52.315941,5.54168 52.315942,5.541681 52.315942,5.541682 52.315942,5.541683 52.315943,5.541684 52.315943,5.541685 52.315944,5.541686 52.315944,5.541687 52.315944,5.541687 52.315945,5.541688 52.315945,5.541689 52.315945,5.54169 52.315946,5.541691 52.315946,5.541692 52.315947,5.541693 52.315947,5.541694 52.315947,5.541695 52.315948,5.541696 52.315948,5.541697 52.315949,5.541698 52.315949,5.541699 52.315949,5.5417 52.31595,5.541701 52.31595,5.541701 52.315951,5.541702 52.315951,5.541703 52.315951,5.541704 52.315952,5.541705 52.315952,5.541706 52.315953,5.541707 52.315953,5.541708 52.315953,5.541708 52.315953,5.541793 52.31599,5.541872 52.316031,5.541919 52.316055,5.542018 52.316112,5.54206 52.316139,5.542154 52.316202,5.542187 52.316227,5.542217 52.31625,5.542401 52.316396,5.54243 52.316419,5.542453 52.316442,5.542459 52.316451,5.542553 52.316577,5.542565 52.316621,5.54259 52.316685,5.542619 52.316747,5.542674 52.316852,5.542767 52.317027,5.542859 52.317203,5.542952 52.317378,5.543045 52.317553,5.543138 52.317729,5.543231 52.317904,5.543281 52.317998,5.543329 52.318078,5.543419 52.318221,5.54346 52.318286,5.543535 52.318418,5.543545 52.318437,5.543569 52.318433,5.543595 52.318469,5.543663 52.318596,5.54367 52.318595,5.543671 52.318596,5.543679 52.318631,5.54368 52.318633,5.543688 52.318648,5.543692 52.318655,5.543746 52.318758,5.543752 52.318768,5.543759 52.318782,5.54376 52.318783,5.543787 52.318815,5.543788 52.318816,5.54378 52.318818,5.54384 52.318931,5.543848 52.318945,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543943 52.31912,5.543943 52.319121,5.543943 52.319121,5.543943 52.319121,5.543943 52.319121,5.543942 52.319122,5.543942 52.319122,5.543942 52.319122,5.543942 52.319122,5.543942 52.319123,5.543942 52.319123,5.543941 52.319123,5.543941 52.319123,5.543941 52.319124,5.543941 52.319124,5.543941 52.319124,5.543941 52.319124,5.543941 52.319125,5.54394 52.319125,5.54394 52.319125,5.54394 52.319125,5.54394 52.319126,5.54394 52.319126,5.54394 52.319126,5.54394 52.319126,5.543939 52.319127,5.543939 52.319127,5.543939 52.319127,5.543939 52.319127,5.543939 52.319128,5.543939 52.319128,5.543939 52.319128,5.543939 52.319128,5.543938 52.319129,5.543938 52.319129,5.543938 52.319129,5.543938 52.319129,5.543938 52.31913,5.543938 52.31913,5.543938 52.31913,5.543938 52.319131,5.543938 52.319131,5.543938 52.319131,5.543937 52.319131,5.543937 52.319132,5.543937 52.319132,5.543937 52.319132,5.543937 52.319132,5.543937 52.319133,5.543937 52.319133,5.543937 52.319133,5.543937 52.319133,5.543937 52.319134,5.543937 52.319134,5.543937 52.319134,5.543937 52.319134,5.543937 52.319135,5.543936 52.319135,5.543936 52.319135,5.543936 52.319135,5.543936 52.319136,5.543936 52.319136,5.543936 52.319136,5.543936 52.319137,5.543936 52.319137,5.543936 52.319137,5.543936 52.319137,5.543936 52.319138,5.543936 52.319138,5.543936 52.319138,5.543936 52.319138,5.543936 52.319139,5.543936 52.319139,5.543936 52.319139,5.543936 52.319139,5.543936 52.31914,5.543936 52.31914,5.543936 52.31914,5.543936 52.319141,5.543936 52.319141,5.543936 52.319141,5.543936 52.319141,5.543936 52.319142,5.543936 52.319142,5.543936 52.319142,5.543936 52.319142,5.543936 52.319143,5.543936 52.319143,5.543936 52.319143,5.543936 52.319143,5.543936 52.319144,5.543936 52.319144,5.543936 52.319144,5.543936 52.319145,5.543936 52.319145,5.543936 52.319145,5.543936 52.319145,5.543938 52.319155,5.543929 52.319157,5.543922 52.319157,5.543929 52.319173,5.543947 52.319219,5.543955 52.319236,5.54397 52.31927,5.544025 52.319385,5.544097 52.319535,5.544139 52.319626,5.544169 52.319695,5.54418 52.319724,5.544223 52.319841,5.544267 52.319974,5.544294 52.320053,5.544327 52.320161,5.544355 52.320274,5.544363 52.32031,5.544365 52.320334,5.544371 52.320387,5.544376 52.320467,5.544376 52.320545,5.544372 52.32064,5.544358 52.320721,5.544348 52.320756,5.544317 52.320836,5.544295 52.32089,5.54426 52.320997,5.544232 52.321097,5.544207 52.321172,5.544195 52.321207,5.544172 52.321269,5.544145 52.321325,5.544141 52.321332,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544104 52.321387,5.544027 52.321501,5.543997 52.321559,5.543617 52.322357,5.543603 52.322397,5.543578 52.322484,5.543563 52.322552,5.543572 52.322553,5.543568 52.322568,5.543575 52.322575,5.543575 52.322575,5.543575 52.322575,5.543575 52.322575,5.543576 52.322576,5.543576 52.322576,5.543576 52.322576,5.543577 52.322576,5.543577 52.322577,5.543577 52.322577,5.543577 52.322577,5.543578 52.322577,5.543578 52.322577,5.543578 52.322578,5.543578 52.322578,5.543579 52.322578,5.543579 52.322578,5.543579 52.322579,5.54358 52.322579,5.54358 52.322579,5.54358 52.322579,5.543581 52.32258,5.543581 52.32258,5.543581 52.32258,5.543582 52.32258,5.543582 52.322581,5.543582 52.322581,5.543582 52.322581,5.543583 52.322581,5.543583 52.322581,5.543583 52.322582,5.543584 52.322582,5.543584 52.322582,5.543584 52.322582,5.543585 52.322582,5.543585 52.322583,5.543585 52.322583,5.543586 52.322583,5.543586 52.322583,5.543587 52.322584,5.543587 52.322584,5.543587 52.322584,5.543588 52.322584,5.543588 52.322584,5.543588 52.322585,5.543589 52.322585,5.543589 52.322585,5.543589 52.322585,5.54359 52.322585,5.54359 52.322586,5.543591 52.322586,5.543591 52.322586,5.543591 52.322586,5.543592 52.322586,5.543592 52.322586,5.543592 52.322587,5.543593 52.322587,5.543593 52.322587,5.543594 52.322587,5.543594 52.322587,5.543594 52.322587,5.543595 52.322588,5.543595 52.322588,5.543596 52.322588,5.543596 52.322588,5.543596 52.322588,5.543597 52.322588,5.543597 52.322589,5.543598 52.322589,5.543598 52.322589,5.543598 52.322589,5.543599 52.322589,5.543599 52.322589,5.5436 52.32259,5.5436 52.32259,5.543601 52.32259,5.543601 52.32259,5.543601 52.32259,5.543602 52.32259,5.543602 52.32259,5.543603 52.322591,5.543603 52.322591,5.543604 52.322591,5.543604 52.322591,5.543604 52.322591,5.543605 52.322591,5.543605 52.322591,5.543606 52.322591,5.543606 52.322592,5.543607 52.322592,5.543607 52.322592,5.543608 52.322592,5.543608 52.322592,5.543608 52.322592,5.543609 52.322592,5.543609 52.322592,5.54361 52.322592,5.54361 52.322593,5.543611 52.322593,5.543611 52.322593,5.543612 52.322593,5.543612 52.322593,5.543635 52.322597,5.543615 52.322638,5.543589 52.322634,5.543589 52.322634,5.543588 52.322634,5.543588 52.322634,5.543587 52.322634,5.543587 52.322634,5.543586 52.322634,5.543586 52.322633,5.543585 52.322633,5.543585 52.322633,5.543584 52.322633,5.543584 52.322633,5.543583 52.322633,5.543583 52.322633,5.543582 52.322633,5.543582 52.322633,5.543581 52.322633,5.543581 52.322633,5.54358 52.322633,5.543579 52.322633,5.543579 52.322633,5.543578 52.322633,5.543578 52.322633,5.543577 52.322633,5.543577 52.322633,5.543576 52.322633,5.543576 52.322633,5.543575 52.322633,5.543575 52.322633,5.543574 52.322633,5.543574 52.322633,5.543573 52.322633,5.543573 52.322633,5.543572 52.322633,5.543572 52.322633,5.543571 52.322633,5.54357 52.322633,5.54357 52.322633,5.543569 52.322633,5.543569 52.322633,5.543568 52.322633,5.543568 52.322633,5.543567 52.322633,5.543567 52.322633,5.543566 52.322633,5.543566 52.322633,5.543565 52.322633,5.543565 52.322633,5.543564 52.322633,5.543564 52.322633,5.543563 52.322633,5.543563 52.322633,5.543562 52.322633,5.543562 52.322633,5.543561 52.322633,5.54356 52.322633,5.54356 52.322633,5.543559 52.322634,5.543559 52.322634,5.543558 52.322634,5.543558 52.322634,5.543557 52.322634,5.543557 52.322634,5.543556 52.322634,5.543556 52.322634,5.543555 52.322634,5.543555 52.322634,5.543554 52.322634,5.543554 52.322634,5.543553 52.322634,5.543553 52.322635,5.543552 52.322635,5.543552 52.322635,5.543551 52.322635,5.543551 52.322635,5.54355 52.322635,5.54355 52.322635,5.543549 52.322635,5.543549 52.322635,5.543548 52.322636,5.543548 52.322636,5.543547 52.322636,5.543547 52.322636,5.543546 52.322636,5.543546 52.322636,5.543545 52.322636,5.543545 52.322636,5.543544 52.322637,5.543544 52.322637,5.543543 52.322637,5.543543 52.322637,5.543543 52.322637,5.543542 52.322637,5.543542 52.322637,5.543541 52.322638,5.543541 52.322638,5.54354 52.322638,5.54354 52.322638,5.543539 52.322638,5.543539 52.322638,5.543538 52.322639,5.543538 52.322639,5.54353 52.322653,5.543521 52.322652,5.54351 52.322669,5.543493 52.322693,5.543489 52.322697,5.543412 52.322804,5.543367 52.322881,5.5432 52.323233,5.543182 52.323273,5.54316 52.323333,5.543155 52.323351,5.543146 52.323378,5.54314 52.323393,5.543127 52.323426,5.543126 52.323427,5.543103 52.323462,5.543103 52.323463,5.543079 52.323495,5.543088 52.323498,5.543081 52.323505,5.543073 52.323513,5.543071 52.323515,5.542968 52.323625,5.542803 52.32372,5.54278 52.323721,5.542757 52.323724,5.542732 52.323728,5.542685 52.323739,5.542602 52.323758,5.542519 52.323777,5.542407 52.323796,5.542319 52.323809,5.542307 52.323811,5.542242 52.323824,5.542144 52.323843,5.541905 52.323889,5.541836 52.323903,5.541793 52.323911,5.541742 52.323921,5.541697 52.323926,5.541551 52.32396,5.541449 52.323991,5.541363 52.324022,5.541334 52.324033,5.541316 52.324041,5.54128 52.324054,5.54122 52.324086,5.541157 52.324126,5.541101 52.32417,5.541066 52.324204,5.540954 52.324345,5.54094 52.324371,5.540773 52.324719,5.540762 52.324753,5.540736 52.324846,5.540736 52.324923,5.540695 52.324988,5.540681 52.324992,5.540666 52.324997,5.540653 52.325002,5.540643 52.325007,5.540635 52.325011,5.540628 52.325024,5.540618 52.325022,5.540604 52.325038,5.540526 52.32517,5.540504 52.325212,5.540423 52.325385,5.540171 52.325912,5.540153 52.325962,5.540129 52.326051,5.540121 52.326079,5.540096 52.326134,5.540088 52.326151,5.54006 52.326198,5.540031 52.326244,5.540027 52.32625,5.539977 52.326327,5.539936 52.326404,5.53977 52.326756,5.539762 52.326778,5.539732 52.326887,5.539724 52.326914,5.539721 52.32692,5.539731 52.326922,5.539726 52.326934,5.539732 52.326945,5.53974 52.326955,5.539752 52.326965,5.539766 52.326974,5.539738 52.327035,5.539716 52.327038,5.539699 52.327042,5.539683 52.327048,5.539671 52.327053,5.539659 52.327059,5.53965 52.327073,5.53964 52.32707,5.539569 52.327182,5.539496 52.32733,5.53942 52.327508,5.53929 52.327839,5.53927 52.32796,5.539266 52.327988,5.539263 52.328003,5.539272 52.328003,5.539269 52.328018,5.53928 52.328037,5.539295 52.328052,5.539304 52.328059,5.539315 52.328065,5.539326 52.32807,5.539338 52.328074,5.539319 52.32812,5.539289 52.328123,5.539258 52.32813,5.539235 52.328141,5.539222 52.32815,5.539216 52.328163,5.539207 52.328162,5.539202 52.328173,5.539146 52.328306,5.539125 52.328374,5.539007 52.328879,5.539007 52.328881,5.538993 52.328955,5.538984 52.329001,5.538972 52.329094,5.539024 52.3291,5.539074 52.329105,5.539092 52.329101,5.539091 52.329113,5.539092 52.329128,5.539096 52.329143,5.539101 52.329155,5.539105 52.329163,5.539111 52.329172,5.539121 52.329184,5.539132 52.329194,5.539145 52.329204,5.539156 52.32921,5.539165 52.329214,5.539271 52.329233,5.539271 52.329233,5.53927 52.329233,5.53927 52.329233,5.53927 52.329233,5.539269 52.329233,5.539269 52.329233,5.539268 52.329233,5.539268 52.329233,5.539267 52.329233,5.539267 52.329233,5.539267 52.329233,5.539266 52.329233,5.539266 52.329233,5.539265 52.329233,5.539265 52.329233,5.539264 52.329233,5.539264 52.329233,5.539264 52.329233,5.539263 52.329233,5.539263 52.329233,5.539262 52.329233,5.539262 52.329233,5.539261 52.329233,5.539261 52.329233,5.539261 52.329233,5.53926 52.329233,5.53926 52.329233,5.539259 52.329233,5.539259 52.329233,5.539258 52.329233,5.539258 52.329233,5.539258 52.329233,5.539257 52.329233,5.539257 52.329234,5.539256 52.329234,5.539256 52.329234,5.539256 52.329234,5.539255 52.329234,5.539255 52.329234,5.539254 52.329234,5.539254 52.329234,5.539254 52.329234,5.539253 52.329234,5.539253 52.329234,5.539252 52.329235,5.539252 52.329235,5.539252 52.329235,5.539251 52.329235,5.539251 52.329235,5.53925 52.329235,5.53925 52.329235,5.53925 52.329235,5.539249 52.329236,5.539249 52.329236,5.539249 52.329236,5.539248 52.329236,5.539248 52.329236,5.539247 52.329236,5.539247 52.329236,5.539247 52.329237,5.539246 52.329237,5.539246 52.329237,5.539246 52.329237,5.539245 52.329237,5.539245 52.329237,5.539245 52.329238,5.539244 52.329238,5.539244 52.329238,5.539244 52.329238,5.539244 52.329238,5.539243 52.329239,5.539243 52.329239,5.539243 52.329239,5.539242 52.329239,5.539242 52.329239,5.539242 52.329239,5.539242 52.32924,5.539241 52.32924,5.539241 52.32924,5.539241 52.32924,5.53924 52.329241,5.53924 52.329241,5.53924 52.329241,5.53924 52.329241,5.53924 52.329241,5.539239 52.329242,5.539239 52.329242,5.539239 52.329242,5.539239 52.329242,5.539238 52.329243,5.539238 52.329243,5.539238 52.329243,5.539238 52.329243,5.539238 52.329244,5.539238 52.329244,5.539237 52.329244,5.539237 52.329244,5.539237 52.329245,5.539237 52.329245,5.539237 52.329245,5.539237 52.329245,5.539213 52.329293,5.539213 52.329293,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539213 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329294,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539214 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329295,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539215 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539216 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329296,5.539217 52.329297,5.539217 52.329297,5.539217 52.329297,5.539217 52.329297,5.539217 52.329297,5.539217 52.329297,5.539217 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539218 52.329297,5.539276 52.329306,5.539251 52.329367,5.539225 52.329364,5.539208 52.329361,5.539191 52.329358,5.539191 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.53919 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539189 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539188 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539187 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539186 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539185 52.329358,5.539184 52.329358,5.539184 52.329358,5.539184 52.329358,5.539184 52.329358,5.539184 52.329358,5.539184 52.329359,5.539184 52.329359,5.539184 52.329359,5.539184 52.329359,5.539184 52.329359,5.539184 52.329359,5.539184 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.329359,5.539183 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.32936,5.539182 52.329361,5.539182 52.329361,5.539181 52.329361,5.539181 52.329362,5.539181 52.329362,5.539181 52.329362,5.539181 52.329362,5.53918 52.329363,5.53918 52.329363,5.53918 52.329363,5.53918 52.329364,5.53918 52.329364,5.539179 52.329364,5.539179 52.329364,5.539179 52.329365,5.539179 52.329365,5.539179 52.329365,5.539178 52.329366,5.539178 52.329366,5.539178 52.329366,5.539178 52.329366,5.539177 52.329367,5.539177 52.329367,5.539177 52.329367,5.539177 52.329368,5.539176 52.329368,5.539176 52.329368,5.539176 52.329368,5.539176 52.329369,5.539176 52.329369,5.539175 52.329369,5.539175 52.32937,5.539175 52.32937,5.539175 52.32937,5.539174 52.32937,5.539174 52.329371,5.539174 52.329371,5.539174 52.329371,5.539173 52.329372,5.539173 52.329372,5.539173 52.329372,5.539173 52.329372,5.539172 52.329373,5.539172 52.329373,5.539172 52.329373,5.539171 52.329374,5.539171 52.329374,5.539171 52.329374,5.539171 52.329374,5.53917 52.329375,5.53917 52.329375,5.53917 52.329375,5.53917 52.329375,5.539169 52.329376,5.539169 52.329376,5.539169 52.329376,5.539168 52.329376,5.539168 52.329377,5.539168 52.329377,5.539168 52.329377,5.539167 52.329378,5.539167 52.329378,5.539167 52.329378,5.539166 52.329378,5.539166 52.329379,5.539166 52.329379,5.539166 52.329379,5.539165 52.329379,5.539165 52.32938,5.539165 52.32938,5.539164 52.32938,5.539164 52.32938,5.539164 52.329381,5.539163 52.329381,5.539163 52.329381,5.539163 52.329381,5.539162 52.329382,5.539162 52.329382,5.539162 52.329382,5.539162 52.329382,5.539161 52.329383,5.539161 52.329383,5.539161 52.329383,5.53916 52.329383,5.53916 52.329384,5.53916 52.329384,5.539159 52.329384,5.539159 52.329384,5.539159 52.329385,5.539158 52.329385,5.539158 52.329385,5.539158 52.329385,5.539157 52.329386,5.539157 52.329386,5.539157 52.329386,5.539156 52.329386,5.539156 52.329387,5.539156 52.329387,5.539155 52.329387,5.539155 52.329387,5.539155 52.329388,5.539155 52.329388,5.539154 52.329388,5.539154 52.329388,5.539153 52.329388,5.539153 52.329389,5.539153 52.329389,5.539152 52.329389,5.539152 52.32939,5.539152 52.32939,5.539151 52.32939,5.539151 52.329391,5.53915 52.329391,5.53915 52.329391,5.53915 52.329391,5.539149 52.329392,5.539149 52.329392,5.539149 52.329392,5.539148 52.329393,5.539148 52.329393,5.539147 52.329393,5.539147 52.329393,5.539147 52.329394,5.539146 52.329394,5.539146 52.329394,5.539145 52.329395,5.539145 52.329395,5.539145 52.329395,5.539144 52.329395,5.539144 52.329396,5.539144 52.329396,5.539143 52.329396,5.539143 52.329397,5.539142 52.329397,5.539142 52.329397,5.539142 52.329397,5.539141 52.329398,5.539141 52.329398,5.53914 52.329398,5.53914 52.329399,5.53914 52.329399,5.539139 52.329399,5.539139 52.329399,5.539138 52.3294,5.539138 52.3294,5.539138 52.3294,5.539137 52.329401,5.539137 52.329401,5.539136 52.329401,5.539136 52.329401,5.539136 52.329402,5.539135 52.329402,5.539135 52.329402,5.539134 52.329403,5.539134 52.329403,5.539134 52.329403,5.539133 52.329403,5.539133 52.329404,5.539132 52.329404,5.539132 52.329404,5.539131 52.329404,5.539131 52.329405,5.539131 52.329405,5.53913 52.329405,5.53913 52.329406,5.539129 52.329406,5.539129 52.329406,5.539129 52.329406,5.539128 52.329407,5.539128 52.329407,5.539127 52.329407,5.539127 52.329407,5.539127 52.329408,5.539126 52.329408,5.539126 52.329408,5.539125 52.329409,5.539125 52.329409,5.539124 52.329409,5.539124 52.329409,5.539124 52.32941,5.539123 52.32941,5.539123 52.32941,5.539122 52.32941,5.539122 52.329411,5.539121 52.329411,5.539121 52.329411,5.539121 52.329411,5.53912 52.329412,5.53912 52.329412,5.539119 52.329412,5.539119 52.329413,5.539118 52.329413,5.539118 52.329413,5.539118 52.329413,5.539117 52.329414,5.539117 52.329414,5.539116 52.329414,5.539116 52.329414,5.539115 52.329415,5.539115 52.329415,5.539114 52.329415,5.539114 52.329415,5.539114 52.329415,5.539114 52.329416,5.539113 52.329416,5.539113 52.329416,5.539113 52.329416,5.539112 52.329416,5.539112 52.329417,5.539111 52.329417,5.539111 52.329417,5.539111 52.329417,5.53911 52.329417,5.53911 52.329418,5.539109 52.329418,5.539109 52.329418,5.539109 52.329418,5.539108 52.329418,5.539108 52.329419,5.539107 52.329419,5.539107 52.329419,5.539107 52.329419,5.539106 52.329419,5.539106 52.32942,5.539105 52.32942,5.539105 52.32942,5.539105 52.32942,5.539104 52.32942,5.539104 52.329421,5.539103 52.329421,5.539103 52.329421,5.539103 52.329421,5.539102 52.329421,5.539102 52.329422,5.539101 52.329422,5.539101 52.329422,5.539101 52.329422,5.5391 52.329422,5.5391 52.329423,5.539099 52.329423,5.539099 52.329423,5.539099 52.329423,5.539098 52.329423,5.539098 52.329423,5.539097 52.329424,5.539097 52.329424,5.539096 52.329424,5.539096 52.329424,5.539096 52.329424,5.539095 52.329425,5.539095 52.329425,5.539094 52.329425,5.539094 52.329425,5.539094 52.329425,5.539093 52.329426,5.539093 52.329426,5.539092 52.329426,5.539092 52.329426,5.539091 52.329426,5.539091 52.329426,5.539091 52.329427,5.53909 52.329427,5.53909 52.329427,5.539089 52.329427,5.539089 52.329427,5.539089 52.329428,5.539088 52.329428,5.539088 52.329428,5.539087 52.329428,5.539087 52.329428,5.539086 52.329428,5.539086 52.329429,5.539086 52.329429,5.539085 52.329429,5.539085 52.329429,5.539084 52.329429,5.539084 52.329429,5.539083 52.32943,5.539083 52.32943,5.539083 52.32943,5.539082 52.32943,5.539082 52.32943,5.539081 52.32943,5.539081 52.329431,5.53908 52.329431,5.53908 52.329431,5.53908 52.329431,5.539079 52.329431,5.539079 52.329432,5.539078 52.329432,5.539078 52.329432,5.539077 52.329432,5.539077 52.329432,5.539077 52.329432,5.539076 52.329433,5.539076 52.329433,5.539075 52.329433,5.539075 52.329433,5.539074 52.329433,5.539074 52.329433,5.539073 52.329434,5.539073 52.329434,5.539073 52.329434,5.539072 52.329434,5.539072 52.329434,5.539071 52.329434,5.539071 52.329435,5.53907 52.329435,5.539069 52.329435,5.539069 52.329435,5.539068 52.329435,5.539068 52.329436,5.539067 52.329436,5.539066 52.329436,5.539066 52.329436,5.539065 52.329437,5.539065 52.329437,5.539064 52.329437,5.539063 52.329437,5.539063 52.329437,5.539062 52.329438,5.539062 52.329438,5.539061 52.329438,5.53906 52.329438,5.53906 52.329438,5.539059 52.329439,5.539058 52.329439,5.539058 52.329439,5.539057 52.329439,5.539057 52.329439,5.539056 52.32944,5.539055 52.32944,5.539055 52.32944,5.539054 52.32944,5.539054 52.32944,5.539053 52.329441,5.539052 52.329441,5.539052 52.329441,5.539051 52.329441,5.53905 52.329441,5.53905 52.329442,5.539049 52.329442,5.539049 52.329442,5.539048 52.329442,5.539047 52.329442,5.539047 52.329443,5.539046 52.329443,5.539046 52.329443,5.539045 52.329443,5.539044 52.329443,5.539044 52.329443,5.539043 52.329444,5.539042 52.329444,5.539042 52.329444,5.539041 52.329444,5.53904 52.329444,5.53904 52.329445,5.539039 52.329445,5.539039 52.329445,5.539038 52.329445,5.539037 52.329445,5.539037 52.329445,5.539036 52.329446,5.539035 52.329446,5.539035 52.329446,5.539034 52.329446,5.539034 52.329446,5.539033 52.329446,5.539032 52.329447,5.539032 52.329447,5.539031 52.329447,5.53903 52.329447,5.53903 52.329447,5.539029 52.329447,5.539028 52.329448,5.539028 52.329448,5.539027 52.329448,5.539026 52.329448,5.539026 52.329448,5.539025 52.329448,5.539025 52.329449,5.539024 52.329449,5.539023 52.329449,5.539023 52.329449,5.539022 52.329449,5.539021 52.329449,5.539021 52.329449,5.53902 52.32945,5.539019 52.32945,5.539019 52.32945,5.539018 52.32945,5.539017 52.32945,5.539017 52.32945,5.539016 52.32945,5.539015 52.329451,5.539015 52.329451,5.539014 52.329451,5.539014 52.329451,5.539013 52.329451,5.539012 52.329451,5.539012 52.329451,5.539012 52.329451,5.539011 52.329451,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.539011 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.53901 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539009 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539008 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539007 52.329452,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539006 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539005 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539004 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539003 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.539002 52.329453,5.538966 52.329461,5.538946 52.329462,5.538929 52.329461,5.538929 52.329461,5.538929 52.329461,5.538929 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538928 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329461,5.538927 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538926 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329462,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538925 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329463,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538924 52.329464,5.538907 52.329515,5.538903 52.329514,5.538812 52.329498,5.538813 52.329491,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329459,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329458,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.53882 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329457,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538819 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329456,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538818 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538817 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538816 52.329455,5.538797 52.329452,5.538793 52.329452,5.538793 52.329452,5.538793 52.329452,5.538793 52.329452,5.538792 52.329452,5.538792 52.329452,5.538792 52.329452,5.538792 52.329452,5.538792 52.329452,5.538791 52.329452,5.538791 52.329452,5.538791 52.329451,5.538791 52.329451,5.53879 52.329451,5.53879 52.329451,5.53879 52.329451,5.53879 52.329451,5.538789 52.329451,5.538789 52.329451,5.538789 52.329451,5.538789 52.329451,5.538789 52.329451,5.538788 52.329451,5.538788 52.329451,5.538788 52.329451,5.538788 52.329451,5.538787 52.329451,5.538787 52.329451,5.538787 52.329451,5.538787 52.32945,5.538786 52.32945,5.538786 52.32945,5.538786 52.32945,5.538786 52.32945,5.538786 52.32945,5.538785 52.32945,5.538785 52.32945,5.538785 52.32945,5.538785 52.32945,5.538784 52.32945,5.538784 52.32945,5.538784 52.32945,5.538784 52.32945,5.538783 52.32945,5.538783 52.32945,5.538783 52.329449,5.538783 52.329449,5.538783 52.329449,5.538782 52.329449,5.538782 52.329449,5.538782 52.329449,5.538782 52.329449,5.538781 52.329449,5.538781 52.329449,5.538781 52.329449,5.538781 52.329449,5.53878 52.329449,5.53878 52.329449,5.53878 52.329449,5.53878 52.329449,5.53878 52.329449,5.538779 52.329448,5.538779 52.329448,5.538779 52.329448,5.538779 52.329448,5.538778 52.329448,5.538778 52.329448,5.538778 52.329448,5.538778 52.329448,5.538778 52.329448,5.538777 52.329448,5.538777 52.329448,5.538777 52.329448,5.538777 52.329448,5.538776 52.329448,5.538776 52.329448,5.538776 52.329448,5.538776 52.329447,5.538775 52.329447,5.538775 52.329447,5.538775 52.329447,5.538775 52.329447,5.538775 52.329447,5.538774 52.329447,5.538774 52.329447,5.538774 52.329447,5.538774 52.329447,5.538773 52.329447,5.538773 52.329447,5.538773 52.329447,5.538773 52.329447,5.538773 52.329447,5.538772 52.329446,5.538772 52.329446,5.538772 52.329446,5.538772 52.329446,5.538771 52.329446,5.538771 52.329446,5.538771 52.329446,5.538771 52.329446,5.538771 52.329446,5.538771 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.53877 52.329446,5.538769 52.329446,5.538769 52.329446,5.538769 52.329446,5.538769 52.329446,5.538769 52.329445,5.538769 52.329445,5.538769 52.329445,5.538769 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538768 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538767 52.329445,5.538766 52.329445,5.538766 52.329445,5.538766 52.329445,5.538766 52.329445,5.538766 52.329445,5.538766 52.329444,5.538766 52.329444,5.538766 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538765 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538764 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329444,5.538763 52.329443,5.538763 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538762 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.538761 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329443,5.53876 52.329442,5.53876 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538759 52.329442,5.538756 52.329441,5.538754 52.329441,5.538752 52.32944,5.538749 52.329439,5.538747 52.329438,5.538745 52.329437,5.538743 52.329436,5.538741 52.329436,5.538738 52.329435,5.538736 52.329434,5.538734 52.329433,5.538732 52.329432,5.53873 52.329431,5.538727 52.32943,5.538725 52.329429,5.538723 52.329428,5.538721 52.329427,5.538719 52.329426,5.538717 52.329425,5.538715 52.329424,5.538713 52.329423,5.538711 52.329422,5.538709 52.329421,5.538707 52.32942,5.538705 52.329419,5.538703 52.329418,5.538701 52.329417,5.538699 52.329416,5.538697 52.329415,5.538695 52.329414,5.538693 52.329413,5.538691 52.329412,5.538689 52.32941,5.538687 52.329409,5.538686 52.329408,5.538684 52.329407,5.538682 52.329406,5.53868 52.329405,5.538678 52.329403,5.538677 52.329402,5.538675 52.329401,5.538673 52.3294,5.538672 52.329399,5.53867 52.329397,5.538668 52.329396,5.538667 52.329395,5.538665 52.329394,5.538663 52.329392,5.538662 52.329391,5.53866 52.32939,5.538659 52.329389,5.538657 52.329387,5.538655 52.329386,5.538654 52.329385,5.538652 52.329383,5.538651 52.329382,5.53865 52.329381,5.538648 52.329379,5.538647 52.329378,5.538645 52.329377,5.538644 52.329375,5.538643 52.329374,5.538641 52.329372,5.53864 52.329371,5.538639 52.32937,5.538637 52.329368,5.538636 52.329367,5.538635 52.329365,5.538634 52.329364,5.538632 52.329363,5.538631 52.329361,5.53863 52.32936,5.538629 52.329358,5.538628 52.329357,5.538627 52.329355,5.538626 52.329354,5.538625 52.329352,5.538623 52.329351,5.538622 52.329349,5.538621 52.329348,5.53862 52.329346,5.53862 52.329345,5.538619 52.329343,5.538618 52.329342,5.538617 52.32934,5.538616 52.329339,5.538615 52.329337,5.538614 52.329336,5.538613 52.329334,5.538613 52.329333,5.538612 52.329331,5.538611 52.32933,5.53861 52.329328,5.53861 52.329327,5.538609 52.329325,5.538608 52.329323,5.538608 52.329322,5.538607 52.32932,5.538607 52.329319,5.538607 52.329319,5.538591 52.329291,5.538591 52.329291,5.538591 52.329291,5.538591 52.329291,5.538591 52.32929,5.53859 52.32929,5.53859 52.32929,5.53859 52.329289,5.53859 52.329289,5.53859 52.329289,5.538589 52.329289,5.538589 52.329288,5.538589 52.329288,5.538589 52.329288,5.538589 52.329287,5.538589 52.329287,5.538588 52.329287,5.538588 52.329286,5.538588 52.329286,5.538588 52.329286,5.538587 52.329286,5.538587 52.329285,5.538587 52.329285,5.538587 52.329285,5.538587 52.329284,5.538586 52.329284,5.538586 52.329284,5.538586 52.329284,5.538586 52.329283,5.538585 52.329283,5.538585 52.329283,5.538585 52.329282,5.538585 52.329282,5.538584 52.329282,5.538584 52.329282,5.538584 52.329281,5.538584 52.329281,5.538583 52.329281,5.538583 52.32928,5.538583 52.32928,5.538583 52.32928,5.538582 52.32928,5.538582 52.329279,5.538582 52.329279,5.538581 52.329279,5.538581 52.329278,5.538581 52.329278,5.538581 52.329278,5.53858 52.329278,5.53858 52.329277,5.53858 52.329277,5.538579 52.329277,5.538579 52.329277,5.538579 52.329276,5.538578 52.329276,5.538578 52.329276,5.538578 52.329276,5.538577 52.329275,5.538577 52.329275,5.538577 52.329275,5.538577 52.329275,5.538576 52.329274,5.538576 52.329274,5.538576 52.329274,5.538575 52.329274,5.538575 52.329273,5.538575 52.329273,5.538574 52.329273,5.538574 52.329273,5.538573 52.329272,5.538573 52.329272,5.538573 52.329272,5.538572 52.329272,5.538572 52.329271,5.538572 52.329271,5.538571 52.329271,5.538571 52.329271,5.538571 52.32927,5.53857 52.32927,5.53857 52.32927,5.53857 52.32927,5.538569 52.329269,5.538569 52.329269,5.538568 52.329269,5.538568 52.329269,5.538568 52.329269,5.538567 52.329268,5.538567 52.329268,5.538566 52.329268,5.538566 52.329268,5.538566 52.329267,5.538565 52.329267,5.538565 52.329267,5.538564 52.329267,5.538564 52.329267,5.538564 52.329266,5.538563 52.329266,5.538563 52.329266,5.538562 52.329266,5.538562 52.329266,5.538562 52.329265,5.538562 52.329265,5.538481 52.32924,5.538428 52.329227,5.538295 52.329187,5.538167 52.329146,5.538061 52.329117,5.537958 52.329085,5.537914 52.32907,5.537869 52.329053,5.537848 52.329046,5.53768 52.328976,5.537666 52.32897,5.537597 52.328942,5.537584 52.328936,5.537547 52.328921,5.537147 52.328744,5.537004 52.328681,5.536447 52.328432,5.536369 52.328398,5.536369 52.328398,5.536368 52.328398,5.536367 52.328397,5.536366 52.328397,5.536365 52.328396,5.536363 52.328396,5.536362 52.328395,5.536361 52.328395,5.53636 52.328394,5.536358 52.328394,5.536357 52.328393,5.536356 52.328393,5.536355 52.328392,5.536354 52.328392,5.536352 52.328391,5.536351 52.328391,5.53635 52.32839,5.536348 52.32839,5.536347 52.328389,5.536346 52.328389,5.536345 52.328388,5.536343 52.328388,5.536342 52.328387,5.536341 52.328387,5.536339 52.328387,5.536338 52.328386,5.536337 52.328386,5.536336 52.328385,5.536334 52.328385,5.536333 52.328384,5.536332 52.328384,5.53633 52.328384,5.536329 52.328383,5.536328 52.328383,5.536326 52.328382,5.536325 52.328382,5.536324 52.328381,5.536322 52.328381,5.536321 52.328381,5.53632 52.32838,5.536318 52.32838,5.536317 52.32838,5.536316 52.328379,5.536314 52.328379,5.536313 52.328378,5.536311 52.328378,5.53631 52.328378,5.536309 52.328377,5.536307 52.328377,5.536306 52.328377,5.536305 52.328376,5.536303 52.328376,5.536302 52.328376,5.5363 52.328375,5.536299 52.328375,5.536298 52.328375,5.536296 52.328374,5.536295 52.328374,5.536293 52.328374,5.536292 52.328373,5.536291 52.328373,5.536289 52.328373,5.536288 52.328373,5.536286 52.328372,5.536285 52.328372,5.536283 52.328372,5.536282 52.328371,5.536281 52.328371,5.536279 52.328371,5.536278 52.328371,5.536276 52.32837,5.536275 52.32837,5.536273 52.32837,5.536272 52.32837,5.536271 52.328369,5.536269 52.328369,5.536268 52.328369,5.536266 52.328369,5.536265 52.328369,5.536263 52.328368,5.536262 52.328368,5.53626 52.328368,5.536259 52.328368,5.536257 52.328368,5.536256 52.328367,5.536255 52.328367,5.536253 52.328367,5.536252 52.328367,5.53625 52.328367,5.536249 52.328367,5.536247 52.328366,5.536246 52.328366,5.536244 52.328366,5.536243 52.328366,5.536241 52.328366,5.53624 52.328366,5.536238 52.328366,5.536237 52.328365,5.536235 52.328365,5.536234 52.328365,5.536234 52.328365,5.536232 52.328365,5.536231 52.328365,5.53623 52.328365,5.536228 52.328364,5.536227 52.328364,5.536225 52.328364,5.536224 52.328364,5.536222 52.328363,5.536221 52.328363,5.53622 52.328363,5.536218 52.328363,5.536217 52.328362,5.536215 52.328362,5.536214 52.328362,5.536212 52.328362,5.536211 52.328361,5.53621 52.328361,5.536208 52.328361,5.536207 52.328361,5.536205 52.32836,5.536204 52.32836,5.536202 52.32836,5.536201 52.328359,5.5362 52.328359,5.536198 52.328359,5.536197 52.328358,5.536195 52.328358,5.536194 52.328358,5.536193 52.328357,5.536191 52.328357,5.53619 52.328357,5.536189 52.328356,5.536187 52.328356,5.536186 52.328356,5.536184 52.328355,5.536183 52.328355,5.536182 52.328355,5.53618 52.328354,5.536179 52.328354,5.536178 52.328354,5.536176 52.328353,5.536175 52.328353,5.536173 52.328353,5.536172 52.328352,5.536171 52.328352,5.536169 52.328351,5.536168 52.328351,5.536167 52.328351,5.536165 52.32835,5.536164 52.32835,5.536163 52.32835,5.536161 52.328349,5.53616 52.328349,5.536159 52.328348,5.536157 52.328348,5.536156 52.328347,5.536155 52.328347,5.536153 52.328347,5.536152 52.328346,5.536151 52.328346,5.536149 52.328345,5.536148 52.328345,5.536147 52.328344,5.536146 52.328344,5.536144 52.328344,5.536143 52.328343,5.536142 52.328343,5.53614 52.328342,5.536139 52.328342,5.536138 52.328341,5.536137 52.328341,5.536135 52.32834,5.536134 52.32834,5.536133 52.328339,5.536132 52.328339,5.53613 52.328338,5.536129 52.328338,5.536128 52.328337,5.536127 52.328337,5.536125 52.328336,5.536124 52.328336,5.536123 52.328335,5.536122 52.328335,5.53612 52.328334,5.536119 52.328334,5.536118 52.328333,5.536117 52.328333,5.536115 52.328332,5.536114 52.328332,5.536113 52.328331,5.536112 52.328331,5.536111 52.32833,5.536109 52.32833,5.536108 52.328329,5.536107 52.328328,5.536106 52.328328,5.536105 52.328327,5.536104 52.328327,5.536102 52.328326,5.536102 52.328326,5.535958 52.328264,5.535954 52.328265,5.535947 52.328267,5.535937 52.328272,5.535929 52.328278,5.535928 52.328278,5.535848 52.328248,5.535855 52.328234,5.535855 52.328234,5.535855 52.328233,5.535855 52.328233,5.535855 52.328233,5.535856 52.328233,5.535856 52.328233,5.535856 52.328233,5.535856 52.328233,5.535856 52.328233,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328232,5.535856 52.328231,5.535856 52.328231,5.535856 52.328231,5.535856 52.328231,5.535856 52.328231,5.535857 52.328231,5.535857 52.328231,5.535857 52.328231,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.32823,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328229,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328228,5.535857 52.328227,5.535857 52.328227,5.535857 52.328227,5.535857 52.328227,5.535857 52.328227,5.535857 52.328227,5.535858 52.328227,5.535858 52.328227,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328226,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328225,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328224,5.535858 52.328223,5.535858 52.328223,5.535857 52.328223,5.535857 52.328223,5.535857 52.328223,5.535857 52.328223,5.535857 52.328223,5.535857 52.328223,5.535857 52.328222,5.535857 52.328222,5.535857 52.328222,5.535857 52.328222,5.535857 52.328222,5.535857 52.328222,5.535857 52.328222,5.535857 52.328221,5.535857 52.328221,5.535857 52.328221,5.535857 52.328221,5.535857 52.328221,5.535844 52.328216,5.535758 52.328178,5.535709 52.328157,5.53558 52.328101,5.535573 52.328098,5.535536 52.328082,5.53553 52.32808,5.535386 52.328017,5.535373 52.328013,5.535241 52.327968,5.534915 52.327865,5.534848 52.327846,5.534351 52.327704,5.533897 52.327592,5.533835 52.327577,5.533632 52.327532,5.533424 52.327489,5.53338 52.327481,5.532914 52.327393,5.532827 52.327377,5.532792 52.327366,5.532746 52.327351,5.532744 52.327354,5.532708 52.327343,5.532697 52.32734,5.532696 52.327339,5.532637 52.327329,5.532573 52.327317,5.532622 52.327213,5.532687 52.327224,5.532745 52.327235,5.532748 52.327235,5.532768 52.327236,5.532775 52.327219,5.532787 52.327214,5.532797 52.327212,5.532807 52.327211,5.53282 52.327212,5.533251 52.32729,5.533278 52.327296,5.533306 52.327302,5.533334 52.327307,5.533362 52.327313,5.53339 52.327319,5.533417 52.327325,5.533573 52.327384,5.533828 52.327436,5.534313 52.327555,5.535243 52.327824,5.535359 52.327839,5.535427 52.327863,5.535822 52.327993,5.536024 52.328089,5.536024 52.328089,5.536024 52.328089,5.536024 52.328089,5.536024 52.32809,5.536024 52.32809,5.536024 52.32809,5.536024 52.328091,5.536024 52.328091,5.536024 52.328091,5.536025 52.328092,5.536025 52.328092,5.536025 52.328092,5.536025 52.328093,5.536025 52.328093,5.536025 52.328093,5.536025 52.328094,5.536025 52.328094,5.536025 52.328094,5.536026 52.328095,5.536026 52.328095,5.536026 52.328095,5.536026 52.328096,5.536026 52.328096,5.536026 52.328096,5.536026 52.328096,5.536026 52.328097,5.536027 52.328097,5.536027 52.328097,5.536027 52.328098,5.536027 52.328098,5.536027 52.328098,5.536027 52.328099,5.536028 52.328099,5.536028 52.328099,5.536028 52.3281,5.536028 52.3281,5.536028 52.3281,5.536029 52.3281,5.536029 52.328101,5.536029 52.328101,5.536029 52.328101,5.536029 52.328102,5.53603 52.328102,5.53603 52.328102,5.53603 52.328103,5.53603 52.328103,5.53603 52.328103,5.536031 52.328104,5.536031 52.328104,5.536031 52.328104,5.536031 52.328104,5.536032 52.328105,5.536032 52.328105,5.536032 52.328105,5.536032 52.328106,5.536033 52.328106,5.536033 52.328106,5.536033 52.328106,5.536033 52.328107,5.536034 52.328107,5.536034 52.328107,5.536034 52.328108,5.536034 52.328108,5.536035 52.328108,5.536035 52.328108,5.536035 52.328109,5.536036 52.328109,5.536036 52.328109,5.536036 52.328109,5.536037 52.32811,5.536037 52.32811,5.536037 52.32811,5.536037 52.328111,5.536038 52.328111,5.536038 52.328111,5.536038 52.328111,5.536039 52.328112,5.536039 52.328112,5.536039 52.328112,5.53604 52.328112,5.53604 52.328113,5.53604 52.328113,5.536041 52.328113,5.536041 52.328113,5.536041 52.328114,5.536042 52.328114,5.536042 52.328114,5.536042 52.328114,5.536043 52.328115,5.536043 52.328115,5.536043 52.328115,5.536044 52.328115,5.536044 52.328116,5.536045 52.328116,5.536045 52.328116,5.536045 52.328116,5.536046 52.328117,5.536046 52.328117,5.536046 52.328117,5.536047 52.328117,5.536047 52.328117,5.536045 52.328119,5.536054 52.328122,5.536049 52.328127,5.53611 52.328153,5.536139 52.328165,5.536532 52.328329,5.536769 52.328437,5.536861 52.328479,5.537961 52.328964,5.538052 52.328994,5.538214 52.329049,5.538222 52.329051,5.538341 52.329089,5.538475 52.329129,5.538516 52.32914,5.538524 52.329143,5.538646 52.329176,5.538668 52.329155,5.5387 52.329136,5.538744 52.329115,5.538784 52.329103,5.538829 52.329094,5.538856 52.329091,5.538883 52.32909,5.538938 52.328813,5.538949 52.328761,5.539008 52.328479,5.539013 52.32846,5.539045 52.328332,5.53906 52.328276,5.53907 52.328213,5.539078 52.328148,5.539088 52.328093,5.539098 52.328056,5.539104 52.328031,5.539117 52.327996,5.539131 52.327966,5.539145 52.327937,5.539192 52.327853,5.539204 52.327829,5.539232 52.327748,5.539298 52.327581,5.539336 52.327489,5.539405 52.32733,5.539464 52.327202,5.539498 52.32711,5.539537 52.326988,5.539573 52.326908,5.539585 52.326889,5.539601 52.326864,5.53967 52.326763,5.539689 52.326729,5.53986 52.326369,5.539912 52.326228,5.539916 52.326217,5.53992 52.326207,5.539916 52.326193,5.539905 52.326173,5.539888 52.326158,5.53987 52.326149,5.539899 52.326086,5.539899 52.326086,5.539908 52.326085,5.539919 52.326082,5.539939 52.326076,5.539948 52.326072,5.539966 52.326062,5.539971 52.326052,5.53998 52.326054,5.539981 52.326052,5.540001 52.326027,5.540067 52.325928,5.540087 52.325894,5.540417 52.325203,5.540446 52.32514,5.54049 52.325008,5.540492 52.325001,5.540482 52.325,5.540489 52.324979,5.540486 52.324971,5.540482 52.324963,5.540478 52.324958,5.540471 52.324951,5.540464 52.324946,5.540455 52.32494,5.54045 52.324938,5.540445 52.324936,5.540472 52.324882,5.540484 52.324882,5.540512 52.324874,5.540537 52.324862,5.540546 52.324845,5.540556 52.324847,5.540562 52.324837,5.540574 52.324819,5.540642 52.32472,5.540663 52.324679,5.540769 52.324462,5.540893 52.324205,5.540893 52.324205,5.540893 52.324204,5.540893 52.324204,5.540893 52.324203,5.540894 52.324203,5.540894 52.324202,5.540894 52.324202,5.540894 52.324201,5.540895 52.3242,5.540895 52.3242,5.540895 52.324199,5.540896 52.324199,5.540896 52.324198,5.540896 52.324198,5.540896 52.324197,5.540897 52.324197,5.540897 52.324196,5.540897 52.324196,5.540897 52.324195,5.540898 52.324195,5.540898 52.324194,5.540898 52.324194,5.540899 52.324193,5.540899 52.324192,5.540899 52.324192,5.540899 52.324191,5.5409 52.324191,5.5409 52.32419,5.5409 52.32419,5.5409 52.324189,5.540901 52.324189,5.540901 52.324188,5.540901 52.324188,5.540902 52.324187,5.540902 52.324187,5.540902 52.324186,5.540903 52.324186,5.540903 52.324185,5.540903 52.324184,5.540903 52.324184,5.540904 52.324183,5.540904 52.324183,5.540904 52.324182,5.540905 52.324182,5.540905 52.324181,5.540905 52.324181,5.540905 52.32418,5.540906 52.32418,5.540906 52.324179,5.540906 52.324179,5.540907 52.324178,5.540907 52.324178,5.540907 52.324177,5.540908 52.324177,5.540908 52.324176,5.540908 52.324175,5.540909 52.324175,5.540909 52.324174,5.540909 52.324174,5.540909 52.324173,5.54091 52.324173,5.54091 52.324172,5.54091 52.324172,5.540911 52.324171,5.540911 52.324171,5.540911 52.32417,5.540912 52.32417,5.540912 52.324169,5.540912 52.324169,5.540913 52.324168,5.540913 52.324168,5.540913 52.324167,5.540914 52.324167,5.540914 52.324166,5.540914 52.324166,5.540915 52.324165,5.540915 52.324164,5.540915 52.324164,5.540916 52.324163,5.540916 52.324163,5.540916 52.324162,5.540917 52.324162,5.540917 52.324161,5.540917 52.324161,5.540918 52.32416,5.540918 52.32416,5.540918 52.324159,5.540919 52.324159,5.540919 52.324158,5.540919 52.324158,5.54092 52.324157,5.54092 52.324157,5.54092 52.324156,5.540921 52.324156,5.540921 52.324155,5.540921 52.324155,5.540922 52.324154,5.540922 52.324154,5.540922 52.324153,5.540923 52.324152,5.540923 52.324152,5.540913 52.32415,5.54093 52.324129,5.540933 52.324122,5.540933 52.324112,5.540932 52.324106,5.540932 52.324106,5.540881 52.324081,5.54092 52.324007,5.540932 52.323998,5.540941 52.323992,5.54095 52.323986,5.540963 52.323978,5.540975 52.323974,5.540986 52.323969,5.540999 52.323966,5.541019 52.323961,5.541083 52.323944,5.541101 52.32394,5.541212 52.323912,5.54158 52.323833,5.541587 52.323829,5.541684 52.32381,5.541734 52.323801,5.541777 52.323792,5.541847 52.323779,5.542087 52.323732,5.542184 52.323713,5.542251 52.3237,5.542331 52.323684,5.542332 52.323684,5.54234 52.323683,5.542354 52.323678,5.5425 52.323638,5.542521 52.32363,5.542614 52.323591,5.542674 52.323561,5.542755 52.323512,5.542827 52.323459,5.542882 52.323408,5.542905 52.323387,5.542908 52.323384,5.542928 52.323366,5.542932 52.323362,5.542945 52.323349,5.542967 52.32332,5.54302 52.323225,5.543196 52.322858,5.543199 52.322848,5.543199 52.322848,5.5432 52.322847,5.5432 52.322846,5.543201 52.322845,5.543201 52.322844,5.543201 52.322843,5.543202 52.322842,5.543202 52.322841,5.543203 52.32284,5.543203 52.322839,5.543203 52.322838,5.543204 52.322837,5.543204 52.322836,5.543204 52.322835,5.543205 52.322834,5.543205 52.322833,5.543205 52.322832,5.543206 52.322831,5.543206 52.32283,5.543206 52.322829,5.543207 52.322828,5.543207 52.322827,5.543207 52.322826,5.543207 52.322825,5.543208 52.322824,5.543208 52.322823,5.543208 52.322822,5.543208 52.322821,5.543209 52.32282,5.543209 52.322819,5.543209 52.322818,5.543209 52.322817,5.543209 52.322816,5.543209 52.322815,5.54321 52.322814,5.54321 52.322813,5.54321 52.322812,5.54321 52.322811,5.54321 52.32281,5.54321 52.322809,5.54321 52.322808,5.54321 52.322807,5.54321 52.322806,5.54321 52.322805,5.54321 52.322804,5.54321 52.322803,5.54321 52.322802,5.543211 52.322801,5.543211 52.3228,5.543211 52.322799,5.543211 52.322798,5.54321 52.322797,5.54321 52.322796,5.54321 52.322795,5.54321 52.322794,5.54321 52.322793,5.54321 52.322792,5.54321 52.322791,5.54321 52.32279,5.54321 52.322789,5.54321 52.322788,5.54321 52.322788,5.54321 52.322787,5.543209 52.322786,5.543209 52.322785,5.543209 52.322784,5.543209 52.322783,5.543209 52.322782,5.543209 52.322781,5.543208 52.32278,5.543208 52.322779,5.543208 52.322778,5.543208 52.322777,5.543208 52.322776,5.543207 52.322775,5.543207 52.322774,5.543207 52.322773,5.543207 52.322772,5.543206 52.322771,5.543206 52.32277,5.543206 52.322769,5.543205 52.322768,5.543205 52.322767,5.543205 52.322766,5.543204 52.322765,5.543204 52.322764,5.543204 52.322763,5.543203 52.322762,5.543203 52.322761,5.543202 52.32276,5.543202 52.322759,5.543202 52.322758,5.543201 52.322757,5.543201 52.322756,5.5432 52.322755,5.5432 52.322754,5.5432 52.322753,5.543199 52.322752,5.543199 52.322751,5.543198 52.32275,5.543198 52.32275,5.543244 52.322742,5.543342 52.322532,5.543342 52.322532,5.543343 52.322532,5.543343 52.322532,5.543344 52.322532,5.543344 52.322532,5.543345 52.322532,5.543345 52.322532,5.543346 52.322532,5.543346 52.322532,5.543347 52.322532,5.543347 52.322532,5.543348 52.322533,5.543348 52.322533,5.543349 52.322533,5.543349 52.322533,5.54335 52.322533,5.54335 52.322533,5.543351 52.322533,5.543351 52.322533,5.543352 52.322533,5.543352 52.322533,5.543353 52.322533,5.543353 52.322533,5.543354 52.322533,5.543354 52.322533,5.543355 52.322533,5.543355 52.322533,5.543356 52.322533,5.543356 52.322533,5.543357 52.322533,5.543357 52.322533,5.543358 52.322533,5.543358 52.322533,5.543359 52.322533,5.543359 52.322533,5.54336 52.322533,5.54336 52.322533,5.543361 52.322533,5.543361 52.322533,5.543362 52.322533,5.543362 52.322533,5.543363 52.322533,5.543363 52.322533,5.543364 52.322533,5.543364 52.322533,5.543365 52.322533,5.543365 52.322533,5.543366 52.322533,5.543366 52.322533,5.543367 52.322533,5.543367 52.322533,5.543368 52.322533,5.543368 52.322533,5.543369 52.322532,5.543369 52.322532,5.54337 52.322532,5.54337 52.322532,5.543371 52.322532,5.543371 52.322532,5.543372 52.322532,5.543372 52.322532,5.543373 52.322532,5.543373 52.322532,5.543374 52.322532,5.543374 52.322532,5.543375 52.322532,5.543375 52.322531,5.543376 52.322531,5.543376 52.322531,5.543377 52.322531,5.543377 52.322531,5.543378 52.322531,5.543378 52.322531,5.543379 52.322531,5.543379 52.322531,5.54338 52.322531,5.54338 52.32253,5.543381 52.32253,5.543381 52.32253,5.543382 52.32253,5.543382 52.32253,5.543383 52.32253,5.543383 52.32253,5.543383 52.322529,5.543384 52.322529,5.543384 52.322529,5.543385 52.322529,5.543385 52.322529,5.543386 52.322529,5.543386 52.322529,5.543387 52.322528,5.543387 52.322528,5.543387 52.322528,5.543388 52.322528,5.543388 52.322528,5.543389 52.322528,5.543389 52.322527,5.54339 52.322527,5.54339 52.322527,5.54339 52.322527,5.54339 52.322527,5.543396 52.322519,5.543405 52.322521,5.543517 52.322359,5.543524 52.322349,5.543525 52.322346,5.543557 52.322289,5.543608 52.322183,5.543692 52.322007,5.543776 52.321831,5.543859 52.321655,5.543914 52.321541,5.543932 52.321497,5.543938 52.321478,5.543981 52.321348,5.543983 52.321342,5.543984 52.321339,5.543993 52.321312,5.543999 52.321296,5.544031 52.321203,5.544032 52.321199,5.544043 52.321177,5.544068 52.321136,5.544108 52.321065,5.544123 52.321036,5.544158 52.320944,5.544159 52.320941,5.544185 52.320832,5.54419 52.320799,5.544196 52.320752,5.544198 52.32073,5.544134 52.320721,5.544085 52.320714,5.544089 52.320685,5.544078 52.320586,5.544071 52.320534,5.544064 52.32048,5.54405 52.320401,5.544044 52.320358,5.544044 52.320356,5.544038 52.320315,5.544035 52.320299,5.544014 52.320159,5.544012 52.320143,5.543984 52.319999,5.543943 52.319826,5.54393 52.31979,5.543906 52.319746,5.543902 52.319737,5.543609 52.319198,5.543611 52.319197,5.5436 52.319178,5.54357 52.319126,5.543555 52.319097,5.543431 52.318863,5.543428 52.318862,5.543408 52.318826,5.543352 52.318721,5.543348 52.318714,5.543341 52.3187,5.543332 52.318684,5.543334 52.318682,5.543333 52.31868,5.543266 52.318559,5.543261 52.318545,5.543261 52.318538,5.543261 52.318531,5.543265 52.31852,5.543271 52.318512,5.543278 52.318504,5.543287 52.318496,5.5433 52.318488,5.543307 52.318485,5.543322 52.31848,5.543376 52.318469,5.543394 52.318465,5.543373 52.318426,5.543357 52.318396,5.543322 52.318325,5.543289 52.31825,5.543226 52.318102,5.543174 52.317992,5.543136 52.317921,5.543044 52.317746,5.542951 52.31757,5.542858 52.317395,5.542766 52.317221,5.542673 52.317046,5.542581 52.316871,5.542539 52.316791,5.542524 52.316766,5.542482 52.316706,5.542449 52.316663,5.542399 52.316604,5.54231 52.316481,5.542279 52.316437,5.542279 52.316437,5.542277 52.316436,5.542276 52.316434,5.542275 52.316433,5.542274 52.316431,5.542273 52.316429,5.542271 52.316428,5.54227 52.316426,5.542269 52.316425,5.542268 52.316423,5.542266 52.316421,5.542265 52.31642,5.542264 52.316418,5.542263 52.316417,5.542261 52.316415,5.54226 52.316413,5.542259 52.316412,5.542258 52.31641,5.542256 52.316409,5.542255 52.316407,5.542254 52.316405,5.542252 52.316404,5.542251 52.316402,5.54225 52.316401,5.542248 52.316399,5.542247 52.316397,5.542246 52.316396,5.542244 52.316394,5.542243 52.316393,5.542242 52.316391,5.54224 52.31639,5.542239 52.316388,5.542238 52.316386,5.542236 52.316385,5.542235 52.316383,5.542234 52.316382,5.542232 52.31638,5.542231 52.316379,5.542229 52.316377,5.542228 52.316376,5.542227 52.316374,5.542225 52.316372,5.542224 52.316371,5.542222 52.316369,5.542221 52.316368,5.54222 52.316366,5.542218 52.316365,5.542217 52.316363,5.542215 52.316362,5.542214 52.31636,5.542213 52.316358,5.542211 52.316357,5.54221 52.316355,5.542208 52.316354,5.542207 52.316352,5.542205 52.316351,5.542204 52.316349,5.542202 52.316348,5.542201 52.316346,5.542199 52.316345,5.542198 52.316343,5.542196 52.316342,5.542195 52.31634,5.542193 52.316339,5.542192 52.316337,5.54219 52.316336,5.542189 52.316334,5.542187 52.316333,5.542186 52.316331,5.542184 52.31633,5.542183 52.316328,5.542181 52.316327,5.54218 52.316325,5.542178 52.316324,5.542176 52.316322,5.542175 52.316321,5.542173 52.316319,5.542172 52.316318,5.54217 52.316316,5.542169 52.316315,5.542167 52.316313,5.542165 52.316312,5.542164 52.31631,5.542162 52.316309,5.542161 52.316307,5.542159 52.316306,5.542157 52.316304,5.542156 52.316303,5.542154 52.316301,5.542153 52.3163,5.542151 52.316298,5.542149 52.316297,5.542148 52.316295,5.542146 52.316294,5.542144 52.316292,5.542143 52.316291,5.542141 52.31629,5.542139 52.316288,5.542138 52.316287,5.542136 52.316285,5.542136 52.316285,5.542053 52.316224,5.541947 52.316154,5.541947 52.316154,5.541945 52.316152,5.541943 52.316151,5.541942 52.31615,5.54194 52.316149,5.541938 52.316148,5.541936 52.316147,5.541935 52.316146,5.541933 52.316145,5.541931 52.316144,5.541929 52.316143,5.541928 52.316142,5.541926 52.316141,5.541924 52.31614,5.541922 52.316139,5.541921 52.316138,5.541919 52.316137,5.541917 52.316136,5.541915 52.316135,5.541914 52.316134,5.541912 52.316133,5.54191 52.316132,5.541908 52.316131,5.541907 52.31613,5.541905 52.316128,5.541903 52.316127,5.541901 52.316126,5.541899 52.316125,5.541898 52.316124,5.541896 52.316123,5.541894 52.316122,5.541892 52.316121,5.541891 52.31612,5.541889 52.316119,5.541887 52.316118,5.541885 52.316117,5.541883 52.316116,5.541882 52.316115,5.54188 52.316114,5.541878 52.316113,5.541876 52.316112,5.541874 52.316111,5.541873 52.31611,5.541871 52.316109,5.541869 52.316108,5.541867 52.316107,5.541865 52.316106,5.541864 52.316105,5.541862 52.316104,5.54186 52.316103,5.541858 52.316102,5.541856 52.316101,5.541855 52.3161,5.541853 52.316099,5.541851 52.316098,5.541849 52.316097,5.541847 52.316096,5.541845 52.316095,5.541844 52.316094,5.541842 52.316093,5.54184 52.316092,5.541838 52.316091,5.541836 52.31609,5.541834 52.316089,5.541833 52.316088,5.541831 52.316087,5.541829 52.316086,5.541827 52.316085,5.541825 52.316084,5.541823 52.316083,5.541822 52.316082,5.54182 52.316081,5.541818 52.31608,5.541816 52.316079,5.541814 52.316078,5.541812 52.316077,5.54181 52.316077,5.541809 52.316076,5.541807 52.316075,5.541805 52.316074,5.541803 52.316073,5.541801 52.316072,5.541799 52.316071,5.541797 52.31607,5.541796 52.316069,5.541794 52.316068,5.541792 52.316067,5.54179 52.316066,5.541788 52.316065,5.541786 52.316064,5.541784 52.316063,5.541782 52.316062,5.541781 52.316061,5.541779 52.31606,5.541777 52.316059,5.541775 52.316058,5.541773 52.316057,5.541771 52.316056,5.541769 52.316055,5.541767 52.316055,5.541767 52.316055,5.541767 52.316054,5.541767 52.316054,5.541767 52.316054,5.541767 52.316054,5.541766 52.316054,5.541766 52.316054,5.541766 52.316054,5.541766 52.316054,5.541766 52.316054,5.541766 52.316054,5.541765 52.316054,5.541765 52.316054,5.541765 52.316053,5.541765 52.316053,5.541765 52.316053,5.541765 52.316053,5.541765 52.316053,5.541764 52.316053,5.541764 52.316053,5.541764 52.316053,5.541764 52.316053,5.541764 52.316053,5.541764 52.316053,5.541763 52.316053,5.541763 52.316053,5.541763 52.316052,5.541763 52.316052,5.541763 52.316052,5.541763 52.316052,5.541762 52.316052,5.541762 52.316052,5.541762 52.316052,5.541762 52.316052,5.541762 52.316052,5.541762 52.316052,5.541761 52.316052,5.541761 52.316052,5.541761 52.316051,5.541761 52.316051,5.541761 52.316051,5.541761 52.316051,5.54176 52.316051,5.54176 52.316051,5.54176 52.316051,5.54176 52.316051,5.54176 52.316051,5.54176 52.316051,5.541759 52.316051,5.541759 52.316051,5.541759 52.316051,5.541759 52.31605,5.541759 52.31605,5.541759 52.31605,5.541759 52.31605,5.541758 52.31605,5.541758 52.31605,5.541758 52.31605,5.541758 52.31605,5.541758 52.31605,5.541758 52.31605,5.541757 52.31605,5.541757 52.31605,5.541757 52.316049,5.541757 52.316049,5.541757 52.316049,5.541757 52.316049,5.541756 52.316049,5.541756 52.316049,5.541756 52.316049,5.541756 52.316049,5.541756 52.316049,5.541756 52.316049,5.541755 52.316049,5.541755 52.316049,5.541755 52.316049,5.541755 52.316048,5.541755 52.316048,5.541755 52.316048,5.541754 52.316048,5.541754 52.316048,5.541754 52.316048,5.541754 52.316048,5.541754 52.316048,5.541754 52.316048,5.541753 52.316048,5.541753 52.316048,5.541753 52.316048,5.541753 52.316047,5.541753 52.316047,5.541753 52.316047,5.541753 52.316047,5.541752 52.316047,5.541752 52.316047,5.541752 52.316047,5.541752 52.316047,5.541752 52.316047,5.541752 52.316047,5.541751 52.316047,5.541751 52.316047,5.541751 52.316047,5.541751 52.316047,5.541751 52.316046,5.541751 52.316046,5.54175 52.316046,5.54175 52.316046,5.54175 52.316046,5.54175 52.316046,5.54175 52.316046,5.54175 52.316046,5.541749 52.316046,5.541749 52.316046,5.541749 52.316045,5.541749 52.316045,5.541749 52.316045,5.541748 52.316045,5.541748 52.316045,5.541748 52.316045,5.541748 52.316045,5.541748 52.316045,5.541747 52.316045,5.541747 52.316045,5.541747 52.316045,5.541747 52.316044,5.541747 52.316044,5.541746 52.316044,5.541746 52.316044,5.541746 52.316044,5.541746 52.316044,5.541746 52.316044,5.541746 52.316044,5.541745 52.316044,5.541745 52.316044,5.541745 52.316044,5.541745 52.316043,5.541745 52.316043,5.541744 52.316043,5.541744 52.316043,5.541744 52.316043,5.541744 52.316043,5.541744 52.316043,5.541743 52.316043,5.541743 52.316043,5.541743 52.316043,5.541743 52.316043,5.541743 52.316042,5.541742 52.316042,5.541742 52.316042,5.541742 52.316042,5.541742 52.316042,5.541742 52.316042,5.541742 52.316042,5.541741 52.316042,5.541741 52.316042,5.541741 52.316042,5.541741 52.316042,5.541741 52.316041,5.54174 52.316041,5.54174 52.316041,5.54174 52.316041,5.54174 52.316041,5.54174 52.316041,5.541739 52.316041,5.541739 52.316041,5.541739 52.316041,5.541739 52.316041,5.541739 52.31604,5.541738 52.31604,5.541738 52.31604,5.541738 52.31604,5.541738 52.31604,5.541738 52.31604,5.541738 52.31604,5.541737 52.31604,5.541737 52.31604,5.541737 52.31604,5.541737 52.31604,5.541737 52.316039,5.541736 52.316039,5.541736 52.316039,5.541736 52.316039,5.541736 52.316039,5.541736 52.316039,5.541735 52.316039,5.541735 52.316039,5.541735 52.316039,5.541735 52.316039,5.541735 52.316039,5.541734 52.316038,5.541734 52.316038,5.541734 52.316038,5.541734 52.316038,5.541734 52.316038,5.541734 52.316038,5.541733 52.316038,5.541733 52.316038,5.541733 52.316038,5.541733 52.316038,5.541733 52.316038,5.541732 52.316037,5.541732 52.316037,5.541656 52.316005,5.541656 52.316005,5.541648 52.316001,5.541639 52.315998,5.541631 52.315994,5.541622 52.31599,5.541613 52.315987,5.541605 52.315983,5.541596 52.31598,5.541587 52.315976,5.541579 52.315973,5.54157 52.31597,5.541561 52.315966,5.541552 52.315963,5.541543 52.315959,5.541535 52.315956,5.541526 52.315953,5.541517 52.31595,5.541508 52.315946,5.541499 52.315943,5.54149 52.31594,5.541481 52.315937,5.541472 52.315934,5.541463 52.315931,5.541453 52.315927,5.541444 52.315924,5.541435 52.315921,5.541426 52.315918,5.541417 52.315915,5.541408 52.315913,5.541398 52.31591,5.541389 52.315907,5.54138 52.315904,5.54137 52.315901,5.541361 52.315898,5.541352 52.315896,5.541342 52.315893,5.541333 52.31589,5.541324 52.315887,5.541314 52.315885,5.541305 52.315882,5.541295 52.31588,5.541286 52.315877,5.541276 52.315874,5.541266 52.315872,5.541257 52.31587,5.541247 52.315867,5.541238 52.315865,5.541228 52.315862,5.541218 52.31586,5.541209 52.315858,5.541199 52.315855,5.541189 52.315853,5.54118 52.315851,5.54117 52.315849,5.54116 52.315846,5.54115 52.315844,5.54114 52.315842,5.541131 52.31584,5.541121 52.315838,5.541111 52.315836,5.541101 52.315834,5.541091 52.315832,5.541081 52.31583,5.541071 52.315828,5.541061 52.315826,5.541051 52.315825,5.541042 52.315823,5.541032 52.315821,5.541022 52.315819,5.541012 52.315817,5.541002 52.315816,5.540992 52.315814,5.540981 52.315812,5.540971 52.315811,5.540961 52.315809,5.540951 52.315808,5.540941 52.315806,5.540931 52.315805,5.540921 52.315803,5.540911 52.315802,5.540901 52.315801,5.54089 52.315799,5.54088 52.315798,5.54087 52.315797,5.54086 52.315795,5.54085 52.315794,5.54084 52.315793,5.540829 52.315792,5.540819 52.315791,5.540809 52.31579,5.540799 52.315788,5.540788 52.315787,5.540778 52.315786,5.540768 52.315785,5.540758 52.315784,5.540747 52.315784,5.540737 52.315783,5.540727 52.315782,5.540716 52.315781,5.540706 52.31578,5.540706 52.31578,5.540697 52.315779,5.540687 52.315779,5.540677 52.315778,5.540668 52.315777,5.540658 52.315777,5.540649 52.315776,5.540639 52.315775,5.540629 52.315775,5.54062 52.315774,5.54061 52.315774,5.540601 52.315773,5.540591 52.315773,5.540581 52.315772,5.540572 52.315772,5.540562 52.315771,5.540553 52.315771,5.540543 52.315771,5.540533 52.31577,5.540524 52.31577,5.540514 52.31577,5.540505 52.31577,5.540495 52.315769,5.540485 52.315769,5.540476 52.315769,5.540466 52.315769,5.540456 52.315769,5.540447 52.315769,5.540437 52.315769,5.540427 52.315769,5.540418 52.315769,5.540408 52.315769,5.540399 52.315769,5.540389 52.315769,5.540379 52.315769,5.54037 52.315769,5.54036 52.315769,5.54035 52.31577,5.540341 52.31577,5.540331 52.31577,5.540321 52.31577,5.540312 52.315771,5.540302 52.315771,5.540293 52.315771,5.540283 52.315772,5.540273 52.315772,5.540264 52.315773,5.540254 52.315773,5.540245 52.315774,5.540235 52.315774,5.540225 52.315775,5.540216 52.315775,5.540206 52.315776,5.540197 52.315776,5.540187 52.315777,5.540177 52.315778,5.540168 52.315778,5.540158 52.315779,5.540149 52.31578,5.540139 52.315781,5.54013 52.315782,5.54012 52.315782,5.540111 52.315783,5.540101 52.315784,5.540092 52.315785,5.540082 52.315786,5.540073 52.315787,5.540063 52.315788,5.540054 52.315789,5.540044 52.31579,5.540035 52.315791,5.540025 52.315792,5.540016 52.315793,5.540006 52.315795,5.539997 52.315796,5.539987 52.315797,5.539978 52.315798,5.539969 52.3158,5.539959 52.315801,5.53995 52.315802,5.53994 52.315804,5.539931 52.315805,5.539922 52.315806,5.539912 52.315808,5.539903 52.315809,5.539894 52.315811,5.539884 52.315812,5.539875 52.315814,5.539866 52.315815,5.539856 52.315817,5.539847 52.315819,5.539838 52.31582,5.539829 52.315822,5.539819 52.315824,5.53981 52.315825,5.539801 52.315827,5.539792 52.315829,5.539783 52.315831,5.539773 52.315832,5.539764 52.315834,5.539764 52.315834,5.537484 52.316289,5.537431 52.3163,5.537424 52.316301,5.537382 52.31631,5.537375 52.316311,5.536845 52.316414,5.536634 52.316453,5.536419 52.316486,5.536205 52.316513,5.53605 52.316528,5.535533 52.316574,5.535522 52.316576,5.535512 52.31658,5.535176 52.316611,5.535131 52.31661,5.534889 52.316633,5.534785 52.316645,5.534741 52.316651,5.534704 52.316657,5.534622 52.316672,5.534588 52.316682,5.534578 52.316686,5.534521 52.316711,5.534521 52.316711,5.534521 52.316712,5.534521 52.316712,5.534521 52.316712,5.53452 52.316712,5.53452 52.316712,5.53452 52.316712,5.53452 52.316712,5.53452 52.316712,5.53452 52.316712,5.53452 52.316712,5.534519 52.316712,5.534519 52.316712,5.534519 52.316713,5.534519 52.316713,5.534519 52.316713,5.534519 52.316713,5.534519 52.316713,5.534518 52.316713,5.534518 52.316713,5.534518 52.316713,5.534518 52.316713,5.534518 52.316713,5.534518 52.316713,5.534518 52.316714,5.534517 52.316714,5.534517 52.316714,5.534517 52.316714,5.534517 52.316714,5.534517 52.316714,5.534517 52.316714,5.534517 52.316714,5.534516 52.316714,5.534516 52.316714,5.534516 52.316714,5.534516 52.316715,5.534516 52.316715,5.534516 52.316715,5.534516 52.316715,5.534515 52.316715,5.534515 52.316715,5.534515 52.316715,5.534515 52.316715,5.534515 52.316715,5.534515 52.316715,5.534515 52.316716,5.534515 52.316716,5.534514 52.316716,5.534514 52.316716,5.534514 52.316716,5.534514 52.316716,5.534514 52.316716,5.534514 52.316716,5.534514 52.316716,5.534513 52.316716,5.534513 52.316716,5.534513 52.316717,5.534513 52.316717,5.534513 52.316717,5.534513 52.316717,5.534513 52.316717,5.534513 52.316717,5.534512 52.316717,5.534512 52.316717,5.534512 52.316717,5.534512 52.316717,5.534512 52.316718,5.534512 52.316718,5.534512 52.316718,5.534512 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316718,5.534511 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.53451 52.316719,5.534509 52.316719,5.534509 52.31672,5.534509 52.31672,5.534509 52.31672,5.534509 52.31672,5.534509 52.31672,5.534509 52.31672,5.534509 52.31672,5.534508 52.31672,5.534508 52.31672,5.534508 52.31672,5.534508 52.316721,5.534508 52.316721,5.534508 52.316721,5.534508 52.316721,5.534507 52.316721,5.534507 52.316722,5.534506 52.316722,5.534505 52.316723,5.534505 52.316723,5.534504 52.316724,5.534503 52.316725,5.534503 52.316725,5.534502 52.316726,5.534502 52.316726,5.534501 52.316727,5.534501 52.316727,5.5345 52.316728,5.5345 52.316729,5.534499 52.316729,5.534498 52.31673,5.534498 52.31673,5.534497 52.316731,5.534497 52.316731,5.534496 52.316732,5.534496 52.316733,5.534495 52.316733,5.534495 52.316734,5.534494 52.316734,5.534494 52.316735,5.534494 52.316736,5.534493 52.316736,5.534493 52.316737,5.534492 52.316737,5.534492 52.316738,5.534491 52.316739,5.534491 52.316739,5.534491 52.31674,5.53449 52.31674,5.53449 52.316741,5.534489 52.316742,5.534489 52.316742,5.534489 52.316743,5.534488 52.316744,5.534488 52.316744,5.534488 52.316745,5.534487 52.316745,5.534487 52.316746,5.534487 52.316747,5.534486 52.316747,5.534486 52.316748,5.534486 52.316749,5.534485 52.316749,5.534485 52.31675,5.534485 52.316751,5.534485 52.316751,5.534484 52.316752,5.534484 52.316752,5.534484 52.316753,5.534484 52.316754,5.534484 52.316754,5.534483 52.316755,5.534483 52.316756,5.534483 52.316756,5.534483 52.316757,5.534483 52.316758,5.534482 52.316758,5.534482 52.316759,5.534482 52.31676,5.534482 52.31676,5.534482 52.316761,5.534482 52.316762,5.534482 52.316762,5.534481 52.316763,5.534481 52.316764,5.534481 52.316764,5.534481 52.316765,5.534481 52.316766,5.534481 52.316766,5.534481 52.316767,5.534481 52.316768,5.534481 52.316768,5.534481 52.316769,5.534481 52.31677,5.534481 52.31677,5.534481 52.316771,5.534481 52.316772,5.534481 52.316772,5.534481 52.316773,5.534481 52.316774,5.534481 52.316774,5.534481 52.316775,5.534481 52.316775,5.534481 52.316776,5.534481 52.316777,5.534481 52.316777,5.534481 52.316778,5.534482 52.316779,5.534482 52.316779,5.534482 52.31678,5.534482 52.316781,5.534482 52.316781,5.534482 52.316782,5.534482 52.316783,5.534482 52.316783,5.534484 52.316791,5.534484 52.31686,5.534476 52.316933,5.534469 52.316981,5.534439 52.31709,5.534374 52.317229,5.534367 52.317231,5.534339 52.317324,5.534296 52.317465,5.534293 52.317484,5.534273 52.317555,5.534287 52.317594,5.534294 52.317609,5.534303 52.317626,5.53431 52.317636,5.534312 52.317638,5.534323 52.317649,5.534351 52.317668,5.534355 52.317671,5.534405 52.317691,5.534447 52.317702,5.534488 52.317709,5.534706 52.317747,5.534689 52.317783,5.534443 52.317742,5.534393 52.317741,5.534335 52.317748,5.534326 52.317751,5.534325 52.317751,5.534317 52.317753,5.534291 52.317761,5.534275 52.317768,5.534257 52.317778,5.534228 52.317799,5.534184 52.317836,5.534177 52.317858,5.53414 52.317961,5.533828 52.318952,5.533787 52.319094,5.53377 52.319185,5.533714 52.319339,5.533666 52.319431,5.533656 52.319452,5.533634 52.319485,5.533642 52.319487,5.533616 52.319526,5.533616 52.319526,5.533617 52.319526,5.533617 52.319527,5.533617 52.319528,5.533618 52.319528,5.533618 52.319529,5.533618 52.319529,5.533619 52.31953,5.533619 52.319531,5.533619 52.319531,5.53362 52.319532,5.53362 52.319532,5.53362 52.319533,5.533621 52.319533,5.533621 52.319534,5.533622 52.319535,5.533622 52.319535,5.533622 52.319536,5.533623 52.319536,5.533623 52.319537,5.533623 52.319537,5.533624 52.319538,5.533624 52.319539,5.533625 52.319539,5.533625 52.31954,5.533625 52.31954,5.533626 52.319541,5.533626 52.319541,5.533627 52.319542,5.533627 52.319543,5.533627 52.319543,5.533628 52.319544,5.533628 52.319544,5.533629 52.319545,5.533629 52.319545,5.53363 52.319546,5.53363 52.319546,5.533631 52.319547,5.533631 52.319548,5.533632 52.319548,5.533632 52.319549,5.533632 52.319549,5.533633 52.31955,5.533633 52.31955,5.533634 52.319551,5.533634 52.319551,5.533635 52.319552,5.533635 52.319552,5.533636 52.319553,5.533636 52.319553,5.533637 52.319554,5.533637 52.319555,5.533638 52.319555,5.533638 52.319556,5.533639 52.319556,5.533639 52.319557,5.53364 52.319557,5.533641 52.319558,5.533641 52.319558,5.533642 52.319559,5.533642 52.319559,5.533643 52.31956,5.533643 52.31956,5.533644 52.319561,5.533644 52.319561,5.533645 52.319562,5.533646 52.319562,5.533646 52.319563,5.533647 52.319563,5.533647 52.319564,5.533648 52.319564,5.533648 52.319565,5.533649 52.319565,5.53365 52.319566,5.53365 52.319566,5.533651 52.319567,5.533651 52.319567,5.533652 52.319568,5.533653 52.319568,5.533653 52.319569,5.533654 52.319569,5.533654 52.31957,5.533655 52.31957,5.533656 52.319571,5.533656 52.319571,5.533657 52.319572,5.533658 52.319572,5.533658 52.319573,5.533659 52.319573,5.53366 52.319574,5.53366 52.319574,5.533661 52.319575,5.533662 52.319575,5.533662 52.319576,5.533663 52.319576,5.533664 52.319576,5.533664 52.319577,5.533665 52.319577,5.533666 52.319578,5.533666 52.319578,5.533666 52.319578,5.53362 52.319642,5.53362 52.319642,5.533619 52.319642,5.533618 52.319642,5.533617 52.319642,5.533616 52.319642,5.533615 52.319642,5.533614 52.319642,5.533613 52.319642,5.533612 52.319642,5.533611 52.319642,5.53361 52.319642,5.533609 52.319642,5.533608 52.319642,5.533607 52.319642,5.533606 52.319642,5.533605 52.319642,5.533604 52.319642,5.533603 52.319642,5.533602 52.319642,5.533601 52.319642,5.5336 52.319642,5.533599 52.319642,5.533598 52.319642,5.533597 52.319642,5.533596 52.319642,5.533595 52.319642,5.533594 52.319642,5.533593 52.319642,5.533592 52.319642,5.533591 52.319642,5.53359 52.319642,5.533589 52.319642,5.533588 52.319642,5.533587 52.319642,5.533586 52.319642,5.533585 52.319642,5.533584 52.319642,5.533583 52.319642,5.533582 52.319642,5.533581 52.319642,5.53358 52.319642,5.533579 52.319642,5.533578 52.319643,5.533577 52.319643,5.533576 52.319643,5.533575 52.319643,5.533574 52.319643,5.533573 52.319643,5.533572 52.319643,5.533571 52.319643,5.53357 52.319643,5.533569 52.319643,5.533568 52.319643,5.533568 52.319644,5.533567 52.319644,5.533566 52.319644,5.533565 52.319644,5.533564 52.319644,5.533563 52.319644,5.533562 52.319644,5.533561 52.319644,5.53356 52.319644,5.533559 52.319645,5.533558 52.319645,5.533557 52.319645,5.533556 52.319645,5.533555 52.319645,5.533554 52.319645,5.533553 52.319645,5.533552 52.319646,5.533551 52.319646,5.53355 52.319646,5.533549 52.319646,5.533548 52.319646,5.533547 52.319646,5.533546 52.319647,5.533545 52.319647,5.533544 52.319647,5.533543 52.319647,5.533542 52.319647,5.533541 52.319647,5.53354 52.319648,5.53354 52.319648,5.533539 52.319648,5.533538 52.319648,5.533537 52.319648,5.533536 52.319649,5.533535 52.319649,5.533534 52.319649,5.533533 52.319649,5.533532 52.319649,5.533531 52.31965,5.53353 52.31965,5.533529 52.31965,5.533528 52.31965,5.533527 52.319651,5.533526 52.319651,5.533526 52.319651,5.533525 52.319651,5.533524 52.319652,5.533524 52.319652,5.533488 52.319697,5.533479 52.319694,5.533446 52.319732,5.533419 52.319762,5.533387 52.31982,5.533366 52.319859,5.533256 52.319951,5.533177 52.319973,5.533135 52.320005,5.532911 52.320157,5.532154 52.320647,5.53197 52.320776,5.53187 52.320859,5.531708 52.321022,5.531623 52.321125,5.531489 52.32134,5.531466 52.321385,5.531168 52.322014,5.531132 52.322091,5.53113 52.322096,5.531117 52.322122,5.531117 52.322122,5.531117 52.322123,5.531117 52.322124,5.531117 52.322125,5.531116 52.322126,5.531116 52.322127,5.531116 52.322128,5.531116 52.322129,5.531115 52.32213,5.531115 52.322131,5.531115 52.322132,5.531115 52.322133,5.531115 52.322134,5.531115 52.322135,5.531115 52.322136,5.531115 52.322137,5.531115 52.322138,5.531115 52.322138,5.531115 52.322139,5.531115 52.32214,5.531115 52.322141,5.531115 52.322142,5.531115 52.322143,5.531115 52.322144,5.531116 52.322145,5.531116 52.322146,5.531116 52.322147,5.531116 52.322148,5.531116 52.322149,5.531117 52.32215,5.531117 52.322151,5.531117 52.322152,5.531118 52.322153,5.531118 52.322154,5.531118 52.322155,5.531119 52.322156,5.531119 52.322156,5.53112 52.322157,5.53112 52.322158,5.531121 52.322159,5.531121 52.32216,5.531122 52.322161,5.531122 52.322162,5.531123 52.322163,5.531123 52.322164,5.531124 52.322165,5.531124 52.322165,5.531125 52.322166,5.531126 52.322167,5.531126 52.322168,5.531127 52.322169,5.531128 52.32217,5.531129 52.322171,5.531129 52.322171,5.53113 52.322172,5.531131 52.322173,5.531132 52.322174,5.531133 52.322175,5.531133 52.322176,5.531134 52.322176,5.531135 52.322177,5.531136 52.322178,5.531137 52.322179,5.531138 52.32218,5.531139 52.32218,5.53114 52.322181,5.531141 52.322182,5.531142 52.322183,5.531143 52.322183,5.531144 52.322184,5.531145 52.322185,5.531146 52.322185,5.531147 52.322186,5.531148 52.322187,5.531149 52.322187,5.53115 52.322188,5.531151 52.322189,5.531152 52.322189,5.531154 52.32219,5.531155 52.322191,5.531156 52.322191,5.531157 52.322192,5.531158 52.322193,5.53116 52.322193,5.531161 52.322194,5.531162 52.322194,5.531163 52.322195,5.531165 52.322195,5.531166 52.322196,5.531167 52.322197,5.531169 52.322197,5.53117 52.322198,5.531171 52.322198,5.531173 52.322199,5.531174 52.322199,5.531175 52.322199,5.531177 52.3222,5.531178 52.3222,5.53118 52.322201,5.531181 52.322201,5.531181 52.322201,5.53114 52.322287,5.531134 52.322286,5.531134 52.322286,5.531133 52.322286,5.531132 52.322286,5.531131 52.322286,5.53113 52.322286,5.531129 52.322286,5.531128 52.322286,5.531127 52.322286,5.531126 52.322286,5.531125 52.322286,5.531124 52.322286,5.531123 52.322286,5.531122 52.322286,5.531121 52.322286,5.53112 52.322286,5.531119 52.322286,5.531119 52.322286,5.531118 52.322286,5.531117 52.322286,5.531116 52.322286,5.531115 52.322286,5.531114 52.322286,5.531113 52.322286,5.531112 52.322287,5.531111 52.322287,5.53111 52.322287,5.531109 52.322287,5.531108 52.322287,5.531107 52.322287,5.531106 52.322287,5.531105 52.322287,5.531104 52.322287,5.531103 52.322287,5.531102 52.322288,5.531102 52.322288,5.531101 52.322288,5.5311 52.322288,5.531099 52.322288,5.531098 52.322288,5.531097 52.322288,5.531096 52.322288,5.531095 52.322289,5.531094 52.322289,5.531093 52.322289,5.531092 52.322289,5.531091 52.322289,5.531091 52.322289,5.53109 52.32229,5.531089 52.32229,5.531088 52.32229,5.531087 52.32229,5.531086 52.32229,5.531085 52.322291,5.531084 52.322291,5.531083 52.322291,5.531083 52.322291,5.531082 52.322292,5.531081 52.322292,5.53108 52.322292,5.531079 52.322292,5.531078 52.322292,5.531077 52.322293,5.531076 52.322293,5.531076 52.322293,5.531075 52.322294,5.531074 52.322294,5.531073 52.322294,5.531072 52.322294,5.531071 52.322295,5.531071 52.322295,5.53107 52.322295,5.531069 52.322295,5.531068 52.322296,5.531067 52.322296,5.531066 52.322296,5.531066 52.322297,5.531065 52.322297,5.531064 52.322297,5.531063 52.322298,5.531062 52.322298,5.531062 52.322298,5.531061 52.322299,5.53106 52.322299,5.531059 52.322299,5.531059 52.3223,5.531058 52.3223,5.531057 52.3223,5.531056 52.322301,5.531055 52.322301,5.531055 52.322301,5.531054 52.322302,5.531053 52.322302,5.531053 52.322303,5.531052 52.322303,5.531051 52.322303,5.53105 52.322304,5.53105 52.322304,5.531049 52.322304,5.531048 52.322305,5.531048 52.322305)),((5.543265 52.31852,5.54227 52.316624,5.542252 52.316589,5.542217 52.316546,5.542192 52.316516,5.542149 52.316467,5.542113 52.316432,5.542066 52.316391,5.542015 52.316351,5.541957 52.316308,5.541897 52.316265,5.541828 52.316218,5.54176 52.316174,5.541694 52.316134,5.541631 52.316101,5.541613 52.316092,5.541638 52.316085,5.541622 52.316077,5.541767 52.316055,5.541767 52.316055,5.541769 52.316055,5.541771 52.316056,5.541773 52.316057,5.541775 52.316058,5.541777 52.316059,5.541779 52.31606,5.541781 52.316061,5.541782 52.316062,5.541784 52.316063,5.541786 52.316064,5.541788 52.316065,5.54179 52.316066,5.541792 52.316067,5.541794 52.316068,5.541796 52.316069,5.541797 52.31607,5.541799 52.316071,5.541801 52.316072,5.541803 52.316073,5.541805 52.316074,5.541807 52.316075,5.541809 52.316076,5.54181 52.316077,5.541812 52.316077,5.541814 52.316078,5.541816 52.316079,5.541818 52.31608,5.54182 52.316081,5.541822 52.316082,5.541823 52.316083,5.541825 52.316084,5.541827 52.316085,5.541829 52.316086,5.541831 52.316087,5.541833 52.316088,5.541834 52.316089,5.541836 52.31609,5.541838 52.316091,5.54184 52.316092,5.541842 52.316093,5.541844 52.316094,5.541845 52.316095,5.541847 52.316096,5.541849 52.316097,5.541851 52.316098,5.541853 52.316099,5.541855 52.3161,5.541856 52.316101,5.541858 52.316102,5.54186 52.316103,5.541862 52.316104,5.541864 52.316105,5.541865 52.316106,5.541867 52.316107,5.541869 52.316108,5.541871 52.316109,5.541873 52.31611,5.541874 52.316111,5.541876 52.316112,5.541878 52.316113,5.54188 52.316114,5.541882 52.316115,5.541883 52.316116,5.541885 52.316117,5.541887 52.316118,5.541889 52.316119,5.541891 52.31612,5.541892 52.316121,5.541894 52.316122,5.541896 52.316123,5.541898 52.316124,5.541899 52.316125,5.541901 52.316126,5.541903 52.316127,5.541905 52.316128,5.541907 52.31613,5.541908 52.316131,5.54191 52.316132,5.541912 52.316133,5.541914 52.316134,5.541915 52.316135,5.541917 52.316136,5.541919 52.316137,5.541921 52.316138,5.541922 52.316139,5.541924 52.31614,5.541926 52.316141,5.541928 52.316142,5.541929 52.316143,5.541931 52.316144,5.541933 52.316145,5.541935 52.316146,5.541936 52.316147,5.541938 52.316148,5.54194 52.316149,5.541942 52.31615,5.541943 52.316151,5.541945 52.316152,5.541947 52.316154,5.541947 52.316154,5.542053 52.316224,5.542136 52.316285,5.542136 52.316285,5.542138 52.316287,5.542139 52.316288,5.542141 52.31629,5.542143 52.316291,5.542144 52.316292,5.542146 52.316294,5.542148 52.316295,5.542149 52.316297,5.542151 52.316298,5.542153 52.3163,5.542154 52.316301,5.542156 52.316303,5.542157 52.316304,5.542159 52.316306,5.542161 52.316307,5.542162 52.316309,5.542164 52.31631,5.542165 52.316312,5.542167 52.316313,5.542169 52.316315,5.54217 52.316316,5.542172 52.316318,5.542173 52.316319,5.542175 52.316321,5.542176 52.316322,5.542178 52.316324,5.54218 52.316325,5.542181 52.316327,5.542183 52.316328,5.542184 52.31633,5.542186 52.316331,5.542187 52.316333,5.542189 52.316334,5.54219 52.316336,5.542192 52.316337,5.542193 52.316339,5.542195 52.31634,5.542196 52.316342,5.542198 52.316343,5.542199 52.316345,5.542201 52.316346,5.542202 52.316348,5.542204 52.316349,5.542205 52.316351,5.542207 52.316352,5.542208 52.316354,5.54221 52.316355,5.542211 52.316357,5.542213 52.316358,5.542214 52.31636,5.542215 52.316362,5.542217 52.316363,5.542218 52.316365,5.54222 52.316366,5.542221 52.316368,5.542222 52.316369,5.542224 52.316371,5.542225 52.316372,5.542227 52.316374,5.542228 52.316376,5.542229 52.316377,5.542231 52.316379,5.542232 52.31638,5.542234 52.316382,5.542235 52.316383,5.542236 52.316385,5.542238 52.316386,5.542239 52.316388,5.54224 52.31639,5.542242 52.316391,5.542243 52.316393,5.542244 52.316394,5.542246 52.316396,5.542247 52.316397,5.542248 52.316399,5.54225 52.316401,5.542251 52.316402,5.542252 52.316404,5.542254 52.316405,5.542255 52.316407,5.542256 52.316409,5.542258 52.31641,5.542259 52.316412,5.54226 52.316413,5.542261 52.316415,5.542263 52.316417,5.542264 52.316418,5.542265 52.31642,5.542266 52.316421,5.542268 52.316423,5.542269 52.316425,5.54227 52.316426,5.542271 52.316428,5.542273 52.316429,5.542274 52.316431,5.542275 52.316433,5.542276 52.316434,5.542277 52.316436,5.542279 52.316437,5.542279 52.316437,5.54231 52.316481,5.542399 52.316604,5.542449 52.316663,5.542482 52.316706,5.542524 52.316766,5.542539 52.316791,5.542581 52.316871,5.542673 52.317046,5.542766 52.317221,5.542858 52.317395,5.542951 52.31757,5.543044 52.317746,5.543136 52.317921,5.543174 52.317992,5.543226 52.318102,5.543289 52.31825,5.543322 52.318325,5.543357 52.318396,5.543373 52.318426,5.543394 52.318465,5.543376 52.318469,5.543322 52.31848,5.543307 52.318485,5.5433 52.318488,5.543287 52.318496,5.543278 52.318504,5.543271 52.318512,5.543265 52.31852)),((5.542344 52.319859,5.542941 52.319971,5.542962 52.32001,5.542473 52.320105,5.542344 52.319859)),((5.542921 52.319702,5.542771 52.319417,5.542777 52.319416,5.542819 52.319407,5.543358 52.319303,5.543508 52.319586,5.542921 52.319702)),((5.543635 52.322597,5.543612 52.322593,5.543612 52.322593,5.543611 52.322593,5.543611 52.322593,5.54361 52.322593,5.54361 52.322592,5.543609 52.322592,5.543609 52.322592,5.543608 52.322592,5.543608 52.322592,5.543608 52.322592,5.543607 52.322592,5.543607 52.322592,5.543606 52.322592,5.543606 52.322591,5.543605 52.322591,5.543605 52.322591,5.543604 52.322591,5.543604 52.322591,5.543604 52.322591,5.543603 52.322591,5.543603 52.322591,5.543602 52.32259,5.543602 52.32259,5.543601 52.32259,5.543601 52.32259,5.543601 52.32259,5.5436 52.32259,5.5436 52.32259,5.543599 52.322589,5.543599 52.322589,5.543598 52.322589,5.543598 52.322589,5.543598 52.322589,5.543597 52.322589,5.543597 52.322588,5.543596 52.322588,5.543596 52.322588,5.543596 52.322588,5.543595 52.322588,5.543595 52.322588,5.543594 52.322587,5.543594 52.322587,5.543594 52.322587,5.543593 52.322587,5.543593 52.322587,5.543592 52.322587,5.543592 52.322586,5.543592 52.322586,5.543591 52.322586,5.543591 52.322586,5.543591 52.322586,5.54359 52.322586,5.54359 52.322585,5.543589 52.322585,5.543589 52.322585,5.543589 52.322585,5.543588 52.322585,5.543588 52.322584,5.543588 52.322584,5.543587 52.322584,5.543587 52.322584,5.543587 52.322584,5.543586 52.322583,5.543586 52.322583,5.543585 52.322583,5.543585 52.322583,5.543585 52.322582,5.543584 52.322582,5.543584 52.322582,5.543584 52.322582,5.543583 52.322582,5.543583 52.322581,5.543583 52.322581,5.543582 52.322581,5.543582 52.322581,5.543582 52.322581,5.543582 52.32258,5.543581 52.32258,5.543581 52.32258,5.543581 52.32258,5.54358 52.322579,5.54358 52.322579,5.54358 52.322579,5.543579 52.322579,5.543579 52.322578,5.543579 52.322578,5.543578 52.322578,5.543578 52.322578,5.543578 52.322577,5.543578 52.322577,5.543577 52.322577,5.543577 52.322577,5.543577 52.322577,5.543577 52.322576,5.543576 52.322576,5.543576 52.322576,5.543576 52.322576,5.543575 52.322575,5.543575 52.322575,5.543575 52.322575,5.543575 52.322575,5.543568 52.322568,5.543572 52.322553,5.543563 52.322552,5.543578 52.322484,5.543603 52.322397,5.543617 52.322357,5.543997 52.321559,5.544027 52.321501,5.544104 52.321387,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321357,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544125 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544243 52.321364,5.544257 52.321367,5.544298 52.321373,5.544324 52.321377,5.544315 52.321395,5.544298 52.321401,5.544049 52.321925,5.544042 52.321941,5.544035 52.321955,5.544028 52.32197,5.543988 52.322054,5.543938 52.322159,5.543759 52.322534,5.543769 52.322545,5.543753 52.322575,5.543745 52.322573,5.54374 52.322584,5.54374 52.322584,5.54374 52.322584,5.543739 52.322585,5.543739 52.322585,5.543738 52.322585,5.543738 52.322586,5.543737 52.322586,5.543737 52.322587,5.543736 52.322587,5.543736 52.322587,5.543735 52.322588,5.543735 52.322588,5.543734 52.322589,5.543733 52.322589,5.543733 52.322589,5.543732 52.32259,5.543732 52.32259,5.543731 52.32259,5.543731 52.322591,5.54373 52.322591,5.543729 52.322592,5.543729 52.322592,5.543728 52.322592,5.543728 52.322593,5.543727 52.322593,5.543726 52.322593,5.543726 52.322594,5.543725 52.322594,5.543724 52.322594,5.543724 52.322595,5.543723 52.322595,5.543722 52.322595,5.543722 52.322596,5.543721 52.322596,5.54372 52.322596,5.54372 52.322596,5.543719 52.322597,5.543718 52.322597,5.543717 52.322597,5.543717 52.322597,5.543716 52.322598,5.543715 52.322598,5.543715 52.322598,5.543714 52.322598,5.543713 52.322599,5.543712 52.322599,5.543712 52.322599,5.543711 52.322599,5.54371 52.3226,5.543709 52.3226,5.543708 52.3226,5.543708 52.3226,5.543707 52.3226,5.543706 52.322601,5.543705 52.322601,5.543705 52.322601,5.543704 52.322601,5.543703 52.322601,5.543702 52.322602,5.543701 52.322602,5.543701 52.322602,5.5437 52.322602,5.543699 52.322602,5.543698 52.322602,5.543697 52.322602,5.543697 52.322603,5.543696 52.322603,5.543695 52.322603,5.543694 52.322603,5.543693 52.322603,5.543692 52.322603,5.543692 52.322603,5.543691 52.322603,5.54369 52.322603,5.543689 52.322603,5.543688 52.322603,5.543687 52.322603,5.543687 52.322604,5.543686 52.322604,5.543685 52.322604,5.543684 52.322604,5.543683 52.322604,5.543682 52.322604,5.543682 52.322604,5.543681 52.322604,5.54368 52.322604,5.543679 52.322604,5.543678 52.322604,5.543677 52.322604,5.543677 52.322604,5.543676 52.322604,5.543675 52.322604,5.543674 52.322604,5.543673 52.322604,5.543672 52.322603,5.543672 52.322603,5.543671 52.322603,5.54367 52.322603,5.543669 52.322603,5.543668 52.322603,5.543668 52.322603,5.543635 52.322597)),((5.543307 52.317354,5.543257 52.31726,5.543314 52.317248,5.543498 52.317211,5.543684 52.317174,5.543808 52.31715,5.543912 52.317129,5.544045 52.317102,5.54408 52.317095,5.5441 52.317132,5.54411 52.317151,5.54413 52.317189,5.544074 52.3172,5.543734 52.317268,5.54337 52.317341,5.543307 52.317354)),((5.542997 52.319927,5.543031 52.31992,5.54364 52.319799,5.543651 52.319796,5.543663 52.319819,5.543813 52.320102,5.543821 52.3201,5.54386 52.320174,5.543868 52.320188,5.54322 52.320317,5.543204 52.32032,5.543183 52.32028,5.543122 52.320165,5.543 52.319935,5.542997 52.319927)),((5.542507 52.321321,5.542525 52.32132,5.542576 52.321319,5.542645 52.321314,5.542706 52.321306,5.542738 52.3213,5.542773 52.321286,5.54281 52.321264,5.542829 52.32125,5.542848 52.321234,5.542904 52.321202,5.542931 52.321194,5.542974 52.321186,5.542977 52.321185,5.542981 52.321185,5.542985 52.321186,5.543051 52.321203,5.543058 52.321204,5.543066 52.321205,5.543073 52.321205,5.543114 52.321204,5.543134 52.321202,5.543162 52.321192,5.543167 52.32119,5.543172 52.321187,5.543175 52.321184,5.543178 52.32118,5.543179 52.321177,5.543181 52.321174,5.543184 52.321171,5.543201 52.321154,5.543207 52.321149,5.543213 52.321144,5.543234 52.321136,5.543293 52.321123,5.543314 52.32112,5.54335 52.321118,5.543356 52.321118,5.543362 52.321119,5.543368 52.321121,5.543373 52.321123,5.543377 52.321126,5.54338 52.321129,5.543438 52.321173,5.543444 52.321177,5.54345 52.321181,5.543456 52.321184,5.543463 52.321187,5.543471 52.321189,5.543558 52.321212,5.543611 52.321226,5.543667 52.321259,5.543721 52.321268,5.543781 52.32127,5.543813 52.321272,5.543821 52.321273,5.543873 52.321174,5.543917 52.321182,5.543926 52.321184,5.543916 52.321206,5.543928 52.321208,5.543929 52.321207,5.543938 52.321209,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321215,5.543969 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543992 52.321215,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543998 52.321214,5.543998 52.321214,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321212,5.544002 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544006 52.321212,5.544006 52.321212,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544009 52.321211,5.544009 52.321211,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544014 52.321209,5.544014 52.321209,5.544014 52.321209,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544016 52.321208,5.544016 52.321208,5.544016 52.321208,5.544016 52.321208,5.544016 52.321207,5.544016 52.321207,5.544016 52.321207,5.544016 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544018 52.321207,5.544018 52.321207,5.544018 52.321207,5.544018 52.321207,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.54402 52.321206,5.54402 52.321205,5.54402 52.321205,5.544021 52.321202,5.544031 52.321203,5.543999 52.321296,5.543993 52.321312,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321335,5.543983 52.321335,5.543983 52.321335,5.543983 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321333,5.543979 52.321333,5.543979 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543928 52.321328,5.543874 52.321322,5.543864 52.321342,5.543617 52.321864,5.543307 52.322518,5.543316 52.322519,5.543315 52.322521,5.543315 52.322521,5.543316 52.322521,5.543316 52.322521,5.543316 52.322522,5.543316 52.322522,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543318 52.322523,5.543318 52.322523,5.543318 52.322523,5.543318 52.322523,5.543319 52.322523,5.543319 52.322523,5.543319 52.322523,5.543319 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.543321 52.322524,5.543321 52.322525,5.543321 52.322525,5.543321 52.322525,5.543322 52.322525,5.543322 52.322525,5.543322 52.322525,5.543322 52.322525,5.543323 52.322525,5.543323 52.322526,5.543323 52.322526,5.543323 52.322526,5.543324 52.322526,5.543324 52.322526,5.543324 52.322526,5.543325 52.322526,5.543325 52.322526,5.543325 52.322527,5.543325 52.322527,5.543326 52.322527,5.543326 52.322527,5.543326 52.322527,5.543326 52.322527,5.543327 52.322527,5.543327 52.322527,5.543327 52.322527,5.543327 52.322528,5.543328 52.322528,5.543328 52.322528,5.543328 52.322528,5.543329 52.322528,5.543329 52.322528,5.543329 52.322528,5.543329 52.322528,5.54333 52.322528,5.54333 52.322528,5.54333 52.322529,5.543331 52.322529,5.543331 52.322529,5.543331 52.322529,5.543331 52.322529,5.543332 52.322529,5.543332 52.322529,5.543332 52.322529,5.543333 52.322529,5.543333 52.322529,5.543333 52.32253,5.543333 52.32253,5.543334 52.32253,5.543334 52.32253,5.543334 52.32253,5.543335 52.32253,5.543335 52.32253,5.543335 52.32253,5.543335 52.32253,5.543336 52.32253,5.543336 52.32253,5.543336 52.32253,5.543337 52.322531,5.543337 52.322531,5.543337 52.322531,5.543338 52.322531,5.543338 52.322531,5.543338 52.322531,5.543339 52.322531,5.543339 52.322531,5.543339 52.322531,5.543339 52.322531,5.54334 52.322531,5.54334 52.322531,5.54334 52.322531,5.543341 52.322531,5.543341 52.322531,5.543341 52.322532,5.543342 52.322532,5.543342 52.322532,5.543342 52.322532,5.543342 52.322532,5.543244 52.322742,5.543198 52.32275,5.543198 52.32275,5.543198 52.32275,5.543198 52.32275,5.543198 52.322749,5.543197 52.322749,5.543197 52.322748,5.543197 52.322748,5.543197 52.322747,5.543197 52.322747,5.543196 52.322747,5.543196 52.322746,5.543196 52.322746,5.543196 52.322745,5.543196 52.322745,5.543195 52.322745,5.543195 52.322744,5.543195 52.322744,5.543194 52.322743,5.543194 52.322743,5.543194 52.322742,5.543194 52.322742,5.543193 52.322742,5.543193 52.322741,5.543193 52.322741,5.543192 52.32274,5.543192 52.32274,5.543192 52.32274,5.543191 52.322739,5.543191 52.322739,5.543191 52.322739,5.54319 52.322738,5.54319 52.322738,5.54319 52.322737,5.543189 52.322737,5.543189 52.322737,5.543189 52.322736,5.543188 52.322736,5.543188 52.322736,5.543187 52.322735,5.543187 52.322735,5.543187 52.322734,5.543186 52.322734,5.543186 52.322734,5.543185 52.322733,5.543185 52.322733,5.543184 52.322733,5.543184 52.322732,5.543183 52.322732,5.543183 52.322732,5.543183 52.322731,5.543182 52.322731,5.543182 52.322731,5.543181 52.32273,5.543181 52.32273,5.54318 52.32273,5.54318 52.322729,5.543179 52.322729,5.543179 52.322729,5.543178 52.322729,5.543178 52.322728,5.543177 52.322728,5.543177 52.322728,5.543176 52.322727,5.543175 52.322727,5.543175 52.322727,5.543174 52.322726,5.543174 52.322726,5.543173 52.322726,5.543173 52.322726,5.543172 52.322725,5.543172 52.322725,5.543171 52.322725,5.54317 52.322725,5.54317 52.322724,5.543169 52.322724,5.543169 52.322724,5.543168 52.322724,5.543167 52.322723,5.543167 52.322723,5.543166 52.322723,5.543166 52.322723,5.543165 52.322722,5.543164 52.322722,5.543164 52.322722,5.543163 52.322722,5.543163 52.322722,5.543162 52.322721,5.543161 52.322721,5.543161 52.322721,5.54316 52.322721,5.543159 52.322721,5.543159 52.32272,5.543158 52.32272,5.543157 52.32272,5.543157 52.32272,5.543156 52.32272,5.543155 52.32272,5.543155 52.322719,5.543154 52.322719,5.543153 52.322719,5.543153 52.322719,5.543137 52.322715,5.543141 52.322706,5.543153 52.322679,5.543205 52.322571,5.543226 52.322525,5.543231 52.322515,5.543243 52.32249,5.543184 52.322481,5.543184 52.322481,5.543182 52.322481,5.54318 52.322481,5.543178 52.32248,5.543176 52.32248,5.543174 52.32248,5.543172 52.32248,5.54317 52.322479,5.543168 52.322479,5.543166 52.322479,5.543164 52.322479,5.543161 52.322478,5.543159 52.322478,5.543157 52.322478,5.543155 52.322478,5.543153 52.322477,5.543151 52.322477,5.543149 52.322477,5.543147 52.322477,5.543145 52.322477,5.543143 52.322476,5.543141 52.322476,5.543138 52.322476,5.543136 52.322476,5.543134 52.322476,5.543132 52.322475,5.54313 52.322475,5.543128 52.322475,5.543126 52.322475,5.543124 52.322475,5.543122 52.322474,5.54312 52.322474,5.543117 52.322474,5.543115 52.322474,5.543113 52.322474,5.543111 52.322474,5.543109 52.322473,5.543107 52.322473,5.543105 52.322473,5.543103 52.322473,5.543101 52.322473,5.543098 52.322473,5.543096 52.322473,5.543094 52.322472,5.543092 52.322472,5.54309 52.322472,5.543088 52.322472,5.543086 52.322472,5.543084 52.322472,5.543082 52.322472,5.543079 52.322472,5.543077 52.322471,5.543075 52.322471,5.543073 52.322471,5.543071 52.322471,5.543069 52.322471,5.543067 52.322471,5.543065 52.322471,5.543063 52.322471,5.54306 52.322471,5.543058 52.322471,5.543056 52.32247,5.543054 52.32247,5.543052 52.32247,5.54305 52.32247,5.543048 52.32247,5.543046 52.32247,5.543044 52.32247,5.543041 52.32247,5.543039 52.32247,5.543037 52.32247,5.543035 52.32247,5.543033 52.32247,5.543031 52.32247,5.543029 52.32247,5.543027 52.32247,5.543024 52.32247,5.543022 52.32247,5.54302 52.322469,5.543018 52.322469,5.543016 52.322469,5.543014 52.322469,5.543012 52.322469,5.54301 52.322469,5.543008 52.322469,5.543005 52.322469,5.543003 52.322469,5.543001 52.322469,5.542999 52.322469,5.542997 52.322469,5.542995 52.322469,5.542993 52.322469,5.542991 52.322469,5.542988 52.322469,5.542986 52.322469,5.542984 52.322469,5.542982 52.322469,5.54298 52.322469,5.542978 52.322469,5.542976 52.322469,5.542976 52.322469,5.542974 52.322469,5.542972 52.322469,5.54297 52.32247,5.542968 52.32247,5.542967 52.32247,5.542965 52.32247,5.542963 52.32247,5.542961 52.32247,5.542959 52.32247,5.542957 52.32247,5.542955 52.32247,5.542954 52.32247,5.542952 52.32247,5.54295 52.32247,5.542948 52.32247,5.542946 52.32247,5.542944 52.32247,5.542943 52.32247,5.542941 52.32247,5.542939 52.32247,5.542937 52.32247,5.542935 52.32247,5.542933 52.32247,5.542932 52.322471,5.54293 52.322471,5.542928 52.322471,5.542926 52.322471,5.542924 52.322471,5.542922 52.322471,5.542921 52.322471,5.542919 52.322471,5.542917 52.322471,5.542915 52.322471,5.542913 52.322471,5.542911 52.322471,5.54291 52.322472,5.542908 52.322472,5.542906 52.322472,5.542904 52.322472,5.542902 52.322472,5.5429 52.322472,5.542899 52.322472,5.542897 52.322472,5.542895 52.322472,5.542893 52.322472,5.542891 52.322473,5.54289 52.322473,5.542888 52.322473,5.542886 52.322473,5.542884 52.322473,5.542882 52.322473,5.54288 52.322473,5.542879 52.322473,5.542877 52.322473,5.542875 52.322474,5.542873 52.322474,5.542871 52.322474,5.542869 52.322474,5.542868 52.322474,5.542866 52.322474,5.542864 52.322474,5.542862 52.322474,5.54286 52.322475,5.542858 52.322475,5.542857 52.322475,5.542855 52.322475,5.542853 52.322475,5.542851 52.322475,5.542849 52.322475,5.542848 52.322476,5.542846 52.322476,5.542844 52.322476,5.542842 52.322476,5.54284 52.322476,5.542838 52.322476,5.542837 52.322477,5.542835 52.322477,5.542833 52.322477,5.542831 52.322477,5.542829 52.322477,5.542828 52.322477,5.542826 52.322478,5.542824 52.322478,5.542822 52.322478,5.54282 52.322478,5.542818 52.322478,5.542817 52.322478,5.542815 52.322479,5.542813 52.322479,5.542811 52.322479,5.542809 52.322479,5.542808 52.322479,5.542806 52.32248,5.542804 52.32248,5.542802 52.32248,5.5428 52.32248,5.542799 52.32248,5.542797 52.322481,5.542795 52.322481,5.542795 52.322481,5.542794 52.322481,5.542794 52.322481,5.542793 52.322481,5.542793 52.322481,5.542792 52.322481,5.542792 52.322481,5.542791 52.322481,5.542791 52.322481,5.54279 52.322481,5.54279 52.322481,5.542789 52.322482,5.542788 52.322482,5.542788 52.322482,5.542787 52.322482,5.542787 52.322482,5.542786 52.322482,5.542786 52.322482,5.542785 52.322482,5.542785 52.322482,5.542784 52.322482,5.542784 52.322482,5.542783 52.322482,5.542783 52.322482,5.542782 52.322483,5.542781 52.322483,5.542781 52.322483,5.54278 52.322483,5.54278 52.322483,5.542779 52.322483,5.542779 52.322483,5.542778 52.322483,5.542778 52.322483,5.542777 52.322483,5.542777 52.322483,5.542776 52.322483,5.542776 52.322484,5.542775 52.322484,5.542775 52.322484,5.542774 52.322484,5.542773 52.322484,5.542773 52.322484,5.542772 52.322484,5.542772 52.322484,5.542771 52.322484,5.542771 52.322484,5.54277 52.322485,5.54277 52.322485,5.542769 52.322485,5.542769 52.322485,5.542768 52.322485,5.542768 52.322485,5.542767 52.322485,5.542767 52.322485,5.542766 52.322485,5.542766 52.322485,5.542765 52.322486,5.542765 52.322486,5.542764 52.322486,5.542763 52.322486,5.542763 52.322486,5.542762 52.322486,5.542762 52.322486,5.542761 52.322486,5.542761 52.322486,5.54276 52.322487,5.54276 52.322487,5.542759 52.322487,5.542759 52.322487,5.542758 52.322487,5.542758 52.322487,5.542757 52.322487,5.542757 52.322487,5.542756 52.322488,5.542756 52.322488,5.542755 52.322488,5.542755 52.322488,5.542754 52.322488,5.542754 52.322488,5.542753 52.322488,5.542753 52.322488,5.542752 52.322489,5.542752 52.322489,5.542751 52.322489,5.542751 52.322489,5.54275 52.322489,5.54275 52.322489,5.542749 52.322489,5.542749 52.322489,5.542748 52.32249,5.542748 52.32249,5.542747 52.32249,5.542747 52.32249,5.542746 52.32249,5.542746 52.32249,5.542745 52.32249,5.542745 52.322491,5.542744 52.322491,5.542744 52.322491,5.542743 52.322491,5.542743 52.322491,5.542725 52.322496,5.542723 52.322494,5.542715 52.322477,5.542716 52.322476,5.542731 52.322464,5.542738 52.322461,5.542767 52.322454,5.542803 52.322441,5.54282 52.322439,5.542834 52.322441,5.54284 52.322442,5.54287 52.32244,5.542906 52.322424,5.542926 52.322424,5.542937 52.322426,5.542942 52.322427,5.542978 52.322422,5.542995 52.322414,5.543007 52.322409,5.54305 52.322396,5.543059 52.322396,5.543092 52.322397,5.543126 52.322401,5.543133 52.322404,5.543163 52.322413,5.543204 52.322415,5.543238 52.32242,5.543266 52.322424,5.543274 52.322425,5.543389 52.322185,5.543413 52.322133,5.543422 52.322116,5.54343 52.322098,5.543431 52.322096,5.543431 52.322096,5.543431 52.322096,5.54343 52.322095,5.543429 52.322095,5.543429 52.322095,5.543428 52.322095,5.543427 52.322095,5.543427 52.322094,5.543426 52.322094,5.543425 52.322094,5.543425 52.322094,5.543424 52.322094,5.543423 52.322093,5.543423 52.322093,5.543422 52.322093,5.543422 52.322093,5.543421 52.322093,5.54342 52.322092,5.54342 52.322092,5.543419 52.322092,5.543418 52.322092,5.543418 52.322092,5.543417 52.322091,5.543416 52.322091,5.543416 52.322091,5.543415 52.322091,5.543414 52.322091,5.543414 52.32209,5.543413 52.32209,5.543412 52.32209,5.543412 52.32209,5.543411 52.32209,5.54341 52.322089,5.54341 52.322089,5.543409 52.322089,5.543408 52.322089,5.543408 52.322089,5.543407 52.322088,5.543406 52.322088,5.543406 52.322088,5.543405 52.322088,5.543404 52.322088,5.543404 52.322088,5.543403 52.322087,5.543402 52.322087,5.543402 52.322087,5.543401 52.322087,5.5434 52.322087,5.5434 52.322087,5.543399 52.322086,5.543398 52.322086,5.543398 52.322086,5.543397 52.322086,5.543396 52.322086,5.543396 52.322086,5.543395 52.322085,5.543394 52.322085,5.543394 52.322085,5.543393 52.322085,5.543392 52.322085,5.543392 52.322085,5.543391 52.322084,5.54339 52.322084,5.543389 52.322084,5.543389 52.322084,5.543388 52.322084,5.543387 52.322084,5.543387 52.322083,5.543386 52.322083,5.543385 52.322083,5.543385 52.322083,5.543384 52.322083,5.543383 52.322083,5.543383 52.322083,5.543382 52.322082,5.543381 52.322082,5.543381 52.322082,5.54338 52.322082,5.543379 52.322082,5.543378 52.322082,5.543378 52.322082,5.543377 52.322081,5.543376 52.322081,5.543376 52.322081,5.543375 52.322081,5.543374 52.322081,5.543374 52.322081,5.543373 52.322081,5.543372 52.322081,5.543372 52.32208,5.543371 52.32208,5.54337 52.32208,5.543369 52.32208,5.543369 52.32208,5.543368 52.32208,5.543367 52.32208,5.543367 52.32208,5.543366 52.322079,5.543365 52.322079,5.543365 52.322079,5.543365 52.322079,5.543363 52.322079,5.543361 52.322079,5.543359 52.322078,5.543358 52.322078,5.543356 52.322078,5.543354 52.322078,5.543353 52.322077,5.543351 52.322077,5.543349 52.322077,5.543348 52.322076,5.543346 52.322076,5.543344 52.322076,5.543343 52.322076,5.543341 52.322075,5.543339 52.322075,5.543338 52.322075,5.543336 52.322075,5.543334 52.322074,5.543333 52.322074,5.543331 52.322074,5.543329 52.322074,5.543328 52.322073,5.543326 52.322073,5.543324 52.322073,5.543322 52.322073,5.543321 52.322072,5.543319 52.322072,5.543317 52.322072,5.543316 52.322072,5.543314 52.322071,5.543312 52.322071,5.543311 52.322071,5.543309 52.322071,5.543307 52.32207,5.543306 52.32207,5.543304 52.32207,5.543302 52.32207,5.5433 52.322069,5.543299 52.322069,5.543297 52.322069,5.543295 52.322069,5.543294 52.322069,5.543292 52.322068,5.54329 52.322068,5.543289 52.322068,5.543287 52.322068,5.543285 52.322067,5.543283 52.322067,5.543282 52.322067,5.54328 52.322067,5.543278 52.322067,5.543277 52.322066,5.543275 52.322066,5.543273 52.322066,5.543271 52.322066,5.54327 52.322066,5.543268 52.322065,5.543266 52.322065,5.543265 52.322065,5.543263 52.322065,5.543261 52.322065,5.54326 52.322064,5.543258 52.322064,5.543256 52.322064,5.543254 52.322064,5.543253 52.322064,5.543251 52.322063,5.543249 52.322063,5.543248 52.322063,5.543246 52.322063,5.543244 52.322063,5.543242 52.322062,5.543241 52.322062,5.543239 52.322062,5.543237 52.322062,5.543236 52.322062,5.543234 52.322062,5.543232 52.322061,5.54323 52.322061,5.543229 52.322061,5.543227 52.322061,5.543225 52.322061,5.543224 52.322061,5.543222 52.32206,5.54322 52.32206,5.543218 52.32206,5.543217 52.32206,5.543215 52.32206,5.543213 52.32206,5.543212 52.322059,5.54321 52.322059,5.543208 52.322059,5.543206 52.322059,5.543205 52.322059,5.543203 52.322059,5.543201 52.322059,5.5432 52.322058,5.543198 52.322058,5.543196 52.322058,5.543196 52.322058,5.543194 52.322058,5.543193 52.322058,5.543191 52.322058,5.543189 52.322058,5.543188 52.322057,5.543186 52.322057,5.543184 52.322057,5.543182 52.322057,5.543181 52.322057,5.543179 52.322057,5.543177 52.322057,5.543176 52.322057,5.543174 52.322057,5.543172 52.322056,5.543171 52.322056,5.543169 52.322056,5.543167 52.322056,5.543165 52.322056,5.543164 52.322056,5.543162 52.322056,5.54316 52.322056,5.543159 52.322056,5.543157 52.322056,5.543155 52.322056,5.543153 52.322056,5.543152 52.322056,5.54315 52.322056,5.543148 52.322056,5.543147 52.322055,5.543145 52.322055,5.543143 52.322055,5.543142 52.322055,5.54314 52.322055,5.543138 52.322055,5.543136 52.322055,5.543135 52.322055,5.543133 52.322055,5.543131 52.322055,5.54313 52.322055,5.543128 52.322055,5.543126 52.322055,5.543124 52.322055,5.543123 52.322055,5.543121 52.322055,5.543119 52.322055,5.543118 52.322055,5.543116 52.322055,5.543114 52.322055,5.543112 52.322055,5.543111 52.322055,5.543109 52.322055,5.543107 52.322056,5.543106 52.322056,5.543104 52.322056,5.543102 52.322056,5.5431 52.322056,5.543099 52.322056,5.543097 52.322056,5.543095 52.322056,5.543094 52.322056,5.543092 52.322056,5.54309 52.322056,5.543089 52.322056,5.543087 52.322056,5.543085 52.322056,5.543083 52.322056,5.543082 52.322057,5.54308 52.322057,5.543078 52.322057,5.543077 52.322057,5.543075 52.322057,5.543073 52.322057,5.543071 52.322057,5.54307 52.322057,5.543068 52.322057,5.543066 52.322058,5.543065 52.322058,5.543063 52.322058,5.543061 52.322058,5.54306 52.322058,5.543058 52.322058,5.543056 52.322058,5.543055 52.322059,5.543053 52.322059,5.543051 52.322059,5.543049 52.322059,5.543048 52.322059,5.543046 52.322059,5.543044 52.32206,5.543043 52.32206,5.543041 52.32206,5.543039 52.32206,5.543038 52.32206,5.543036 52.32206,5.543034 52.322061,5.543033 52.322061,5.543031 52.322061,5.543029 52.322061,5.543028 52.322061,5.543028 52.322061,5.542946 52.322072,5.542831 52.322091,5.542747 52.322109,5.542721 52.322116,5.542716 52.322114,5.542705 52.322111,5.542677 52.322108,5.54265 52.322105,5.542647 52.322087,5.542676 52.322081,5.542691 52.322074,5.542705 52.322068,5.542736 52.322061,5.542771 52.322057,5.54281 52.322052,5.542873 52.32204,5.542907 52.322037,5.542943 52.322024,5.542961 52.32202,5.542975 52.322018,5.543016 52.322013,5.543029 52.32201,5.543079 52.321997,5.54309 52.321996,5.543093 52.321996,5.543126 52.321996,5.54316 52.322001,5.543168 52.322003,5.543197 52.322012,5.543227 52.322017,5.543239 52.322018,5.543264 52.322019,5.543313 52.322026,5.543333 52.322029,5.543383 52.322041,5.543416 52.322043,5.543455 52.322047,5.543564 52.321815,5.543609 52.321721,5.543609 52.321719,5.543608 52.321719,5.543599 52.321716,5.543587 52.321713,5.54357 52.321708,5.543557 52.321705,5.543541 52.321701,5.54353 52.321698,5.543508 52.321693,5.543491 52.32169,5.543477 52.321688,5.543456 52.321685,5.543429 52.32168,5.54341 52.321677,5.543399 52.321675,5.543375 52.321672,5.543348 52.321668,5.543335 52.321666,5.543322 52.321664,5.5433 52.321661,5.543285 52.321659,5.54327 52.321658,5.543258 52.321656,5.54324 52.321655,5.543218 52.321653,5.543199 52.321652,5.543184 52.321651,5.543172 52.32165,5.543153 52.321649,5.543138 52.321649,5.543123 52.321649,5.543113 52.321649,5.543098 52.321649,5.543081 52.32165,5.543065 52.321651,5.543052 52.321652,5.543041 52.321653,5.543031 52.321654,5.543018 52.321655,5.543007 52.321656,5.542998 52.321657,5.54299 52.321658,5.542979 52.321659,5.542968 52.321661,5.542955 52.321662,5.542949 52.321663,5.542939 52.321665,5.54293 52.321666,5.542919 52.321667,5.542913 52.321668,5.542903 52.32167,5.542891 52.321672,5.54288 52.321674,5.542868 52.321676,5.54286 52.321677,5.542853 52.321679,5.542844 52.321681,5.542825 52.321686,5.542825 52.321686,5.542825 52.321686,5.542824 52.321687,5.542823 52.321687,5.542822 52.321687,5.542821 52.321687,5.542821 52.321688,5.54282 52.321688,5.542819 52.321688,5.542818 52.321688,5.542817 52.321689,5.542817 52.321689,5.542816 52.321689,5.542815 52.32169,5.542814 52.32169,5.542813 52.32169,5.542813 52.32169,5.542812 52.321691,5.542811 52.321691,5.54281 52.321691,5.542809 52.321691,5.542809 52.321692,5.542808 52.321692,5.542807 52.321692,5.542806 52.321692,5.542805 52.321693,5.542805 52.321693,5.542804 52.321693,5.542803 52.321693,5.542802 52.321694,5.542801 52.321694,5.5428 52.321694,5.5428 52.321694,5.542799 52.321695,5.542798 52.321695,5.542797 52.321695,5.542796 52.321695,5.542796 52.321696,5.542795 52.321696,5.542794 52.321696,5.542793 52.321696,5.542792 52.321697,5.542792 52.321697,5.542791 52.321697,5.54279 52.321697,5.542789 52.321698,5.542788 52.321698,5.542787 52.321698,5.542787 52.321698,5.542786 52.321699,5.542785 52.321699,5.542784 52.321699,5.542783 52.321699,5.542783 52.3217,5.542782 52.3217,5.542781 52.3217,5.54278 52.3217,5.542779 52.321701,5.542778 52.321701,5.542778 52.321701,5.542777 52.321701,5.542776 52.321702,5.542775 52.321702,5.542774 52.321702,5.542774 52.321702,5.542773 52.321703,5.542772 52.321703,5.542771 52.321703,5.54277 52.321703,5.542769 52.321704,5.542769 52.321704,5.542768 52.321704,5.542767 52.321704,5.542766 52.321704,5.542765 52.321705,5.542765 52.321705,5.542764 52.321705,5.542763 52.321705,5.542762 52.321706,5.542761 52.321706,5.54276 52.321706,5.54276 52.321706,5.542759 52.321707,5.542758 52.321707,5.542757 52.321707,5.542756 52.321707,5.542755 52.321707,5.542755 52.321708,5.542754 52.321708,5.542753 52.321708,5.542752 52.321708,5.542751 52.321709,5.54275 52.321709,5.54275 52.321709,5.542749 52.321709,5.542748 52.32171,5.542747 52.32171,5.542746 52.32171,5.542745 52.32171,5.542745 52.32171,5.542745 52.32171,5.542744 52.321711,5.542743 52.321711,5.542742 52.321711,5.542741 52.321711,5.54274 52.321712,5.542739 52.321712,5.542738 52.321712,5.542737 52.321712,5.542736 52.321713,5.542735 52.321713,5.542734 52.321713,5.542733 52.321713,5.542732 52.321714,5.542731 52.321714,5.54273 52.321714,5.542729 52.321714,5.542728 52.321715,5.542727 52.321715,5.542726 52.321715,5.542725 52.321715,5.542725 52.321716,5.542724 52.321716,5.542723 52.321716,5.542722 52.321716,5.542721 52.321716,5.54272 52.321717,5.542719 52.321717,5.542718 52.321717,5.542717 52.321717,5.542716 52.321718,5.542715 52.321718,5.542714 52.321718,5.542713 52.321718,5.542712 52.321718,5.542711 52.321719,5.54271 52.321719,5.542709 52.321719,5.542708 52.321719,5.542707 52.321719,5.542706 52.32172,5.542705 52.32172,5.542704 52.32172,5.542703 52.32172,5.542702 52.32172,5.542701 52.321721,5.5427 52.321721,5.542699 52.321721,5.542698 52.321721,5.542697 52.321721,5.542696 52.321722,5.542695 52.321722,5.542694 52.321722,5.542693 52.321722,5.542692 52.321722,5.542691 52.321722,5.54269 52.321723,5.542689 52.321723,5.542688 52.321723,5.542687 52.321723,5.542686 52.321723,5.542685 52.321724,5.542684 52.321724,5.542683 52.321724,5.542682 52.321724,5.542681 52.321724,5.54268 52.321724,5.542679 52.321725,5.542678 52.321725,5.542677 52.321725,5.542676 52.321725,5.542675 52.321725,5.542674 52.321725,5.542673 52.321725,5.542672 52.321726,5.542671 52.321726,5.54267 52.321726,5.542669 52.321726,5.542668 52.321726,5.542667 52.321726,5.542666 52.321727,5.542665 52.321727,5.542664 52.321727,5.542663 52.321727,5.542662 52.321727,5.542661 52.321727,5.54266 52.321727,5.542659 52.321728,5.542658 52.321728,5.542657 52.321728,5.542656 52.321728,5.542655 52.321728,5.542654 52.321728,5.542653 52.321728,5.542652 52.321728,5.542651 52.321729,5.54265 52.321729,5.542649 52.321729,5.542648 52.321729,5.542647 52.321729,5.542647 52.321729,5.542636 52.32173,5.542598 52.321717,5.542594 52.321692,5.542609 52.32169,5.542641 52.321686,5.542657 52.321679,5.542684 52.321671,5.542703 52.321668,5.542705 52.321668,5.542743 52.321665,5.542754 52.321662,5.542779 52.321654,5.542797 52.32165,5.542807 52.321648,5.542843 52.321644,5.542901 52.321629,5.542909 52.321628,5.542923 52.321626,5.542952 52.321624,5.542983 52.32161,5.543011 52.321606,5.543049 52.321599,5.543067 52.321594,5.543131 52.321574,5.543137 52.321575,5.543169 52.321582,5.543201 52.321592,5.543207 52.321592,5.54324 52.321595,5.543279 52.321604,5.543283 52.321605,5.543309 52.32161,5.543347 52.321624,5.543352 52.321626,5.543382 52.321623,5.54342 52.321625,5.543425 52.321625,5.543444 52.321627,5.543455 52.321633,5.54349 52.321644,5.543494 52.321644,5.543532 52.321645,5.543559 52.321655,5.543573 52.321659,5.543595 52.321663,5.543624 52.321668,5.543632 52.32167,5.543743 52.321437,5.54376 52.321403,5.543793 52.321334,5.5438 52.321317,5.543784 52.321315,5.543779 52.321314,5.543769 52.321312,5.543745 52.321308,5.543729 52.321306,5.543718 52.321304,5.543711 52.321303,5.543696 52.3213,5.54368 52.321296,5.543669 52.321294,5.543653 52.32129,5.543638 52.321286,5.543629 52.321284,5.543615 52.321281,5.543605 52.321278,5.543597 52.321276,5.543583 52.321272,5.543567 52.321267,5.543557 52.321264,5.543543 52.321259,5.543536 52.321257,5.543515 52.321249,5.543502 52.321244,5.543491 52.321239,5.543481 52.321235,5.543474 52.321232,5.543454 52.321225,5.543437 52.32122,5.543425 52.321216,5.543405 52.321211,5.543395 52.321209,5.54338 52.321206,5.543368 52.321204,5.543354 52.321201,5.543335 52.321198,5.543321 52.321196,5.543311 52.321194,5.543301 52.321194,5.543296 52.321194,5.543288 52.321195,5.543283 52.321196,5.543277 52.321198,5.543273 52.321199,5.543262 52.321203,5.543254 52.321206,5.543246 52.321208,5.543232 52.321213,5.543221 52.321217,5.543209 52.321221,5.543197 52.321225,5.543186 52.321229,5.543173 52.321232,5.54316 52.321236,5.543152 52.321238,5.543137 52.321241,5.543121 52.321244,5.543115 52.321245,5.543106 52.321247,5.543095 52.321248,5.543089 52.321249,5.543072 52.321251,5.543064 52.321251,5.543055 52.321252,5.543045 52.321252,5.543038 52.321252,5.543029 52.321252,5.543019 52.321253,5.543013 52.321253,5.543004 52.321253,5.542996 52.321253,5.542988 52.321253,5.542976 52.321253,5.542967 52.321254,5.542958 52.321255,5.542946 52.321257,5.542936 52.321259,5.54293 52.321261,5.542923 52.321264,5.542911 52.321269,5.542905 52.321271,5.542893 52.321276,5.542882 52.321281,5.542872 52.321285,5.542861 52.321291,5.542841 52.321301,5.542812 52.321316,5.542812 52.321316,5.542812 52.321316,5.542812 52.321316,5.542811 52.321316,5.542811 52.321316,5.542811 52.321316,5.54281 52.321317,5.54281 52.321317,5.54281 52.321317,5.542809 52.321317,5.542809 52.321317,5.542809 52.321317,5.542809 52.321317,5.542808 52.321318,5.542808 52.321318,5.542808 52.321318,5.542807 52.321318,5.542807 52.321318,5.542807 52.321318,5.542807 52.321319,5.542806 52.321319,5.542806 52.321319,5.542806 52.321319,5.542805 52.321319,5.542805 52.321319,5.542805 52.321319,5.542804 52.32132,5.542804 52.32132,5.542804 52.32132,5.542803 52.32132,5.542803 52.32132,5.542803 52.32132,5.542802 52.32132,5.542802 52.321321,5.542802 52.321321,5.542802 52.321321,5.542801 52.321321,5.542801 52.321321,5.542801 52.321321,5.5428 52.321321,5.5428 52.321321,5.5428 52.321322,5.542799 52.321322,5.542799 52.321322,5.542799 52.321322,5.542798 52.321322,5.542798 52.321322,5.542798 52.321322,5.542797 52.321322,5.542797 52.321323,5.542797 52.321323,5.542796 52.321323,5.542796 52.321323,5.542796 52.321323,5.542795 52.321323,5.542795 52.321323,5.542795 52.321323,5.542794 52.321324,5.542794 52.321324,5.542794 52.321324,5.542793 52.321324,5.542793 52.321324,5.542793 52.321324,5.542792 52.321324,5.542792 52.321324,5.542792 52.321325,5.542791 52.321325,5.542791 52.321325,5.542791 52.321325,5.54279 52.321325,5.54279 52.321325,5.54279 52.321325,5.542789 52.321325,5.542789 52.321325,5.542789 52.321326,5.542788 52.321326,5.542788 52.321326,5.542788 52.321326,5.542787 52.321326,5.542787 52.321326,5.542786 52.321326,5.542786 52.321326,5.542786 52.321326,5.542785 52.321326,5.542785 52.321327,5.542785 52.321327,5.542784 52.321327,5.542784 52.321327,5.542784 52.321327,5.542783 52.321327,5.542783 52.321327,5.542783 52.321327,5.542782 52.321327,5.542782 52.321327,5.542782 52.321327,5.542781 52.321328,5.542781 52.321328,5.54278 52.321328,5.54278 52.321328,5.54278 52.321328,5.54278 52.321328,5.542753 52.321335,5.542704 52.321344,5.542656 52.321352,5.542656 52.321352,5.542655 52.321353,5.542654 52.321353,5.542654 52.321353,5.542653 52.321353,5.542652 52.321353,5.542651 52.321353,5.54265 52.321353,5.54265 52.321353,5.542649 52.321354,5.542648 52.321354,5.542647 52.321354,5.542646 52.321354,5.542646 52.321354,5.542645 52.321354,5.542644 52.321354,5.542643 52.321354,5.542642 52.321354,5.542641 52.321355,5.542641 52.321355,5.54264 52.321355,5.542639 52.321355,5.542638 52.321355,5.542637 52.321355,5.542637 52.321355,5.542636 52.321355,5.542635 52.321355,5.542634 52.321355,5.542633 52.321355,5.542632 52.321355,5.542632 52.321355,5.542631 52.321355,5.54263 52.321356,5.542629 52.321356,5.542628 52.321356,5.542627 52.321356,5.542627 52.321356,5.542626 52.321356,5.542625 52.321356,5.542624 52.321356,5.542623 52.321356,5.542623 52.321356,5.542622 52.321356,5.542621 52.321356,5.54262 52.321356,5.542619 52.321356,5.542618 52.321356,5.542618 52.321356,5.542617 52.321356,5.542616 52.321356,5.542615 52.321356,5.542614 52.321356,5.542613 52.321356,5.542613 52.321356,5.542612 52.321356,5.542611 52.321356,5.54261 52.321356,5.542609 52.321356,5.542608 52.321356,5.542608 52.321356,5.542607 52.321356,5.542606 52.321356,5.542605 52.321356,5.542604 52.321356,5.542603 52.321356,5.542603 52.321356,5.542602 52.321356,5.542601 52.321356,5.5426 52.321356,5.542599 52.321356,5.542598 52.321356,5.542598 52.321356,5.542597 52.321356,5.542596 52.321356,5.542595 52.321356,5.542594 52.321355,5.542594 52.321355,5.542593 52.321355,5.542592 52.321355,5.542591 52.321355,5.54259 52.321355,5.542589 52.321355,5.542589 52.321355,5.542588 52.321355,5.542587 52.321355,5.542586 52.321355,5.542585 52.321355,5.542584 52.321355,5.542584 52.321355,5.542583 52.321354,5.542582 52.321354,5.542581 52.321354,5.54258 52.321354,5.54258 52.321354,5.542579 52.321354,5.542578 52.321354,5.542577 52.321354,5.542576 52.321354,5.542576 52.321354,5.542575 52.321353,5.542575 52.321353,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542533 52.321347,5.542533 52.321347,5.542533 52.321347,5.542533 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.542529 52.321346,5.542529 52.321346,5.542529 52.321346,5.542529 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542526 52.321346,5.542526 52.321346,5.542526 52.321346,5.542526 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542523 52.321345,5.542523 52.321345,5.542523 52.321345,5.542523 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542521 52.321345,5.542521 52.321345,5.542521 52.321345,5.542521 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.542519 52.321345,5.542519 52.321345,5.542519 52.321345,5.542519 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542516 52.321345,5.542516 52.321345,5.542516 52.321345,5.542516 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542514 52.321345,5.542514 52.321345,5.542514 52.321345,5.542514 52.321345,5.54251 52.321345,5.542509 52.32134,5.542511 52.32134,5.542509 52.321322,5.542508 52.321322,5.542507 52.321321)),((5.54337 52.317341,5.543734 52.317268,5.544074 52.3172,5.544123 52.317295,5.544141 52.317328,5.544172 52.317322,5.544226 52.317423,5.544257 52.317479,5.544288 52.317538,5.544322 52.317603,5.544357 52.317671,5.544388 52.317728,5.544425 52.317798,5.544455 52.317854,5.544492 52.317923,5.544526 52.317987,5.544563 52.318058,5.544567 52.318066,5.543834 52.318213,5.543829 52.318203,5.543752 52.318058,5.543782 52.318052,5.543754 52.318,5.543687 52.317873,5.543653 52.31788,5.54363 52.317838,5.54358 52.317743,5.543534 52.317654,5.543463 52.317521,5.543466 52.31752,5.543436 52.317464,5.54337 52.317341)),((5.542997 52.319927,5.542936 52.319939,5.542901 52.31993,5.542331 52.319823,5.542812 52.319728,5.542836 52.319723,5.542658 52.319388,5.543609 52.319198,5.543902 52.319737,5.543906 52.319746,5.54393 52.31979,5.543943 52.319826,5.543984 52.319999,5.544012 52.320143,5.544014 52.320159,5.544035 52.320299,5.544038 52.320315,5.544044 52.320356,5.543311 52.320503,5.543311 52.320502,5.543301 52.320502,5.543255 52.320415,5.543893 52.320287,5.543918 52.320283,5.543868 52.320188,5.54386 52.320174,5.543821 52.3201,5.543813 52.320102,5.543663 52.319819,5.543651 52.319796,5.54364 52.319799,5.543031 52.31992,5.542997 52.319927)),((5.543315 52.322521,5.543316 52.322519,5.543307 52.322518,5.543617 52.321864,5.543864 52.321342,5.543874 52.321322,5.543928 52.321328,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543978 52.321333,5.543979 52.321333,5.543979 52.321333,5.543979 52.321333,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.543979 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.54398 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543981 52.321334,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543982 52.321335,5.543983 52.321335,5.543983 52.321335,5.543983 52.321335,5.543983 52.321335,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543983 52.321336,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321337,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321338,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543984 52.321339,5.543983 52.321342,5.543981 52.321348,5.543938 52.321478,5.543932 52.321497,5.543914 52.321541,5.543859 52.321655,5.543776 52.321831,5.543692 52.322007,5.543608 52.322183,5.543557 52.322289,5.543525 52.322346,5.543524 52.322349,5.543517 52.322359,5.543405 52.322521,5.543396 52.322519,5.54339 52.322527,5.54339 52.322527,5.54339 52.322527,5.54339 52.322527,5.543389 52.322527,5.543389 52.322528,5.543388 52.322528,5.543388 52.322528,5.543387 52.322528,5.543387 52.322528,5.543387 52.322528,5.543386 52.322529,5.543386 52.322529,5.543385 52.322529,5.543385 52.322529,5.543384 52.322529,5.543384 52.322529,5.543383 52.322529,5.543383 52.32253,5.543383 52.32253,5.543382 52.32253,5.543382 52.32253,5.543381 52.32253,5.543381 52.32253,5.54338 52.32253,5.54338 52.322531,5.543379 52.322531,5.543379 52.322531,5.543378 52.322531,5.543378 52.322531,5.543377 52.322531,5.543377 52.322531,5.543376 52.322531,5.543376 52.322531,5.543375 52.322531,5.543375 52.322532,5.543374 52.322532,5.543374 52.322532,5.543373 52.322532,5.543373 52.322532,5.543372 52.322532,5.543372 52.322532,5.543371 52.322532,5.543371 52.322532,5.54337 52.322532,5.54337 52.322532,5.543369 52.322532,5.543369 52.322532,5.543368 52.322533,5.543368 52.322533,5.543367 52.322533,5.543367 52.322533,5.543366 52.322533,5.543366 52.322533,5.543365 52.322533,5.543365 52.322533,5.543364 52.322533,5.543364 52.322533,5.543363 52.322533,5.543363 52.322533,5.543362 52.322533,5.543362 52.322533,5.543361 52.322533,5.543361 52.322533,5.54336 52.322533,5.54336 52.322533,5.543359 52.322533,5.543359 52.322533,5.543358 52.322533,5.543358 52.322533,5.543357 52.322533,5.543357 52.322533,5.543356 52.322533,5.543356 52.322533,5.543355 52.322533,5.543355 52.322533,5.543354 52.322533,5.543354 52.322533,5.543353 52.322533,5.543353 52.322533,5.543352 52.322533,5.543352 52.322533,5.543351 52.322533,5.543351 52.322533,5.54335 52.322533,5.54335 52.322533,5.543349 52.322533,5.543349 52.322533,5.543348 52.322533,5.543348 52.322533,5.543347 52.322532,5.543347 52.322532,5.543346 52.322532,5.543346 52.322532,5.543345 52.322532,5.543345 52.322532,5.543344 52.322532,5.543344 52.322532,5.543343 52.322532,5.543343 52.322532,5.543342 52.322532,5.543342 52.322532,5.543342 52.322532,5.543342 52.322532,5.543341 52.322532,5.543341 52.322531,5.543341 52.322531,5.54334 52.322531,5.54334 52.322531,5.54334 52.322531,5.543339 52.322531,5.543339 52.322531,5.543339 52.322531,5.543339 52.322531,5.543338 52.322531,5.543338 52.322531,5.543338 52.322531,5.543337 52.322531,5.543337 52.322531,5.543337 52.322531,5.543336 52.32253,5.543336 52.32253,5.543336 52.32253,5.543335 52.32253,5.543335 52.32253,5.543335 52.32253,5.543335 52.32253,5.543334 52.32253,5.543334 52.32253,5.543334 52.32253,5.543333 52.32253,5.543333 52.32253,5.543333 52.322529,5.543333 52.322529,5.543332 52.322529,5.543332 52.322529,5.543332 52.322529,5.543331 52.322529,5.543331 52.322529,5.543331 52.322529,5.543331 52.322529,5.54333 52.322529,5.54333 52.322528,5.54333 52.322528,5.543329 52.322528,5.543329 52.322528,5.543329 52.322528,5.543329 52.322528,5.543328 52.322528,5.543328 52.322528,5.543328 52.322528,5.543327 52.322528,5.543327 52.322527,5.543327 52.322527,5.543327 52.322527,5.543326 52.322527,5.543326 52.322527,5.543326 52.322527,5.543326 52.322527,5.543325 52.322527,5.543325 52.322527,5.543325 52.322526,5.543325 52.322526,5.543324 52.322526,5.543324 52.322526,5.543324 52.322526,5.543323 52.322526,5.543323 52.322526,5.543323 52.322526,5.543323 52.322525,5.543322 52.322525,5.543322 52.322525,5.543322 52.322525,5.543322 52.322525,5.543321 52.322525,5.543321 52.322525,5.543321 52.322525,5.543321 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.54332 52.322524,5.543319 52.322524,5.543319 52.322523,5.543319 52.322523,5.543319 52.322523,5.543318 52.322523,5.543318 52.322523,5.543318 52.322523,5.543318 52.322523,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543317 52.322522,5.543316 52.322522,5.543316 52.322522,5.543316 52.322521,5.543316 52.322521,5.543315 52.322521)),((5.542553 52.316577,5.54256 52.316577,5.542554 52.316565,5.542554 52.316565,5.542553 52.316565,5.542553 52.316564,5.542553 52.316563,5.542553 52.316563,5.542552 52.316562,5.542552 52.316562,5.542552 52.316561,5.542552 52.31656,5.542552 52.31656,5.542552 52.316559,5.542551 52.316558,5.542551 52.316558,5.542551 52.316557,5.542551 52.316556,5.542551 52.316556,5.542551 52.316555,5.542551 52.316554,5.542551 52.316554,5.542551 52.316553,5.542551 52.316553,5.542551 52.316552,5.542551 52.316551,5.542551 52.316551,5.542551 52.31655,5.542551 52.316549,5.542552 52.316549,5.542552 52.316548,5.542552 52.316547,5.542552 52.316547,5.542552 52.316546,5.542552 52.316545,5.542553 52.316545,5.542553 52.316544,5.542553 52.316544,5.542553 52.316543,5.542554 52.316542,5.542554 52.316542,5.542554 52.316541,5.542555 52.31654,5.542555 52.31654,5.542555 52.316539,5.542556 52.316539,5.542556 52.316538,5.542556 52.316537,5.542557 52.316537,5.542557 52.316536,5.542558 52.316536,5.542558 52.316535,5.542559 52.316535,5.542559 52.316534,5.54256 52.316533,5.54256 52.316533,5.542561 52.316532,5.542561 52.316532,5.542562 52.316531,5.542562 52.316531,5.542563 52.31653,5.542564 52.31653,5.542564 52.316529,5.542565 52.316528,5.542565 52.316528,5.542566 52.316527,5.542567 52.316527,5.542567 52.316526,5.542568 52.316526,5.542569 52.316525,5.54257 52.316525,5.54257 52.316525,5.542571 52.316524,5.542572 52.316524,5.542572 52.316523,5.542573 52.316523,5.542574 52.316522,5.542575 52.316522,5.542576 52.316521,5.542576 52.316521,5.542577 52.316521,5.542578 52.31652,5.542579 52.31652,5.54258 52.316519,5.542581 52.316519,5.542582 52.316519,5.542582 52.316518,5.542583 52.316518,5.542584 52.316518,5.542585 52.316517,5.542586 52.316517,5.542587 52.316517,5.542588 52.316516,5.542589 52.316516,5.54259 52.316516,5.542591 52.316515,5.542592 52.316515,5.542593 52.316515,5.542594 52.316515,5.542595 52.316514,5.542596 52.316514,5.542597 52.316514,5.542598 52.316514,5.542598 52.316514,5.542625 52.316508,5.542631 52.316507,5.542634 52.316505,5.542666 52.3165,5.542674 52.3165,5.542691 52.3165,5.542708 52.316503,5.542726 52.316509,5.54273 52.316511,5.542737 52.316515,5.54274 52.316517,5.542749 52.316524,5.542758 52.316534,5.542774 52.316564,5.542774 52.316569,5.542763 52.316584,5.542758 52.316591,5.542756 52.316591,5.543061 52.317174,5.543072 52.317175,5.543099 52.317183,5.543104 52.317187,5.543108 52.317195,5.543216 52.3174,5.543219 52.317411,5.543205 52.317427,5.543198 52.317435,5.543606 52.318211,5.543613 52.31821,5.543624 52.31823,5.543628 52.318232,5.543648 52.318238,5.543653 52.31824,5.543656 52.318243,5.54366 52.318251,5.543662 52.31826,5.543661 52.318265,5.543658 52.318275,5.54365 52.318288,5.543639 52.318298,5.543625 52.318307,5.543609 52.318313,5.543603 52.318314,5.543601 52.318315,5.543594 52.318316,5.543587 52.318317,5.543587 52.318317,5.543586 52.318318,5.543585 52.318318,5.543583 52.318318,5.543582 52.318318,5.54358 52.318319,5.543579 52.318319,5.543578 52.318319,5.543576 52.318319,5.543575 52.318319,5.543574 52.318319,5.543572 52.31832,5.543571 52.31832,5.543569 52.31832,5.543568 52.31832,5.543567 52.31832,5.543565 52.31832,5.543564 52.31832,5.543562 52.31832,5.543561 52.31832,5.543559 52.31832,5.543558 52.31832,5.543557 52.31832,5.543555 52.31832,5.543554 52.31832,5.543552 52.31832,5.543551 52.31832,5.54355 52.31832,5.543548 52.31832,5.543547 52.31832,5.543545 52.318319,5.543544 52.318319,5.543543 52.318319,5.543541 52.318319,5.54354 52.318319,5.543539 52.318319,5.543537 52.318318,5.543536 52.318318,5.543534 52.318318,5.543533 52.318318,5.543532 52.318317,5.54353 52.318317,5.543529 52.318317,5.543528 52.318317,5.543526 52.318316,5.543525 52.318316,5.543524 52.318316,5.543523 52.318315,5.543521 52.318315,5.54352 52.318315,5.543519 52.318314,5.543517 52.318314,5.543516 52.318313,5.543515 52.318313,5.543514 52.318313,5.543513 52.318312,5.543511 52.318312,5.54351 52.318311,5.543509 52.318311,5.543508 52.31831,5.543507 52.31831,5.543505 52.318309,5.543504 52.318309,5.543503 52.318308,5.543502 52.318308,5.543501 52.318307,5.5435 52.318307,5.543499 52.318306,5.543498 52.318305,5.543497 52.318305,5.543496 52.318304,5.543495 52.318304,5.543494 52.318303,5.543493 52.318302,5.543492 52.318302,5.543491 52.318301,5.54349 52.318301,5.543489 52.3183,5.543488 52.318299,5.543487 52.318299,5.543486 52.318298,5.543486 52.318297,5.543485 52.318296,5.543484 52.318296,5.543483 52.318295,5.543482 52.318294,5.543482 52.318294,5.543481 52.318293,5.54348 52.318292,5.54348 52.318291,5.543479 52.318291,5.543478 52.31829,5.543478 52.318289,5.543477 52.318288,5.543476 52.318288,5.543476 52.318287,5.543475 52.318286,5.543475 52.318285,5.543474 52.318284,5.543474 52.318284,5.543474 52.318284,5.543467 52.318285,5.54346 52.318286,5.543419 52.318221,5.543329 52.318078,5.543281 52.317998,5.543231 52.317904,5.543138 52.317729,5.543045 52.317553,5.542952 52.317378,5.542859 52.317203,5.542767 52.317027,5.542674 52.316852,5.542619 52.316747,5.54259 52.316685,5.542565 52.316621,5.542553 52.316577)),((5.543257 52.31726,5.543156 52.317067,5.543055 52.316875,5.543041 52.316849,5.542953 52.316683,5.542852 52.31649,5.542904 52.316479,5.543277 52.316405,5.54362 52.316337,5.543704 52.31632,5.543776 52.316456,5.543843 52.316583,5.54391 52.31671,5.543977 52.316836,5.543984 52.316848,5.544045 52.316963,5.544112 52.317089,5.54408 52.317095,5.544045 52.317102,5.543994 52.317008,5.543977 52.316976,5.543961 52.316979,5.543942 52.316943,5.543908 52.316878,5.543894 52.316853,5.543916 52.316848,5.543922 52.316847,5.543905 52.316816,5.543869 52.316746,5.543855 52.316721,5.543834 52.316681,5.543788 52.316594,5.54372 52.316468,5.543692 52.316473,5.543679 52.316447,5.543639 52.316372,5.543629 52.316354,5.543286 52.316422,5.542913 52.316496,5.542952 52.31657,5.542988 52.316636,5.543007 52.316672,5.543044 52.31674,5.543077 52.316802,5.54311 52.316864,5.543115 52.316863,5.543137 52.316904,5.543185 52.316994,5.543218 52.317055,5.543212 52.317056,5.543262 52.317151,5.543296 52.317215,5.543314 52.317248,5.543257 52.31726)),((5.54413 52.317189,5.544198 52.317317,5.544228 52.317311,5.544296 52.317438,5.544362 52.317564,5.54443 52.317691,5.544497 52.317817,5.544564 52.317943,5.544636 52.31808,5.544581 52.318091,5.544209 52.318165,5.543847 52.318237,5.543778 52.318251,5.543684 52.318072,5.54359 52.317892,5.543496 52.317713,5.543401 52.317533,5.543307 52.317354,5.54337 52.317341,5.543436 52.317464,5.543466 52.31752,5.543463 52.317521,5.543534 52.317654,5.54358 52.317743,5.54363 52.317838,5.543653 52.31788,5.543687 52.317873,5.543754 52.318,5.543782 52.318052,5.543752 52.318058,5.543829 52.318203,5.543834 52.318213,5.544567 52.318066,5.544563 52.318058,5.544526 52.317987,5.544492 52.317923,5.544455 52.317854,5.544425 52.317798,5.544388 52.317728,5.544357 52.317671,5.544322 52.317603,5.544288 52.317538,5.544257 52.317479,5.544226 52.317423,5.544172 52.317322,5.544141 52.317328,5.544123 52.317295,5.544074 52.3172,5.54413 52.317189)),((5.543314 52.317248,5.543296 52.317215,5.543262 52.317151,5.543212 52.317056,5.543218 52.317055,5.543185 52.316994,5.543137 52.316904,5.543115 52.316863,5.54311 52.316864,5.543077 52.316802,5.543044 52.31674,5.543007 52.316672,5.542988 52.316636,5.542952 52.31657,5.542913 52.316496,5.543286 52.316422,5.543629 52.316354,5.543639 52.316372,5.543679 52.316447,5.543692 52.316473,5.54372 52.316468,5.543788 52.316594,5.543834 52.316681,5.543855 52.316721,5.543869 52.316746,5.543905 52.316816,5.543922 52.316847,5.543916 52.316848,5.543894 52.316853,5.543908 52.316878,5.543942 52.316943,5.543961 52.316979,5.543977 52.316976,5.543994 52.317008,5.544045 52.317102,5.543912 52.317129,5.543808 52.31715,5.543684 52.317174,5.543498 52.317211,5.543314 52.317248)),((5.548076 52.318997,5.548104 52.318995,5.548157 52.31899,5.54807 52.31884,5.54809 52.318808,5.548064 52.318759,5.548032 52.318735,5.547955 52.318596,5.547941 52.318522,5.547902 52.318503,5.547869 52.31844,5.547851 52.318406,5.547825 52.318357,5.547829 52.318305,5.547776 52.318277,5.547704 52.318164,5.547602 52.318003,5.547893 52.317943,5.547948 52.317931,5.548217 52.317875,5.548233 52.317902,5.548261 52.317951,5.548267 52.317965,5.5483 52.318046,5.548534 52.318623,5.548574 52.31873,5.548677 52.319101,5.54869 52.319146,5.548763 52.3195,5.548788 52.319661,5.5488 52.319768,5.548806 52.31982,5.548484 52.319885,5.548436 52.319796,5.548501 52.319783,5.548174 52.319167,5.548125 52.319073,5.54806 52.319085,5.548054 52.319075,5.548019 52.319009,5.548076 52.318997)),((5.544741 52.315775,5.544696 52.315724,5.544794 52.315704,5.544959 52.315683,5.545231 52.315667,5.545428 52.315621,5.545572 52.315554,5.54568 52.31548,5.545775 52.315415,5.545938 52.3154,5.54604 52.315397,5.546211 52.31535,5.546364 52.315318,5.546446 52.315296,5.546468 52.315331,5.545497 52.315669,5.545369 52.315714,5.545269 52.315748,5.545256 52.315761,5.545266 52.31578,5.545288 52.315812,5.5454 52.315938,5.545443 52.316022,5.54549 52.316063,5.545507 52.3161,5.545523 52.316134,5.545516 52.316169,5.545547 52.316224,5.545578 52.316254,5.545588 52.316307,5.545618 52.316358,5.54565 52.316429,5.545662 52.316433,5.545698 52.316473,5.545693 52.316513,5.545726 52.316565,5.54574 52.316586,5.54576 52.316635,5.545778 52.31668,5.545798 52.316691,5.545806 52.316698,5.545819 52.316712,5.545824 52.31672,5.545827 52.316728,5.54583 52.316744,5.545829 52.316752,5.545825 52.316766,5.545835 52.316787,5.545859 52.316799,5.545868 52.316808,5.545866 52.31685,5.545884 52.316883,5.54592 52.316924,5.545928 52.316968,5.545981 52.317078,5.54601 52.317138,5.546024 52.317147,5.546037 52.317157,5.546047 52.317168,5.546056 52.317179,5.546063 52.317191,5.546068 52.317203,5.546071 52.317215,5.546071 52.317228,5.546067 52.317249,5.546157 52.317425,5.546195 52.317458,5.546214 52.317533,5.546265 52.31762,5.546279 52.317631,5.546291 52.317642,5.546301 52.317655,5.54631 52.317667,5.546315 52.31768,5.546319 52.317694,5.54632 52.317707,5.546319 52.317721,5.546317 52.317731,5.54638 52.317882,5.5464 52.317907,5.5464 52.317912,5.546399 52.317929,5.546467 52.318047,5.546464 52.318056,5.546473 52.318069,5.546487 52.318064,5.546898 52.317997,5.547268 52.31793,5.548151 52.317768,5.548156 52.317766,5.54816 52.317763,5.54816 52.317759,5.548157 52.317756,5.548135 52.317708,5.548068 52.317581,5.547681 52.316843,5.547309 52.31614,5.546844 52.315257,5.546521 52.314644,5.546597 52.314629,5.546542 52.314519,5.546503 52.314521,5.546146 52.313838,5.546126 52.313793,5.546114 52.31377,5.546196 52.313754,5.546652 52.314618,5.547439 52.316113,5.548202 52.317554,5.548428 52.318021,5.548532 52.318238,5.548574 52.318331,5.548824 52.319089,5.54892 52.319491,5.548974 52.32006,5.548976 52.320078,5.548978 52.320096,5.548983 52.320152,5.548987 52.32045,5.548899 52.320436,5.54884 52.320427,5.548835 52.320286,5.548825 52.320058,5.548819 52.319979,5.548813 52.319885,5.548806 52.31982,5.5488 52.319768,5.548788 52.319661,5.548763 52.3195,5.54869 52.319146,5.548677 52.319101,5.548574 52.31873,5.548534 52.318623,5.5483 52.318046,5.548267 52.317965,5.548261 52.317951,5.548233 52.317902,5.548217 52.317875,5.547948 52.317931,5.547893 52.317943,5.547602 52.318003,5.547704 52.318164,5.547776 52.318277,5.547829 52.318305,5.547825 52.318357,5.547851 52.318406,5.547869 52.31844,5.547902 52.318503,5.547941 52.318522,5.547955 52.318596,5.548032 52.318735,5.548064 52.318759,5.54809 52.318808,5.54807 52.31884,5.548157 52.31899,5.548104 52.318995,5.548076 52.318997,5.548005 52.318865,5.547949 52.318758,5.547892 52.318651,5.547836 52.318544,5.547779 52.318438,5.547722 52.318331,5.547666 52.318224,5.547596 52.318091,5.547562 52.318027,5.547498 52.318017,5.547177 52.318084,5.547122 52.318095,5.546869 52.318147,5.546868 52.318147,5.546863 52.318138,5.546716 52.318167,5.546591 52.318192,5.546466 52.318217,5.54634 52.318242,5.546215 52.318267,5.5461 52.31829,5.546086 52.318293,5.546072 52.318296,5.546044 52.318302,5.545995 52.318312,5.545983 52.318314,5.545932 52.318217,5.545979 52.318207,5.546254 52.318145,5.546334 52.318121,5.546399 52.318106,5.546394 52.318095,5.546381 52.318064,5.546393 52.318062,5.546288 52.317865,5.546202 52.317703,5.546116 52.31754,5.54603 52.317378,5.545926 52.317181,5.545822 52.316985,5.545748 52.316846,5.54574 52.316831,5.545622 52.316609,5.545504 52.316387,5.545417 52.316222,5.54533 52.316057,5.545242 52.315892,5.54516 52.315736,5.544748 52.315774,5.544741 52.315775)),((5.544195 52.321207,5.544207 52.321172,5.544232 52.321097,5.54426 52.320997,5.544295 52.32089,5.544317 52.320836,5.544348 52.320756,5.544358 52.320721,5.544372 52.32064,5.544376 52.320545,5.544376 52.320467,5.544371 52.320387,5.544365 52.320334,5.544363 52.32031,5.544355 52.320274,5.544327 52.320161,5.544294 52.320053,5.544267 52.319974,5.544223 52.319841,5.54418 52.319724,5.544169 52.319695,5.544139 52.319626,5.544097 52.319535,5.544025 52.319385,5.54397 52.31927,5.543955 52.319236,5.543947 52.319219,5.543929 52.319173,5.543922 52.319157,5.543929 52.319157,5.543938 52.319155,5.543936 52.319145,5.543936 52.319145,5.543936 52.319145,5.543936 52.319145,5.543936 52.319144,5.543936 52.319144,5.543936 52.319144,5.543936 52.319143,5.543936 52.319143,5.543936 52.319143,5.543936 52.319143,5.543936 52.319142,5.543936 52.319142,5.543936 52.319142,5.543936 52.319142,5.543936 52.319141,5.543936 52.319141,5.543936 52.319141,5.543936 52.319141,5.543936 52.31914,5.543936 52.31914,5.543936 52.31914,5.543936 52.319139,5.543936 52.319139,5.543936 52.319139,5.543936 52.319139,5.543936 52.319138,5.543936 52.319138,5.543936 52.319138,5.543936 52.319138,5.543936 52.319137,5.543936 52.319137,5.543936 52.319137,5.543936 52.319137,5.543936 52.319136,5.543936 52.319136,5.543936 52.319136,5.543936 52.319135,5.543936 52.319135,5.543936 52.319135,5.543937 52.319135,5.543937 52.319134,5.543937 52.319134,5.543937 52.319134,5.543937 52.319134,5.543937 52.319133,5.543937 52.319133,5.543937 52.319133,5.543937 52.319133,5.543937 52.319132,5.543937 52.319132,5.543937 52.319132,5.543937 52.319132,5.543937 52.319131,5.543938 52.319131,5.543938 52.319131,5.543938 52.319131,5.543938 52.31913,5.543938 52.31913,5.543938 52.31913,5.543938 52.319129,5.543938 52.319129,5.543938 52.319129,5.543938 52.319129,5.543939 52.319128,5.543939 52.319128,5.543939 52.319128,5.543939 52.319128,5.543939 52.319127,5.543939 52.319127,5.543939 52.319127,5.543939 52.319127,5.54394 52.319126,5.54394 52.319126,5.54394 52.319126,5.54394 52.319126,5.54394 52.319125,5.54394 52.319125,5.54394 52.319125,5.543941 52.319125,5.543941 52.319124,5.543941 52.319124,5.543941 52.319124,5.543941 52.319124,5.543941 52.319123,5.543941 52.319123,5.543942 52.319123,5.543942 52.319123,5.543942 52.319122,5.543942 52.319122,5.543942 52.319122,5.543942 52.319122,5.543943 52.319121,5.543943 52.319121,5.543943 52.319121,5.543943 52.319121,5.543943 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.31912,5.543944 52.319119,5.543945 52.319119,5.543945 52.319119,5.543945 52.319119,5.543945 52.319118,5.543945 52.319118,5.543946 52.319118,5.543946 52.319118,5.543946 52.319117,5.543946 52.319117,5.543947 52.319117,5.543947 52.319117,5.543947 52.319116,5.543947 52.319116,5.543948 52.319116,5.543948 52.319116,5.543948 52.319115,5.543948 52.319115,5.543948 52.319115,5.543949 52.319115,5.543949 52.319114,5.543949 52.319114,5.54395 52.319114,5.54395 52.319114,5.54395 52.319113,5.54395 52.319113,5.543951 52.319113,5.543951 52.319113,5.543951 52.319112,5.543951 52.319112,5.543952 52.319112,5.543952 52.319112,5.543952 52.319112,5.543953 52.319111,5.543953 52.319111,5.543953 52.319111,5.543953 52.319111,5.543954 52.31911,5.543954 52.31911,5.543954 52.31911,5.543955 52.31911,5.543955 52.31911,5.543955 52.319109,5.543955 52.319109,5.543956 52.319109,5.543956 52.319109,5.543956 52.319108,5.543957 52.319108,5.543957 52.319108,5.543957 52.319108,5.543958 52.319108,5.543958 52.319107,5.543958 52.319107,5.543959 52.319107,5.543959 52.319107,5.543959 52.319107,5.54396 52.319106,5.54396 52.319106,5.54396 52.319106,5.543961 52.319106,5.543961 52.319106,5.543961 52.319105,5.543962 52.319105,5.543962 52.319105,5.543962 52.319105,5.543963 52.319105,5.543963 52.319104,5.543963 52.319104,5.543964 52.319104,5.543964 52.319104,5.543964 52.319104,5.543965 52.319104,5.543965 52.319103,5.543965 52.319103,5.543966 52.319103,5.543966 52.319103,5.543967 52.319103,5.543967 52.319103,5.543967 52.319102,5.543968 52.319102,5.543968 52.319102,5.543968 52.319102,5.543969 52.319102,5.543969 52.319101,5.54397 52.319101,5.54397 52.319101,5.54397 52.319101,5.543971 52.319101,5.543971 52.319101,5.543971 52.319101,5.543972 52.3191,5.543972 52.3191,5.543973 52.3191,5.543973 52.3191,5.543973 52.3191,5.543974 52.3191,5.543974 52.319099,5.543975 52.319099,5.543975 52.319099,5.543975 52.319099,5.543982 52.319098,5.544002 52.319093,5.54402 52.31909,5.544039 52.31909,5.544057 52.319093,5.544065 52.319095,5.54408 52.319101,5.544094 52.319108,5.544104 52.319117,5.544112 52.319128,5.544211 52.319314,5.544215 52.319317,5.544225 52.319317,5.544228 52.319319,5.544371 52.319589,5.544394 52.319632,5.544596 52.320014,5.544597 52.320018,5.544596 52.320021,5.544593 52.320024,5.544588 52.320026,5.544734 52.320302,5.54478 52.320294,5.544775 52.320283,5.545141 52.32021,5.545659 52.320107,5.54587 52.320065,5.545919 52.320056,5.546024 52.320035,5.546047 52.32003,5.546093 52.320021,5.546636 52.319913,5.546762 52.319888,5.546811 52.319879,5.546813 52.319878,5.546939 52.319853,5.54694 52.319852,5.546944 52.319851,5.546944 52.319844,5.546946 52.319841,5.546948 52.319838,5.546954 52.319836,5.547103 52.319807,5.547109 52.319806,5.547115 52.319807,5.54712 52.31981,5.547125 52.319814,5.547131 52.319815,5.547435 52.319754,5.547456 52.31979,5.547558 52.319987,5.547608 52.319977,5.547647 52.320052,5.547808 52.32002,5.548042 52.319973,5.548275 52.319926,5.548484 52.319885,5.548806 52.31982,5.548813 52.319885,5.548819 52.319979,5.548825 52.320058,5.548835 52.320286,5.54884 52.320427,5.548899 52.320436,5.548987 52.32045,5.548983 52.320152,5.548978 52.320096,5.548976 52.320078,5.548974 52.32006,5.54892 52.319491,5.548824 52.319089,5.548574 52.318331,5.548532 52.318238,5.548428 52.318021,5.548202 52.317554,5.547439 52.316113,5.546652 52.314618,5.546196 52.313754,5.546874 52.313622,5.547194 52.314229,5.547515 52.314837,5.547836 52.315444,5.548157 52.316052,5.54825 52.316227,5.548342 52.316402,5.548458 52.316622,5.548574 52.316842,5.548654 52.316993,5.548734 52.317144,5.548814 52.317296,5.548894 52.317447,5.548939 52.317536,5.548984 52.317625,5.549065 52.317792,5.549146 52.317958,5.549209 52.318109,5.549272 52.318259,5.549301 52.318332,5.549329 52.318405,5.549355 52.318485,5.549381 52.318566,5.549407 52.318646,5.549433 52.318727,5.549478 52.318888,5.549522 52.31905,5.549544 52.319153,5.549567 52.319255,5.549589 52.319358,5.549611 52.31946,5.549624 52.319563,5.549637 52.319666,5.54965 52.319769,5.549663 52.319872,5.549668 52.319959,5.549673 52.320047,5.549677 52.320135,5.549682 52.320222,5.549683 52.320311,5.549683 52.320399,5.549684 52.320487,5.549685 52.320576,5.549681 52.32065,5.549677 52.320725,5.549673 52.320799,5.549669 52.320874,5.549659 52.320956,5.549649 52.321038,5.549638 52.32112,5.549628 52.321201,5.549618 52.321262,5.549607 52.321322,5.549601 52.321357,5.549598 52.321376,5.549594 52.321396,5.549577 52.321493,5.54956 52.321591,5.549526 52.321728,5.549493 52.321866,5.54945 52.32202,5.549428 52.322098,5.549407 52.322175,5.549373 52.322264,5.54934 52.322353,5.549307 52.322443,5.549245 52.3226,5.549185 52.322737,5.549156 52.322805,5.549086 52.322954,5.54898 52.323173,5.548874 52.323384,5.548804 52.323525,5.548732 52.323663,5.548643 52.323836,5.548553 52.324008,5.548441 52.324224,5.548365 52.32437,5.548265 52.324504,5.548265 52.324504,5.548265 52.324504,5.548265 52.324504,5.548264 52.324504,5.548264 52.324505,5.548264 52.324505,5.548264 52.324505,5.548264 52.324505,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548262 52.324507,5.548262 52.324507,5.548262 52.324507,5.548262 52.324507,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.54826 52.324509,5.54826 52.324509,5.54826 52.324509,5.54826 52.324509,5.548259 52.32451,5.548259 52.32451,5.548259 52.32451,5.548259 52.32451,5.548258 52.32451,5.548258 52.324511,5.548258 52.324511,5.548258 52.324511,5.548257 52.324511,5.548257 52.324511,5.548257 52.324512,5.548256 52.324512,5.548256 52.324512,5.548256 52.324512,5.548256 52.324512,5.548255 52.324513,5.548255 52.324513,5.548255 52.324513,5.548255 52.324513,5.548254 52.324513,5.548254 52.324514,5.548254 52.324514,5.548253 52.324514,5.548253 52.324514,5.548253 52.324514,5.548253 52.324515,5.548252 52.324515,5.548252 52.324515,5.548252 52.324515,5.548251 52.324515,5.548251 52.324515,5.548251 52.324516,5.54825 52.324516,5.54825 52.324516,5.54825 52.324516,5.548249 52.324516,5.548249 52.324517,5.548249 52.324517,5.548249 52.324517,5.548248 52.324517,5.548248 52.324517,5.548248 52.324517,5.548247 52.324518,5.548247 52.324518,5.548247 52.324518,5.548246 52.324518,5.548246 52.324518,5.548246 52.324518,5.548245 52.324519,5.548245 52.324519,5.548245 52.324519,5.548244 52.324519,5.548244 52.324519,5.548244 52.324519,5.548243 52.32452,5.548243 52.32452,5.548242 52.32452,5.548242 52.32452,5.548242 52.32452,5.548241 52.32452,5.548241 52.32452,5.548241 52.324521,5.54824 52.324521,5.54824 52.324521,5.54824 52.324521,5.548239 52.324521,5.548239 52.324521,5.548239 52.324521,5.548238 52.324522,5.548238 52.324522,5.548237 52.324522,5.548237 52.324522,5.548237 52.324522,5.548236 52.324522,5.548236 52.324522,5.54823 52.324523,5.548217 52.324525,5.548202 52.324527,5.548187 52.324528,5.548176 52.324528,5.548151 52.324524,5.548149 52.324523,5.548106 52.324516,5.548115 52.324499,5.548114 52.324499,5.548072 52.324491,5.548059 52.324489,5.547517 52.324391,5.547403 52.324371,5.547379 52.324367,5.546593 52.324225,5.546576 52.324223,5.546562 52.324219,5.54655 52.324213,5.546545 52.32421,5.546537 52.324202,5.546534 52.324197,5.546532 52.324189,5.546532 52.32418,5.546583 52.32407,5.546589 52.324062,5.546597 52.324054,5.546608 52.324048,5.546621 52.324043,5.546613 52.324033,5.546609 52.324027,5.546627 52.324024,5.546636 52.324023,5.546656 52.324024,5.546665 52.324026,5.547472 52.32417,5.547489 52.324173,5.547492 52.324172,5.547538 52.32408,5.547841 52.323443,5.547853 52.323418,5.547871 52.32338,5.547892 52.323335,5.548013 52.323078,5.548161 52.322771,5.548184 52.322722,5.548189 52.322713,5.548195 52.3227,5.548201 52.322687,5.548202 52.322685,5.548478 52.322107,5.548506 52.322112,5.548526 52.322069,5.548547 52.322024,5.548565 52.32199,5.548551 52.321978,5.548636 52.321796,5.548573 52.321785,5.54861 52.321708,5.548545 52.321695,5.548398 52.321665,5.548203 52.321635,5.548532 52.320941,5.548468 52.32093,5.548507 52.320848,5.548297 52.320811,5.548059 52.320768,5.547826 52.320726,5.547663 52.320697,5.547618 52.320793,5.547555 52.320782,5.547503 52.320891,5.547477 52.320945,5.547456 52.320989,5.547346 52.32097,5.54722 52.320947,5.546839 52.320879,5.546793 52.320871,5.546575 52.320832,5.546528 52.320823,5.546504 52.320819,5.546345 52.320791,5.546217 52.320768,5.545911 52.320713,5.545864 52.320705,5.544785 52.320511,5.544742 52.320504,5.544724 52.320511,5.544603 52.320761,5.544591 52.320787,5.544578 52.320813,5.544456 52.321072,5.544402 52.321184,5.544412 52.321194,5.544385 52.321249,5.544376 52.321248,5.544373 52.321255,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544347 52.321264,5.544347 52.321264,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321266,5.544344 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321267,5.54434 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321268,5.544335 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544328 52.321268,5.544328 52.321268,5.544328 52.321268,5.544328 52.321268,5.544328 52.321269,5.544328 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544302 52.321269,5.544302 52.321269,5.544302 52.321269,5.544302 52.321268,5.544302 52.321268,5.544302 52.321268,5.544302 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544295 52.321268,5.544295 52.321268,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.54425 52.321259,5.54425 52.321259,5.54425 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.54424 52.321258,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544233 52.321256,5.544233 52.321256,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.54423 52.321255,5.54423 52.321255,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544225 52.321253,5.544225 52.321253,5.544225 52.321253,5.544225 52.321252,5.544225 52.321252,5.544225 52.321252,5.544225 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321251,5.544223 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321248,5.544217 52.321248,5.544217 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544215 52.321248,5.544215 52.321248,5.544215 52.321248,5.544215 52.321247,5.544215 52.321247,5.544215 52.321247,5.544215 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544212 52.321246,5.544212 52.321246,5.544212 52.321246,5.544212 52.321246,5.544212 52.321245,5.544212 52.321245,5.544212 52.321245,5.544212 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.544209 52.321244,5.544209 52.321244,5.544209 52.321244,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321242,5.544208 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544205 52.321241,5.544205 52.321241,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544204 52.32124,5.544204 52.32124,5.544204 52.32124,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544203 52.321239,5.544203 52.321239,5.544203 52.321239,5.544203 52.321239,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544202 52.321238,5.544202 52.321238,5.544202 52.321238,5.544202 52.321238,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544201 52.321237,5.544201 52.321237,5.544201 52.321237,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.5442 52.321236,5.5442 52.321236,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.544199 52.321235,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544196 52.32123,5.544196 52.32123,5.544205 52.321209,5.544195 52.321207)),((5.548779 52.321745,5.54877 52.32178,5.548761 52.321816,5.548706 52.322028,5.548615 52.322018,5.548683 52.321761,5.548687 52.321738,5.548704 52.321661,5.548712 52.321625,5.54872 52.321589,5.548769 52.321371,5.548775 52.321336,5.548822 52.320976,5.548826 52.32094,5.548833 52.320887,5.548855 52.320611,5.548868 52.320536,5.548898 52.320537,5.548917 52.320538,5.54894 52.32061,5.548916 52.321032,5.54889 52.321275,5.548827 52.321561,5.548779 52.321745)),((5.473141 52.263978,5.47298 52.263943,5.472372 52.26381,5.471961 52.26372,5.471447 52.263599,5.471447 52.263599,5.471447 52.263599,5.471447 52.263599,5.471447 52.263598,5.471447 52.263598,5.471447 52.263598,5.471448 52.263597,5.471448 52.263597,5.471448 52.263597,5.471448 52.263597,5.471448 52.263596,5.471448 52.263596,5.471448 52.263596,5.471448 52.263596,5.471449 52.263595,5.471449 52.263595,5.471449 52.263595,5.471449 52.263594,5.471449 52.263594,5.471449 52.263594,5.471449 52.263594,5.471449 52.263593,5.471449 52.263593,5.47145 52.263593,5.47145 52.263592,5.47145 52.263592,5.47145 52.263592,5.47145 52.263592,5.47145 52.263591,5.47145 52.263591,5.47145 52.263591,5.47145 52.263591,5.47145 52.26359,5.47145 52.26359,5.471451 52.26359,5.471451 52.263589,5.471451 52.263589,5.471451 52.263589,5.471451 52.263589,5.471451 52.263588,5.471451 52.263588,5.471451 52.263588,5.471451 52.263587,5.471451 52.263587,5.471451 52.263587,5.471451 52.263587,5.471452 52.263586,5.471452 52.263586,5.471452 52.263586,5.471452 52.263586,5.471452 52.263585,5.471452 52.263585,5.471452 52.263585,5.471452 52.263584,5.471452 52.263584,5.471452 52.263584,5.471452 52.263584,5.471452 52.263583,5.471452 52.263583,5.471452 52.263583,5.471452 52.263582,5.471452 52.263582,5.471452 52.263582,5.471452 52.263582,5.471453 52.263581,5.471453 52.263581,5.471453 52.263581,5.471453 52.26358,5.471453 52.26358,5.471453 52.26358,5.471453 52.26358,5.471453 52.263579,5.471453 52.263579,5.471453 52.263579,5.471453 52.263578,5.471453 52.263578,5.471453 52.263578,5.471453 52.263578,5.471453 52.263577,5.471453 52.263577,5.471453 52.263577,5.471453 52.263576,5.471453 52.263576,5.471453 52.263576,5.471453 52.263576,5.471453 52.263575,5.471453 52.263575,5.471453 52.263575,5.471453 52.263574,5.471453 52.263574,5.471453 52.263574,5.471453 52.263574,5.471453 52.263573,5.471453 52.263573,5.471453 52.263573,5.471453 52.263572,5.471453 52.263572,5.471453 52.263572,5.471453 52.263572,5.471453 52.263571,5.471453 52.263571,5.471453 52.263571,5.471453 52.263571,5.471453 52.263571,5.471453 52.26357,5.471453 52.26357,5.471453 52.26357,5.471453 52.263569,5.471453 52.263569,5.471453 52.263569,5.471453 52.263569,5.471453 52.263568,5.471453 52.263568,5.471453 52.263568,5.471453 52.263568,5.471453 52.263567,5.471453 52.263567,5.471453 52.263567,5.471453 52.263567,5.471453 52.263566,5.471453 52.263566,5.471453 52.263566,5.471453 52.263565,5.471453 52.263565,5.471453 52.263565,5.471453 52.263565,5.471453 52.263564,5.471453 52.263564,5.471453 52.263564,5.471453 52.263564,5.471453 52.263563,5.471452 52.263563,5.471452 52.263563,5.471452 52.263563,5.471452 52.263562,5.471452 52.263562,5.471452 52.263562,5.471452 52.263561,5.471452 52.263561,5.471452 52.263561,5.471452 52.263561,5.471452 52.26356,5.471452 52.26356,5.471452 52.26356,5.471452 52.26356,5.471452 52.263559,5.471452 52.263559,5.471452 52.263559,5.471452 52.263559,5.471452 52.263558,5.471452 52.263558,5.471452 52.263558,5.471452 52.263557,5.471452 52.263557,5.471452 52.263557,5.471452 52.263557,5.471452 52.263556,5.471451 52.263556,5.471451 52.263556,5.471451 52.263556,5.471451 52.263555,5.471451 52.263555,5.471451 52.263555,5.471451 52.263555,5.471451 52.263554,5.471451 52.263554,5.471451 52.263554,5.471451 52.263553,5.471451 52.263553,5.471451 52.263553,5.471451 52.263553,5.471451 52.263552,5.471451 52.263552,5.471451 52.263552,5.471451 52.263552,5.47145 52.263551,5.47145 52.263551,5.47145 52.263551,5.47145 52.263551,5.47145 52.26355,5.47145 52.26355,5.47145 52.26355,5.47145 52.26355,5.47145 52.263549,5.47145 52.263549,5.47145 52.263549,5.47145 52.263548,5.47145 52.263548,5.47145 52.263548,5.47145 52.263548,5.471449 52.263547,5.471449 52.263547,5.471449 52.263547,5.471449 52.263547,5.471449 52.263546,5.471449 52.263546,5.471449 52.263546,5.471449 52.263546,5.471449 52.263545,5.471449 52.263545,5.471449 52.263545,5.471447 52.26354,5.472299 52.26374,5.47232 52.263695,5.47252 52.263276,5.473443 52.263442,5.476121 52.263924,5.476566 52.262992,5.476772 52.26256,5.476849 52.262399,5.480184 52.262989,5.489744 52.26468,5.50443 52.267275,5.519033 52.269853,5.519056 52.269857,5.522166 52.270406,5.529674 52.271928,5.529969 52.271988,5.533281 52.27274,5.534812 52.27408,5.536206 52.276353,5.537005 52.277866,5.538034 52.279813,5.538611 52.280904,5.543361 52.289886,5.545166 52.293299,5.545168 52.293302,5.548112 52.298867,5.548464 52.299533,5.552671 52.307481,5.552865 52.307848,5.553655 52.309341,5.55506 52.311994,5.555483 52.312793,5.555484 52.312794,5.555506 52.312837,5.55762 52.316829,5.560651 52.32255,5.560806 52.322843,5.560806 52.322844,5.562378 52.32581,5.565864 52.332389,5.565864 52.33239,5.567137 52.334791,5.569517 52.339281,5.571897 52.343771,5.574278 52.348261,5.575604 52.35076,5.575657 52.350809,5.577785 52.352749,5.578014 52.352958,5.585682 52.359947,5.587707 52.361454,5.588333 52.361719,5.591157 52.362916,5.592357 52.363066,5.592724 52.363112,5.592726 52.363112,5.592739 52.363114,5.594543 52.363339,5.594633 52.36335,5.595456 52.363448,5.596584 52.363544,5.596987 52.363568,5.597404 52.363579,5.597937 52.363591,5.59829 52.363589,5.598597 52.363583,5.604955 52.363392,5.605469 52.36336,5.605903 52.363312,5.606301 52.363247,5.606837 52.363125,5.607398 52.362948,5.607419 52.36294,5.607504 52.362906,5.607813 52.362782,5.608097 52.362647,5.608358 52.362505,5.608596 52.362357,5.608852 52.362173,5.609052 52.362012,5.60921 52.361861,5.609394 52.361682,5.610082 52.361011,5.610859 52.360255,5.611638 52.3595,5.612328 52.360292,5.613532 52.361674,5.614039 52.362256,5.61406 52.362262,5.614067 52.362264,5.614344 52.362341,5.61435 52.362343,5.613236 52.362822,5.611599 52.363484,5.611586 52.363472,5.611568 52.363457,5.611568 52.363457,5.611562 52.36346,5.611557 52.363463,5.611551 52.363465,5.611545 52.363468,5.61154 52.363471,5.611534 52.363474,5.611529 52.363477,5.611523 52.36348,5.611518 52.363483,5.611513 52.363486,5.611508 52.363489,5.611503 52.363492,5.611498 52.363495,5.611493 52.363499,5.611489 52.363502,5.611484 52.363506,5.61148 52.363509,5.611475 52.363513,5.611471 52.363516,5.611467 52.36352,5.611463 52.363524,5.611459 52.363527,5.611455 52.363531,5.611451 52.363535,5.611448 52.363539,5.611444 52.363543,5.611441 52.363546,5.611438 52.36355,5.611434 52.363554,5.611431 52.363558,5.611429 52.363562,5.611426 52.363567,5.611423 52.363571,5.611421 52.363575,5.611418 52.363579,5.611416 52.363583,5.611414 52.363587,5.611412 52.363592,5.61141 52.363596,5.611408 52.3636,5.611406 52.363605,5.611405 52.363609,5.611403 52.363613,5.611402 52.363618,5.611401 52.363622,5.6114 52.363626,5.611399 52.363631,5.611398 52.363635,5.611398 52.36364,5.611397 52.363644,5.611397 52.363648,5.611397 52.363653,5.611396 52.363657,5.611396 52.363662,5.611397 52.363666,5.611397 52.363671,5.611397 52.363675,5.611398 52.363679,5.611399 52.363684,5.611399 52.363688,5.6114 52.363693,5.611401 52.363697,5.611403 52.363701,5.611404 52.363706,5.611405 52.36371,5.611407 52.363714,5.611409 52.363719,5.611411 52.363723,5.611412 52.363727,5.611415 52.363732,5.611417 52.363736,5.611419 52.36374,5.611422 52.363744,5.611424 52.363748,5.611427 52.363752,5.61143 52.363756,5.611433 52.36376,5.611436 52.363764,5.611439 52.363768,5.611442 52.363772,5.611446 52.363776,5.611449 52.36378,5.611453 52.363784,5.611457 52.363788,5.61146 52.363792,5.611464 52.363795,5.611468 52.363799,5.611473 52.363802,5.611477 52.363806,5.611481 52.36381,5.611486 52.363813,5.611491 52.363816,5.611495 52.36382,5.6115 52.363823,5.611505 52.363826,5.61151 52.36383,5.611515 52.363833,5.61152 52.363836,5.611526 52.363839,5.611526 52.363839,5.611487 52.363859,5.61145 52.363877,5.61143 52.363888,5.61121 52.364005,5.611179 52.364022,5.611126 52.364051,5.61098 52.364132,5.610882 52.364188,5.610828 52.364219,5.610772 52.364251,5.610724 52.36428,5.610706 52.364271,5.610657 52.364248,5.610567 52.364207,5.610567 52.364207,5.610563 52.364206,5.610559 52.364205,5.610555 52.364204,5.610551 52.364203,5.610547 52.364202,5.610543 52.364201,5.610539 52.3642,5.610535 52.364199,5.610531 52.364198,5.610527 52.364197,5.610522 52.364196,5.610518 52.364195,5.610514 52.364194,5.61051 52.364193,5.610505 52.364193,5.610501 52.364192,5.610497 52.364191,5.610492 52.364191,5.610488 52.36419,5.610484 52.364189,5.610479 52.364189,5.610475 52.364188,5.610471 52.364188,5.610466 52.364187,5.610462 52.364187,5.610457 52.364186,5.610453 52.364186,5.610449 52.364186,5.610444 52.364185,5.61044 52.364185,5.610435 52.364185,5.610431 52.364185,5.610426 52.364185,5.610422 52.364184,5.610418 52.364184,5.610413 52.364184,5.610409 52.364184,5.610404 52.364184,5.6104 52.364184,5.610395 52.364184,5.610391 52.364185,5.610386 52.364185,5.610382 52.364185,5.610377 52.364185,5.610373 52.364185,5.610369 52.364186,5.610364 52.364186,5.61036 52.364186,5.610355 52.364187,5.610351 52.364187,5.610347 52.364188,5.610342 52.364188,5.610338 52.364189,5.610333 52.364189,5.610329 52.36419,5.610325 52.36419,5.61032 52.364191,5.610316 52.364192,5.610312 52.364193,5.610308 52.364193,5.610303 52.364194,5.610299 52.364195,5.610295 52.364196,5.610291 52.364197,5.610286 52.364198,5.610282 52.364199,5.610278 52.364199,5.610274 52.364201,5.61027 52.364202,5.610266 52.364203,5.610262 52.364204,5.610258 52.364205,5.610254 52.364206,5.61025 52.364207,5.610246 52.364208,5.610242 52.36421,5.610238 52.364211,5.610234 52.364212,5.61023 52.364214,5.610226 52.364215,5.610222 52.364217,5.610219 52.364218,5.610215 52.364219,5.610211 52.364221,5.610208 52.364222,5.610204 52.364224,5.6102 52.364226,5.610197 52.364227,5.610193 52.364229,5.61019 52.364231,5.610186 52.364232,5.610183 52.364234,5.610179 52.364236,5.610176 52.364237,5.610173 52.364239,5.610169 52.364241,5.610166 52.364243,5.610163 52.364245,5.61016 52.364247,5.61016 52.364247,5.609984 52.364389,5.609274 52.364887,5.609058 52.365031,5.608736 52.365205,5.608523 52.365327,5.608278 52.365423,5.60757 52.365718,5.606185 52.366292,5.606117 52.366298,5.605955 52.366296,5.605635 52.36629,5.604938 52.366276,5.604298 52.366171,5.603829 52.366088,5.603444 52.366018,5.602775 52.365883,5.60226 52.36579,5.601847 52.365706,5.601318 52.365594,5.601233 52.365583,5.601176 52.365576,5.6011 52.365566,5.600659 52.365484,5.599201 52.365213,5.597742 52.364943,5.596284 52.364672,5.59506 52.364439,5.592743 52.363997,5.590189 52.363511,5.590189 52.363511,5.590175 52.363508,5.590161 52.363505,5.590147 52.363502,5.590133 52.363499,5.590119 52.363496,5.590105 52.363493,5.590091 52.36349,5.590077 52.363487,5.590063 52.363485,5.590049 52.363482,5.590036 52.363479,5.590022 52.363476,5.590008 52.363473,5.589994 52.36347,5.58998 52.363467,5.589966 52.363464,5.589952 52.363462,5.589938 52.363459,5.589924 52.363456,5.58991 52.363453,5.589896 52.36345,5.589882 52.363448,5.589868 52.363445,5.589854 52.363442,5.58984 52.363439,5.589826 52.363436,5.589812 52.363434,5.589798 52.363431,5.589784 52.363428,5.58977 52.363425,5.589755 52.363423,5.589741 52.36342,5.589727 52.363417,5.589713 52.363415,5.589699 52.363412,5.589685 52.363409,5.589671 52.363406,5.589657 52.363404,5.589643 52.363401,5.589629 52.363398,5.589615 52.363396,5.589601 52.363393,5.589587 52.363391,5.589573 52.363388,5.589558 52.363385,5.589544 52.363383,5.58953 52.36338,5.589516 52.363377,5.589502 52.363375,5.589488 52.363372,5.589474 52.36337,5.58946 52.363367,5.589446 52.363365,5.589431 52.363362,5.589417 52.36336,5.589403 52.363357,5.589389 52.363355,5.589375 52.363352,5.589361 52.363349,5.589346 52.363347,5.589332 52.363345,5.589318 52.363342,5.589304 52.36334,5.58929 52.363337,5.589276 52.363335,5.589261 52.363332,5.589247 52.36333,5.589233 52.363327,5.589219 52.363325,5.589205 52.363322,5.589191 52.36332,5.589176 52.363318,5.589162 52.363315,5.589148 52.363313,5.589134 52.363311,5.589119 52.363308,5.589105 52.363306,5.589091 52.363303,5.589077 52.363301,5.589063 52.363299,5.589048 52.363296,5.589034 52.363294,5.58902 52.363292,5.589006 52.36329,5.588991 52.363287,5.588977 52.363285,5.588963 52.363283,5.588949 52.36328,5.588934 52.363278,5.58892 52.363276,5.588906 52.363274,5.588892 52.363271,5.588877 52.363269,5.588863 52.363267,5.588849 52.363265,5.588834 52.363263,5.58882 52.36326,5.588806 52.363258,5.588792 52.363256,5.588792 52.363256,5.588762 52.363252,5.588733 52.363247,5.588704 52.363243,5.588674 52.363238,5.588645 52.363234,5.588616 52.363229,5.588586 52.363225,5.588557 52.363221,5.588527 52.363217,5.588498 52.363212,5.588469 52.363208,5.588439 52.363204,5.58841 52.3632,5.58838 52.363196,5.588351 52.363192,5.588321 52.363188,5.588292 52.363184,5.588262 52.36318,5.588233 52.363176,5.588203 52.363172,5.588174 52.363168,5.588144 52.363165,5.588115 52.363161,5.588085 52.363157,5.588056 52.363153,5.588026 52.36315,5.587996 52.363146,5.587967 52.363142,5.587937 52.363139,5.587907 52.363135,5.587878 52.363132,5.587848 52.363128,5.587818 52.363125,5.587789 52.363121,5.587759 52.363118,5.587729 52.363115,5.5877 52.363111,5.58767 52.363108,5.58764 52.363105,5.587611 52.363102,5.587581 52.363099,5.587551 52.363095,5.587521 52.363092,5.587491 52.363089,5.587462 52.363086,5.587432 52.363083,5.587402 52.36308,5.587372 52.363077,5.587342 52.363074,5.587313 52.363071,5.587283 52.363069,5.587253 52.363066,5.587223 52.363063,5.587193 52.36306,5.587163 52.363058,5.587133 52.363055,5.587104 52.363052,5.587074 52.36305,5.587044 52.363047,5.587014 52.363045,5.586984 52.363042,5.586954 52.36304,5.586924 52.363037,5.586894 52.363035,5.586864 52.363032,5.586834 52.36303,5.586804 52.363028,5.586774 52.363025,5.586744 52.363023,5.586714 52.363021,5.586684 52.363019,5.586654 52.363017,5.586624 52.363015,5.586594 52.363013,5.586564 52.363011,5.586534 52.363009,5.586504 52.363007,5.586474 52.363005,5.586444 52.363003,5.586414 52.363001,5.586384 52.362999,5.586354 52.362997,5.586324 52.362996,5.586294 52.362994,5.586264 52.362992,5.586234 52.36299,5.586204 52.362989,5.586174 52.362987,5.586144 52.362986,5.586113 52.362984,5.586083 52.362983,5.586053 52.362981,5.586023 52.36298,5.585993 52.362978,5.585963 52.362977,5.585933 52.362976,5.585903 52.362974,5.585873 52.362973,5.585842 52.362972,5.585842 52.362972,5.585838 52.362972,5.585838 52.362972,5.585823 52.362971,5.585809 52.36297,5.585794 52.362969,5.585779 52.362968,5.585764 52.362968,5.585749 52.362967,5.585735 52.362966,5.58572 52.362965,5.585705 52.362965,5.58569 52.362964,5.585675 52.362963,5.58566 52.362962,5.585646 52.362962,5.585631 52.362961,5.585616 52.36296,5.585601 52.36296,5.585586 52.362959,5.585571 52.362958,5.585557 52.362958,5.585542 52.362957,5.585527 52.362957,5.585512 52.362956,5.585497 52.362955,5.585482 52.362955,5.585468 52.362954,5.585453 52.362954,5.585438 52.362953,5.585423 52.362953,5.585408 52.362952,5.585393 52.362952,5.585379 52.362951,5.585364 52.362951,5.585349 52.36295,5.585334 52.36295,5.585319 52.36295,5.585304 52.362949,5.585289 52.362949,5.585275 52.362948,5.58526 52.362948,5.585245 52.362948,5.58523 52.362947,5.585215 52.362947,5.5852 52.362947,5.585185 52.362946,5.585171 52.362946,5.585156 52.362946,5.585141 52.362945,5.585126 52.362945,5.585111 52.362945,5.585096 52.362945,5.585081 52.362944,5.585067 52.362944,5.585052 52.362944,5.585037 52.362944,5.585022 52.362943,5.585007 52.362943,5.584992 52.362943,5.584977 52.362943,5.584962 52.362943,5.584948 52.362943,5.584933 52.362943,5.584918 52.362943,5.584903 52.362942,5.584888 52.362942,5.584873 52.362942,5.584858 52.362942,5.584844 52.362942,5.584829 52.362942,5.584814 52.362942,5.584799 52.362942,5.584784 52.362942,5.584769 52.362942,5.584754 52.362942,5.584739 52.362942,5.584725 52.362942,5.58471 52.362942,5.584695 52.362942,5.58468 52.362943,5.584665 52.362943,5.58465 52.362943,5.584635 52.362943,5.584621 52.362943,5.584606 52.362943,5.584591 52.362943,5.584576 52.362944,5.584561 52.362944,5.584546 52.362944,5.584531 52.362944,5.584516 52.362944,5.584502 52.362945,5.584487 52.362945,5.584472 52.362945,5.584457 52.362945,5.584442 52.362946,5.584427 52.362946,5.584412 52.362946,5.584398 52.362947,5.584383 52.362947,5.584368 52.362947,5.584368 52.362947,5.584353 52.362948,5.584338 52.362948,5.584323 52.362948,5.584308 52.362949,5.584294 52.362949,5.584279 52.36295,5.584264 52.36295,5.584249 52.36295,5.584234 52.362951,5.584219 52.362951,5.584204 52.362952,5.58419 52.362952,5.584175 52.362953,5.58416 52.362953,5.584145 52.362954,5.58413 52.362954,5.584115 52.362955,5.584101 52.362956,5.584086 52.362956,5.584071 52.362957,5.584056 52.362957,5.584041 52.362958,5.584026 52.362959,5.584012 52.362959,5.583997 52.36296,5.583982 52.362961,5.583967 52.362961,5.583952 52.362962,5.583937 52.362963,5.583923 52.362963,5.583908 52.362964,5.583893 52.362965,5.583878 52.362966,5.583863 52.362966,5.583849 52.362967,5.583834 52.362968,5.583819 52.362969,5.583804 52.362969,5.583789 52.36297,5.583774 52.362971,5.58376 52.362972,5.583745 52.362973,5.58373 52.362974,5.583715 52.362975,5.5837 52.362975,5.583686 52.362976,5.583671 52.362977,5.583656 52.362978,5.583641 52.362979,5.583627 52.36298,5.583612 52.362981,5.583597 52.362982,5.583582 52.362983,5.583567 52.362984,5.583553 52.362985,5.583538 52.362986,5.583523 52.362987,5.583508 52.362988,5.583494 52.362989,5.583479 52.36299,5.583464 52.362991,5.583449 52.362992,5.583434 52.362994,5.58342 52.362995,5.583405 52.362996,5.58339 52.362997,5.583375 52.362998,5.583361 52.362999,5.583346 52.363,5.583331 52.363002,5.583317 52.363003,5.583302 52.363004,5.583287 52.363005,5.583272 52.363006,5.583258 52.363008,5.583243 52.363009,5.583228 52.36301,5.583213 52.363012,5.583199 52.363013,5.583184 52.363014,5.583169 52.363016,5.583155 52.363017,5.58314 52.363018,5.583125 52.36302,5.58311 52.363021,5.583096 52.363022,5.583081 52.363024,5.583066 52.363025,5.583052 52.363027,5.583037 52.363028,5.583022 52.363029,5.583008 52.363031,5.582993 52.363032,5.582978 52.363034,5.582964 52.363035,5.582949 52.363037,5.582934 52.363038,5.58292 52.36304,5.582905 52.363041,5.582905 52.363041,5.5829 52.363042,5.5829 52.363042,5.582882 52.363044,5.582864 52.363045,5.582846 52.363047,5.582828 52.363049,5.58281 52.36305,5.582792 52.363052,5.582774 52.363054,5.582756 52.363056,5.582738 52.363057,5.58272 52.363059,5.582702 52.363061,5.582684 52.363063,5.582666 52.363065,5.582648 52.363067,5.58263 52.363068,5.582612 52.36307,5.582594 52.363072,5.582576 52.363074,5.582558 52.363076,5.58254 52.363078,5.582522 52.36308,5.582504 52.363082,5.582486 52.363084,5.582468 52.363086,5.58245 52.363088,5.582432 52.36309,5.582414 52.363092,5.582396 52.363094,5.582378 52.363096,5.58236 52.363098,5.582342 52.3631,5.582324 52.363102,5.582307 52.363104,5.582289 52.363107,5.582271 52.363109,5.582253 52.363111,5.582235 52.363113,5.582217 52.363115,5.582199 52.363118,5.582181 52.36312,5.582163 52.363122,5.582145 52.363124,5.582128 52.363126,5.58211 52.363129,5.582092 52.363131,5.582074 52.363133,5.582056 52.363136,5.582038 52.363138,5.58202 52.36314,5.582003 52.363143,5.581985 52.363145,5.581967 52.363147,5.581949 52.36315,5.581931 52.363152,5.581913 52.363155,5.581896 52.363157,5.581878 52.36316,5.58186 52.363162,5.581842 52.363165,5.581824 52.363167,5.581807 52.36317,5.581789 52.363172,5.581771 52.363175,5.581753 52.363177,5.581735 52.36318,5.581718 52.363182,5.5817 52.363185,5.581682 52.363188,5.581664 52.36319,5.581647 52.363193,5.581629 52.363195,5.581611 52.363198,5.581593 52.363201,5.581576 52.363203,5.581558 52.363206,5.58154 52.363209,5.581523 52.363212,5.581505 52.363214,5.581487 52.363217,5.581469 52.36322,5.581452 52.363223,5.581434 52.363226,5.581416 52.363228,5.581399 52.363231,5.581381 52.363234,5.581363 52.363237,5.581346 52.36324,5.581328 52.363243,5.581311 52.363246,5.581293 52.363248,5.581275 52.363251,5.581258 52.363254,5.58124 52.363257,5.581222 52.36326,5.581205 52.363263,5.581187 52.363266,5.58117 52.363269,5.581152 52.363272,5.581135 52.363275,5.581135 52.363275,5.581117 52.363278,5.581099 52.363281,5.581082 52.363284,5.581064 52.363288,5.581047 52.363291,5.581029 52.363294,5.581012 52.363297,5.580994 52.3633,5.580977 52.363303,5.580959 52.363306,5.580942 52.36331,5.580924 52.363313,5.580907 52.363316,5.580889 52.363319,5.580872 52.363322,5.580854 52.363326,5.580837 52.363329,5.580819 52.363332,5.580802 52.363336,5.580784 52.363339,5.580767 52.363342,5.58075 52.363345,5.580732 52.363349,5.580715 52.363352,5.580697 52.363356,5.58068 52.363359,5.580663 52.363362,5.580645 52.363366,5.580628 52.363369,5.58061 52.363373,5.580593 52.363376,5.580576 52.36338,5.580558 52.363383,5.580541 52.363387,5.580524 52.36339,5.580506 52.363394,5.580489 52.363397,5.580472 52.363401,5.580454 52.363404,5.580437 52.363408,5.58042 52.363411,5.580403 52.363415,5.580385 52.363419,5.580368 52.363422,5.580351 52.363426,5.580333 52.36343,5.580316 52.363433,5.580299 52.363437,5.580282 52.363441,5.580265 52.363444,5.580247 52.363448,5.58023 52.363452,5.580213 52.363456,5.580196 52.363459,5.580179 52.363463,5.580161 52.363467,5.580144 52.363471,5.580127 52.363475,5.58011 52.363478,5.580093 52.363482,5.580076 52.363486,5.580058 52.36349,5.580041 52.363494,5.580024 52.363498,5.580007 52.363502,5.57999 52.363506,5.579973 52.36351,5.579956 52.363513,5.579939 52.363517,5.579922 52.363521,5.579905 52.363525,5.579888 52.363529,5.579871 52.363533,5.579854 52.363537,5.579837 52.363541,5.57982 52.363546,5.579803 52.36355,5.579786 52.363554,5.579769 52.363558,5.579752 52.363562,5.579735 52.363566,5.579718 52.36357,5.579701 52.363574,5.579684 52.363579,5.579667 52.363583,5.57965 52.363587,5.579633 52.363591,5.579616 52.363595,5.579599 52.3636,5.579582 52.363604,5.579565 52.363608,5.579549 52.363612,5.579532 52.363617,5.579515 52.363621,5.579498 52.363625,5.579481 52.36363,5.579464 52.363634,5.579447 52.363638,5.579431 52.363643,5.579431 52.363643,5.578043 52.363967,5.576651 52.364293,5.575259 52.364618,5.573868 52.364944,5.572476 52.365269,5.571084 52.365595,5.569692 52.36592,5.568301 52.366245,5.568182 52.366273,5.567264 52.366485,5.567264 52.366485,5.567254 52.366487,5.567244 52.36649,5.567234 52.366492,5.567224 52.366494,5.567214 52.366497,5.567205 52.366499,5.567195 52.366502,5.567185 52.366504,5.567175 52.366507,5.567165 52.366509,5.567155 52.366512,5.567145 52.366514,5.567135 52.366517,5.567125 52.366519,5.567115 52.366522,5.567105 52.366524,5.567095 52.366527,5.567086 52.366529,5.567076 52.366532,5.567066 52.366534,5.567056 52.366537,5.567046 52.366539,5.567036 52.366542,5.567026 52.366544,5.567016 52.366547,5.567006 52.366549,5.566996 52.366552,5.566987 52.366554,5.566977 52.366557,5.566967 52.366559,5.566957 52.366562,5.566947 52.366564,5.566937 52.366567,5.566927 52.366569,5.566917 52.366572,5.566908 52.366575,5.566898 52.366577,5.566888 52.36658,5.566878 52.366582,5.566868 52.366585,5.566858 52.366587,5.566848 52.36659,5.566839 52.366593,5.566829 52.366595,5.566819 52.366598,5.566809 52.3666,5.566799 52.366603,5.566789 52.366605,5.56678 52.366608,5.56677 52.366611,5.56676 52.366613,5.56675 52.366616,5.56674 52.366619,5.56673 52.366621,5.566721 52.366624,5.566711 52.366626,5.566701 52.366629,5.566691 52.366632,5.566681 52.366634,5.566672 52.366637,5.566662 52.36664,5.566652 52.366642,5.566642 52.366645,5.566632 52.366647,5.566623 52.36665,5.566613 52.366653,5.566603 52.366655,5.566593 52.366658,5.566583 52.366661,5.566574 52.366663,5.566564 52.366666,5.566554 52.366669,5.566544 52.366671,5.566534 52.366674,5.566525 52.366677,5.566515 52.366679,5.566505 52.366682,5.566495 52.366685,5.566486 52.366687,5.566476 52.36669,5.566466 52.366693,5.566456 52.366696,5.566447 52.366698,5.566437 52.366701,5.566427 52.366704,5.566417 52.366706,5.566408 52.366709,5.566398 52.366712,5.566388 52.366715,5.566378 52.366717,5.566369 52.36672,5.566359 52.366723,5.566349 52.366726,5.566339 52.366728,5.56633 52.366731,5.56632 52.366734,5.56631 52.366737,5.566301 52.366739,5.566291 52.366742,5.566291 52.366742,5.566276 52.366746,5.56626 52.366751,5.566245 52.366755,5.56623 52.36676,5.566215 52.366764,5.5662 52.366769,5.566185 52.366773,5.56617 52.366778,5.566154 52.366782,5.566139 52.366787,5.566124 52.366791,5.566109 52.366796,5.566094 52.3668,5.566079 52.366805,5.566064 52.366809,5.566049 52.366814,5.566034 52.366819,5.566019 52.366823,5.566004 52.366828,5.565989 52.366832,5.565974 52.366837,5.565959 52.366842,5.565944 52.366846,5.565929 52.366851,5.565914 52.366856,5.565899 52.36686,5.565884 52.366865,5.565869 52.36687,5.565854 52.366875,5.565839 52.366879,5.565824 52.366884,5.565809 52.366889,5.565795 52.366894,5.56578 52.366898,5.565765 52.366903,5.56575 52.366908,5.565735 52.366913,5.56572 52.366918,5.565705 52.366922,5.565691 52.366927,5.565676 52.366932,5.565661 52.366937,5.565646 52.366942,5.565631 52.366947,5.565617 52.366952,5.565602 52.366957,5.565587 52.366962,5.565572 52.366967,5.565558 52.366971,5.565543 52.366976,5.565528 52.366981,5.565514 52.366986,5.565499 52.366991,5.565484 52.366996,5.56547 52.367001,5.565455 52.367006,5.56544 52.367011,5.565426 52.367017,5.565411 52.367022,5.565396 52.367027,5.565382 52.367032,5.565367 52.367037,5.565353 52.367042,5.565338 52.367047,5.565323 52.367052,5.565309 52.367057,5.565294 52.367062,5.56528 52.367068,5.565265 52.367073,5.565251 52.367078,5.565236 52.367083,5.565222 52.367088,5.565207 52.367094,5.565193 52.367099,5.565178 52.367104,5.565164 52.367109,5.565149 52.367115,5.565135 52.36712,5.56512 52.367125,5.565106 52.36713,5.565092 52.367136,5.565077 52.367141,5.565063 52.367146,5.565048 52.367152,5.565034 52.367157,5.56502 52.367162,5.565005 52.367168,5.564991 52.367173,5.564977 52.367179,5.564962 52.367184,5.564948 52.367189,5.564934 52.367195,5.56492 52.3672,5.564905 52.367206,5.564891 52.367211,5.564877 52.367217,5.564863 52.367222,5.564848 52.367227,5.564834 52.367233,5.564834 52.367233,5.564083 52.367536,5.563979 52.367561,5.563959 52.367562,5.563928 52.367563,5.563897 52.367562,5.563867 52.367559,5.563837 52.367554,5.563809 52.367547,5.563782 52.367539,5.563756 52.367528,5.563732 52.367517,5.563393 52.367292,5.563168 52.367143,5.561839 52.366255,5.560431 52.365316,5.559394 52.364621,5.558356 52.363926,5.557319 52.363232,5.556281 52.362537,5.555135 52.361771,5.548675 52.357454,5.548425 52.357287,5.54743 52.356621,5.546436 52.355956,5.545441 52.35529,5.544447 52.354625,5.544412 52.354597,5.55307 52.349725,5.549058 52.347051,5.554294 52.336979,5.547677 52.335739,5.552691 52.334281,5.552725 52.334271,5.552759 52.334257,5.552791 52.334242,5.55282 52.334224,5.552846 52.334205,5.552868 52.334184,5.552885 52.334165,5.552897 52.334137,5.552903 52.334112,5.552904 52.334087,5.552901 52.334058,5.552293 52.331544,5.55285 52.322571,5.553341 52.322358,5.553468 52.322289,5.553568 52.322205,5.553636 52.322109,5.553668 52.322007,5.553996 52.319543,5.55399 52.319433,5.553945 52.319326,5.553862 52.319228,5.553746 52.319144,5.553603 52.319077,5.553439 52.319032,5.551257 52.318601,5.549982 52.316239,5.549277 52.314803,5.548841 52.313867,5.548811 52.313751,5.548684 52.313261,5.548632 52.31306,5.548679 52.312918,5.548584 52.312586,5.548593 52.312524,5.548616 52.312493,5.548659 52.312459,5.548707 52.312446,5.548806 52.312411,5.548926 52.312348,5.548926 52.312348,5.548928 52.312346,5.548931 52.312345,5.548934 52.312344,5.548936 52.312342,5.548939 52.312341,5.548942 52.31234,5.548944 52.312338,5.548947 52.312337,5.54895 52.312336,5.548952 52.312334,5.548955 52.312333,5.548958 52.312332,5.54896 52.31233,5.548963 52.312329,5.548965 52.312327,5.548968 52.312326,5.54897 52.312325,5.548973 52.312323,5.548975 52.312322,5.548978 52.31232,5.548981 52.312319,5.548983 52.312318,5.548986 52.312316,5.548988 52.312315,5.548991 52.312313,5.548993 52.312312,5.548995 52.31231,5.548998 52.312309,5.549 52.312307,5.549003 52.312306,5.549005 52.312304,5.549008 52.312303,5.54901 52.312301,5.549013 52.3123,5.549015 52.312298,5.549017 52.312297,5.54902 52.312295,5.549022 52.312294,5.549024 52.312292,5.549027 52.312291,5.549029 52.312289,5.549031 52.312288,5.549034 52.312286,5.549036 52.312285,5.549038 52.312283,5.549041 52.312281,5.549043 52.31228,5.549045 52.312278,5.549047 52.312277,5.54905 52.312275,5.549052 52.312274,5.549054 52.312272,5.549056 52.31227,5.549059 52.312269,5.549061 52.312267,5.549063 52.312266,5.549065 52.312264,5.549067 52.312262,5.54907 52.312261,5.549072 52.312259,5.549074 52.312257,5.549076 52.312256,5.549078 52.312254,5.54908 52.312252,5.549082 52.312251,5.549084 52.312249,5.549087 52.312247,5.549089 52.312246,5.549091 52.312244,5.549093 52.312242,5.549095 52.312241,5.549097 52.312239,5.549099 52.312237,5.549101 52.312236,5.549103 52.312234,5.549105 52.312232,5.549107 52.31223,5.549109 52.312229,5.549111 52.312227,5.549113 52.312225,5.549115 52.312223,5.549117 52.312222,5.549118 52.31222,5.54912 52.312218,5.549122 52.312216,5.549124 52.312215,5.549126 52.312213,5.549128 52.312211,5.54913 52.312209,5.549132 52.312208,5.549133 52.312206,5.549135 52.312204,5.549137 52.312202,5.549139 52.3122,5.549141 52.312199,5.549142 52.312197,5.549144 52.312195,5.549146 52.312193,5.549148 52.312191,5.549148 52.312191,5.549148 52.312191,5.549149 52.31219,5.549149 52.31219,5.54915 52.312189,5.54915 52.312189,5.549151 52.312188,5.549151 52.312188,5.549152 52.312187,5.549152 52.312187,5.549152 52.312186,5.549153 52.312185,5.549153 52.312185,5.549154 52.312184,5.549154 52.312184,5.549155 52.312183,5.549155 52.312183,5.549156 52.312182,5.549156 52.312182,5.549156 52.312181,5.549157 52.312181,5.549157 52.31218,5.549158 52.312179,5.549158 52.312179,5.549159 52.312178,5.549159 52.312178,5.549159 52.312177,5.54916 52.312177,5.54916 52.312176,5.54916 52.312175,5.549161 52.312175,5.549161 52.312174,5.549162 52.312174,5.549162 52.312173,5.549162 52.312173,5.549163 52.312172,5.549163 52.312171,5.549163 52.312171,5.549164 52.31217,5.549164 52.31217,5.549164 52.312169,5.549165 52.312168,5.549165 52.312168,5.549165 52.312167,5.549166 52.312167,5.549166 52.312166,5.549166 52.312166,5.549167 52.312165,5.549167 52.312164,5.549167 52.312164,5.549168 52.312163,5.549168 52.312163,5.549168 52.312162,5.549168 52.312161,5.549169 52.312161,5.549169 52.31216,5.549169 52.31216,5.549169 52.312159,5.54917 52.312158,5.54917 52.312158,5.54917 52.312157,5.54917 52.312157,5.549171 52.312156,5.549171 52.312155,5.549171 52.312155,5.549171 52.312154,5.549171 52.312154,5.549172 52.312153,5.549172 52.312152,5.549172 52.312152,5.549172 52.312151,5.549172 52.312151,5.549173 52.31215,5.549173 52.312149,5.549173 52.312149,5.549173 52.312148,5.549173 52.312148,5.549174 52.312147,5.549174 52.312146,5.549174 52.312146,5.549174 52.312145,5.549174 52.312145,5.549174 52.312144,5.549174 52.312143,5.549175 52.312143,5.549175 52.312142,5.549175 52.312141,5.549175 52.312141,5.549175 52.31214,5.549175 52.31214,5.549175 52.312139,5.549175 52.312138,5.549175 52.312138,5.549175 52.312137,5.549176 52.312137,5.549176 52.312136,5.549176 52.312135,5.549176 52.312135,5.549176 52.312134,5.549176 52.312134,5.549176 52.312134,5.54919 52.312135,5.549347 52.311526,5.549317 52.311527,5.549122 52.311136,5.549052 52.311056,5.548932 52.311004,5.548733 52.310973,5.548506 52.310937,5.547894 52.31084,5.547623 52.310778,5.547437 52.310676,5.547339 52.310637,5.547012 52.310491,5.547012 52.310491,5.547011 52.31049,5.547009 52.31049,5.547008 52.310489,5.547007 52.310488,5.547005 52.310488,5.547004 52.310487,5.547003 52.310486,5.547001 52.310485,5.547 52.310485,5.546999 52.310484,5.546997 52.310483,5.546996 52.310482,5.546995 52.310482,5.546993 52.310481,5.546992 52.31048,5.546991 52.310479,5.546989 52.310479,5.546988 52.310478,5.546987 52.310477,5.546986 52.310476,5.546984 52.310476,5.546983 52.310475,5.546982 52.310474,5.54698 52.310473,5.546979 52.310473,5.546978 52.310472,5.546977 52.310471,5.546975 52.31047,5.546974 52.310469,5.546973 52.310469,5.546971 52.310468,5.54697 52.310467,5.546969 52.310466,5.546968 52.310465,5.546966 52.310465,5.546965 52.310464,5.546964 52.310463,5.546963 52.310462,5.546961 52.310462,5.54696 52.310461,5.546959 52.31046,5.546958 52.310459,5.546956 52.310458,5.546955 52.310457,5.546954 52.310457,5.546953 52.310456,5.546952 52.310455,5.54695 52.310454,5.546949 52.310453,5.546948 52.310453,5.546947 52.310452,5.546946 52.310451,5.546944 52.31045,5.546943 52.310449,5.546942 52.310448,5.546941 52.310448,5.54694 52.310447,5.546938 52.310446,5.546937 52.310445,5.546936 52.310444,5.546935 52.310443,5.546934 52.310443,5.546933 52.310442,5.546932 52.310441,5.54693 52.31044,5.546929 52.310439,5.546928 52.310438,5.546927 52.310438,5.546926 52.310437,5.546925 52.310436,5.546924 52.310435,5.546922 52.310434,5.546921 52.310433,5.54692 52.310432,5.546919 52.310431,5.546918 52.310431,5.546917 52.31043,5.546916 52.310429,5.546915 52.310428,5.546914 52.310427,5.546912 52.310426,5.546911 52.310425,5.54691 52.310425,5.546909 52.310424,5.546908 52.310423,5.546907 52.310422,5.546906 52.310421,5.546905 52.31042,5.546904 52.310419,5.546903 52.310418,5.546902 52.310417,5.546901 52.310417,5.5469 52.310416,5.546899 52.310415,5.546898 52.310414,5.546897 52.310413,5.546895 52.310412,5.546894 52.310411,5.546893 52.31041,5.546893 52.31041,5.546892 52.310409,5.546891 52.310408,5.54689 52.310407,5.546889 52.310406,5.546888 52.310405,5.546886 52.310404,5.546885 52.310403,5.546884 52.310402,5.546883 52.310401,5.546882 52.3104,5.546881 52.310399,5.54688 52.310397,5.546878 52.310396,5.546877 52.310395,5.546876 52.310394,5.546875 52.310393,5.546874 52.310392,5.546873 52.310391,5.546872 52.31039,5.546871 52.310389,5.54687 52.310388,5.546868 52.310387,5.546867 52.310386,5.546866 52.310384,5.546865 52.310383,5.546864 52.310382,5.546863 52.310381,5.546862 52.31038,5.546861 52.310379,5.54686 52.310378,5.546859 52.310377,5.546858 52.310376,5.546857 52.310375,5.546856 52.310373,5.546855 52.310372,5.546854 52.310371,5.546853 52.31037,5.546852 52.310369,5.546851 52.310368,5.54685 52.310367,5.546849 52.310366,5.546848 52.310365,5.546847 52.310363,5.546846 52.310362,5.546845 52.310361,5.546844 52.31036,5.546843 52.310359,5.546842 52.310358,5.546841 52.310357,5.54684 52.310355,5.546839 52.310354,5.546838 52.310353,5.546837 52.310352,5.546836 52.310351,5.546835 52.31035,5.546834 52.310349,5.546833 52.310347,5.546832 52.310346,5.546832 52.310345,5.546831 52.310344,5.54683 52.310343,5.546829 52.310342,5.546828 52.310341,5.546827 52.310339,5.546826 52.310338,5.546825 52.310337,5.546824 52.310336,5.546823 52.310335,5.546823 52.310334,5.546822 52.310332,5.546821 52.310331,5.54682 52.31033,5.546819 52.310329,5.546818 52.310328,5.546818 52.310327,5.546817 52.310325,5.546816 52.310324,5.546815 52.310323,5.546814 52.310322,5.546813 52.310321,5.546813 52.31032,5.546812 52.310318,5.546811 52.310317,5.54681 52.310316,5.546809 52.310315,5.546809 52.310314,5.546808 52.310313,5.546807 52.310311,5.546806 52.31031,5.546806 52.310309,5.546805 52.310308,5.546804 52.310307,5.546803 52.310305,5.546803 52.310304,5.546802 52.310303,5.546801 52.310302,5.5468 52.310301,5.5468 52.310299,5.546799 52.310298,5.546799 52.310298,5.546798 52.310297,5.546797 52.310295,5.546796 52.310293,5.546795 52.310292,5.546794 52.31029,5.546793 52.310289,5.546793 52.310287,5.546792 52.310285,5.546791 52.310284,5.54679 52.310282,5.546789 52.310281,5.546788 52.310279,5.546787 52.310277,5.546786 52.310276,5.546785 52.310274,5.546785 52.310273,5.546784 52.310271,5.546783 52.310269,5.546782 52.310268,5.546781 52.310266,5.54678 52.310265,5.546779 52.310263,5.546778 52.310261,5.546778 52.31026,5.546777 52.310258,5.546776 52.310256,5.546775 52.310255,5.546774 52.310253,5.546773 52.310252,5.546772 52.31025,5.546772 52.310248,5.546771 52.310247,5.54677 52.310245,5.546769 52.310244,5.546768 52.310242,5.546767 52.31024,5.546766 52.310239,5.546765 52.310237,5.546765 52.310236,5.546764 52.310234,5.546763 52.310232,5.546762 52.310231,5.546761 52.310229,5.54676 52.310227,5.54676 52.310226,5.546759 52.310224,5.546758 52.310223,5.546757 52.310221,5.546756 52.310219,5.546755 52.310218,5.546754 52.310216,5.546754 52.310215,5.546753 52.310213,5.546752 52.310211,5.546751 52.31021,5.54675 52.310208,5.546749 52.310206,5.546749 52.310205,5.546748 52.310203,5.546747 52.310202,5.546746 52.3102,5.546745 52.310198,5.546744 52.310197,5.546744 52.310195,5.546743 52.310194,5.546742 52.310192,5.546741 52.31019,5.54674 52.310189,5.54674 52.310187,5.546739 52.310185,5.546738 52.310184,5.546737 52.310182,5.546736 52.310181,5.546735 52.310179,5.546735 52.310177,5.546734 52.310176,5.546733 52.310174,5.546732 52.310172,5.546731 52.310171,5.546731 52.310169,5.54673 52.310168,5.546729 52.310166,5.546728 52.310164,5.546727 52.310163,5.546727 52.310161,5.546726 52.310159,5.546725 52.310158,5.546724 52.310156,5.546723 52.310155,5.546723 52.310153,5.546722 52.310151,5.546721 52.31015,5.54672 52.310148,5.546719 52.310146,5.546719 52.310145,5.546718 52.310143,5.546717 52.310142,5.546716 52.31014,5.546715 52.310138,5.546715 52.310138,5.546695 52.310143,5.546653 52.310137,5.546561 52.310122,5.54648 52.310062,5.546389 52.30994,5.546368 52.309847,5.546346 52.309749,5.546256 52.309608,5.546274 52.309533,5.546204 52.309488,5.546032 52.309369,5.54591 52.309325,5.545823 52.309233,5.545685 52.309013,5.545677 52.309,5.545645 52.308885,5.545565 52.308745,5.545549 52.308622,5.545624 52.308491,5.545639 52.308444,5.545612 52.308399,5.545546 52.308364,5.545487 52.308318,5.545492 52.308283,5.545556 52.308238,5.545587 52.30816,5.545662 52.308062,5.545693 52.30798,5.545682 52.307945,5.545646 52.307921,5.545687 52.307898,5.545755 52.307872,5.545815 52.307861,5.545882 52.307835,5.545944 52.307774,5.546006 52.307686,5.545971 52.307637,5.545901 52.307589,5.545857 52.307548,5.545752 52.307542,5.545678 52.307545,5.545601 52.30758,5.545558 52.307576,5.545473 52.30754,5.545424 52.307449,5.545429 52.30741,5.545462 52.307362,5.545495 52.307355,5.545468 52.307317,5.545476 52.307284,5.545421 52.307174,5.545345 52.307166,5.545291 52.307118,5.545311 52.307097,5.545331 52.307073,5.545185 52.306935,5.544847 52.306552,5.544856 52.306392,5.544786 52.306277,5.544613 52.306167,5.544577 52.306165,5.544503 52.3061,5.544555 52.305984,5.544616 52.30595,5.54464 52.305744,5.544689 52.30547,5.544516 52.305278,5.544353 52.305224,5.544374 52.305121,5.544082 52.304713,5.543978 52.304545,5.543903 52.304252,5.543651 52.303367,5.543647 52.303354,5.54345 52.302758,5.543303 52.302702,5.54323 52.302669,5.543092 52.302587,5.542913 52.3025,5.54274 52.302447,5.542684 52.302352,5.542644 52.302232,5.542596 52.301991,5.542616 52.301829,5.542622 52.301718,5.542626 52.301684,5.542636 52.301651,5.542649 52.301625,5.542711 52.301584,5.542489 52.301369,5.542459 52.301237,5.542236 52.300944,5.542189 52.300463,5.542302 52.300074,5.542256 52.300073,5.542168 52.30007,5.542149 52.300049,5.542105 52.300002,5.542064 52.299943,5.541947 52.299898,5.541923 52.299893,5.5419 52.299887,5.541878 52.299879,5.541857 52.29987,5.541838 52.29986,5.54182 52.299847,5.541814 52.299838,5.541809 52.299828,5.541807 52.299818,5.541806 52.299808,5.541807 52.299796,5.541647 52.299713,5.541628 52.299537,5.541541 52.29934,5.541483 52.299227,5.541251 52.298973,5.541193 52.298876,5.540891 52.298374,5.540831 52.298316,5.540577 52.298139,5.540319 52.297981,5.540211 52.29792,5.540121 52.297736,5.53993 52.297051,5.53989 52.296699,5.539693 52.296504,5.539429 52.296041,5.539314 52.295733,5.538766 52.294639,5.538513 52.29446,5.538338 52.294386,5.537647 52.294097,5.537552 52.293888,5.537508 52.293788,5.537561 52.293707,5.537588 52.293604,5.537245 52.293419,5.537142 52.293233,5.536993 52.293126,5.536668 52.292535,5.53668 52.292234,5.536859 52.291899,5.536811 52.291803,5.536736 52.291786,5.536694 52.291734,5.536691 52.29173,5.536688 52.291725,5.536687 52.291721,5.536686 52.291716,5.536686 52.291711,5.536687 52.291706,5.536688 52.291702,5.536691 52.291697,5.536695 52.291691,5.536704 52.291684,5.536714 52.291677,5.536727 52.29167,5.536702 52.291633,5.5367 52.291625,5.536696 52.291616,5.536691 52.291609,5.536685 52.291601,5.536678 52.291594,5.536669 52.291588,5.536659 52.291582,5.536649 52.291577,5.536642 52.291574,5.536629 52.291569,5.536615 52.291566,5.536601 52.291563,5.536582 52.291561,5.53625 52.291588,5.536138 52.291565,5.535582 52.290519,5.535563 52.290488,5.536144 52.289895,5.536187 52.289852,5.538012 52.289271,5.538045 52.28926,5.538076 52.289247,5.538105 52.289233,5.538131 52.289216,5.538147 52.289204,5.538153 52.289198,5.538159 52.289192,5.538163 52.289185,5.538165 52.289178,5.538167 52.289171,5.538168 52.289163,5.538167 52.289156,5.538165 52.289149,5.538162 52.289142,5.538157 52.289135,5.538152 52.289129,5.538145 52.289123,5.538137 52.289117,5.538129 52.289112,5.53812 52.289108,5.53811 52.289104,5.538099 52.289101,5.538088 52.289098,5.538077 52.289097,5.53807 52.289096,5.538033 52.289092,5.537996 52.28909,5.537959 52.28909,5.537933 52.289092,5.53777 52.289065,5.536493 52.289169,5.536083 52.289123,5.535899 52.288912,5.535454 52.288472,5.535339 52.288383,5.535092 52.2882,5.534677 52.287747,5.534513 52.28767,5.53451 52.287645,5.534537 52.287479,5.534521 52.287425,5.534455 52.287371,5.534329 52.287271,5.534252 52.287058,5.534238 52.28682,5.534026 52.286165,5.53376 52.28602,5.533639 52.285955,5.5335 52.285706,5.533424 52.285405,5.533402 52.285318,5.533396 52.285245,5.533386 52.285198,5.533498 52.285058,5.533406 52.284883,5.533324 52.284675,5.532979 52.284287,5.533042 52.284204,5.533014 52.28408,5.533098 52.284065,5.532482 52.282823,5.532217 52.282875,5.532196 52.282847,5.532147 52.28256,5.531878 52.282275,5.531753 52.281997,5.531771 52.281826,5.531556 52.281409,5.531319 52.281042,5.531203 52.280914,5.530971 52.280655,5.530856 52.280229,5.530474 52.279583,5.530311 52.279335,5.530343 52.279171,5.530307 52.278922,5.530066 52.278637,5.529975 52.278326,5.529823 52.27819,5.529523 52.277802,5.529424 52.277587,5.529333 52.277455,5.529211 52.277397,5.529202 52.277321,5.529335 52.277182,5.529306 52.276885,5.529065 52.276634,5.529151 52.276422,5.529212 52.276271,5.529421 52.276149,5.529156 52.276001,5.529159 52.275758,5.529066 52.275529,5.528942 52.275372,5.528719 52.275319,5.528691 52.27526,5.528763 52.275162,5.528778 52.275103,5.52875 52.27499,5.528623 52.274888,5.52862 52.274886,5.526299 52.273455,5.526299 52.273455,5.526296 52.273454,5.526293 52.273453,5.526289 52.273451,5.526286 52.27345,5.526283 52.273448,5.52628 52.273447,5.526277 52.273446,5.526274 52.273444,5.526271 52.273443,5.526267 52.273442,5.526264 52.27344,5.526261 52.273439,5.526258 52.273438,5.526255 52.273436,5.526251 52.273435,5.526248 52.273434,5.526245 52.273433,5.526241 52.273432,5.526238 52.27343,5.526235 52.273429,5.526231 52.273428,5.526228 52.273427,5.526225 52.273426,5.526221 52.273425,5.526218 52.273424,5.526214 52.273422,5.526211 52.273421,5.526207 52.27342,5.526204 52.273419,5.5262 52.273418,5.526197 52.273417,5.526193 52.273416,5.52619 52.273415,5.526186 52.273414,5.526183 52.273414,5.526179 52.273413,5.526176 52.273412,5.526172 52.273411,5.526169 52.27341,5.526165 52.273409,5.526161 52.273408,5.526158 52.273407,5.526154 52.273407,5.526151 52.273406,5.526147 52.273405,5.526143 52.273404,5.52614 52.273404,5.526136 52.273403,5.526132 52.273402,5.526129 52.273401,5.526125 52.273401,5.526121 52.2734,5.526117 52.2734,5.526114 52.273399,5.52611 52.273398,5.526106 52.273398,5.526102 52.273397,5.526099 52.273397,5.526095 52.273396,5.526091 52.273396,5.526087 52.273395,5.526084 52.273395,5.52608 52.273394,5.526076 52.273394,5.526072 52.273393,5.526069 52.273393,5.526065 52.273392,5.526061 52.273392,5.526057 52.273392,5.526053 52.273391,5.526049 52.273391,5.526046 52.273391,5.526042 52.273391,5.526038 52.27339,5.526034 52.27339,5.52603 52.27339,5.526027 52.27339,5.526023 52.273389,5.526019 52.273389,5.526015 52.273389,5.526011 52.273389,5.526007 52.273389,5.526003 52.273389,5.526 52.273389,5.525996 52.273388,5.525992 52.273388,5.525988 52.273388,5.525984 52.273388,5.52598 52.273388,5.525976 52.273388,5.525973 52.273388,5.525969 52.273388,5.525965 52.273388,5.525961 52.273389,5.525957 52.273389,5.525953 52.273389,5.52595 52.273389,5.525946 52.273389,5.525942 52.273389,5.525942 52.273389,5.525939 52.273389,5.525936 52.27339,5.525933 52.27339,5.525931 52.27339,5.525928 52.27339,5.525925 52.273391,5.525922 52.273391,5.52592 52.273391,5.525917 52.273392,5.525914 52.273392,5.525911 52.273392,5.525908 52.273393,5.525906 52.273393,5.525903 52.273393,5.5259 52.273394,5.525897 52.273394,5.525895 52.273394,5.525892 52.273395,5.525889 52.273395,5.525886 52.273395,5.525884 52.273396,5.525881 52.273396,5.525878 52.273397,5.525876 52.273397,5.525873 52.273398,5.52587 52.273398,5.525867 52.273399,5.525865 52.273399,5.525862 52.273399,5.525859 52.2734,5.525857 52.2734,5.525854 52.273401,5.525851 52.273401,5.525848 52.273402,5.525846 52.273403,5.525843 52.273403,5.52584 52.273404,5.525838 52.273404,5.525835 52.273405,5.525832 52.273405,5.52583 52.273406,5.525827 52.273407,5.525825 52.273407,5.525822 52.273408,5.525819 52.273408,5.525817 52.273409,5.525814 52.27341,5.525811 52.27341,5.525809 52.273411,5.525806 52.273412,5.525804 52.273412,5.525801 52.273413,5.525799 52.273414,5.525796 52.273414,5.525793 52.273415,5.525791 52.273416,5.525788 52.273417,5.525786 52.273417,5.525783 52.273418,5.525781 52.273419,5.525778 52.27342,5.525776 52.27342,5.525773 52.273421,5.525771 52.273422,5.525768 52.273423,5.525766 52.273424,5.525763 52.273424,5.525761 52.273425,5.525758 52.273426,5.525756 52.273427,5.525753 52.273428,5.525751 52.273429,5.525748 52.273429,5.525746 52.27343,5.525744 52.273431,5.525741 52.273432,5.525739 52.273433,5.525736 52.273434,5.525734 52.273435,5.525732 52.273436,5.525729 52.273437,5.525727 52.273438,5.525724 52.273439,5.525722 52.27344,5.52572 52.273441,5.525717 52.273441,5.525715 52.273442,5.525713 52.273443,5.525711 52.273444,5.525708 52.273445,5.525706 52.273446,5.525704 52.273447,5.525701 52.273449,5.525699 52.27345,5.525697 52.273451,5.525695 52.273452,5.525692 52.273453,5.52569 52.273454,5.525688 52.273455,5.525688 52.273455,5.525576 52.27348,5.525317 52.2735,5.524784 52.273615,5.524712 52.27362,5.524614 52.273627,5.524438 52.273638,5.524215 52.273689,5.5241 52.273689,5.52396 52.273689,5.523888 52.273664,5.523746 52.273614,5.523477 52.27353,5.523326 52.273464,5.523003 52.273478,5.522967 52.273539,5.522798 52.273562,5.522546 52.273557,5.522534 52.273557,5.52227 52.273537,5.522041 52.273475,5.52197 52.273453,5.521503 52.27331,5.521505 52.273231,5.521459 52.27305,5.520735 52.272985,5.520264 52.272918,5.519627 52.272861,5.519488 52.272901,5.519193 52.272893,5.519192 52.272776,5.519065 52.272702,5.518948 52.272634,5.518691 52.272646,5.518471 52.272703,5.51832 52.272726,5.518199 52.272694,5.518198 52.272592,5.517907 52.272441,5.517543 52.272439,5.516999 52.272235,5.516822 52.272334,5.516655 52.272346,5.5165 52.272322,5.516435 52.272288,5.516391 52.272179,5.51609 52.272122,5.515827 52.272154,5.515792 52.272155,5.515727 52.272086,5.515577 52.272017,5.515323 52.272009,5.515201 52.272026,5.51511 52.272005,5.514833 52.271991,5.5148 52.271936,5.514786 52.271913,5.514592 52.271862,5.514243 52.271882,5.513955 52.271822,5.513983 52.271724,5.513647 52.271458,5.513223 52.271442,5.512981 52.271515,5.512721 52.271461,5.51267 52.27143,5.512693 52.271344,5.512632 52.271339,5.512339 52.271378,5.512186 52.271408,5.512115 52.271422,5.511907 52.271417,5.511852 52.271405,5.511825 52.271364,5.511781 52.271295,5.51175 52.271247,5.511583 52.27123,5.511384 52.271208,5.511336 52.271142,5.511073 52.271063,5.510691 52.271054,5.510211 52.270929,5.510041 52.270942,5.509801 52.270846,5.509841 52.270796,5.50977 52.270745,5.509624 52.270677,5.509373 52.270674,5.509146 52.270673,5.508939 52.270718,5.508755 52.270737,5.508641 52.270675,5.508383 52.270698,5.508292 52.270703,5.508193 52.270679,5.508085 52.27071,5.507944 52.270815,5.507873 52.27086,5.507849 52.270862,5.507668 52.270846,5.507582 52.270816,5.507516 52.270757,5.507491 52.270676,5.507453 52.27054,5.507412 52.270496,5.507167 52.27059,5.507097 52.27063,5.506899 52.270537,5.506942 52.27046,5.506922 52.270441,5.506952 52.270343,5.506932 52.270343,5.506902 52.270343,5.506828 52.270344,5.506729 52.2703,5.506532 52.270283,5.506254 52.270304,5.506151 52.270341,5.506004 52.270299,5.50585 52.270295,5.505749 52.270337,5.505706 52.270339,5.505575 52.270346,5.505385 52.270333,5.505203 52.270296,5.505137 52.27026,5.505112 52.270153,5.505084 52.270113,5.504826 52.270068,5.50474 52.270071,5.504677 52.270116,5.504687 52.270161,5.504627 52.270175,5.50442 52.270194,5.504228 52.270199,5.504096 52.270171,5.503992 52.270145,5.503979 52.270122,5.503965 52.270097,5.503941 52.269988,5.503807 52.269967,5.503722 52.269993,5.503641 52.270051,5.503537 52.270051,5.503335 52.270008,5.50332 52.269953,5.503241 52.269822,5.50316 52.26978,5.503132 52.269805,5.503001 52.269836,5.502885 52.269865,5.50263 52.269887,5.502392 52.269905,5.502248 52.269903,5.50198 52.269866,5.501793 52.269823,5.501599 52.269763,5.501457 52.269692,5.501338 52.269622,5.501318 52.269589,5.501363 52.269571,5.501348 52.269524,5.501315 52.269492,5.501259 52.269476,5.501219 52.269486,5.501163 52.269523,5.501125 52.269534,5.501062 52.26954,5.500832 52.269526,5.500716 52.2695,5.500494 52.269479,5.500395 52.269459,5.500408 52.269439,5.500377 52.269397,5.500339 52.269356,5.500258 52.26935,5.500198 52.269366,5.500165 52.269412,5.500023 52.269434,5.499698 52.269436,5.499437 52.269413,5.499348 52.269402,5.498939 52.269353,5.49877 52.269307,5.498611 52.269261,5.498616 52.269244,5.498547 52.269221,5.49847 52.26921,5.498314 52.269156,5.498291 52.269148,5.49823 52.269126,5.498074 52.269127,5.497902 52.269134,5.497776 52.269118,5.497741 52.269055,5.497547 52.269001,5.497485 52.268915,5.497288 52.26885,5.497051 52.26884,5.496901 52.268835,5.496731 52.268868,5.496652 52.268881,5.496487 52.268867,5.496218 52.268835,5.496012 52.268772,5.495892 52.268704,5.495611 52.268551,5.495398 52.268456,5.495311 52.268435,5.495194 52.268407,5.494965 52.26842,5.494834 52.26843,5.494762 52.268408,5.49466 52.268344,5.494594 52.268293,5.494517 52.268227,5.494404 52.268215,5.494281 52.268223,5.494144 52.268267,5.493994 52.268294,5.493745 52.268322,5.493537 52.268321,5.493302 52.268306,5.493206 52.268275,5.493143 52.268255,5.493115 52.268239,5.493032 52.268191,5.49293 52.268086,5.492803 52.268019,5.492523 52.267986,5.492274 52.268023,5.492172 52.268032,5.491884 52.268024,5.49176 52.268013,5.491574 52.267957,5.491431 52.267862,5.491404 52.267839,5.491377 52.267815,5.491268 52.267694,5.491094 52.267597,5.490999 52.267575,5.490922 52.267579,5.490743 52.267556,5.490618 52.267524,5.490403 52.267484,5.490242 52.267415,5.490256 52.267391,5.490247 52.267337,5.490161 52.267302,5.490025 52.267346,5.490032 52.267379,5.489987 52.267383,5.489842 52.267364,5.489611 52.26727,5.48957 52.267235,5.489579 52.267186,5.489552 52.267161,5.489465 52.267127,5.489377 52.267127,5.489373 52.267163,5.489341 52.267187,5.489276 52.267198,5.48916 52.267185,5.489006 52.267149,5.488818 52.267051,5.488709 52.266947,5.488668 52.266878,5.488731 52.26683,5.488825 52.266757,5.488825 52.266757,5.488826 52.266757,5.488826 52.266756,5.488827 52.266755,5.488827 52.266755,5.488828 52.266754,5.488828 52.266753,5.488828 52.266753,5.488829 52.266752,5.488829 52.266751,5.48883 52.266751,5.48883 52.26675,5.48883 52.266749,5.488831 52.266748,5.488831 52.266748,5.488831 52.266747,5.488832 52.266746,5.488832 52.266746,5.488832 52.266745,5.488832 52.266744,5.488833 52.266743,5.488833 52.266743,5.488833 52.266742,5.488833 52.266741,5.488834 52.266741,5.488834 52.26674,5.488834 52.266739,5.488834 52.266738,5.488834 52.266738,5.488834 52.266737,5.488834 52.266736,5.488834 52.266735,5.488834 52.266735,5.488834 52.266734,5.488834 52.266733,5.488834 52.266732,5.488834 52.266732,5.488834 52.266731,5.488834 52.26673,5.488834 52.266729,5.488834 52.266729,5.488834 52.266728,5.488834 52.266727,5.488834 52.266727,5.488834 52.266726,5.488834 52.266725,5.488833 52.266724,5.488833 52.266724,5.488833 52.266723,5.488833 52.266722,5.488832 52.266721,5.488832 52.266721,5.488832 52.26672,5.488832 52.266719,5.488831 52.266719,5.488831 52.266718,5.488831 52.266717,5.48883 52.266716,5.48883 52.266716,5.48883 52.266715,5.488829 52.266714,5.488829 52.266714,5.488828 52.266713,5.488828 52.266712,5.488827 52.266712,5.488827 52.266711,5.488826 52.26671,5.488826 52.26671,5.488825 52.266709,5.488825 52.266708,5.488824 52.266708,5.488824 52.266707,5.488823 52.266706,5.488823 52.266706,5.488822 52.266705,5.488821 52.266704,5.488821 52.266704,5.48882 52.266703,5.488819 52.266703,5.488819 52.266702,5.488818 52.266701,5.488817 52.266701,5.488817 52.2667,5.488816 52.2667,5.488815 52.266699,5.488814 52.266698,5.488814 52.266698,5.488813 52.266697,5.488812 52.266697,5.488811 52.266696,5.488811 52.266696,5.48881 52.266695,5.488809 52.266695,5.488808 52.266694,5.488807 52.266694,5.488806 52.266693,5.488805 52.266692,5.488805 52.266692,5.488804 52.266692,5.488803 52.266691,5.488803 52.266691,5.487961 52.266317,5.487952 52.266319,5.48794 52.266321,5.487241 52.266393,5.487151 52.266371,5.487122 52.266364,5.485878 52.266148,5.485878 52.266148,5.485876 52.266148,5.485875 52.266147,5.485873 52.266147,5.485872 52.266147,5.48587 52.266147,5.485868 52.266147,5.485867 52.266146,5.485865 52.266146,5.485864 52.266146,5.485862 52.266146,5.48586 52.266146,5.485859 52.266145,5.485857 52.266145,5.485855 52.266145,5.485854 52.266145,5.485852 52.266145,5.485851 52.266145,5.485849 52.266145,5.485847 52.266144,5.485846 52.266144,5.485844 52.266144,5.485842 52.266144,5.485841 52.266144,5.485839 52.266144,5.485838 52.266144,5.485836 52.266143,5.485834 52.266143,5.485833 52.266143,5.485831 52.266143,5.485829 52.266143,5.485828 52.266143,5.485826 52.266143,5.485824 52.266143,5.485823 52.266143,5.485821 52.266143,5.48582 52.266142,5.485818 52.266142,5.485816 52.266142,5.485815 52.266142,5.485813 52.266142,5.485811 52.266142,5.48581 52.266142,5.485808 52.266142,5.485806 52.266142,5.485805 52.266142,5.485803 52.266142,5.485802 52.266142,5.4858 52.266142,5.485798 52.266142,5.485797 52.266142,5.485795 52.266142,5.485793 52.266142,5.485792 52.266142,5.48579 52.266142,5.485788 52.266142,5.485787 52.266142,5.485785 52.266142,5.485783 52.266142,5.485782 52.266142,5.48578 52.266142,5.485779 52.266142,5.485777 52.266142,5.485775 52.266142,5.485774 52.266142,5.485772 52.266142,5.48577 52.266142,5.485769 52.266142,5.485767 52.266142,5.485765 52.266142,5.485764 52.266142,5.485762 52.266142,5.485761 52.266142,5.485759 52.266142,5.485757 52.266142,5.485756 52.266143,5.485754 52.266143,5.485752 52.266143,5.485751 52.266143,5.485749 52.266143,5.485747 52.266143,5.485746 52.266143,5.485744 52.266143,5.485743 52.266143,5.485741 52.266143,5.485739 52.266144,5.485738 52.266144,5.485736 52.266144,5.485734 52.266144,5.485733 52.266144,5.485731 52.266144,5.48573 52.266144,5.485728 52.266144,5.485726 52.266145,5.485725 52.266145,5.485723 52.266145,5.485721 52.266145,5.48572 52.266145,5.485718 52.266145,5.485717 52.266146,5.485717 52.266146,5.485494 52.266185,5.485402 52.266202,5.485402 52.266202,5.485401 52.266202,5.485399 52.266202,5.485398 52.266202,5.485397 52.266203,5.485396 52.266203,5.485394 52.266203,5.485393 52.266203,5.485392 52.266203,5.485391 52.266203,5.485389 52.266203,5.485388 52.266204,5.485387 52.266204,5.485386 52.266204,5.485384 52.266204,5.485383 52.266204,5.485382 52.266204,5.485381 52.266204,5.485379 52.266204,5.485378 52.266205,5.485377 52.266205,5.485376 52.266205,5.485374 52.266205,5.485373 52.266205,5.485372 52.266205,5.485371 52.266205,5.485369 52.266205,5.485368 52.266205,5.485367 52.266205,5.485365 52.266205,5.485364 52.266205,5.485363 52.266206,5.485362 52.266206,5.48536 52.266206,5.485359 52.266206,5.485358 52.266206,5.485357 52.266206,5.485355 52.266206,5.485354 52.266206,5.485353 52.266206,5.485351 52.266206,5.48535 52.266206,5.485349 52.266206,5.485348 52.266206,5.485346 52.266206,5.485345 52.266206,5.485344 52.266206,5.485343 52.266206,5.485341 52.266206,5.48534 52.266206,5.485339 52.266206,5.485337 52.266206,5.485336 52.266205,5.485335 52.266205,5.485334 52.266205,5.485332 52.266205,5.485331 52.266205,5.48533 52.266205,5.485329 52.266205,5.485327 52.266205,5.485326 52.266205,5.485325 52.266205,5.485323 52.266205,5.485322 52.266205,5.485321 52.266204,5.48532 52.266204,5.485318 52.266204,5.485317 52.266204,5.485316 52.266204,5.485315 52.266204,5.485313 52.266204,5.485312 52.266204,5.485311 52.266203,5.48531 52.266203,5.485308 52.266203,5.485307 52.266203,5.485306 52.266203,5.485305 52.266203,5.485303 52.266203,5.485302 52.266202,5.485301 52.266202,5.4853 52.266202,5.485298 52.266202,5.485297 52.266202,5.485296 52.266201,5.485295 52.266201,5.485294 52.266201,5.485292 52.266201,5.485291 52.266201,5.48529 52.2662,5.485289 52.2662,5.485287 52.2662,5.485286 52.2662,5.485285 52.266199,5.485284 52.266199,5.485283 52.266199,5.485281 52.266199,5.48528 52.266198,5.485279 52.266198,5.485278 52.266198,5.485278 52.266198,5.483987 52.265964,5.482564 52.265707,5.481152 52.265452,5.479542 52.265162,5.477933 52.264872,5.476256 52.264568,5.476234 52.264514,5.476067 52.264476,5.475959 52.264428,5.475975 52.264393,5.475971 52.264389,5.475094 52.26423,5.474539 52.26413,5.474515 52.264174,5.474342 52.264195,5.474243 52.264184,5.473823 52.264113,5.473533 52.264061,5.473266 52.264005,5.473141 52.263978)),((5.542087 52.323732,5.542025 52.32361,5.540846 52.321307,5.540838 52.321291,5.540826 52.321269,5.540788 52.321194,5.540871 52.321178,5.540977 52.321157,5.54099 52.321155,5.540994 52.321154,5.54106 52.321141,5.541069 52.321139,5.541084 52.321139,5.541209 52.321114,5.542038 52.320948,5.54227 52.320919,5.542289 52.320917,5.542295 52.320916,5.542318 52.320912,5.542713 52.320843,5.542883 52.32081,5.543464 52.320697,5.543794 52.320672,5.544084 52.320713,5.544085 52.320714,5.544134 52.320721,5.544198 52.32073,5.544196 52.320752,5.54419 52.320799,5.544185 52.320832,5.544159 52.320941,5.544158 52.320944,5.544123 52.321036,5.544108 52.321065,5.544068 52.321136,5.544043 52.321177,5.544032 52.321199,5.544031 52.321203,5.544021 52.321202,5.54402 52.321205,5.54402 52.321205,5.54402 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544019 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321206,5.544018 52.321207,5.544018 52.321207,5.544018 52.321207,5.544018 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544017 52.321207,5.544016 52.321207,5.544016 52.321207,5.544016 52.321207,5.544016 52.321207,5.544016 52.321208,5.544016 52.321208,5.544016 52.321208,5.544016 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544015 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321208,5.544014 52.321209,5.544014 52.321209,5.544014 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544013 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544012 52.321209,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.544011 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.54401 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.32121,5.544009 52.321211,5.544009 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544008 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544007 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321211,5.544006 52.321212,5.544006 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544005 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544004 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544003 52.321212,5.544002 52.321212,5.544002 52.321212,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544002 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544001 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.544 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543999 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321213,5.543998 52.321214,5.543998 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543997 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543996 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543995 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543994 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543993 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321214,5.543992 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.543991 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.54399 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543989 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543988 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543987 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543986 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543985 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543984 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543983 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543982 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.543981 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.54398 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543979 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543978 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543977 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543976 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543975 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543974 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543973 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543972 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.543971 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.54397 52.321215,5.543969 52.321215,5.543969 52.321215,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543969 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543968 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543967 52.321214,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543966 52.321214,5.543938 52.321209,5.543929 52.321207,5.543928 52.321208,5.543916 52.321206,5.543926 52.321184,5.543917 52.321182,5.543873 52.321174,5.543821 52.321273,5.543813 52.321272,5.543781 52.32127,5.543806 52.321218,5.543845 52.321136,5.54382 52.321115,5.543807 52.320944,5.543694 52.320927,5.543572 52.32091,5.543393 52.320898,5.543309 52.320899,5.543206 52.320913,5.543085 52.320933,5.542978 52.320954,5.542863 52.320979,5.542678 52.321025,5.542593 52.321058,5.542564 52.32107,5.542528 52.321091,5.542502 52.321118,5.542496 52.321148,5.542499 52.321223,5.542466 52.321263,5.542495 52.321286,5.5425 52.321321,5.542507 52.321321,5.542508 52.321322,5.542509 52.321322,5.542511 52.32134,5.542509 52.32134,5.54251 52.321345,5.542514 52.321345,5.542514 52.321345,5.542514 52.321345,5.542514 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542515 52.321345,5.542516 52.321345,5.542516 52.321345,5.542516 52.321345,5.542516 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542517 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542518 52.321345,5.542519 52.321345,5.542519 52.321345,5.542519 52.321345,5.542519 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.54252 52.321345,5.542521 52.321345,5.542521 52.321345,5.542521 52.321345,5.542521 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542522 52.321345,5.542523 52.321345,5.542523 52.321345,5.542523 52.321345,5.542523 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542524 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542525 52.321345,5.542526 52.321345,5.542526 52.321346,5.542526 52.321346,5.542526 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542527 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542528 52.321346,5.542529 52.321346,5.542529 52.321346,5.542529 52.321346,5.542529 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.54253 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.542531 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542532 52.321346,5.542533 52.321346,5.542533 52.321347,5.542533 52.321347,5.542533 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542534 52.321347,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542535 52.321347,5.542575 52.321353,5.542575 52.321353,5.542576 52.321354,5.542576 52.321354,5.542577 52.321354,5.542578 52.321354,5.542579 52.321354,5.54258 52.321354,5.54258 52.321354,5.542581 52.321354,5.542582 52.321354,5.542583 52.321354,5.542584 52.321355,5.542584 52.321355,5.542585 52.321355,5.542586 52.321355,5.542587 52.321355,5.542588 52.321355,5.542589 52.321355,5.542589 52.321355,5.54259 52.321355,5.542591 52.321355,5.542592 52.321355,5.542593 52.321355,5.542594 52.321355,5.542594 52.321355,5.542595 52.321356,5.542596 52.321356,5.542597 52.321356,5.542598 52.321356,5.542598 52.321356,5.542599 52.321356,5.5426 52.321356,5.542601 52.321356,5.542602 52.321356,5.542603 52.321356,5.542603 52.321356,5.542604 52.321356,5.542605 52.321356,5.542606 52.321356,5.542607 52.321356,5.542608 52.321356,5.542608 52.321356,5.542609 52.321356,5.54261 52.321356,5.542611 52.321356,5.542612 52.321356,5.542613 52.321356,5.542613 52.321356,5.542614 52.321356,5.542615 52.321356,5.542616 52.321356,5.542617 52.321356,5.542618 52.321356,5.542618 52.321356,5.542619 52.321356,5.54262 52.321356,5.542621 52.321356,5.542622 52.321356,5.542623 52.321356,5.542623 52.321356,5.542624 52.321356,5.542625 52.321356,5.542626 52.321356,5.542627 52.321356,5.542627 52.321356,5.542628 52.321356,5.542629 52.321356,5.54263 52.321356,5.542631 52.321355,5.542632 52.321355,5.542632 52.321355,5.542633 52.321355,5.542634 52.321355,5.542635 52.321355,5.542636 52.321355,5.542637 52.321355,5.542637 52.321355,5.542638 52.321355,5.542639 52.321355,5.54264 52.321355,5.542641 52.321355,5.542641 52.321355,5.542642 52.321354,5.542643 52.321354,5.542644 52.321354,5.542645 52.321354,5.542646 52.321354,5.542646 52.321354,5.542647 52.321354,5.542648 52.321354,5.542649 52.321354,5.54265 52.321353,5.54265 52.321353,5.542651 52.321353,5.542652 52.321353,5.542653 52.321353,5.542654 52.321353,5.542654 52.321353,5.542655 52.321353,5.542656 52.321352,5.542656 52.321352,5.542704 52.321344,5.542753 52.321335,5.54278 52.321328,5.54278 52.321328,5.54278 52.321328,5.54278 52.321328,5.542781 52.321328,5.542781 52.321328,5.542782 52.321327,5.542782 52.321327,5.542782 52.321327,5.542783 52.321327,5.542783 52.321327,5.542783 52.321327,5.542784 52.321327,5.542784 52.321327,5.542784 52.321327,5.542785 52.321327,5.542785 52.321327,5.542785 52.321326,5.542786 52.321326,5.542786 52.321326,5.542786 52.321326,5.542787 52.321326,5.542787 52.321326,5.542788 52.321326,5.542788 52.321326,5.542788 52.321326,5.542789 52.321326,5.542789 52.321325,5.542789 52.321325,5.54279 52.321325,5.54279 52.321325,5.54279 52.321325,5.542791 52.321325,5.542791 52.321325,5.542791 52.321325,5.542792 52.321325,5.542792 52.321324,5.542792 52.321324,5.542793 52.321324,5.542793 52.321324,5.542793 52.321324,5.542794 52.321324,5.542794 52.321324,5.542794 52.321324,5.542795 52.321323,5.542795 52.321323,5.542795 52.321323,5.542796 52.321323,5.542796 52.321323,5.542796 52.321323,5.542797 52.321323,5.542797 52.321323,5.542797 52.321322,5.542798 52.321322,5.542798 52.321322,5.542798 52.321322,5.542799 52.321322,5.542799 52.321322,5.542799 52.321322,5.5428 52.321322,5.5428 52.321321,5.5428 52.321321,5.542801 52.321321,5.542801 52.321321,5.542801 52.321321,5.542802 52.321321,5.542802 52.321321,5.542802 52.321321,5.542802 52.32132,5.542803 52.32132,5.542803 52.32132,5.542803 52.32132,5.542804 52.32132,5.542804 52.32132,5.542804 52.32132,5.542805 52.321319,5.542805 52.321319,5.542805 52.321319,5.542806 52.321319,5.542806 52.321319,5.542806 52.321319,5.542807 52.321319,5.542807 52.321318,5.542807 52.321318,5.542807 52.321318,5.542808 52.321318,5.542808 52.321318,5.542808 52.321318,5.542809 52.321317,5.542809 52.321317,5.542809 52.321317,5.542809 52.321317,5.54281 52.321317,5.54281 52.321317,5.54281 52.321317,5.542811 52.321316,5.542811 52.321316,5.542811 52.321316,5.542812 52.321316,5.542812 52.321316,5.542812 52.321316,5.542812 52.321316,5.542841 52.321301,5.542861 52.321291,5.542872 52.321285,5.542882 52.321281,5.542893 52.321276,5.542905 52.321271,5.542911 52.321269,5.542923 52.321264,5.54293 52.321261,5.542936 52.321259,5.542946 52.321257,5.542958 52.321255,5.542967 52.321254,5.542976 52.321253,5.542988 52.321253,5.542996 52.321253,5.543004 52.321253,5.543013 52.321253,5.543019 52.321253,5.543029 52.321252,5.543038 52.321252,5.543045 52.321252,5.543055 52.321252,5.543064 52.321251,5.543072 52.321251,5.543089 52.321249,5.543095 52.321248,5.543106 52.321247,5.543115 52.321245,5.543121 52.321244,5.543137 52.321241,5.543152 52.321238,5.54316 52.321236,5.543173 52.321232,5.543186 52.321229,5.543197 52.321225,5.543209 52.321221,5.543221 52.321217,5.543232 52.321213,5.543246 52.321208,5.543254 52.321206,5.543262 52.321203,5.543273 52.321199,5.543277 52.321198,5.543283 52.321196,5.543288 52.321195,5.543296 52.321194,5.543301 52.321194,5.543311 52.321194,5.543321 52.321196,5.543335 52.321198,5.543354 52.321201,5.543368 52.321204,5.54338 52.321206,5.543395 52.321209,5.543405 52.321211,5.543425 52.321216,5.543437 52.32122,5.543454 52.321225,5.543474 52.321232,5.543481 52.321235,5.543491 52.321239,5.543502 52.321244,5.543515 52.321249,5.543536 52.321257,5.543543 52.321259,5.543557 52.321264,5.543567 52.321267,5.543583 52.321272,5.543597 52.321276,5.543605 52.321278,5.543615 52.321281,5.543629 52.321284,5.543638 52.321286,5.543653 52.32129,5.543669 52.321294,5.54368 52.321296,5.543696 52.3213,5.543711 52.321303,5.543718 52.321304,5.543729 52.321306,5.543745 52.321308,5.543769 52.321312,5.543779 52.321314,5.543784 52.321315,5.5438 52.321317,5.543793 52.321334,5.54376 52.321403,5.543743 52.321437,5.543632 52.32167,5.543624 52.321668,5.543595 52.321663,5.543621 52.321609,5.543706 52.321427,5.543636 52.321414,5.543606 52.321409,5.543575 52.321403,5.543534 52.321396,5.543493 52.321388,5.543462 52.321383,5.543431 52.321377,5.54339 52.32137,5.543349 52.321363,5.543318 52.321357,5.543287 52.321352,5.543246 52.321344,5.543239 52.321343,5.543204 52.321337,5.543172 52.321331,5.543166 52.321343,5.543166 52.321344,5.542951 52.32135,5.542845 52.321353,5.542739 52.321355,5.542633 52.321358,5.542507 52.321362,5.542552 52.321627,5.542565 52.321709,5.542594 52.321692,5.542598 52.321717,5.542636 52.32173,5.542647 52.321729,5.542647 52.321729,5.542648 52.321729,5.542649 52.321729,5.54265 52.321729,5.542651 52.321729,5.542652 52.321728,5.542653 52.321728,5.542654 52.321728,5.542655 52.321728,5.542656 52.321728,5.542657 52.321728,5.542658 52.321728,5.542659 52.321728,5.54266 52.321727,5.542661 52.321727,5.542662 52.321727,5.542663 52.321727,5.542664 52.321727,5.542665 52.321727,5.542666 52.321727,5.542667 52.321726,5.542668 52.321726,5.542669 52.321726,5.54267 52.321726,5.542671 52.321726,5.542672 52.321726,5.542673 52.321725,5.542674 52.321725,5.542675 52.321725,5.542676 52.321725,5.542677 52.321725,5.542678 52.321725,5.542679 52.321725,5.54268 52.321724,5.542681 52.321724,5.542682 52.321724,5.542683 52.321724,5.542684 52.321724,5.542685 52.321724,5.542686 52.321723,5.542687 52.321723,5.542688 52.321723,5.542689 52.321723,5.54269 52.321723,5.542691 52.321722,5.542692 52.321722,5.542693 52.321722,5.542694 52.321722,5.542695 52.321722,5.542696 52.321722,5.542697 52.321721,5.542698 52.321721,5.542699 52.321721,5.5427 52.321721,5.542701 52.321721,5.542702 52.32172,5.542703 52.32172,5.542704 52.32172,5.542705 52.32172,5.542706 52.32172,5.542707 52.321719,5.542708 52.321719,5.542709 52.321719,5.54271 52.321719,5.542711 52.321719,5.542712 52.321718,5.542713 52.321718,5.542714 52.321718,5.542715 52.321718,5.542716 52.321718,5.542717 52.321717,5.542718 52.321717,5.542719 52.321717,5.54272 52.321717,5.542721 52.321716,5.542722 52.321716,5.542723 52.321716,5.542724 52.321716,5.542725 52.321716,5.542725 52.321715,5.542726 52.321715,5.542727 52.321715,5.542728 52.321715,5.542729 52.321714,5.54273 52.321714,5.542731 52.321714,5.542732 52.321714,5.542733 52.321713,5.542734 52.321713,5.542735 52.321713,5.542736 52.321713,5.542737 52.321712,5.542738 52.321712,5.542739 52.321712,5.54274 52.321712,5.542741 52.321711,5.542742 52.321711,5.542743 52.321711,5.542744 52.321711,5.542745 52.32171,5.542745 52.32171,5.542745 52.32171,5.542746 52.32171,5.542747 52.32171,5.542748 52.32171,5.542749 52.321709,5.54275 52.321709,5.54275 52.321709,5.542751 52.321709,5.542752 52.321708,5.542753 52.321708,5.542754 52.321708,5.542755 52.321708,5.542755 52.321707,5.542756 52.321707,5.542757 52.321707,5.542758 52.321707,5.542759 52.321707,5.54276 52.321706,5.54276 52.321706,5.542761 52.321706,5.542762 52.321706,5.542763 52.321705,5.542764 52.321705,5.542765 52.321705,5.542765 52.321705,5.542766 52.321704,5.542767 52.321704,5.542768 52.321704,5.542769 52.321704,5.542769 52.321704,5.54277 52.321703,5.542771 52.321703,5.542772 52.321703,5.542773 52.321703,5.542774 52.321702,5.542774 52.321702,5.542775 52.321702,5.542776 52.321702,5.542777 52.321701,5.542778 52.321701,5.542778 52.321701,5.542779 52.321701,5.54278 52.3217,5.542781 52.3217,5.542782 52.3217,5.542783 52.3217,5.542783 52.321699,5.542784 52.321699,5.542785 52.321699,5.542786 52.321699,5.542787 52.321698,5.542787 52.321698,5.542788 52.321698,5.542789 52.321698,5.54279 52.321697,5.542791 52.321697,5.542792 52.321697,5.542792 52.321697,5.542793 52.321696,5.542794 52.321696,5.542795 52.321696,5.542796 52.321696,5.542796 52.321695,5.542797 52.321695,5.542798 52.321695,5.542799 52.321695,5.5428 52.321694,5.5428 52.321694,5.542801 52.321694,5.542802 52.321694,5.542803 52.321693,5.542804 52.321693,5.542805 52.321693,5.542805 52.321693,5.542806 52.321692,5.542807 52.321692,5.542808 52.321692,5.542809 52.321692,5.542809 52.321691,5.54281 52.321691,5.542811 52.321691,5.542812 52.321691,5.542813 52.32169,5.542813 52.32169,5.542814 52.32169,5.542815 52.32169,5.542816 52.321689,5.542817 52.321689,5.542817 52.321689,5.542818 52.321688,5.542819 52.321688,5.54282 52.321688,5.542821 52.321688,5.542821 52.321687,5.542822 52.321687,5.542823 52.321687,5.542824 52.321687,5.542825 52.321686,5.542825 52.321686,5.542825 52.321686,5.542844 52.321681,5.542853 52.321679,5.54286 52.321677,5.542868 52.321676,5.54288 52.321674,5.542891 52.321672,5.542903 52.32167,5.542913 52.321668,5.542919 52.321667,5.54293 52.321666,5.542939 52.321665,5.542949 52.321663,5.542955 52.321662,5.542968 52.321661,5.542979 52.321659,5.54299 52.321658,5.542998 52.321657,5.543007 52.321656,5.543018 52.321655,5.543031 52.321654,5.543041 52.321653,5.543052 52.321652,5.543065 52.321651,5.543081 52.32165,5.543098 52.321649,5.543113 52.321649,5.543123 52.321649,5.543138 52.321649,5.543153 52.321649,5.543172 52.32165,5.543184 52.321651,5.543199 52.321652,5.543218 52.321653,5.54324 52.321655,5.543258 52.321656,5.54327 52.321658,5.543285 52.321659,5.5433 52.321661,5.543322 52.321664,5.543335 52.321666,5.543348 52.321668,5.543375 52.321672,5.543399 52.321675,5.54341 52.321677,5.543429 52.32168,5.543456 52.321685,5.543477 52.321688,5.543491 52.32169,5.543508 52.321693,5.54353 52.321698,5.543541 52.321701,5.543557 52.321705,5.54357 52.321708,5.543587 52.321713,5.543599 52.321716,5.543608 52.321719,5.543609 52.321719,5.543609 52.321721,5.543564 52.321815,5.543455 52.322047,5.543416 52.322043,5.543442 52.32199,5.543528 52.321808,5.543456 52.321795,5.543425 52.32179,5.543394 52.321784,5.543353 52.321777,5.543312 52.32177,5.543281 52.321765,5.54325 52.321759,5.54321 52.321752,5.543167 52.321744,5.543135 52.321739,5.543129 52.321751,5.542914 52.321757,5.542808 52.32176,5.542702 52.321762,5.542575 52.321766,5.542617 52.322015,5.54263 52.322093,5.542647 52.322087,5.54265 52.322105,5.542677 52.322108,5.542705 52.322111,5.542716 52.322114,5.542721 52.322116,5.542747 52.322109,5.542831 52.322091,5.542946 52.322072,5.543028 52.322061,5.543028 52.322061,5.543029 52.322061,5.543031 52.322061,5.543033 52.322061,5.543034 52.322061,5.543036 52.32206,5.543038 52.32206,5.543039 52.32206,5.543041 52.32206,5.543043 52.32206,5.543044 52.32206,5.543046 52.322059,5.543048 52.322059,5.543049 52.322059,5.543051 52.322059,5.543053 52.322059,5.543055 52.322059,5.543056 52.322058,5.543058 52.322058,5.54306 52.322058,5.543061 52.322058,5.543063 52.322058,5.543065 52.322058,5.543066 52.322058,5.543068 52.322057,5.54307 52.322057,5.543071 52.322057,5.543073 52.322057,5.543075 52.322057,5.543077 52.322057,5.543078 52.322057,5.54308 52.322057,5.543082 52.322057,5.543083 52.322056,5.543085 52.322056,5.543087 52.322056,5.543089 52.322056,5.54309 52.322056,5.543092 52.322056,5.543094 52.322056,5.543095 52.322056,5.543097 52.322056,5.543099 52.322056,5.5431 52.322056,5.543102 52.322056,5.543104 52.322056,5.543106 52.322056,5.543107 52.322056,5.543109 52.322055,5.543111 52.322055,5.543112 52.322055,5.543114 52.322055,5.543116 52.322055,5.543118 52.322055,5.543119 52.322055,5.543121 52.322055,5.543123 52.322055,5.543124 52.322055,5.543126 52.322055,5.543128 52.322055,5.54313 52.322055,5.543131 52.322055,5.543133 52.322055,5.543135 52.322055,5.543136 52.322055,5.543138 52.322055,5.54314 52.322055,5.543142 52.322055,5.543143 52.322055,5.543145 52.322055,5.543147 52.322055,5.543148 52.322056,5.54315 52.322056,5.543152 52.322056,5.543153 52.322056,5.543155 52.322056,5.543157 52.322056,5.543159 52.322056,5.54316 52.322056,5.543162 52.322056,5.543164 52.322056,5.543165 52.322056,5.543167 52.322056,5.543169 52.322056,5.543171 52.322056,5.543172 52.322056,5.543174 52.322057,5.543176 52.322057,5.543177 52.322057,5.543179 52.322057,5.543181 52.322057,5.543182 52.322057,5.543184 52.322057,5.543186 52.322057,5.543188 52.322057,5.543189 52.322058,5.543191 52.322058,5.543193 52.322058,5.543194 52.322058,5.543196 52.322058,5.543196 52.322058,5.543198 52.322058,5.5432 52.322058,5.543201 52.322059,5.543203 52.322059,5.543205 52.322059,5.543206 52.322059,5.543208 52.322059,5.54321 52.322059,5.543212 52.322059,5.543213 52.32206,5.543215 52.32206,5.543217 52.32206,5.543218 52.32206,5.54322 52.32206,5.543222 52.32206,5.543224 52.322061,5.543225 52.322061,5.543227 52.322061,5.543229 52.322061,5.54323 52.322061,5.543232 52.322061,5.543234 52.322062,5.543236 52.322062,5.543237 52.322062,5.543239 52.322062,5.543241 52.322062,5.543242 52.322062,5.543244 52.322063,5.543246 52.322063,5.543248 52.322063,5.543249 52.322063,5.543251 52.322063,5.543253 52.322064,5.543254 52.322064,5.543256 52.322064,5.543258 52.322064,5.54326 52.322064,5.543261 52.322065,5.543263 52.322065,5.543265 52.322065,5.543266 52.322065,5.543268 52.322065,5.54327 52.322066,5.543271 52.322066,5.543273 52.322066,5.543275 52.322066,5.543277 52.322066,5.543278 52.322067,5.54328 52.322067,5.543282 52.322067,5.543283 52.322067,5.543285 52.322067,5.543287 52.322068,5.543289 52.322068,5.54329 52.322068,5.543292 52.322068,5.543294 52.322069,5.543295 52.322069,5.543297 52.322069,5.543299 52.322069,5.5433 52.322069,5.543302 52.32207,5.543304 52.32207,5.543306 52.32207,5.543307 52.32207,5.543309 52.322071,5.543311 52.322071,5.543312 52.322071,5.543314 52.322071,5.543316 52.322072,5.543317 52.322072,5.543319 52.322072,5.543321 52.322072,5.543322 52.322073,5.543324 52.322073,5.543326 52.322073,5.543328 52.322073,5.543329 52.322074,5.543331 52.322074,5.543333 52.322074,5.543334 52.322074,5.543336 52.322075,5.543338 52.322075,5.543339 52.322075,5.543341 52.322075,5.543343 52.322076,5.543344 52.322076,5.543346 52.322076,5.543348 52.322076,5.543349 52.322077,5.543351 52.322077,5.543353 52.322077,5.543354 52.322078,5.543356 52.322078,5.543358 52.322078,5.543359 52.322078,5.543361 52.322079,5.543363 52.322079,5.543365 52.322079,5.543365 52.322079,5.543365 52.322079,5.543366 52.322079,5.543367 52.32208,5.543367 52.32208,5.543368 52.32208,5.543369 52.32208,5.543369 52.32208,5.54337 52.32208,5.543371 52.32208,5.543372 52.32208,5.543372 52.322081,5.543373 52.322081,5.543374 52.322081,5.543374 52.322081,5.543375 52.322081,5.543376 52.322081,5.543376 52.322081,5.543377 52.322081,5.543378 52.322082,5.543378 52.322082,5.543379 52.322082,5.54338 52.322082,5.543381 52.322082,5.543381 52.322082,5.543382 52.322082,5.543383 52.322083,5.543383 52.322083,5.543384 52.322083,5.543385 52.322083,5.543385 52.322083,5.543386 52.322083,5.543387 52.322083,5.543387 52.322084,5.543388 52.322084,5.543389 52.322084,5.543389 52.322084,5.54339 52.322084,5.543391 52.322084,5.543392 52.322085,5.543392 52.322085,5.543393 52.322085,5.543394 52.322085,5.543394 52.322085,5.543395 52.322085,5.543396 52.322086,5.543396 52.322086,5.543397 52.322086,5.543398 52.322086,5.543398 52.322086,5.543399 52.322086,5.5434 52.322087,5.5434 52.322087,5.543401 52.322087,5.543402 52.322087,5.543402 52.322087,5.543403 52.322087,5.543404 52.322088,5.543404 52.322088,5.543405 52.322088,5.543406 52.322088,5.543406 52.322088,5.543407 52.322088,5.543408 52.322089,5.543408 52.322089,5.543409 52.322089,5.54341 52.322089,5.54341 52.322089,5.543411 52.32209,5.543412 52.32209,5.543412 52.32209,5.543413 52.32209,5.543414 52.32209,5.543414 52.322091,5.543415 52.322091,5.543416 52.322091,5.543416 52.322091,5.543417 52.322091,5.543418 52.322092,5.543418 52.322092,5.543419 52.322092,5.54342 52.322092,5.54342 52.322092,5.543421 52.322093,5.543422 52.322093,5.543422 52.322093,5.543423 52.322093,5.543423 52.322093,5.543424 52.322094,5.543425 52.322094,5.543425 52.322094,5.543426 52.322094,5.543427 52.322094,5.543427 52.322095,5.543428 52.322095,5.543429 52.322095,5.543429 52.322095,5.54343 52.322095,5.543431 52.322096,5.543431 52.322096,5.543431 52.322096,5.54343 52.322098,5.543422 52.322116,5.543413 52.322133,5.543389 52.322185,5.543274 52.322425,5.543266 52.322424,5.543238 52.32242,5.543257 52.322371,5.543331 52.322186,5.543244 52.322171,5.543172 52.322158,5.5431 52.322145,5.543092 52.322162,5.542879 52.322169,5.542773 52.322172,5.542643 52.322177,5.542689 52.322401,5.542701 52.322459,5.542716 52.322476,5.542715 52.322477,5.542723 52.322494,5.542725 52.322496,5.542743 52.322491,5.542743 52.322491,5.542744 52.322491,5.542744 52.322491,5.542745 52.322491,5.542745 52.32249,5.542746 52.32249,5.542746 52.32249,5.542747 52.32249,5.542747 52.32249,5.542748 52.32249,5.542748 52.32249,5.542749 52.322489,5.542749 52.322489,5.54275 52.322489,5.54275 52.322489,5.542751 52.322489,5.542751 52.322489,5.542752 52.322489,5.542752 52.322489,5.542753 52.322488,5.542753 52.322488,5.542754 52.322488,5.542754 52.322488,5.542755 52.322488,5.542755 52.322488,5.542756 52.322488,5.542756 52.322488,5.542757 52.322487,5.542757 52.322487,5.542758 52.322487,5.542758 52.322487,5.542759 52.322487,5.542759 52.322487,5.54276 52.322487,5.54276 52.322487,5.542761 52.322486,5.542761 52.322486,5.542762 52.322486,5.542762 52.322486,5.542763 52.322486,5.542763 52.322486,5.542764 52.322486,5.542765 52.322486,5.542765 52.322486,5.542766 52.322485,5.542766 52.322485,5.542767 52.322485,5.542767 52.322485,5.542768 52.322485,5.542768 52.322485,5.542769 52.322485,5.542769 52.322485,5.54277 52.322485,5.54277 52.322485,5.542771 52.322484,5.542771 52.322484,5.542772 52.322484,5.542772 52.322484,5.542773 52.322484,5.542773 52.322484,5.542774 52.322484,5.542775 52.322484,5.542775 52.322484,5.542776 52.322484,5.542776 52.322483,5.542777 52.322483,5.542777 52.322483,5.542778 52.322483,5.542778 52.322483,5.542779 52.322483,5.542779 52.322483,5.54278 52.322483,5.54278 52.322483,5.542781 52.322483,5.542781 52.322483,5.542782 52.322483,5.542783 52.322482,5.542783 52.322482,5.542784 52.322482,5.542784 52.322482,5.542785 52.322482,5.542785 52.322482,5.542786 52.322482,5.542786 52.322482,5.542787 52.322482,5.542787 52.322482,5.542788 52.322482,5.542788 52.322482,5.542789 52.322482,5.54279 52.322481,5.54279 52.322481,5.542791 52.322481,5.542791 52.322481,5.542792 52.322481,5.542792 52.322481,5.542793 52.322481,5.542793 52.322481,5.542794 52.322481,5.542794 52.322481,5.542795 52.322481,5.542795 52.322481,5.542797 52.322481,5.542799 52.32248,5.5428 52.32248,5.542802 52.32248,5.542804 52.32248,5.542806 52.32248,5.542808 52.322479,5.542809 52.322479,5.542811 52.322479,5.542813 52.322479,5.542815 52.322479,5.542817 52.322478,5.542818 52.322478,5.54282 52.322478,5.542822 52.322478,5.542824 52.322478,5.542826 52.322478,5.542828 52.322477,5.542829 52.322477,5.542831 52.322477,5.542833 52.322477,5.542835 52.322477,5.542837 52.322477,5.542838 52.322476,5.54284 52.322476,5.542842 52.322476,5.542844 52.322476,5.542846 52.322476,5.542848 52.322476,5.542849 52.322475,5.542851 52.322475,5.542853 52.322475,5.542855 52.322475,5.542857 52.322475,5.542858 52.322475,5.54286 52.322475,5.542862 52.322474,5.542864 52.322474,5.542866 52.322474,5.542868 52.322474,5.542869 52.322474,5.542871 52.322474,5.542873 52.322474,5.542875 52.322474,5.542877 52.322473,5.542879 52.322473,5.54288 52.322473,5.542882 52.322473,5.542884 52.322473,5.542886 52.322473,5.542888 52.322473,5.54289 52.322473,5.542891 52.322473,5.542893 52.322472,5.542895 52.322472,5.542897 52.322472,5.542899 52.322472,5.5429 52.322472,5.542902 52.322472,5.542904 52.322472,5.542906 52.322472,5.542908 52.322472,5.54291 52.322472,5.542911 52.322471,5.542913 52.322471,5.542915 52.322471,5.542917 52.322471,5.542919 52.322471,5.542921 52.322471,5.542922 52.322471,5.542924 52.322471,5.542926 52.322471,5.542928 52.322471,5.54293 52.322471,5.542932 52.322471,5.542933 52.32247,5.542935 52.32247,5.542937 52.32247,5.542939 52.32247,5.542941 52.32247,5.542943 52.32247,5.542944 52.32247,5.542946 52.32247,5.542948 52.32247,5.54295 52.32247,5.542952 52.32247,5.542954 52.32247,5.542955 52.32247,5.542957 52.32247,5.542959 52.32247,5.542961 52.32247,5.542963 52.32247,5.542965 52.32247,5.542967 52.32247,5.542968 52.32247,5.54297 52.32247,5.542972 52.322469,5.542974 52.322469,5.542976 52.322469,5.542976 52.322469,5.542978 52.322469,5.54298 52.322469,5.542982 52.322469,5.542984 52.322469,5.542986 52.322469,5.542988 52.322469,5.542991 52.322469,5.542993 52.322469,5.542995 52.322469,5.542997 52.322469,5.542999 52.322469,5.543001 52.322469,5.543003 52.322469,5.543005 52.322469,5.543008 52.322469,5.54301 52.322469,5.543012 52.322469,5.543014 52.322469,5.543016 52.322469,5.543018 52.322469,5.54302 52.322469,5.543022 52.32247,5.543024 52.32247,5.543027 52.32247,5.543029 52.32247,5.543031 52.32247,5.543033 52.32247,5.543035 52.32247,5.543037 52.32247,5.543039 52.32247,5.543041 52.32247,5.543044 52.32247,5.543046 52.32247,5.543048 52.32247,5.54305 52.32247,5.543052 52.32247,5.543054 52.32247,5.543056 52.32247,5.543058 52.322471,5.54306 52.322471,5.543063 52.322471,5.543065 52.322471,5.543067 52.322471,5.543069 52.322471,5.543071 52.322471,5.543073 52.322471,5.543075 52.322471,5.543077 52.322471,5.543079 52.322472,5.543082 52.322472,5.543084 52.322472,5.543086 52.322472,5.543088 52.322472,5.54309 52.322472,5.543092 52.322472,5.543094 52.322472,5.543096 52.322473,5.543098 52.322473,5.543101 52.322473,5.543103 52.322473,5.543105 52.322473,5.543107 52.322473,5.543109 52.322473,5.543111 52.322474,5.543113 52.322474,5.543115 52.322474,5.543117 52.322474,5.54312 52.322474,5.543122 52.322474,5.543124 52.322475,5.543126 52.322475,5.543128 52.322475,5.54313 52.322475,5.543132 52.322475,5.543134 52.322476,5.543136 52.322476,5.543138 52.322476,5.543141 52.322476,5.543143 52.322476,5.543145 52.322477,5.543147 52.322477,5.543149 52.322477,5.543151 52.322477,5.543153 52.322477,5.543155 52.322478,5.543157 52.322478,5.543159 52.322478,5.543161 52.322478,5.543164 52.322479,5.543166 52.322479,5.543168 52.322479,5.54317 52.322479,5.543172 52.32248,5.543174 52.32248,5.543176 52.32248,5.543178 52.32248,5.54318 52.322481,5.543182 52.322481,5.543184 52.322481,5.543184 52.322481,5.543243 52.32249,5.543231 52.322515,5.543226 52.322525,5.543205 52.322571,5.543153 52.322679,5.543141 52.322706,5.543137 52.322715,5.543153 52.322719,5.543153 52.322719,5.543154 52.322719,5.543155 52.322719,5.543155 52.32272,5.543156 52.32272,5.543157 52.32272,5.543157 52.32272,5.543158 52.32272,5.543159 52.32272,5.543159 52.322721,5.54316 52.322721,5.543161 52.322721,5.543161 52.322721,5.543162 52.322721,5.543163 52.322722,5.543163 52.322722,5.543164 52.322722,5.543164 52.322722,5.543165 52.322722,5.543166 52.322723,5.543166 52.322723,5.543167 52.322723,5.543167 52.322723,5.543168 52.322724,5.543169 52.322724,5.543169 52.322724,5.54317 52.322724,5.54317 52.322725,5.543171 52.322725,5.543172 52.322725,5.543172 52.322725,5.543173 52.322726,5.543173 52.322726,5.543174 52.322726,5.543174 52.322726,5.543175 52.322727,5.543175 52.322727,5.543176 52.322727,5.543177 52.322728,5.543177 52.322728,5.543178 52.322728,5.543178 52.322729,5.543179 52.322729,5.543179 52.322729,5.54318 52.322729,5.54318 52.32273,5.543181 52.32273,5.543181 52.32273,5.543182 52.322731,5.543182 52.322731,5.543183 52.322731,5.543183 52.322732,5.543183 52.322732,5.543184 52.322732,5.543184 52.322733,5.543185 52.322733,5.543185 52.322733,5.543186 52.322734,5.543186 52.322734,5.543187 52.322734,5.543187 52.322735,5.543187 52.322735,5.543188 52.322736,5.543188 52.322736,5.543189 52.322736,5.543189 52.322737,5.543189 52.322737,5.54319 52.322737,5.54319 52.322738,5.54319 52.322738,5.543191 52.322739,5.543191 52.322739,5.543191 52.322739,5.543192 52.32274,5.543192 52.32274,5.543192 52.32274,5.543193 52.322741,5.543193 52.322741,5.543193 52.322742,5.543194 52.322742,5.543194 52.322742,5.543194 52.322743,5.543194 52.322743,5.543195 52.322744,5.543195 52.322744,5.543195 52.322745,5.543196 52.322745,5.543196 52.322745,5.543196 52.322746,5.543196 52.322746,5.543196 52.322747,5.543197 52.322747,5.543197 52.322747,5.543197 52.322748,5.543197 52.322748,5.543197 52.322749,5.543198 52.322749,5.543198 52.32275,5.543198 52.32275,5.543198 52.32275,5.543198 52.32275,5.543199 52.322751,5.543199 52.322752,5.5432 52.322753,5.5432 52.322754,5.5432 52.322755,5.543201 52.322756,5.543201 52.322757,5.543202 52.322758,5.543202 52.322759,5.543202 52.32276,5.543203 52.322761,5.543203 52.322762,5.543204 52.322763,5.543204 52.322764,5.543204 52.322765,5.543205 52.322766,5.543205 52.322767,5.543205 52.322768,5.543206 52.322769,5.543206 52.32277,5.543206 52.322771,5.543207 52.322772,5.543207 52.322773,5.543207 52.322774,5.543207 52.322775,5.543208 52.322776,5.543208 52.322777,5.543208 52.322778,5.543208 52.322779,5.543208 52.32278,5.543209 52.322781,5.543209 52.322782,5.543209 52.322783,5.543209 52.322784,5.543209 52.322785,5.543209 52.322786,5.54321 52.322787,5.54321 52.322788,5.54321 52.322788,5.54321 52.322789,5.54321 52.32279,5.54321 52.322791,5.54321 52.322792,5.54321 52.322793,5.54321 52.322794,5.54321 52.322795,5.54321 52.322796,5.54321 52.322797,5.543211 52.322798,5.543211 52.322799,5.543211 52.3228,5.543211 52.322801,5.54321 52.322802,5.54321 52.322803,5.54321 52.322804,5.54321 52.322805,5.54321 52.322806,5.54321 52.322807,5.54321 52.322808,5.54321 52.322809,5.54321 52.32281,5.54321 52.322811,5.54321 52.322812,5.54321 52.322813,5.54321 52.322814,5.543209 52.322815,5.543209 52.322816,5.543209 52.322817,5.543209 52.322818,5.543209 52.322819,5.543209 52.32282,5.543208 52.322821,5.543208 52.322822,5.543208 52.322823,5.543208 52.322824,5.543207 52.322825,5.543207 52.322826,5.543207 52.322827,5.543207 52.322828,5.543206 52.322829,5.543206 52.32283,5.543206 52.322831,5.543205 52.322832,5.543205 52.322833,5.543205 52.322834,5.543204 52.322835,5.543204 52.322836,5.543204 52.322837,5.543203 52.322838,5.543203 52.322839,5.543203 52.32284,5.543202 52.322841,5.543202 52.322842,5.543201 52.322843,5.543201 52.322844,5.543201 52.322845,5.5432 52.322846,5.5432 52.322847,5.543199 52.322848,5.543199 52.322848,5.543196 52.322858,5.54302 52.323225,5.542967 52.32332,5.542945 52.323349,5.542932 52.323362,5.542928 52.323366,5.542908 52.323384,5.542905 52.323387,5.542882 52.323408,5.542827 52.323459,5.542755 52.323512,5.542674 52.323561,5.542614 52.323591,5.542521 52.32363,5.5425 52.323638,5.542354 52.323678,5.54234 52.323683,5.542332 52.323684,5.542331 52.323684,5.542251 52.3237,5.542184 52.323713,5.542087 52.323732)),((5.539271 52.329233,5.539165 52.329214,5.539156 52.32921,5.539145 52.329204,5.539132 52.329194,5.539121 52.329184,5.539111 52.329172,5.539105 52.329163,5.539101 52.329155,5.539096 52.329143,5.539092 52.329128,5.539091 52.329113,5.539092 52.329101,5.539093 52.329092,5.5391 52.329073,5.539105 52.329062,5.539182 52.328879,5.53925 52.328718,5.539257 52.328701,5.539235 52.328677,5.539378 52.328333,5.539417 52.328319,5.539441 52.328263,5.539467 52.328199,5.53947 52.328192,5.53947 52.328184,5.539468 52.328173,5.539462 52.328162,5.539452 52.328152,5.539447 52.328148,5.539431 52.32814,5.539422 52.328137,5.539403 52.328132,5.539363 52.328125,5.539354 52.328124,5.539319 52.32812,5.539338 52.328074,5.539352 52.328077,5.539362 52.328079,5.539374 52.328081,5.539384 52.328083,5.539415 52.328089,5.539428 52.32809,5.539454 52.32809,5.539476 52.328089,5.539488 52.328087,5.5395 52.328083,5.53951 52.328078,5.539518 52.328071,5.539524 52.328064,5.539527 52.32806,5.539561 52.32799,5.539564 52.327986,5.539685 52.327731,5.539742 52.327611,5.539974 52.327125,5.539977 52.327113,5.539976 52.327102,5.539975 52.327096,5.539968 52.327086,5.539958 52.327076,5.539945 52.327068,5.539929 52.327062,5.539913 52.327058,5.539803 52.327038,5.539793 52.327037,5.539773 52.327035,5.539755 52.327034,5.539738 52.327035,5.539766 52.326974,5.539782 52.326981,5.539799 52.326987,5.539815 52.326991,5.539824 52.326992,5.539947 52.327014,5.539965 52.327014,5.539983 52.327013,5.54 52.327009,5.540008 52.327006,5.540021 52.327001,5.540032 52.326993,5.540042 52.326983,5.540047 52.326974,5.540068 52.326927,5.540169 52.326716,5.540169 52.326712,5.540168 52.326709,5.540152 52.32669,5.540152 52.326686,5.54026 52.326461,5.540263 52.326458,5.540267 52.326455,5.540294 52.326446,5.540297 52.326445,5.540299 52.326442,5.5403 52.326441,5.540445 52.326137,5.540457 52.326111,5.540502 52.326017,5.540503 52.326013,5.540501 52.32601,5.540487 52.325994,5.540485 52.325991,5.540486 52.325987,5.540618 52.32571,5.540621 52.325707,5.540625 52.325704,5.540651 52.325696,5.540655 52.325693,5.540658 52.32569,5.54073 52.32554,5.54073 52.325536,5.540729 52.325533,5.540714 52.325518,5.540712 52.325515,5.540713 52.325511,5.540848 52.325229,5.540851 52.325225,5.540855 52.325223,5.540881 52.325215,5.540885 52.325212,5.540888 52.325209,5.540893 52.325198,5.540951 52.325076,5.540954 52.325064,5.540953 52.325053,5.540949 52.325042,5.540941 52.325032,5.54094 52.325031,5.540929 52.325023,5.540915 52.325015,5.540898 52.32501,5.540781 52.32499,5.540772 52.324988,5.540763 52.324987,5.54075 52.324985,5.54074 52.324984,5.540723 52.324985,5.540708 52.324986,5.540695 52.324988,5.540736 52.324923,5.540751 52.324932,5.540767 52.324939,5.540781 52.324943,5.540784 52.324943,5.540792 52.324945,5.540801 52.324947,5.541134 52.325007,5.54114 52.325007,5.541145 52.325006,5.541173 52.324996,5.541179 52.324995,5.541185 52.324995,5.541396 52.325033,5.541401 52.325035,5.541417 52.325051,5.541421 52.325053,5.541426 52.325055,5.541446 52.325058,5.541452 52.325058,5.541479 52.325051,5.541485 52.32505,5.54149 52.32505,5.541941 52.325132,5.541946 52.325134,5.54195 52.325137,5.541967 52.325155,5.541973 52.325158,5.541977 52.325159,5.542005 52.325164,5.542019 52.325167,5.542031 52.325171,5.542043 52.325177,5.542053 52.325183,5.542069 52.325196,5.542081 52.325209,5.542091 52.325224,5.54238 52.325763,5.542386 52.325773,5.54246 52.325914,5.542471 52.325935,5.542477 52.325946,5.542484 52.325959,5.542799 52.326553,5.542805 52.326564,5.542823 52.326597,5.542832 52.326613,5.542838 52.32663,5.542838 52.326649,5.542796 52.326739,5.542485 52.327392,5.54248 52.327403,5.542473 52.32742,5.542473 52.32743,5.542475 52.327436,5.542481 52.327446,5.542485 52.327451,5.54249 52.327456,5.542502 52.327464,5.542509 52.327468,5.542524 52.327473,5.542551 52.327478,5.542563 52.327481,5.543004 52.32756,5.543065 52.327571,5.543083 52.327574,5.543216 52.327598,5.543238 52.327602,5.543406 52.327633,5.54347 52.327644,5.543517 52.327653,5.543645 52.327676,5.543694 52.327685,5.543728 52.327691,5.54374 52.327693,5.543758 52.327695,5.543776 52.327694,5.543794 52.32769,5.543822 52.327633,5.543834 52.327607,5.54395 52.327365,5.543962 52.327339,5.543968 52.327326,5.544296 52.326637,5.544298 52.326633,5.5443 52.326626,5.544297 52.326616,5.544293 52.32661,5.544286 52.326604,5.544278 52.326599,5.544268 52.326596,5.543833 52.326519,5.543839 52.3265,5.543853 52.326468,5.543824 52.326409,5.543816 52.326392,5.543795 52.32635,5.543778 52.326317,5.543746 52.326257,5.543764 52.32626,5.543809 52.326165,5.54398 52.325809,5.543983 52.325804,5.54397 52.325802,5.544016 52.325704,5.544096 52.325536,5.544174 52.325372,5.544207 52.325304,5.544234 52.325246,5.544262 52.325187,5.544327 52.32505,5.544343 52.325016,5.544499 52.32469,5.544527 52.32463,5.544612 52.324452,5.544615 52.324446,5.544616 52.324435,5.544614 52.324424,5.544611 52.324418,5.544608 52.324414,5.543702 52.324252,5.543702 52.324252,5.543701 52.324252,5.543701 52.324252,5.5437 52.324252,5.5437 52.324252,5.543699 52.324252,5.543699 52.324252,5.543699 52.324252,5.543698 52.324252,5.543698 52.324252,5.543697 52.324252,5.543697 52.324252,5.543696 52.324252,5.543696 52.324252,5.543696 52.324251,5.543695 52.324251,5.543695 52.324251,5.543694 52.324251,5.543694 52.324251,5.543693 52.324251,5.543693 52.324251,5.543692 52.324251,5.543692 52.324251,5.543692 52.324251,5.543691 52.324251,5.543691 52.324251,5.54369 52.324251,5.54369 52.324251,5.543689 52.324251,5.543689 52.324252,5.543688 52.324252,5.543688 52.324252,5.543688 52.324252,5.543687 52.324252,5.543687 52.324252,5.543686 52.324252,5.543686 52.324252,5.543685 52.324252,5.543685 52.324252,5.543685 52.324252,5.543684 52.324252,5.543684 52.324252,5.543683 52.324252,5.543683 52.324252,5.543682 52.324252,5.543682 52.324252,5.543682 52.324252,5.543681 52.324253,5.543681 52.324253,5.54368 52.324253,5.54368 52.324253,5.543679 52.324253,5.543679 52.324253,5.543679 52.324253,5.543678 52.324253,5.543678 52.324253,5.543677 52.324253,5.543677 52.324254,5.543677 52.324254,5.543676 52.324254,5.543676 52.324254,5.543675 52.324254,5.543675 52.324254,5.543675 52.324254,5.543674 52.324255,5.543674 52.324255,5.543674 52.324255,5.543673 52.324255,5.543673 52.324255,5.543672 52.324255,5.543672 52.324255,5.543672 52.324256,5.543671 52.324256,5.543671 52.324256,5.543671 52.324256,5.54367 52.324256,5.54367 52.324256,5.54367 52.324257,5.543669 52.324257,5.543669 52.324257,5.543669 52.324257,5.543668 52.324257,5.543668 52.324258,5.543668 52.324258,5.543667 52.324258,5.543667 52.324258,5.543667 52.324258,5.543667 52.324259,5.543666 52.324259,5.543666 52.324259,5.543666 52.324259,5.543665 52.324259,5.543665 52.32426,5.543665 52.32426,5.543665 52.32426,5.543664 52.32426,5.543664 52.32426,5.543664 52.324261,5.543664 52.324261,5.543663 52.324261,5.543663 52.324261,5.54365 52.324286,5.543694 52.324294,5.54361 52.324471,5.543529 52.324457,5.543405 52.324434,5.543624 52.323975,5.543333 52.323893,5.543048 52.323813,5.543013 52.323805,5.542994 52.323801,5.542978 52.323798,5.542962 52.323796,5.542942 52.323793,5.542868 52.323786,5.542793 52.323779,5.542738 52.323788,5.542691 52.323794,5.542368 52.323868,5.542365 52.323868,5.542342 52.323854,5.54233 52.323843,5.54232 52.323832,5.542312 52.32382,5.542307 52.323811,5.542319 52.323809,5.542407 52.323796,5.542519 52.323777,5.542602 52.323758,5.542685 52.323739,5.542732 52.323728,5.542757 52.323724,5.54278 52.323721,5.542803 52.32372,5.542968 52.323625,5.543071 52.323515,5.543071 52.323515,5.543071 52.323516,5.543071 52.323517,5.54307 52.323518,5.54307 52.323519,5.54307 52.32352,5.543069 52.323521,5.543069 52.323522,5.543069 52.323524,5.543069 52.323525,5.543068 52.323526,5.543068 52.323527,5.543068 52.323528,5.543068 52.323529,5.543068 52.32353,5.543068 52.323531,5.543068 52.323532,5.543068 52.323533,5.543068 52.323534,5.543068 52.323535,5.543068 52.323536,5.543068 52.323538,5.543068 52.323539,5.543068 52.32354,5.543068 52.323541,5.543068 52.323542,5.543069 52.323543,5.543069 52.323544,5.543069 52.323545,5.543069 52.323546,5.54307 52.323547,5.54307 52.323548,5.54307 52.323549,5.543071 52.32355,5.543071 52.323552,5.543071 52.323553,5.543072 52.323554,5.543072 52.323555,5.543073 52.323556,5.543073 52.323557,5.543074 52.323558,5.543074 52.323559,5.543075 52.32356,5.543075 52.323561,5.543076 52.323562,5.543077 52.323563,5.543077 52.323564,5.543078 52.323565,5.543079 52.323566,5.543079 52.323567,5.54308 52.323568,5.543081 52.323569,5.543082 52.32357,5.543083 52.323571,5.543083 52.323572,5.543084 52.323573,5.543085 52.323574,5.543086 52.323575,5.543087 52.323576,5.543088 52.323576,5.543089 52.323577,5.54309 52.323578,5.543091 52.323579,5.543092 52.32358,5.543093 52.323581,5.543094 52.323582,5.543095 52.323583,5.543096 52.323584,5.543097 52.323584,5.543098 52.323585,5.543099 52.323586,5.5431 52.323587,5.543102 52.323588,5.543103 52.323589,5.543104 52.323589,5.543105 52.32359,5.543106 52.323591,5.543108 52.323592,5.543109 52.323592,5.54311 52.323593,5.543112 52.323594,5.543113 52.323595,5.543114 52.323595,5.543116 52.323596,5.543117 52.323597,5.543118 52.323597,5.54312 52.323598,5.543121 52.323599,5.543123 52.323599,5.543124 52.3236,5.543126 52.323601,5.543127 52.323601,5.543128 52.323602,5.54313 52.323602,5.543131 52.323603,5.543133 52.323603,5.543135 52.323604,5.543136 52.323605,5.543138 52.323605,5.543139 52.323606,5.543139 52.323606,5.543169 52.323615,5.543179 52.323618,5.543237 52.323635,5.543353 52.323663,5.543468 52.323683,5.543661 52.323719,5.543715 52.323729,5.543742 52.32373,5.543761 52.323728,5.543779 52.323725,5.543788 52.323722,5.543803 52.323715,5.54381 52.323711,5.543821 52.323702,5.543828 52.323692,5.54388 52.323582,5.543883 52.323571,5.543883 52.323565,5.543876 52.323548,5.543867 52.323538,5.543861 52.323533,5.543847 52.323525,5.543831 52.323519,5.543816 52.323516,5.543408 52.323443,5.543346 52.323432,5.54336 52.323402,5.54336 52.323401,5.543391 52.323338,5.54341 52.323298,5.543401 52.323287,5.543566 52.322939,5.543624 52.322817,5.543649 52.322765,5.543667 52.322759,5.54369 52.32271,5.543691 52.322707,5.543696 52.322696,5.543688 52.322694,5.543694 52.322679,5.543694 52.322679,5.543694 52.322679,5.543694 52.322678,5.543694 52.322678,5.543694 52.322677,5.543693 52.322677,5.543693 52.322676,5.543693 52.322676,5.543693 52.322675,5.543693 52.322675,5.543693 52.322674,5.543692 52.322674,5.543692 52.322673,5.543692 52.322673,5.543692 52.322673,5.543692 52.322672,5.543691 52.322672,5.543691 52.322671,5.543691 52.322671,5.543691 52.32267,5.54369 52.32267,5.54369 52.322669,5.54369 52.322669,5.543689 52.322668,5.543689 52.322668,5.543689 52.322667,5.543688 52.322667,5.543688 52.322667,5.543688 52.322666,5.543687 52.322666,5.543687 52.322665,5.543687 52.322665,5.543686 52.322664,5.543686 52.322664,5.543685 52.322663,5.543685 52.322663,5.543685 52.322663,5.543684 52.322662,5.543684 52.322662,5.543683 52.322661,5.543683 52.322661,5.543682 52.322661,5.543682 52.32266,5.543682 52.32266,5.543681 52.322659,5.543681 52.322659,5.54368 52.322659,5.54368 52.322658,5.543679 52.322658,5.543679 52.322657,5.543678 52.322657,5.543678 52.322657,5.543677 52.322656,5.543677 52.322656,5.543676 52.322656,5.543675 52.322655,5.543675 52.322655,5.543674 52.322654,5.543674 52.322654,5.543673 52.322654,5.543673 52.322653,5.543672 52.322653,5.543671 52.322653,5.543671 52.322652,5.54367 52.322652,5.54367 52.322652,5.543669 52.322651,5.543668 52.322651,5.543668 52.322651,5.543667 52.322651,5.543666 52.32265,5.543666 52.32265,5.543665 52.32265,5.543665 52.322649,5.543664 52.322649,5.543663 52.322649,5.543663 52.322649,5.543662 52.322648,5.543661 52.322648,5.54366 52.322648,5.54366 52.322647,5.543659 52.322647,5.543658 52.322647,5.543658 52.322647,5.543657 52.322647,5.543656 52.322646,5.543656 52.322646,5.543655 52.322646,5.543654 52.322646,5.543653 52.322645,5.543653 52.322645,5.543652 52.322645,5.543651 52.322645,5.54365 52.322645,5.54365 52.322644,5.543649 52.322644,5.543648 52.322644,5.543647 52.322644,5.543647 52.322644,5.543646 52.322644,5.543646 52.322644,5.543615 52.322638,5.543635 52.322597,5.543668 52.322603,5.543668 52.322603,5.543669 52.322603,5.54367 52.322603,5.543671 52.322603,5.543672 52.322603,5.543672 52.322603,5.543673 52.322604,5.543674 52.322604,5.543675 52.322604,5.543676 52.322604,5.543677 52.322604,5.543677 52.322604,5.543678 52.322604,5.543679 52.322604,5.54368 52.322604,5.543681 52.322604,5.543682 52.322604,5.543682 52.322604,5.543683 52.322604,5.543684 52.322604,5.543685 52.322604,5.543686 52.322604,5.543687 52.322604,5.543687 52.322603,5.543688 52.322603,5.543689 52.322603,5.54369 52.322603,5.543691 52.322603,5.543692 52.322603,5.543692 52.322603,5.543693 52.322603,5.543694 52.322603,5.543695 52.322603,5.543696 52.322603,5.543697 52.322603,5.543697 52.322602,5.543698 52.322602,5.543699 52.322602,5.5437 52.322602,5.543701 52.322602,5.543701 52.322602,5.543702 52.322602,5.543703 52.322601,5.543704 52.322601,5.543705 52.322601,5.543705 52.322601,5.543706 52.322601,5.543707 52.3226,5.543708 52.3226,5.543708 52.3226,5.543709 52.3226,5.54371 52.3226,5.543711 52.322599,5.543712 52.322599,5.543712 52.322599,5.543713 52.322599,5.543714 52.322598,5.543715 52.322598,5.543715 52.322598,5.543716 52.322598,5.543717 52.322597,5.543717 52.322597,5.543718 52.322597,5.543719 52.322597,5.54372 52.322596,5.54372 52.322596,5.543721 52.322596,5.543722 52.322596,5.543722 52.322595,5.543723 52.322595,5.543724 52.322595,5.543724 52.322594,5.543725 52.322594,5.543726 52.322594,5.543726 52.322593,5.543727 52.322593,5.543728 52.322593,5.543728 52.322592,5.543729 52.322592,5.543729 52.322592,5.54373 52.322591,5.543731 52.322591,5.543731 52.32259,5.543732 52.32259,5.543732 52.32259,5.543733 52.322589,5.543733 52.322589,5.543734 52.322589,5.543735 52.322588,5.543735 52.322588,5.543736 52.322587,5.543736 52.322587,5.543737 52.322587,5.543737 52.322586,5.543738 52.322586,5.543738 52.322585,5.543739 52.322585,5.543739 52.322585,5.54374 52.322584,5.54374 52.322584,5.54374 52.322584,5.543745 52.322573,5.543753 52.322575,5.543769 52.322545,5.543759 52.322534,5.543938 52.322159,5.543988 52.322054,5.544028 52.32197,5.544035 52.321955,5.544042 52.321941,5.544049 52.321925,5.544298 52.321401,5.544315 52.321395,5.544324 52.321377,5.544298 52.321373,5.544257 52.321367,5.544243 52.321364,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544134 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544133 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544132 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.544131 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.54413 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544129 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544128 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321355,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544127 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544126 52.321356,5.544141 52.321332,5.544145 52.321325,5.544172 52.321269,5.544195 52.321207,5.544205 52.321209,5.544196 52.32123,5.544196 52.32123,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321231,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544197 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321232,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544198 52.321233,5.544199 52.321233,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321234,5.544199 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321235,5.5442 52.321236,5.5442 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321236,5.544201 52.321237,5.544201 52.321237,5.544201 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321237,5.544202 52.321238,5.544202 52.321238,5.544202 52.321238,5.544202 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321238,5.544203 52.321239,5.544203 52.321239,5.544203 52.321239,5.544203 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.321239,5.544204 52.32124,5.544204 52.32124,5.544204 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.32124,5.544205 52.321241,5.544205 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544206 52.321241,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544207 52.321242,5.544208 52.321242,5.544208 52.321242,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544208 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321243,5.544209 52.321244,5.544209 52.321244,5.544209 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.54421 52.321244,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544211 52.321245,5.544212 52.321245,5.544212 52.321245,5.544212 52.321245,5.544212 52.321245,5.544212 52.321246,5.544212 52.321246,5.544212 52.321246,5.544212 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544213 52.321246,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544214 52.321247,5.544215 52.321247,5.544215 52.321247,5.544215 52.321247,5.544215 52.321247,5.544215 52.321248,5.544215 52.321248,5.544215 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544216 52.321248,5.544217 52.321248,5.544217 52.321248,5.544217 52.321248,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544217 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544218 52.321249,5.544219 52.321249,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.544219 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.54422 52.32125,5.544221 52.32125,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544221 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544222 52.321251,5.544223 52.321251,5.544223 52.321251,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544223 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544224 52.321252,5.544225 52.321252,5.544225 52.321252,5.544225 52.321252,5.544225 52.321252,5.544225 52.321253,5.544225 52.321253,5.544225 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544226 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544227 52.321253,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544228 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.544229 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321254,5.54423 52.321255,5.54423 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544231 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544232 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321255,5.544233 52.321256,5.544233 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544234 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544235 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544236 52.321256,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544237 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544238 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.544239 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321257,5.54424 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544241 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544242 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544243 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544244 52.321258,5.544245 52.321258,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544245 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544246 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544247 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544248 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.544249 52.321259,5.54425 52.321259,5.54425 52.321259,5.54425 52.321259,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544293 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544294 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321267,5.544295 52.321268,5.544295 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544296 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544297 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544298 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.544299 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.5443 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544301 52.321268,5.544302 52.321268,5.544302 52.321268,5.544302 52.321268,5.544302 52.321268,5.544302 52.321269,5.544302 52.321269,5.544302 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544303 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544304 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544305 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544306 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544307 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544308 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.544309 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.54431 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544311 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544312 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544313 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544314 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544315 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544316 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544317 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544318 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.544319 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.54432 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544321 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544322 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544323 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544324 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544325 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544326 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544327 52.321269,5.544328 52.321269,5.544328 52.321269,5.544328 52.321268,5.544328 52.321268,5.544328 52.321268,5.544328 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.544329 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.54433 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544331 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544332 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544333 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544334 52.321268,5.544335 52.321268,5.544335 52.321268,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544335 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544336 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544337 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544338 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.544339 52.321267,5.54434 52.321267,5.54434 52.321267,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.54434 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544341 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544342 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544343 52.321266,5.544344 52.321266,5.544344 52.321266,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544344 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544345 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544346 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321265,5.544347 52.321264,5.544347 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544348 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.544349 52.321264,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.54435 52.321264,5.544373 52.321255,5.544376 52.321248,5.544385 52.321249,5.544412 52.321194,5.544402 52.321184,5.544456 52.321072,5.544578 52.320813,5.544591 52.320787,5.544603 52.320761,5.544724 52.320511,5.544742 52.320504,5.544785 52.320511,5.545864 52.320705,5.545911 52.320713,5.546217 52.320768,5.546345 52.320791,5.546504 52.320819,5.546528 52.320823,5.546575 52.320832,5.546793 52.320871,5.546839 52.320879,5.54722 52.320947,5.547346 52.32097,5.547456 52.320989,5.547477 52.320945,5.547503 52.320891,5.547555 52.320782,5.547618 52.320793,5.547602 52.320827,5.547549 52.320938,5.547541 52.320956,5.547702 52.320985,5.547914 52.321023,5.547922 52.321005,5.547975 52.320893,5.547992 52.320858,5.548016 52.320862,5.548041 52.320867,5.548024 52.320902,5.547962 52.321031,5.547901 52.32116,5.547838 52.321291,5.547816 52.321337,5.547777 52.321419,5.547715 52.321548,5.547654 52.321678,5.547592 52.321807,5.547804 52.321845,5.548015 52.321883,5.548023 52.321865,5.548077 52.321754,5.548138 52.321624,5.548199 52.321495,5.548261 52.321365,5.548275 52.321336,5.548323 52.321236,5.548384 52.321106,5.548445 52.320977,5.548468 52.32093,5.548532 52.320941,5.548203 52.321635,5.548187 52.321632,5.548126 52.321762,5.548073 52.321874,5.548064 52.321891,5.548275 52.321929,5.548403 52.321952,5.548487 52.321967,5.548496 52.321949,5.548546 52.321844,5.548549 52.321837,5.548573 52.321785,5.548636 52.321796,5.548551 52.321978,5.548565 52.32199,5.548547 52.322024,5.548526 52.322069,5.548506 52.322112,5.548478 52.322107,5.548202 52.322685,5.548201 52.322687,5.548195 52.3227,5.548189 52.322713,5.548184 52.322722,5.548161 52.322771,5.548013 52.323078,5.547892 52.323335,5.547871 52.32338,5.547853 52.323418,5.547841 52.323443,5.547538 52.32408,5.547492 52.324172,5.547489 52.324173,5.547472 52.32417,5.546665 52.324026,5.546656 52.324024,5.546636 52.324023,5.546627 52.324024,5.546609 52.324027,5.546613 52.324033,5.546621 52.324043,5.546608 52.324048,5.546597 52.324054,5.546589 52.324062,5.546583 52.32407,5.546532 52.32418,5.546532 52.324189,5.546534 52.324197,5.546537 52.324202,5.546545 52.32421,5.54655 52.324213,5.546562 52.324219,5.546576 52.324223,5.546593 52.324225,5.547379 52.324367,5.547403 52.324371,5.547517 52.324391,5.548059 52.324489,5.548072 52.324491,5.548114 52.324499,5.548115 52.324499,5.548106 52.324516,5.548149 52.324523,5.548151 52.324524,5.548176 52.324528,5.548187 52.324528,5.548202 52.324527,5.548217 52.324525,5.54823 52.324523,5.548236 52.324522,5.548236 52.324522,5.548237 52.324522,5.548237 52.324522,5.548237 52.324522,5.548238 52.324522,5.548238 52.324522,5.548239 52.324521,5.548239 52.324521,5.548239 52.324521,5.54824 52.324521,5.54824 52.324521,5.54824 52.324521,5.548241 52.324521,5.548241 52.32452,5.548241 52.32452,5.548242 52.32452,5.548242 52.32452,5.548242 52.32452,5.548243 52.32452,5.548243 52.32452,5.548244 52.324519,5.548244 52.324519,5.548244 52.324519,5.548245 52.324519,5.548245 52.324519,5.548245 52.324519,5.548246 52.324518,5.548246 52.324518,5.548246 52.324518,5.548247 52.324518,5.548247 52.324518,5.548247 52.324518,5.548248 52.324517,5.548248 52.324517,5.548248 52.324517,5.548249 52.324517,5.548249 52.324517,5.548249 52.324517,5.548249 52.324516,5.54825 52.324516,5.54825 52.324516,5.54825 52.324516,5.548251 52.324516,5.548251 52.324515,5.548251 52.324515,5.548252 52.324515,5.548252 52.324515,5.548252 52.324515,5.548253 52.324515,5.548253 52.324514,5.548253 52.324514,5.548253 52.324514,5.548254 52.324514,5.548254 52.324514,5.548254 52.324513,5.548255 52.324513,5.548255 52.324513,5.548255 52.324513,5.548255 52.324513,5.548256 52.324512,5.548256 52.324512,5.548256 52.324512,5.548256 52.324512,5.548257 52.324512,5.548257 52.324511,5.548257 52.324511,5.548258 52.324511,5.548258 52.324511,5.548258 52.324511,5.548258 52.32451,5.548259 52.32451,5.548259 52.32451,5.548259 52.32451,5.548259 52.32451,5.54826 52.324509,5.54826 52.324509,5.54826 52.324509,5.54826 52.324509,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.548261 52.324508,5.548262 52.324507,5.548262 52.324507,5.548262 52.324507,5.548262 52.324507,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548263 52.324506,5.548264 52.324505,5.548264 52.324505,5.548264 52.324505,5.548264 52.324505,5.548264 52.324504,5.548265 52.324504,5.548265 52.324504,5.548265 52.324504,5.548265 52.324504,5.548365 52.32437,5.54826 52.324572,5.548193 52.324703,5.548161 52.324764,5.548196 52.324633,5.548196 52.324631,5.548196 52.324629,5.548196 52.324627,5.548196 52.324625,5.548196 52.324624,5.548196 52.324622,5.548196 52.32462,5.548195 52.324618,5.548195 52.324616,5.548194 52.324614,5.548193 52.324613,5.548192 52.324611,5.548191 52.324609,5.54819 52.324607,5.548189 52.324606,5.548187 52.324604,5.548175 52.324593,5.548164 52.324587,5.548148 52.324581,5.548081 52.324568,5.547483 52.324462,5.546941 52.324365,5.546915 52.324361,5.546897 52.324358,5.546871 52.324353,5.54657 52.324299,5.546563 52.324317,5.546547 52.324313,5.546539 52.324312,5.546522 52.324312,5.546506 52.324314,5.54649 52.324318,5.546476 52.324324,5.546465 52.324331,5.546456 52.32434,5.546453 52.324345,5.546443 52.324366,5.54633 52.324605,5.546344 52.32462,5.546351 52.324621,5.546533 52.324654,5.546677 52.32468,5.546821 52.324706,5.546964 52.324731,5.547108 52.324757,5.547255 52.324783,5.547279 52.324788,5.547319 52.324795,5.547383 52.324807,5.547303 52.324977,5.547247 52.325093,5.547131 52.325339,5.54712 52.325361,5.5471 52.325404,5.547088 52.325428,5.546965 52.325687,5.546957 52.325704,5.546921 52.325779,5.546719 52.326203,5.546709 52.326225,5.546689 52.326267,5.546672 52.326301,5.546413 52.326845,5.546571 52.326873,5.546547 52.326917,5.546537 52.326935,5.546526 52.326955,5.546402 52.326931,5.546394 52.32693,5.546386 52.326931,5.546379 52.326932,5.546372 52.326935,5.546367 52.326939,5.546365 52.326942,5.546275 52.327117,5.546269 52.32712,5.546264 52.327124,5.546261 52.327129,5.546259 52.327134,5.546259 52.327139,5.54626 52.327144,5.546183 52.327293,5.546363 52.327328,5.546354 52.327345,5.546174 52.32731,5.546097 52.327459,5.546091 52.327462,5.546086 52.327466,5.546083 52.327471,5.546081 52.327476,5.546081 52.327481,5.546083 52.327486,5.545979 52.327686,5.546194 52.327728,5.546167 52.32778,5.545972 52.327742,5.545952 52.327738,5.545926 52.327787,5.545848 52.327938,5.545842 52.327941,5.545837 52.327945,5.545834 52.32795,5.545832 52.327955,5.545832 52.32796,5.545834 52.327965,5.545756 52.328114,5.545936 52.328149,5.545927 52.328166,5.545747 52.328131,5.54567 52.32828,5.545664 52.328283,5.545659 52.328287,5.545656 52.328292,5.545654 52.328297,5.545654 52.328302,5.545656 52.328307,5.545579 52.328456,5.545759 52.328491,5.54575 52.328508,5.54557 52.328473,5.545564 52.328484,5.545492 52.328622,5.545486 52.328625,5.545482 52.328629,5.545478 52.328634,5.545477 52.328639,5.545477 52.328644,5.545478 52.328649,5.545401 52.328798,5.545581 52.328833,5.545572 52.32885,5.545392 52.328815,5.545315 52.328964,5.545309 52.328967,5.545304 52.328971,5.545301 52.328976,5.545299 52.328981,5.545299 52.328986,5.5453 52.328991,5.545223 52.32914,5.545403 52.329175,5.545419 52.329178,5.545384 52.329247,5.54528 52.329227,5.545285 52.329217,5.545285 52.329215,5.545285 52.329212,5.545283 52.32921,5.545281 52.329208,5.545278 52.329206,5.545274 52.329205,5.54527 52.329204,5.545266 52.329204,5.545262 52.329205,5.545259 52.329206,5.545256 52.329208,5.545254 52.329211,5.545248 52.329222,5.545213 52.329215,5.545153 52.329203,5.545151 52.329206,5.545212 52.329217,5.545019 52.329586,5.544998 52.329582,5.544974 52.329628,5.544995 52.329632,5.544785 52.330036,5.544724 52.330024,5.544674 52.330121,5.544637 52.330114,5.544629 52.33013,5.544628 52.330131,5.544626 52.330135,5.544604 52.330181,5.544604 52.330181,5.544604 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544603 52.330181,5.544602 52.330181,5.544602 52.330181,5.544602 52.330181,5.544602 52.330181,5.544602 52.330181,5.544602 52.330181,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544602 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.544601 52.330182,5.5446 52.330182,5.5446 52.330182,5.5446 52.330182,5.5446 52.330182,5.5446 52.330182,5.5446 52.330182,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.5446 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330183,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544599 52.330184,5.544598 52.330185,5.544561 52.330179,5.544435 52.330156,5.544418 52.330153,5.544396 52.330149,5.544388 52.330152,5.544359 52.330162,5.544357 52.330166,5.543933 52.330091,5.543935 52.330086,5.543919 52.330068,5.543915 52.330064,5.543909 52.330063,5.543909 52.330063,5.543908 52.330062,5.543906 52.330062,5.543905 52.330062,5.543904 52.330062,5.543903 52.330062,5.543902 52.330062,5.5439 52.330062,5.543899 52.330062,5.543898 52.330062,5.543897 52.330062,5.543896 52.330062,5.543895 52.330063,5.543893 52.330063,5.543892 52.330063,5.543891 52.330063,5.54389 52.330063,5.543889 52.330063,5.543888 52.330063,5.543887 52.330064,5.543885 52.330064,5.543884 52.330064,5.543883 52.330064,5.543882 52.330065,5.543881 52.330065,5.54388 52.330065,5.543879 52.330066,5.543878 52.330066,5.543877 52.330066,5.543876 52.330067,5.543875 52.330067,5.543874 52.330067,5.543873 52.330068,5.543872 52.330068,5.543871 52.330069,5.54387 52.330069,5.543869 52.330069,5.543868 52.33007,5.543867 52.33007,5.543866 52.330071,5.543865 52.330071,5.543865 52.330072,5.543864 52.330072,5.543863 52.330073,5.543862 52.330074,5.543861 52.330074,5.543861 52.330075,5.54386 52.330075,5.543859 52.330076,5.543859 52.330076,5.543858 52.330077,5.543857 52.330078,5.543857 52.330078,5.543856 52.330079,5.543856 52.33008,5.543855 52.33008,5.543855 52.330081,5.543854 52.330082,5.543854 52.330082,5.543853 52.330083,5.543853 52.330084,5.543853 52.330084,5.543852 52.330085,5.543852 52.330086,5.543852 52.330086,5.543851 52.330087,5.543851 52.330088,5.543851 52.330089,5.543851 52.330089,5.543851 52.33009,5.54385 52.330091,5.54385 52.330091,5.54385 52.330092,5.54385 52.330093,5.54385 52.330094,5.54385 52.330094,5.54385 52.330095,5.54385 52.330096,5.54385 52.330097,5.543851 52.330097,5.543851 52.330098,5.543851 52.330099,5.543851 52.330099,5.543851 52.3301,5.543852 52.330101,5.543852 52.330102,5.543852 52.330102,5.543852 52.330103,5.543853 52.330104,5.543853 52.330104,5.543854 52.330105,5.543854 52.330106,5.543855 52.330106,5.543855 52.330107,5.543856 52.330108,5.543856 52.330108,5.543857 52.330109,5.543857 52.33011,5.543858 52.33011,5.543858 52.330111,5.543858 52.330111,5.543869 52.330119,5.543891 52.330127,5.543679 52.330089,5.543679 52.330089,5.54368 52.330089,5.543681 52.330089,5.543682 52.330089,5.543682 52.330089,5.543683 52.330089,5.543684 52.330089,5.543685 52.330089,5.543686 52.330089,5.543687 52.330088,5.543687 52.330088,5.543688 52.330088,5.543689 52.330088,5.54369 52.330088,5.543691 52.330088,5.543691 52.330088,5.543692 52.330088,5.543693 52.330088,5.543694 52.330088,5.543695 52.330088,5.543695 52.330088,5.543696 52.330087,5.543697 52.330087,5.543698 52.330087,5.543699 52.330087,5.543699 52.330087,5.5437 52.330087,5.543701 52.330087,5.543702 52.330086,5.543702 52.330086,5.543703 52.330086,5.543704 52.330086,5.543705 52.330086,5.543705 52.330085,5.543706 52.330085,5.543707 52.330085,5.543708 52.330085,5.543708 52.330084,5.543709 52.330084,5.54371 52.330084,5.54371 52.330084,5.543711 52.330083,5.543712 52.330083,5.543712 52.330083,5.543713 52.330083,5.543714 52.330082,5.543714 52.330082,5.543715 52.330082,5.543716 52.330081,5.543716 52.330081,5.543717 52.330081,5.543718 52.33008,5.543718 52.33008,5.543719 52.33008,5.543719 52.330079,5.54372 52.330079,5.543721 52.330079,5.543721 52.330078,5.543722 52.330078,5.543722 52.330078,5.543723 52.330077,5.543723 52.330077,5.543724 52.330077,5.543724 52.330076,5.543725 52.330076,5.543726 52.330075,5.543726 52.330075,5.543726 52.330075,5.543727 52.330074,5.543727 52.330074,5.543728 52.330073,5.543728 52.330073,5.543729 52.330072,5.543729 52.330072,5.54373 52.330072,5.54373 52.330071,5.54373 52.330071,5.543731 52.33007,5.543731 52.33007,5.543731 52.330069,5.543732 52.330069,5.543732 52.330068,5.543732 52.330068,5.543733 52.330068,5.543733 52.330067,5.543733 52.330067,5.543734 52.330066,5.543734 52.330066,5.543734 52.330065,5.543734 52.330065,5.543735 52.330064,5.543735 52.330064,5.543735 52.330063,5.543735 52.330063,5.543735 52.330062,5.543736 52.330062,5.543736 52.330061,5.543736 52.330061,5.543736 52.33006,5.543736 52.33006,5.543736 52.33006,5.543736 52.330059,5.543737 52.330059,5.543737 52.330059,5.543737 52.330058,5.543737 52.330058,5.543737 52.330057,5.543737 52.330057,5.543738 52.330056,5.543738 52.330056,5.543738 52.330056,5.543738 52.330055,5.543738 52.330055,5.543738 52.330054,5.543738 52.330054,5.543738 52.330053,5.543738 52.330053,5.543738 52.330053,5.543738 52.330052,5.543738 52.330052,5.543738 52.330051,5.543738 52.330051,5.543738 52.33005,5.543738 52.33005,5.543738 52.33005,5.543738 52.330049,5.543738 52.330049,5.543738 52.330048,5.543738 52.330048,5.543738 52.330047,5.543738 52.330047,5.543737 52.330047,5.543737 52.330046,5.543737 52.330046,5.543737 52.330045,5.543737 52.330045,5.543737 52.330044,5.543736 52.330044,5.543736 52.330044,5.543736 52.330043,5.543736 52.330043,5.543736 52.330042,5.543735 52.330042,5.543735 52.330042,5.543735 52.330041,5.543734 52.330041,5.543734 52.33004,5.543734 52.33004,5.543733 52.33004,5.543733 52.330039,5.543733 52.330039,5.543732 52.330038,5.543732 52.330038,5.543732 52.330038,5.543731 52.330037,5.543731 52.330037,5.543731 52.330037,5.54373 52.330036,5.54373 52.330036,5.543729 52.330036,5.543729 52.330035,5.543728 52.330035,5.543728 52.330035,5.543727 52.330034,5.543727 52.330034,5.543727 52.330034,5.543726 52.330033,5.543726 52.330033,5.543725 52.330033,5.543724 52.330032,5.543724 52.330032,5.543723 52.330032,5.543723 52.330032,5.543722 52.330031,5.543722 52.330031,5.543721 52.330031,5.543721 52.33003,5.54372 52.33003,5.543719 52.33003,5.543719 52.33003,5.543718 52.330029,5.543718 52.330029,5.543717 52.330029,5.543716 52.330029,5.543716 52.330029,5.543715 52.330028,5.543715 52.330028,5.543714 52.330028,5.543713 52.330028,5.543713 52.330028,5.543712 52.330027,5.543711 52.330027,5.543711 52.330027,5.54371 52.330027,5.543709 52.330027,5.543709 52.330027,5.543708 52.330027,5.543707 52.330026,5.543707 52.330026,5.543706 52.330026,5.543706 52.330026,5.543701 52.330025,5.543693 52.330028,5.543664 52.330037,5.542567 52.329842,5.542553 52.329824,5.542548 52.329819,5.542482 52.329807,5.542471 52.329805,5.542471 52.329805,5.542471 52.329805,5.542471 52.329805,5.542471 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.54247 52.329805,5.542469 52.329805,5.542469 52.329805,5.542469 52.329805,5.542469 52.329806,5.542469 52.329806,5.542469 52.329806,5.542469 52.329806,5.542469 52.329806,5.542469 52.329806,5.542469 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542468 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542467 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542466 52.329806,5.542465 52.329806,5.542465 52.329806,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542465 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329807,5.542464 52.329808,5.542464 52.329808,5.542464 52.329808,5.542464 52.329808,5.542464 52.329808,5.542464 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329808,5.542463 52.329809,5.542463 52.329809,5.542463 52.329809,5.542438 52.329862,5.542333 52.329844,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.32979,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329789,5.542359 52.329788,5.542359 52.329788,5.542359 52.329788,5.542359 52.329788,5.542359 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329788,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542358 52.329787,5.542357 52.329787,5.542357 52.329787,5.542357 52.329787,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542357 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329786,5.542356 52.329785,5.542356 52.329785,5.542356 52.329785,5.542356 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542355 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542354 52.329785,5.542343 52.329783,5.542277 52.329771,5.54227 52.329774,5.542241 52.329783,5.541064 52.329573,5.541048 52.329555,5.541044 52.32955,5.541038 52.329549,5.541038 52.329549,5.541036 52.329549,5.541035 52.329549,5.541033 52.329549,5.541032 52.329549,5.54103 52.329549,5.541029 52.329549,5.541027 52.329549,5.541026 52.32955,5.541024 52.32955,5.541023 52.32955,5.541021 52.32955,5.54102 52.32955,5.541018 52.329551,5.541017 52.329551,5.541016 52.329551,5.541014 52.329551,5.541013 52.329552,5.541012 52.329552,5.54101 52.329552,5.541009 52.329553,5.541008 52.329553,5.541006 52.329554,5.541005 52.329554,5.541004 52.329555,5.541003 52.329555,5.541001 52.329556,5.541 52.329556,5.540999 52.329557,5.540998 52.329558,5.540997 52.329558,5.540996 52.329559,5.540995 52.329559,5.540994 52.32956,5.540993 52.329561,5.540992 52.329561,5.540991 52.329562,5.54099 52.329563,5.540989 52.329564,5.540988 52.329564,5.540988 52.329565,5.540987 52.329566,5.540986 52.329567,5.540985 52.329568,5.540985 52.329568,5.540984 52.329569,5.540984 52.32957,5.540983 52.329571,5.540983 52.329572,5.540982 52.329573,5.540982 52.329573,5.540982 52.329574,5.540981 52.329575,5.540981 52.329576,5.540981 52.329577,5.54098 52.329578,5.54098 52.329579,5.54098 52.32958,5.54098 52.329581,5.54098 52.329582,5.54098 52.329582,5.54098 52.329583,5.54098 52.329584,5.54098 52.329585,5.540981 52.329586,5.540981 52.329587,5.540981 52.329588,5.540981 52.329589,5.540982 52.32959,5.540982 52.329591,5.540982 52.329591,5.540983 52.329592,5.540983 52.329593,5.540984 52.329594,5.540985 52.329595,5.540985 52.329596,5.540986 52.329596,5.540986 52.329597,5.540987 52.329598,5.540988 52.329599,5.540989 52.3296,5.54099 52.3296,5.54099 52.329601,5.540991 52.329602,5.540992 52.329603,5.540993 52.329603,5.540994 52.329604,5.540995 52.329605,5.540996 52.329605,5.540997 52.329606,5.540998 52.329606,5.541 52.329607,5.541001 52.329608,5.541002 52.329608,5.541003 52.329609,5.541004 52.329609,5.541006 52.32961,5.541007 52.32961,5.541008 52.329611,5.541009 52.329611,5.541009 52.329611,5.540836 52.32958,5.540836 52.32958,5.540838 52.32958,5.540839 52.32958,5.540841 52.32958,5.540842 52.32958,5.540844 52.32958,5.540845 52.32958,5.540847 52.32958,5.540848 52.32958,5.54085 52.32958,5.540851 52.329579,5.540852 52.329579,5.540854 52.329579,5.540855 52.329579,5.540857 52.329578,5.540858 52.329578,5.540859 52.329578,5.540861 52.329577,5.540862 52.329577,5.540863 52.329576,5.540865 52.329576,5.540866 52.329576,5.540867 52.329575,5.540868 52.329575,5.540869 52.329574,5.540871 52.329574,5.540872 52.329573,5.540873 52.329572,5.540874 52.329572,5.540875 52.329571,5.540876 52.329571,5.540877 52.32957,5.540878 52.329569,5.540879 52.329569,5.54088 52.329568,5.540881 52.329567,5.540882 52.329566,5.540883 52.329566,5.540883 52.329565,5.540884 52.329564,5.540885 52.329563,5.540886 52.329563,5.540886 52.329562,5.540887 52.329561,5.540887 52.32956,5.540888 52.329559,5.540889 52.329558,5.540889 52.329558,5.540889 52.329557,5.54089 52.329556,5.54089 52.329555,5.540891 52.329554,5.540891 52.329553,5.540891 52.329552,5.540891 52.329551,5.540891 52.329551,5.540892 52.32955,5.540892 52.329549,5.540892 52.329548,5.540892 52.329547,5.540892 52.329546,5.540892 52.329545,5.540891 52.329544,5.540891 52.329543,5.540891 52.329543,5.540891 52.329542,5.540891 52.329541,5.54089 52.32954,5.54089 52.329539,5.54089 52.329538,5.540889 52.329537,5.540889 52.329536,5.540888 52.329536,5.540888 52.329535,5.540887 52.329534,5.540886 52.329533,5.540886 52.329532,5.540885 52.329531,5.540884 52.329531,5.540884 52.32953,5.540883 52.329529,5.540882 52.329528,5.540881 52.329528,5.54088 52.329527,5.540879 52.329526,5.540878 52.329526,5.540877 52.329525,5.540876 52.329524,5.540875 52.329524,5.540874 52.329523,5.540873 52.329522,5.540872 52.329522,5.540871 52.329521,5.54087 52.329521,5.540869 52.32952,5.540867 52.32952,5.540866 52.329519,5.540865 52.329519,5.540864 52.329518,5.540862 52.329518,5.540862 52.329518,5.54086 52.329517,5.540841 52.329514,5.540829 52.329512,5.540805 52.329508,5.540797 52.32951,5.540768 52.32952,5.540166 52.329412,5.540161 52.329416,5.540166 52.329422,5.540542 52.329489,5.540534 52.329506,5.540539 52.329507,5.540563 52.329532,5.539276 52.329306,5.539367 52.32932,5.539821 52.329378,5.539829 52.329361,5.539895 52.329373,5.539898 52.329369,5.539899 52.329364,5.539332 52.329263,5.539313 52.329241,5.539305 52.329239,5.539271 52.329233)),((5.549192 52.331562,5.549126 52.331481,5.549081 52.331424,5.549081 52.331424,5.54908 52.331423,5.549079 52.331422,5.549078 52.331421,5.549077 52.33142,5.549076 52.331419,5.549075 52.331418,5.549074 52.331417,5.549073 52.331416,5.549072 52.331415,5.549071 52.331414,5.54907 52.331413,5.549069 52.331412,5.549068 52.331411,5.549067 52.33141,5.549066 52.331409,5.549065 52.331408,5.549064 52.331407,5.549063 52.331406,5.549061 52.331405,5.54906 52.331404,5.549059 52.331403,5.549058 52.331402,5.549057 52.331401,5.549056 52.3314,5.549054 52.331399,5.549053 52.331398,5.549052 52.331397,5.549051 52.331396,5.54905 52.331395,5.549048 52.331394,5.549047 52.331393,5.549046 52.331392,5.549045 52.331392,5.549043 52.331391,5.549042 52.33139,5.549041 52.331389,5.549039 52.331388,5.549038 52.331387,5.549037 52.331386,5.549035 52.331385,5.549034 52.331384,5.549033 52.331383,5.549031 52.331383,5.54903 52.331382,5.549029 52.331381,5.549027 52.33138,5.549026 52.331379,5.549024 52.331378,5.549023 52.331377,5.549022 52.331377,5.54902 52.331376,5.549019 52.331375,5.549017 52.331374,5.549016 52.331373,5.549014 52.331373,5.549013 52.331372,5.549011 52.331371,5.54901 52.33137,5.549008 52.331369,5.549007 52.331369,5.549005 52.331368,5.549004 52.331367,5.549002 52.331366,5.549001 52.331366,5.548999 52.331365,5.548998 52.331364,5.548996 52.331363,5.548994 52.331363,5.548993 52.331362,5.548991 52.331361,5.54899 52.33136,5.548988 52.33136,5.548986 52.331359,5.548985 52.331358,5.548983 52.331358,5.548982 52.331357,5.54898 52.331356,5.548978 52.331356,5.548977 52.331355,5.548975 52.331354,5.548973 52.331354,5.548972 52.331353,5.54897 52.331352,5.548968 52.331352,5.548967 52.331351,5.548965 52.331351,5.548963 52.33135,5.548961 52.331349,5.54896 52.331349,5.548958 52.331348,5.548956 52.331348,5.548955 52.331347,5.548953 52.331346,5.548951 52.331346,5.548949 52.331345,5.548948 52.331345,5.548946 52.331344,5.548944 52.331344,5.548942 52.331343,5.548942 52.331343,5.548594 52.331268,5.548606 52.331243,5.546893 52.330908,5.546878 52.330936,5.546748 52.330913,5.546762 52.330883,5.546269 52.330787,5.546251 52.330823,5.54617 52.330807,5.546127 52.330891,5.546118 52.33091,5.546034 52.330893,5.546087 52.330791,5.546772 52.329495,5.547607 52.329659,5.547631 52.329661,5.547753 52.329685,5.548002 52.329732,5.548469 52.329821,5.548696 52.329869,5.548934 52.329912,5.549028 52.329929,5.549056 52.329933,5.549083 52.329939,5.54912 52.329951,5.549144 52.32996,5.549162 52.329969,5.549216 52.330003,5.549245 52.330026,5.549268 52.330048,5.549316 52.330121,5.549358 52.330183,5.54947 52.330351,5.549608 52.330557,5.549751 52.33077,5.549802 52.330846,5.549806 52.330852,5.549811 52.330865,5.549814 52.330877,5.549814 52.33089,5.549813 52.330903,5.54981 52.330918,5.549804 52.330935,5.549803 52.330939,5.549773 52.331009,5.549744 52.331078,5.549737 52.33109,5.549733 52.331102,5.549731 52.331115,5.54973 52.331128,5.549732 52.331141,5.549734 52.331147,5.549737 52.331153,5.549741 52.331161,5.549747 52.331192,5.549763 52.331216,5.549842 52.331335,5.549921 52.331454,5.549921 52.331454,5.549922 52.331455,5.549923 52.331455,5.549924 52.331456,5.549925 52.331457,5.549925 52.331458,5.549926 52.331459,5.549927 52.33146,5.549928 52.331461,5.549929 52.331462,5.54993 52.331463,5.549931 52.331463,5.549932 52.331464,5.549933 52.331465,5.549934 52.331466,5.549935 52.331467,5.549936 52.331468,5.549937 52.331469,5.549938 52.331469,5.549939 52.33147,5.54994 52.331471,5.549941 52.331472,5.549942 52.331472,5.549944 52.331473,5.549945 52.331474,5.549946 52.331475,5.549947 52.331476,5.549948 52.331476,5.54995 52.331477,5.549951 52.331478,5.549952 52.331478,5.549953 52.331479,5.549955 52.33148,5.549956 52.331481,5.549957 52.331481,5.549958 52.331482,5.54996 52.331483,5.549961 52.331483,5.549962 52.331484,5.549964 52.331484,5.549965 52.331485,5.549966 52.331486,5.549968 52.331486,5.549969 52.331487,5.549971 52.331487,5.549972 52.331488,5.549974 52.331489,5.549975 52.331489,5.549976 52.33149,5.549978 52.33149,5.549979 52.331491,5.549981 52.331491,5.549982 52.331492,5.549984 52.331492,5.549985 52.331493,5.549987 52.331493,5.549988 52.331494,5.54999 52.331494,5.549992 52.331494,5.549993 52.331495,5.549995 52.331495,5.549996 52.331496,5.549998 52.331496,5.549999 52.331496,5.550001 52.331497,5.550003 52.331497,5.550004 52.331497,5.550006 52.331498,5.550007 52.331498,5.550009 52.331498,5.550011 52.331499,5.550012 52.331499,5.550014 52.331499,5.550016 52.3315,5.550017 52.3315,5.550019 52.3315,5.550021 52.3315,5.550022 52.3315,5.550024 52.331501,5.550026 52.331501,5.550027 52.331501,5.550029 52.331501,5.550031 52.331501,5.550032 52.331501,5.550034 52.331502,5.550036 52.331502,5.550037 52.331502,5.550039 52.331502,5.550041 52.331502,5.550042 52.331502,5.550044 52.331502,5.550046 52.331502,5.550048 52.331502,5.550049 52.331502,5.550051 52.331502,5.550053 52.331502,5.550054 52.331502,5.550056 52.331502,5.550058 52.331502,5.550059 52.331502,5.550059 52.331502,5.550454 52.331516,5.550848 52.33153,5.550848 52.33153,5.55085 52.33153,5.550851 52.33153,5.550853 52.33153,5.550854 52.331529,5.550856 52.331529,5.550857 52.331529,5.550859 52.331529,5.55086 52.331529,5.550862 52.331529,5.550863 52.331529,5.550865 52.331529,5.550866 52.331529,5.550868 52.331529,5.550869 52.331529,5.550871 52.331528,5.550872 52.331528,5.550874 52.331528,5.550875 52.331528,5.550877 52.331528,5.550878 52.331528,5.55088 52.331528,5.550881 52.331527,5.550883 52.331527,5.550884 52.331527,5.550886 52.331527,5.550887 52.331527,5.550889 52.331527,5.55089 52.331526,5.550892 52.331526,5.550893 52.331526,5.550895 52.331526,5.550896 52.331526,5.550898 52.331525,5.550899 52.331525,5.550901 52.331525,5.550902 52.331525,5.550904 52.331524,5.550905 52.331524,5.550907 52.331524,5.550908 52.331524,5.55091 52.331523,5.550911 52.331523,5.550912 52.331523,5.550914 52.331522,5.550915 52.331522,5.550917 52.331522,5.550918 52.331521,5.55092 52.331521,5.550921 52.331521,5.550923 52.331521,5.550924 52.33152,5.550925 52.33152,5.550927 52.33152,5.550928 52.331519,5.55093 52.331519,5.550931 52.331518,5.550932 52.331518,5.550934 52.331518,5.550935 52.331517,5.550937 52.331517,5.550938 52.331517,5.550939 52.331516,5.550941 52.331516,5.550942 52.331515,5.550944 52.331515,5.550945 52.331515,5.550946 52.331514,5.550948 52.331514,5.550949 52.331513,5.55095 52.331513,5.550952 52.331512,5.550953 52.331512,5.550954 52.331512,5.550956 52.331511,5.550957 52.331511,5.550958 52.33151,5.55096 52.33151,5.550961 52.331509,5.550962 52.331509,5.550964 52.331508,5.550965 52.331508,5.550966 52.331507,5.550968 52.331507,5.550969 52.331506,5.55097 52.331506,5.550971 52.331505,5.550973 52.331505,5.550974 52.331504,5.550975 52.331504,5.550976 52.331503,5.550978 52.331503,5.550979 52.331502,5.55098 52.331501,5.550981 52.331501,5.550983 52.3315,5.550984 52.3315,5.550985 52.331499,5.550986 52.331499,5.550987 52.331498,5.550987 52.331498,5.550989 52.331497,5.550992 52.331497,5.550994 52.331496,5.550996 52.331496,5.550998 52.331495,5.551 52.331494,5.551002 52.331494,5.551004 52.331493,5.551006 52.331492,5.551008 52.331492,5.55101 52.331491,5.551012 52.33149,5.551014 52.33149,5.551017 52.331489,5.551019 52.331488,5.551021 52.331488,5.551023 52.331487,5.551025 52.331486,5.551027 52.331485,5.551029 52.331485,5.551031 52.331484,5.551032 52.331483,5.551034 52.331482,5.551036 52.331482,5.551038 52.331481,5.55104 52.33148,5.551042 52.331479,5.551044 52.331478,5.551046 52.331478,5.551048 52.331477,5.55105 52.331476,5.551052 52.331475,5.551053 52.331474,5.551055 52.331473,5.551057 52.331472,5.551059 52.331472,5.551061 52.331471,5.551063 52.33147,5.551064 52.331469,5.551066 52.331468,5.551068 52.331467,5.55107 52.331466,5.551071 52.331465,5.551073 52.331464,5.551075 52.331463,5.551077 52.331462,5.551078 52.331461,5.55108 52.33146,5.551082 52.331459,5.551083 52.331458,5.551085 52.331457,5.551087 52.331456,5.551088 52.331455,5.55109 52.331454,5.551092 52.331453,5.551093 52.331452,5.551095 52.331451,5.551096 52.33145,5.551098 52.331449,5.551099 52.331448,5.551101 52.331447,5.551102 52.331446,5.551104 52.331445,5.551105 52.331444,5.551107 52.331443,5.551108 52.331441,5.55111 52.33144,5.551111 52.331439,5.551113 52.331438,5.551114 52.331437,5.551116 52.331436,5.551117 52.331435,5.551118 52.331434,5.55112 52.331432,5.551121 52.331431,5.551122 52.33143,5.551124 52.331429,5.551125 52.331428,5.551126 52.331426,5.551128 52.331425,5.551129 52.331424,5.55113 52.331423,5.551131 52.331422,5.551133 52.33142,5.551134 52.331419,5.551135 52.331418,5.551136 52.331417,5.551137 52.331416,5.551138 52.331414,5.55114 52.331413,5.551141 52.331412,5.551142 52.331411,5.551143 52.331409,5.551144 52.331408,5.551145 52.331407,5.551146 52.331405,5.551147 52.331404,5.551148 52.331403,5.551149 52.331402,5.551149 52.331402,5.551151 52.331399,5.551151 52.331399,5.551152 52.331397,5.551153 52.331395,5.551154 52.331393,5.551155 52.331392,5.551156 52.33139,5.551157 52.331388,5.551158 52.331386,5.551159 52.331384,5.55116 52.331382,5.551161 52.331381,5.551162 52.331379,5.551163 52.331377,5.551163 52.331375,5.551164 52.331373,5.551165 52.331371,5.551166 52.331369,5.551167 52.331367,5.551167 52.331366,5.551168 52.331364,5.551169 52.331362,5.551169 52.33136,5.55117 52.331358,5.551171 52.331356,5.551171 52.331354,5.551172 52.331352,5.551172 52.33135,5.551173 52.331349,5.551173 52.331347,5.551174 52.331345,5.551174 52.331343,5.551175 52.331341,5.551175 52.331339,5.551175 52.331337,5.551176 52.331335,5.551176 52.331333,5.551176 52.331331,5.551176 52.331329,5.551177 52.331327,5.551177 52.331325,5.551177 52.331324,5.551177 52.331322,5.551177 52.33132,5.551177 52.331318,5.551177 52.331316,5.551177 52.331314,5.551177 52.331312,5.551177 52.33131,5.551177 52.331308,5.551177 52.331306,5.551177 52.331304,5.551177 52.331302,5.551177 52.3313,5.551177 52.331298,5.551177 52.331297,5.551176 52.331295,5.551176 52.331293,5.551176 52.331291,5.551176 52.331289,5.551175 52.331287,5.551175 52.331285,5.551175 52.331283,5.551174 52.331281,5.551174 52.331279,5.551173 52.331277,5.551173 52.331275,5.551172 52.331274,5.551172 52.331272,5.551171 52.33127,5.551171 52.331268,5.55117 52.331266,5.551169 52.331264,5.551169 52.331262,5.551168 52.33126,5.551167 52.331258,5.551167 52.331256,5.551166 52.331255,5.551165 52.331253,5.551164 52.331251,5.551164 52.331249,5.551163 52.331247,5.551162 52.331245,5.551161 52.331243,5.55116 52.331242,5.551159 52.33124,5.551158 52.331238,5.551157 52.331236,5.551156 52.331234,5.551155 52.331232,5.551154 52.331231,5.551153 52.331229,5.551152 52.331227,5.551151 52.331225,5.551149 52.331223,5.551148 52.331222,5.551147 52.33122,5.551146 52.331218,5.551145 52.331216,5.551143 52.331215,5.551142 52.331213,5.551142 52.331213,5.551121 52.331189,5.551069 52.33115,5.551018 52.331112,5.550977 52.331049,5.550854 52.330864,5.550773 52.33074,5.550681 52.3306,5.550596 52.330471,5.550489 52.330316,5.550328 52.330064,5.550187 52.32985,5.549834 52.329315,5.549735 52.329164,5.549676 52.32909,5.549617 52.329015,5.549616 52.329002,5.549619 52.328993,5.549627 52.328982,5.549639 52.328974,5.549651 52.328968,5.549679 52.328958,5.549701 52.328954,5.549716 52.32895,5.550024 52.328869,5.550351 52.328782,5.550356 52.328781,5.550375 52.328772,5.550391 52.328761,5.550403 52.328748,5.550407 52.328741,5.550414 52.32872,5.550414 52.328715,5.550412 52.328704,5.550407 52.328694,5.550392 52.32868,5.550379 52.328673,5.550346 52.328662,5.550319 52.328657,5.550292 52.328656,5.550279 52.328657,5.55026 52.328659,5.550127 52.328691,5.550048 52.328659,5.54972 52.32871,5.549524 52.328705,5.549513 52.328713,5.5495 52.328719,5.549486 52.328723,5.549477 52.328724,5.549408 52.32871,5.549316 52.328681,5.549223 52.328652,5.549136 52.328617,5.549049 52.328582,5.548989 52.328551,5.548943 52.328525,5.548858 52.328469,5.548784 52.328407,5.548728 52.32835,5.548674 52.328288,5.548619 52.328227,5.54852 52.328077,5.548486 52.328019,5.54843 52.327911,5.548405 52.327798,5.548404 52.327686,5.548418 52.327591,5.548428 52.327544,5.548447 52.327497,5.548466 52.327451,5.548493 52.3274,5.548549 52.327334,5.548577 52.327288,5.548589 52.327264,5.548604 52.327216,5.548609 52.327192,5.548651 52.327097,5.548693 52.327002,5.548847 52.326806,5.549001 52.326609,5.549146 52.326461,5.549291 52.326313,5.549347 52.326299,5.549345 52.326184,5.549344 52.326069,5.549223 52.325961,5.549182 52.325895,5.549142 52.325829,5.549139 52.325781,5.549145 52.325732,5.549159 52.325685,5.549219 52.325555,5.549278 52.325426,5.549401 52.32526,5.549524 52.325094,5.549622 52.324988,5.549719 52.324881,5.550103 52.324535,5.550511 52.324165,5.550391 52.324048,5.550272 52.32393,5.550262 52.323889,5.55026 52.323848,5.550264 52.323806,5.550276 52.323766,5.550294 52.323726,5.550385 52.323582,5.550476 52.323439,5.550601 52.323319,5.550746 52.323208,5.550909 52.323107,5.550967 52.323075,5.55111 52.323022,5.55111 52.323061,5.551362 52.323106,5.551465 52.323087,5.55154 52.323059,5.551629 52.322991,5.551718 52.322924,5.551838 52.322805,5.551873 52.322671,5.551628 52.322562,5.551628 52.322562,5.551628 52.322557,5.551629 52.322553,5.551629 52.322548,5.551629 52.322544,5.55163 52.322539,5.551631 52.322535,5.551631 52.32253,5.551632 52.322526,5.551633 52.322522,5.551634 52.322517,5.551635 52.322513,5.551637 52.322508,5.551638 52.322504,5.551639 52.3225,5.551641 52.322495,5.551642 52.322491,5.551644 52.322487,5.551645 52.322482,5.551647 52.322478,5.551649 52.322474,5.551651 52.322469,5.551653 52.322465,5.551655 52.322461,5.551658 52.322456,5.55166 52.322452,5.551662 52.322448,5.551665 52.322444,5.551667 52.32244,5.55167 52.322435,5.551673 52.322431,5.551676 52.322427,5.551678 52.322423,5.551681 52.322419,5.551684 52.322415,5.551688 52.322411,5.551691 52.322407,5.551694 52.322403,5.551697 52.322399,5.551701 52.322395,5.551704 52.322391,5.551708 52.322387,5.551712 52.322383,5.551715 52.32238,5.551719 52.322376,5.551723 52.322372,5.551727 52.322368,5.551731 52.322365,5.551735 52.322361,5.55174 52.322357,5.551744 52.322354,5.551748 52.32235,5.551753 52.322347,5.551757 52.322343,5.551762 52.32234,5.551766 52.322336,5.551771 52.322333,5.551776 52.322329,5.551781 52.322326,5.551786 52.322323,5.55179 52.322319,5.551796 52.322316,5.551801 52.322313,5.551806 52.32231,5.551811 52.322307,5.551816 52.322304,5.551822 52.322301,5.551827 52.322298,5.551832 52.322295,5.551838 52.322292,5.551844 52.322289,5.551849 52.322286,5.551855 52.322283,5.551861 52.322281,5.551866 52.322278,5.551872 52.322275,5.551878 52.322273,5.551884 52.32227,5.55189 52.322268,5.551896 52.322265,5.551902 52.322263,5.551908 52.32226,5.551915 52.322258,5.551921 52.322256,5.551927 52.322253,5.551933 52.322251,5.55194 52.322249,5.551946 52.322247,5.551953 52.322245,5.551959 52.322243,5.551966 52.322241,5.551972 52.322239,5.551979 52.322237,5.551986 52.322235,5.551992 52.322233,5.551999 52.322232,5.552006 52.32223,5.552013 52.322228,5.552019 52.322227,5.552026 52.322225,5.552026 52.322225,5.55232 52.322204,5.552406 52.32219,5.552495 52.322166,5.552538 52.322152,5.55258 52.322137,5.55266 52.322103,5.552767 52.322054,5.552837 52.322021,5.552906 52.321989,5.55292 52.321953,5.552858 52.321949,5.552763 52.32199,5.552691 52.322022,5.552534 52.322092,5.552477 52.322112,5.552418 52.322129,5.552356 52.322142,5.552323 52.322147,5.552263 52.322152,5.552202 52.322154,5.552116 52.322151,5.552048 52.322146,5.551982 52.322136,5.551917 52.322122,5.551856 52.322104,5.551792 52.32208,5.551743 52.322057,5.551698 52.322017,5.55167 52.321991,5.551623 52.321934,5.551586 52.321875,5.551559 52.321814,5.55155 52.321762,5.551541 52.321709,5.551539 52.321643,5.551538 52.321577,5.551544 52.321552,5.551557 52.321522,5.551578 52.321489,5.551604 52.321458,5.55163 52.321433,5.551663 52.321407,5.55171 52.321378,5.551755 52.321355,5.5518 52.321332,5.551868 52.321307,5.551936 52.321282,5.551973 52.321293,5.552162 52.321222,5.552156 52.321196,5.552415 52.321102,5.552708 52.320989,5.552826 52.320921,5.55283 52.320917,5.552835 52.320912,5.552837 52.320906,5.552837 52.3209,5.552836 52.320894,5.552832 52.320888,5.552826 52.320883,5.552819 52.320879,5.552811 52.320876,5.552802 52.320874,5.552789 52.320873,5.55278 52.320873,5.552768 52.320876,5.55276 52.32088,5.552732 52.320897,5.552715 52.320906,5.552702 52.320912,5.552688 52.320918,5.552659 52.320928,5.552629 52.320937,5.552512 52.320911,5.552482 52.320905,5.552485 52.320339,5.552486 52.320127,5.552486 52.320127,5.552486 52.320126,5.552487 52.320125,5.552488 52.320124,5.552488 52.320123,5.552489 52.320122,5.55249 52.320122,5.55249 52.320121,5.552491 52.32012,5.552492 52.320119,5.552492 52.320118,5.552493 52.320117,5.552494 52.320116,5.552494 52.320115,5.552495 52.320114,5.552496 52.320114,5.552496 52.320113,5.552497 52.320112,5.552498 52.320111,5.552499 52.32011,5.552499 52.320109,5.5525 52.320108,5.552501 52.320107,5.552501 52.320106,5.552502 52.320106,5.552503 52.320105,5.552503 52.320104,5.552504 52.320103,5.552505 52.320102,5.552506 52.320101,5.552506 52.3201,5.552507 52.320099,5.552508 52.320098,5.552508 52.320098,5.552509 52.320097,5.55251 52.320096,5.55251 52.320095,5.552511 52.320094,5.552512 52.320093,5.552513 52.320092,5.552513 52.320091,5.552514 52.32009,5.552515 52.32009,5.552515 52.320089,5.552516 52.320088,5.552517 52.320087,5.552518 52.320086,5.552518 52.320085,5.552519 52.320084,5.55252 52.320083,5.55252 52.320083,5.552521 52.320082,5.552522 52.320081,5.552523 52.32008,5.552523 52.320079,5.552524 52.320078,5.552525 52.320077,5.552526 52.320076,5.552526 52.320075,5.552527 52.320075,5.552528 52.320074,5.552528 52.320073,5.552529 52.320072,5.55253 52.320071,5.552531 52.32007,5.552531 52.320069,5.552532 52.320068,5.552533 52.320068,5.552534 52.320067,5.552534 52.320066,5.552535 52.320065,5.552536 52.320064,5.552537 52.320063,5.552537 52.320062,5.552538 52.320061,5.552539 52.320061,5.552539 52.32006,5.55254 52.320059,5.552541 52.320058,5.552542 52.320057,5.552542 52.320056,5.552543 52.320055,5.552544 52.320054,5.552545 52.320054,5.552545 52.320053,5.552546 52.320052,5.552547 52.320051,5.552548 52.32005,5.552548 52.320049,5.552549 52.320048,5.55255 52.320047,5.552551 52.320047,5.552551 52.320046,5.552552 52.320045,5.552553 52.320044,5.552554 52.320043,5.552555 52.320042,5.552555 52.320041,5.552556 52.320041,5.552557 52.32004,5.552557 52.32004,5.552561 52.320035,5.552565 52.32003,5.552569 52.320025,5.552573 52.32002,5.552577 52.320015,5.552581 52.32001,5.552585 52.320005,5.552589 52.32,5.552593 52.319995,5.552597 52.31999,5.552602 52.319986,5.552606 52.319981,5.55261 52.319976,5.552615 52.319971,5.552619 52.319966,5.552623 52.319962,5.552628 52.319957,5.552632 52.319952,5.552637 52.319947,5.552641 52.319942,5.552646 52.319938,5.552651 52.319933,5.552655 52.319928,5.55266 52.319924,5.552665 52.319919,5.552669 52.319914,5.552674 52.31991,5.552679 52.319905,5.552684 52.3199,5.552689 52.319896,5.552694 52.319891,5.552698 52.319886,5.552703 52.319882,5.552708 52.319877,5.552713 52.319873,5.552719 52.319868,5.552724 52.319864,5.552729 52.319859,5.552734 52.319855,5.552739 52.31985,5.552744 52.319846,5.55275 52.319841,5.552755 52.319837,5.55276 52.319832,5.552766 52.319828,5.552771 52.319823,5.552776 52.319819,5.552782 52.319815,5.552787 52.31981,5.552793 52.319806,5.552798 52.319802,5.552804 52.319797,5.55281 52.319793,5.552815 52.319789,5.552821 52.319784,5.552827 52.31978,5.552832 52.319776,5.552838 52.319772,5.552844 52.319767,5.55285 52.319763,5.552855 52.319759,5.552861 52.319755,5.552867 52.319751,5.552873 52.319746,5.552879 52.319742,5.552885 52.319738,5.552891 52.319734,5.552897 52.31973,5.552903 52.319726,5.552909 52.319722,5.552915 52.319718,5.552922 52.319714,5.552928 52.31971,5.552934 52.319706,5.55294 52.319702,5.552946 52.319698,5.552953 52.319694,5.552959 52.31969,5.552965 52.319686,5.552972 52.319682,5.552978 52.319679,5.552985 52.319675,5.552991 52.319671,5.552998 52.319667,5.553004 52.319663,5.553011 52.319659,5.553017 52.319656,5.553024 52.319652,5.55303 52.319648,5.553037 52.319645,5.553044 52.319641,5.55305 52.319637,5.553057 52.319633,5.553064 52.31963,5.553071 52.319626,5.553077 52.319623,5.553084 52.319619,5.553091 52.319615,5.553098 52.319612,5.553098 52.319612,5.553099 52.319611,5.553101 52.31961,5.553102 52.319609,5.553104 52.319609,5.553105 52.319608,5.553107 52.319607,5.553108 52.319606,5.553109 52.319605,5.553111 52.319605,5.553112 52.319604,5.553114 52.319603,5.553115 52.319602,5.553116 52.319602,5.553118 52.319601,5.553119 52.3196,5.553121 52.319599,5.553122 52.319598,5.553124 52.319598,5.553125 52.319597,5.553127 52.319596,5.553128 52.319595,5.553129 52.319594,5.553131 52.319594,5.553132 52.319593,5.553134 52.319592,5.553135 52.319591,5.553137 52.31959,5.553138 52.31959,5.553139 52.319589,5.553141 52.319588,5.553142 52.319587,5.553144 52.319587,5.553145 52.319586,5.553147 52.319585,5.553148 52.319584,5.55315 52.319583,5.553151 52.319583,5.553153 52.319582,5.553154 52.319581,5.553155 52.31958,5.553157 52.31958,5.553158 52.319579,5.55316 52.319578,5.553161 52.319577,5.553163 52.319576,5.553164 52.319576,5.553166 52.319575,5.553167 52.319574,5.553169 52.319573,5.55317 52.319573,5.553171 52.319572,5.553173 52.319571,5.553174 52.31957,5.553176 52.319569,5.553177 52.319569,5.553179 52.319568,5.55318 52.319567,5.553182 52.319566,5.553183 52.319566,5.553185 52.319565,5.553186 52.319564,5.553188 52.319563,5.553189 52.319563,5.553191 52.319562,5.553192 52.319561,5.553194 52.31956,5.553195 52.31956,5.553197 52.319559,5.553198 52.319558,5.553199 52.319557,5.553201 52.319557,5.553202 52.319556,5.553204 52.319555,5.553205 52.319554,5.553207 52.319554,5.553208 52.319553,5.55321 52.319552,5.553211 52.319551,5.553213 52.319551,5.553214 52.31955,5.553216 52.319549,5.553217 52.319548,5.553219 52.319548,5.55322 52.319547,5.553222 52.319546,5.553223 52.319545,5.553225 52.319545,5.553226 52.319544,5.553228 52.319543,5.553229 52.319542,5.553231 52.319542,5.553232 52.319541,5.553234 52.31954,5.553235 52.319539,5.553237 52.319539,5.553238 52.319538,5.55324 52.319537,5.553241 52.319536,5.553243 52.319536,5.553243 52.319536,5.553243 52.319536,5.553243 52.319536,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553245 52.319535,5.553245 52.319535,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553248 52.319533,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.31953,5.55325 52.31953,5.55325 52.31953,5.55325 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.319529,5.553252 52.319528,5.553252 52.319528,5.553252 52.319527,5.553252 52.319527,5.553253 52.319526,5.553253 52.319526,5.553253 52.319525,5.553253 52.319525,5.553254 52.319524,5.553254 52.319524,5.553254 52.319523,5.553254 52.319522,5.553255 52.319522,5.553255 52.319521,5.553255 52.319521,5.553255 52.31952,5.553255 52.31952,5.553255 52.319519,5.553256 52.319519,5.553256 52.319518,5.553256 52.319517,5.553256 52.319517,5.553256 52.319516,5.553256 52.319516,5.553256 52.319515,5.553256 52.319515,5.553257 52.319514,5.553257 52.319513,5.553257 52.319513,5.553257 52.319512,5.553257 52.319512,5.553257 52.319511,5.553257 52.319511,5.553257 52.31951,5.553257 52.319509,5.553257 52.319509,5.553257 52.319508,5.553257 52.319508,5.553257 52.319507,5.553257 52.319507,5.553257 52.319506,5.553257 52.319505,5.553257 52.319505,5.553257 52.319504,5.553257 52.319504,5.553257 52.319503,5.553256 52.319503,5.553256 52.319502,5.553256 52.319501,5.553256 52.319501,5.553256 52.3195,5.553256 52.3195,5.553256 52.319499,5.553256 52.319499,5.553255 52.319498,5.553255 52.319498,5.553255 52.319497,5.553255 52.319496,5.553255 52.319496,5.553255 52.319495,5.553254 52.319495,5.553254 52.319494,5.553254 52.319494,5.553254 52.319493,5.553253 52.319493,5.553253 52.319492,5.553253 52.319491,5.553253 52.319491,5.553252 52.31949,5.553252 52.31949,5.553252 52.319489,5.553252 52.319489,5.553251 52.319488,5.553251 52.319488,5.553251 52.319487,5.55325 52.319487,5.55325 52.319486,5.55325 52.319486,5.553249 52.319485,5.553249 52.319484,5.553248 52.319484,5.553248 52.319483,5.553248 52.319483,5.553247 52.319482,5.553247 52.319482,5.553247 52.319481,5.553246 52.319481,5.553246 52.31948,5.553245 52.31948,5.553245 52.319479,5.553244 52.319479,5.553244 52.319478,5.553243 52.319478,5.553243 52.319477,5.553243 52.319477,5.553242 52.319476,5.553242 52.319476,5.553242 52.319476,5.553241 52.319475,5.55324 52.319475,5.553239 52.319474,5.553238 52.319474,5.553237 52.319474,5.553237 52.319473,5.553236 52.319473,5.553235 52.319472,5.553234 52.319472,5.553233 52.319471,5.553232 52.319471,5.553231 52.319471,5.55323 52.31947,5.553229 52.31947,5.553229 52.319469,5.553228 52.319469,5.553227 52.319469,5.553226 52.319468,5.553225 52.319468,5.553224 52.319468,5.553223 52.319467,5.553222 52.319467,5.553221 52.319467,5.55322 52.319467,5.553219 52.319466,5.553218 52.319466,5.553217 52.319466,5.553216 52.319465,5.553215 52.319465,5.553214 52.319465,5.553212 52.319465,5.553211 52.319465,5.55321 52.319464,5.553209 52.319464,5.553208 52.319464,5.553207 52.319464,5.553206 52.319464,5.553205 52.319463,5.553204 52.319463,5.553203 52.319463,5.553202 52.319463,5.553201 52.319463,5.553199 52.319463,5.553198 52.319463,5.553197 52.319463,5.553196 52.319463,5.553195 52.319463,5.553194 52.319462,5.553193 52.319462,5.553192 52.319462,5.553191 52.319462,5.55319 52.319462,5.553188 52.319462,5.553187 52.319462,5.553186 52.319462,5.553185 52.319462,5.553184 52.319462,5.553183 52.319463,5.553182 52.319463,5.553181 52.319463,5.553179 52.319463,5.553178 52.319463,5.553177 52.319463,5.553176 52.319463,5.553175 52.319463,5.553174 52.319463,5.553173 52.319463,5.553172 52.319464,5.553171 52.319464,5.55317 52.319464,5.553169 52.319464,5.553168 52.319464,5.553166 52.319465,5.553165 52.319465,5.553164 52.319465,5.553163 52.319465,5.553162 52.319465,5.553161 52.319466,5.55316 52.319466,5.553159 52.319466,5.553158 52.319466,5.553157 52.319467,5.553156 52.319467,5.553155 52.319467,5.553154 52.319468,5.553153 52.319468,5.553152 52.319468,5.553151 52.319469,5.55315 52.319469,5.553149 52.319469,5.553148 52.31947,5.553147 52.31947,5.553147 52.319471,5.553146 52.319471,5.553145 52.319471,5.553144 52.319472,5.553143 52.319472,5.553142 52.319473,5.553141 52.319473,5.553141 52.319473,5.553115 52.319479,5.553003 52.319513,5.553003 52.319513,5.552999 52.319514,5.552994 52.319515,5.55299 52.319517,5.552986 52.319518,5.552981 52.319519,5.552977 52.319521,5.552973 52.319522,5.552968 52.319523,5.552964 52.319525,5.552959 52.319526,5.552955 52.319527,5.552951 52.319529,5.552946 52.31953,5.552942 52.319531,5.552938 52.319532,5.552933 52.319534,5.552929 52.319535,5.552924 52.319536,5.55292 52.319537,5.552915 52.319539,5.552911 52.31954,5.552907 52.319541,5.552902 52.319542,5.552898 52.319544,5.552893 52.319545,5.552889 52.319546,5.552884 52.319547,5.55288 52.319548,5.552875 52.31955,5.552871 52.319551,5.552867 52.319552,5.552862 52.319553,5.552858 52.319554,5.552853 52.319556,5.552849 52.319557,5.552844 52.319558,5.55284 52.319559,5.552835 52.31956,5.552831 52.319561,5.552826 52.319563,5.552822 52.319564,5.552817 52.319565,5.552813 52.319566,5.552808 52.319567,5.552804 52.319568,5.552799 52.319569,5.552795 52.31957,5.55279 52.319571,5.552786 52.319573,5.552781 52.319574,5.552776 52.319575,5.552772 52.319576,5.552767 52.319577,5.552763 52.319578,5.552758 52.319579,5.552754 52.31958,5.552749 52.319581,5.552745 52.319582,5.55274 52.319583,5.552735 52.319584,5.552731 52.319585,5.552726 52.319586,5.552722 52.319587,5.552717 52.319588,5.552712 52.319589,5.552708 52.31959,5.552703 52.319591,5.552699 52.319592,5.552694 52.319593,5.552689 52.319594,5.552685 52.319595,5.55268 52.319596,5.552676 52.319597,5.552671 52.319598,5.552666 52.319599,5.552662 52.3196,5.552657 52.319601,5.552652 52.319602,5.552648 52.319603,5.552643 52.319603,5.552639 52.319604,5.552634 52.319605,5.552629 52.319606,5.552625 52.319607,5.55262 52.319608,5.552615 52.319609,5.552611 52.31961,5.552606 52.319611,5.552601 52.319611,5.552597 52.319612,5.552592 52.319613,5.552587 52.319614,5.552583 52.319615,5.552578 52.319616,5.552573 52.319616,5.552569 52.319617,5.552564 52.319618,5.552559 52.319619,5.552555 52.31962,5.552555 52.31962,5.552417 52.319654,5.552211 52.319577,5.551501 52.319437,5.55097 52.319276,5.550949 52.31927,5.550905 52.319252,5.550864 52.31923,5.550841 52.319213,5.550812 52.319185,5.550804 52.319176,5.549948 52.3176,5.549093 52.316023,5.54884 52.315529,5.548588 52.315035,5.548557 52.314934,5.548526 52.314833,5.54854 52.31478,5.548554 52.314727,5.548476 52.314532,5.548397 52.314336,5.548588 52.314184,5.548715 52.314026,5.548841 52.313867,5.549277 52.314803,5.549982 52.316239,5.551257 52.318601,5.553439 52.319032,5.553603 52.319077,5.553746 52.319144,5.553862 52.319228,5.553945 52.319326,5.55399 52.319433,5.553996 52.319543,5.553668 52.322007,5.553636 52.322109,5.553568 52.322205,5.553468 52.322289,5.553341 52.322358,5.55285 52.322571,5.552293 52.331544,5.552901 52.334058,5.552904 52.334087,5.552903 52.334112,5.552897 52.334137,5.552885 52.334165,5.552868 52.334184,5.552846 52.334205,5.55282 52.334224,5.552791 52.334242,5.552759 52.334257,5.552725 52.334271,5.552691 52.334281,5.547677 52.335739,5.544809 52.335201,5.544964 52.335125,5.545017 52.335098,5.545053 52.335083,5.545072 52.335077,5.545091 52.335071,5.545119 52.335064,5.545151 52.33506,5.545184 52.335057,5.545217 52.335057,5.545245 52.335059,5.545282 52.335064,5.545491 52.335105,5.545985 52.335202,5.546374 52.335278,5.546729 52.335348,5.547456 52.335491,5.547739 52.335547,5.547768 52.335552,5.547785 52.335556,5.547805 52.335558,5.547824 52.335561,5.547842 52.335562,5.547873 52.335564,5.547888 52.335564,5.547917 52.335564,5.547931 52.335562,5.547961 52.335559,5.548018 52.335545,5.548074 52.335531,5.548137 52.335513,5.548551 52.335394,5.548575 52.335428,5.550617 52.334835,5.552674 52.334236,5.552674 52.334236,5.552677 52.334236,5.55268 52.334235,5.552683 52.334234,5.552686 52.334233,5.55269 52.334232,5.552693 52.334231,5.552696 52.33423,5.552699 52.334229,5.552702 52.334227,5.552705 52.334226,5.552708 52.334225,5.552711 52.334224,5.552713 52.334223,5.552716 52.334222,5.552719 52.33422,5.552722 52.334219,5.552725 52.334218,5.552728 52.334216,5.55273 52.334215,5.552733 52.334214,5.552736 52.334212,5.552738 52.334211,5.552741 52.33421,5.552744 52.334208,5.552746 52.334207,5.552749 52.334205,5.552751 52.334204,5.552754 52.334202,5.552756 52.334201,5.552759 52.334199,5.552761 52.334198,5.552763 52.334196,5.552766 52.334194,5.552768 52.334193,5.55277 52.334191,5.552772 52.334189,5.552774 52.334188,5.552777 52.334186,5.552779 52.334184,5.552781 52.334183,5.552783 52.334181,5.552785 52.334179,5.552787 52.334177,5.552789 52.334176,5.55279 52.334174,5.552792 52.334172,5.552794 52.33417,5.552796 52.334168,5.552797 52.334166,5.552799 52.334164,5.552801 52.334163,5.552802 52.334161,5.552804 52.334159,5.552805 52.334157,5.552807 52.334155,5.552808 52.334153,5.55281 52.334151,5.552811 52.334149,5.552812 52.334147,5.552814 52.334145,5.552815 52.334143,5.552816 52.334141,5.552817 52.334139,5.552818 52.334137,5.552819 52.334135,5.55282 52.334133,5.552821 52.334131,5.552822 52.334129,5.552823 52.334127,5.552824 52.334124,5.552825 52.334122,5.552825 52.33412,5.552826 52.334118,5.552827 52.334116,5.552827 52.334114,5.552828 52.334112,5.552828 52.33411,5.552829 52.334108,5.552829 52.334105,5.552829 52.334103,5.55283 52.334101,5.55283 52.334099,5.55283 52.334097,5.55283 52.334095,5.552831 52.334093,5.552831 52.334091,5.552831 52.334088,5.552831 52.334086,5.552831 52.334084,5.552831 52.334082,5.552831 52.33408,5.55283 52.334078,5.55283 52.334076,5.55283 52.334073,5.55283 52.334071,5.552829 52.334069,5.552829 52.334067,5.552828 52.334065,5.552828 52.334063,5.552828 52.334063,5.552554 52.332932,5.552279 52.331791,5.552276 52.331781,5.552271 52.331771,5.552264 52.331761,5.552255 52.331751,5.552245 52.331742,5.552233 52.331734,5.55222 52.331727,5.552203 52.331719,5.552185 52.331717,5.552169 52.331717,5.552152 52.331718,5.55213 52.331721,5.55211 52.331726,5.552085 52.331735,5.552068 52.331744,5.552045 52.331763,5.552135 52.332117,5.552226 52.332475,5.552229 52.332494,5.552228 52.332514,5.552226 52.332526,5.552224 52.332532,5.552219 52.332545,5.552213 52.332553,5.552203 52.332568,5.55219 52.332581,5.552175 52.332592,5.552158 52.332603,5.552134 52.332614,5.552079 52.332635,5.550947 52.332926,5.549816 52.333218,5.549672 52.333241,5.5498 52.333439,5.550251 52.333328,5.550701 52.333217,5.551135 52.333112,5.551568 52.333006,5.551602 52.333031,5.5519 52.333428,5.552186 52.33381,5.552186 52.33381,5.552187 52.333812,5.552189 52.333813,5.55219 52.333815,5.552192 52.333817,5.552193 52.333818,5.552195 52.33382,5.552196 52.333822,5.552197 52.333823,5.552198 52.333825,5.5522 52.333827,5.552201 52.333828,5.552202 52.33383,5.552203 52.333832,5.552204 52.333833,5.552204 52.333835,5.552205 52.333837,5.552206 52.333839,5.552207 52.33384,5.552208 52.333842,5.552208 52.333844,5.552209 52.333846,5.552209 52.333848,5.55221 52.333849,5.55221 52.333851,5.55221 52.333853,5.552211 52.333855,5.552211 52.333857,5.552211 52.333858,5.552211 52.33386,5.552211 52.333862,5.552211 52.333864,5.552211 52.333866,5.552211 52.333868,5.552211 52.333869,5.552211 52.333871,5.552211 52.333873,5.552211 52.333875,5.55221 52.333877,5.55221 52.333879,5.552209 52.33388,5.552209 52.333882,5.552208 52.333884,5.552208 52.333886,5.552207 52.333888,5.552206 52.333889,5.552205 52.333891,5.552205 52.333893,5.552204 52.333895,5.552203 52.333896,5.552202 52.333898,5.552201 52.3339,5.5522 52.333901,5.552199 52.333903,5.552197 52.333905,5.552196 52.333906,5.552195 52.333908,5.552194 52.33391,5.552192 52.333911,5.552191 52.333913,5.552189 52.333915,5.552188 52.333916,5.552186 52.333918,5.552185 52.333919,5.552183 52.333921,5.552181 52.333922,5.552179 52.333924,5.552178 52.333925,5.552176 52.333927,5.552174 52.333928,5.552172 52.333929,5.55217 52.333931,5.552168 52.333932,5.552166 52.333933,5.552164 52.333935,5.552162 52.333936,5.55216 52.333937,5.552157 52.333939,5.552155 52.33394,5.552153 52.333941,5.552151 52.333942,5.552148 52.333943,5.552146 52.333944,5.552143 52.333945,5.552141 52.333946,5.552139 52.333948,5.552136 52.333949,5.552134 52.333949,5.552131 52.33395,5.552128 52.333951,5.552126 52.333952,5.552123 52.333953,5.55212 52.333954,5.552118 52.333955,5.552115 52.333955,5.552112 52.333956,5.55211 52.333957,5.552107 52.333958,5.552104 52.333958,5.552101 52.333959,5.552101 52.333959,5.551999 52.333988,5.551978 52.333993,5.551814 52.334041,5.55165 52.334089,5.551629 52.334092,5.551442 52.334145,5.551262 52.334196,5.551043 52.334259,5.550784 52.334334,5.55072 52.334249,5.550389 52.334345,5.550438 52.334408,5.550454 52.334427,5.549921 52.334579,5.549387 52.33473,5.549387 52.33473,5.549385 52.334731,5.549384 52.334731,5.549382 52.334731,5.54938 52.334732,5.549378 52.334732,5.549376 52.334732,5.549374 52.334732,5.549373 52.334733,5.549371 52.334733,5.549369 52.334733,5.549367 52.334733,5.549365 52.334734,5.549363 52.334734,5.549361 52.334734,5.549359 52.334734,5.549358 52.334734,5.549356 52.334734,5.549354 52.334734,5.549352 52.334735,5.54935 52.334735,5.549348 52.334735,5.549346 52.334735,5.549344 52.334735,5.549342 52.334735,5.549341 52.334735,5.549339 52.334735,5.549337 52.334735,5.549335 52.334735,5.549333 52.334735,5.549331 52.334735,5.549329 52.334735,5.549327 52.334735,5.549325 52.334734,5.549324 52.334734,5.549322 52.334734,5.54932 52.334734,5.549318 52.334734,5.549316 52.334734,5.549314 52.334733,5.549312 52.334733,5.54931 52.334733,5.549309 52.334733,5.549307 52.334733,5.549305 52.334732,5.549303 52.334732,5.549301 52.334732,5.549299 52.334731,5.549298 52.334731,5.549296 52.334731,5.549294 52.334731,5.549292 52.33473,5.54929 52.33473,5.549289 52.334729,5.549287 52.334729,5.549285 52.334729,5.549283 52.334728,5.549282 52.334728,5.54928 52.334727,5.549278 52.334727,5.549276 52.334726,5.549275 52.334726,5.549273 52.334725,5.549271 52.334725,5.549269 52.334724,5.549268 52.334724,5.549266 52.334723,5.549264 52.334723,5.549263 52.334722,5.549261 52.334722,5.54926 52.334721,5.549258 52.33472,5.549256 52.33472,5.549255 52.334719,5.549253 52.334718,5.549252 52.334718,5.54925 52.334717,5.549249 52.334716,5.549247 52.334716,5.549246 52.334715,5.549244 52.334714,5.549243 52.334714,5.549241 52.334713,5.54924 52.334712,5.549238 52.334711,5.549237 52.334711,5.549235 52.33471,5.549234 52.334709,5.549233 52.334708,5.549231 52.334707,5.54923 52.334707,5.549229 52.334706,5.549227 52.334705,5.549226 52.334704,5.549225 52.334703,5.549224 52.334702,5.549222 52.334701,5.549221 52.334701,5.54922 52.3347,5.549219 52.334699,5.549219 52.334699,5.549062 52.334493,5.548982 52.334385,5.548796 52.334144,5.548657 52.333961,5.549358 52.333757,5.549025 52.333348,5.548843 52.333378,5.548497 52.333484,5.548292 52.333548,5.548011 52.333635,5.548 52.333641,5.547992 52.333648,5.547987 52.333656,5.547984 52.333669,5.547986 52.333678,5.547988 52.333683,5.54799 52.333688,5.547995 52.333696,5.548 52.333702,5.548203 52.333971,5.548498 52.334362,5.548504 52.334375,5.548507 52.334388,5.548505 52.334396,5.548501 52.334408,5.548233 52.334922,5.548035 52.334882,5.548062 52.334831,5.548071 52.334812,5.548103 52.334751,5.548135 52.33469,5.547815 52.334256,5.547785 52.334265,5.547725 52.334253,5.547682 52.334195,5.547644 52.334143,5.547605 52.334091,5.547568 52.334163,5.547538 52.334158,5.547531 52.334172,5.547475 52.334283,5.547446 52.334291,5.547393 52.334393,5.547368 52.334388,5.547196 52.334718,5.547015 52.334683,5.547041 52.334632,5.547051 52.334613,5.547114 52.334491,5.547084 52.334449,5.546794 52.334057,5.546765 52.334066,5.546705 52.334054,5.546585 52.333892,5.546547 52.333964,5.546519 52.333959,5.546511 52.333975,5.546454 52.334084,5.546425 52.334092,5.546372 52.334194,5.546347 52.334189,5.546176 52.334519,5.545994 52.334484,5.546021 52.334432,5.546031 52.334413,5.546094 52.334292,5.545774 52.333858,5.545744 52.333866,5.545684 52.333855,5.545564 52.333693,5.545527 52.333765,5.545496 52.333759,5.545489 52.333773,5.545434 52.333885,5.545405 52.333893,5.545352 52.333995,5.545327 52.33399,5.545155 52.33432,5.544893 52.334269,5.545415 52.333259,5.545535 52.333283,5.545572 52.333214,5.545652 52.333229,5.54565 52.333234,5.545618 52.333299,5.546742 52.333519,5.547027 52.333429,5.547092 52.333406,5.547378 52.333315,5.547678 52.33322,5.547839 52.333169,5.547868 52.33316,5.548043 52.333104,5.548062 52.333098,5.548422 52.332983,5.548464 52.332968,5.548502 52.33295,5.548537 52.33293,5.548559 52.332916,5.548577 52.332896,5.548586 52.332881,5.548714 52.332638,5.548759 52.332552,5.54874 52.332551,5.548719 52.332533,5.548702 52.332518,5.548663 52.33248,5.548625 52.332443,5.548552 52.332432,5.548341 52.332483,5.548266 52.332502,5.548007 52.332563,5.547862 52.332597,5.547839 52.332592,5.547763 52.332577,5.547336 52.332494,5.546833 52.332396,5.546319 52.332296,5.546149 52.332262,5.546131 52.332299,5.546051 52.332283,5.546069 52.332247,5.5459 52.332214,5.545647 52.332165,5.545399 52.332116,5.545539 52.331845,5.545616 52.331698,5.5457 52.331715,5.545688 52.331738,5.546168 52.331832,5.546324 52.331863,5.546332 52.331847,5.546388 52.331843,5.547708 52.331785,5.54782 52.332178,5.548079 52.33228,5.548157 52.332278,5.549 52.331953,5.54905 52.331951,5.549069 52.331932,5.549178 52.331727,5.549201 52.331684,5.549201 52.331684,5.549201 52.331683,5.549202 52.331682,5.549202 52.331681,5.549203 52.33168,5.549204 52.331678,5.549204 52.331677,5.549205 52.331676,5.549205 52.331675,5.549206 52.331673,5.549206 52.331672,5.549207 52.331671,5.549207 52.33167,5.549208 52.331669,5.549208 52.331667,5.549209 52.331666,5.549209 52.331665,5.54921 52.331664,5.54921 52.331662,5.54921 52.331661,5.549211 52.33166,5.549211 52.331659,5.549211 52.331657,5.549212 52.331656,5.549212 52.331655,5.549212 52.331654,5.549213 52.331652,5.549213 52.331651,5.549213 52.33165,5.549213 52.331649,5.549214 52.331647,5.549214 52.331646,5.549214 52.331645,5.549214 52.331644,5.549214 52.331642,5.549215 52.331641,5.549215 52.33164,5.549215 52.331639,5.549215 52.331637,5.549215 52.331636,5.549215 52.331635,5.549215 52.331634,5.549215 52.331632,5.549215 52.331631,5.549215 52.33163,5.549215 52.331629,5.549215 52.331627,5.549215 52.331626,5.549215 52.331625,5.549215 52.331624,5.549215 52.331622,5.549215 52.331621,5.549215 52.33162,5.549215 52.331618,5.549214 52.331617,5.549214 52.331616,5.549214 52.331615,5.549214 52.331613,5.549214 52.331612,5.549213 52.331611,5.549213 52.33161,5.549213 52.331608,5.549213 52.331607,5.549212 52.331606,5.549212 52.331605,5.549212 52.331603,5.549211 52.331602,5.549211 52.331601,5.549211 52.3316,5.54921 52.331598,5.54921 52.331597,5.54921 52.331596,5.549209 52.331595,5.549209 52.331594,5.549208 52.331592,5.549208 52.331591,5.549207 52.33159,5.549207 52.331589,5.549206 52.331587,5.549206 52.331586,5.549205 52.331585,5.549205 52.331584,5.549204 52.331583,5.549204 52.331581,5.549203 52.33158,5.549202 52.331579,5.549202 52.331578,5.549201 52.331576,5.5492 52.331575,5.5492 52.331574,5.549199 52.331573,5.549198 52.331572,5.549198 52.331571,5.549197 52.331569,5.549196 52.331568,5.549196 52.331567,5.549195 52.331566,5.549194 52.331565,5.549193 52.331564,5.549192 52.331562)),((5.553003 52.319513,5.553115 52.319479,5.553141 52.319473,5.553141 52.319473,5.553142 52.319473,5.553143 52.319472,5.553144 52.319472,5.553145 52.319471,5.553146 52.319471,5.553147 52.319471,5.553147 52.31947,5.553148 52.31947,5.553149 52.319469,5.55315 52.319469,5.553151 52.319469,5.553152 52.319468,5.553153 52.319468,5.553154 52.319468,5.553155 52.319467,5.553156 52.319467,5.553157 52.319467,5.553158 52.319466,5.553159 52.319466,5.55316 52.319466,5.553161 52.319466,5.553162 52.319465,5.553163 52.319465,5.553164 52.319465,5.553165 52.319465,5.553166 52.319465,5.553168 52.319464,5.553169 52.319464,5.55317 52.319464,5.553171 52.319464,5.553172 52.319464,5.553173 52.319463,5.553174 52.319463,5.553175 52.319463,5.553176 52.319463,5.553177 52.319463,5.553178 52.319463,5.553179 52.319463,5.553181 52.319463,5.553182 52.319463,5.553183 52.319463,5.553184 52.319462,5.553185 52.319462,5.553186 52.319462,5.553187 52.319462,5.553188 52.319462,5.55319 52.319462,5.553191 52.319462,5.553192 52.319462,5.553193 52.319462,5.553194 52.319462,5.553195 52.319463,5.553196 52.319463,5.553197 52.319463,5.553198 52.319463,5.553199 52.319463,5.553201 52.319463,5.553202 52.319463,5.553203 52.319463,5.553204 52.319463,5.553205 52.319463,5.553206 52.319464,5.553207 52.319464,5.553208 52.319464,5.553209 52.319464,5.55321 52.319464,5.553211 52.319465,5.553212 52.319465,5.553214 52.319465,5.553215 52.319465,5.553216 52.319465,5.553217 52.319466,5.553218 52.319466,5.553219 52.319466,5.55322 52.319467,5.553221 52.319467,5.553222 52.319467,5.553223 52.319467,5.553224 52.319468,5.553225 52.319468,5.553226 52.319468,5.553227 52.319469,5.553228 52.319469,5.553229 52.319469,5.553229 52.31947,5.55323 52.31947,5.553231 52.319471,5.553232 52.319471,5.553233 52.319471,5.553234 52.319472,5.553235 52.319472,5.553236 52.319473,5.553237 52.319473,5.553237 52.319474,5.553238 52.319474,5.553239 52.319474,5.55324 52.319475,5.553241 52.319475,5.553242 52.319476,5.553242 52.319476,5.553242 52.319476,5.553243 52.319477,5.553243 52.319477,5.553243 52.319478,5.553244 52.319478,5.553244 52.319479,5.553245 52.319479,5.553245 52.31948,5.553246 52.31948,5.553246 52.319481,5.553247 52.319481,5.553247 52.319482,5.553247 52.319482,5.553248 52.319483,5.553248 52.319483,5.553248 52.319484,5.553249 52.319484,5.553249 52.319485,5.55325 52.319486,5.55325 52.319486,5.55325 52.319487,5.553251 52.319487,5.553251 52.319488,5.553251 52.319488,5.553252 52.319489,5.553252 52.319489,5.553252 52.31949,5.553252 52.31949,5.553253 52.319491,5.553253 52.319491,5.553253 52.319492,5.553253 52.319493,5.553254 52.319493,5.553254 52.319494,5.553254 52.319494,5.553254 52.319495,5.553255 52.319495,5.553255 52.319496,5.553255 52.319496,5.553255 52.319497,5.553255 52.319498,5.553255 52.319498,5.553256 52.319499,5.553256 52.319499,5.553256 52.3195,5.553256 52.3195,5.553256 52.319501,5.553256 52.319501,5.553256 52.319502,5.553256 52.319503,5.553257 52.319503,5.553257 52.319504,5.553257 52.319504,5.553257 52.319505,5.553257 52.319505,5.553257 52.319506,5.553257 52.319507,5.553257 52.319507,5.553257 52.319508,5.553257 52.319508,5.553257 52.319509,5.553257 52.319509,5.553257 52.31951,5.553257 52.319511,5.553257 52.319511,5.553257 52.319512,5.553257 52.319512,5.553257 52.319513,5.553257 52.319513,5.553257 52.319514,5.553256 52.319515,5.553256 52.319515,5.553256 52.319516,5.553256 52.319516,5.553256 52.319517,5.553256 52.319517,5.553256 52.319518,5.553256 52.319519,5.553255 52.319519,5.553255 52.31952,5.553255 52.31952,5.553255 52.319521,5.553255 52.319521,5.553255 52.319522,5.553254 52.319522,5.553254 52.319523,5.553254 52.319524,5.553254 52.319524,5.553253 52.319525,5.553253 52.319525,5.553253 52.319526,5.553253 52.319526,5.553252 52.319527,5.553252 52.319527,5.553252 52.319528,5.553252 52.319528,5.553251 52.319529,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.553251 52.31953,5.55325 52.31953,5.55325 52.31953,5.55325 52.31953,5.55325 52.31953,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.55325 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319531,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553249 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319532,5.553248 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553247 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319533,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553246 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319534,5.553245 52.319535,5.553245 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553244 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319535,5.553243 52.319536,5.553243 52.319536,5.553243 52.319536,5.553243 52.319536,5.553241 52.319536,5.55324 52.319537,5.553238 52.319538,5.553237 52.319539,5.553235 52.319539,5.553234 52.31954,5.553232 52.319541,5.553231 52.319542,5.553229 52.319542,5.553228 52.319543,5.553226 52.319544,5.553225 52.319545,5.553223 52.319545,5.553222 52.319546,5.55322 52.319547,5.553219 52.319548,5.553217 52.319548,5.553216 52.319549,5.553214 52.31955,5.553213 52.319551,5.553211 52.319551,5.55321 52.319552,5.553208 52.319553,5.553207 52.319554,5.553205 52.319554,5.553204 52.319555,5.553202 52.319556,5.553201 52.319557,5.553199 52.319557,5.553198 52.319558,5.553197 52.319559,5.553195 52.31956,5.553194 52.31956,5.553192 52.319561,5.553191 52.319562,5.553189 52.319563,5.553188 52.319563,5.553186 52.319564,5.553185 52.319565,5.553183 52.319566,5.553182 52.319566,5.55318 52.319567,5.553179 52.319568,5.553177 52.319569,5.553176 52.319569,5.553174 52.31957,5.553173 52.319571,5.553171 52.319572,5.55317 52.319573,5.553169 52.319573,5.553167 52.319574,5.553166 52.319575,5.553164 52.319576,5.553163 52.319576,5.553161 52.319577,5.55316 52.319578,5.553158 52.319579,5.553157 52.31958,5.553155 52.31958,5.553154 52.319581,5.553153 52.319582,5.553151 52.319583,5.55315 52.319583,5.553148 52.319584,5.553147 52.319585,5.553145 52.319586,5.553144 52.319587,5.553142 52.319587,5.553141 52.319588,5.553139 52.319589,5.553138 52.31959,5.553137 52.31959,5.553135 52.319591,5.553134 52.319592,5.553132 52.319593,5.553131 52.319594,5.553129 52.319594,5.553128 52.319595,5.553127 52.319596,5.553125 52.319597,5.553124 52.319598,5.553122 52.319598,5.553121 52.319599,5.553119 52.3196,5.553118 52.319601,5.553116 52.319602,5.553115 52.319602,5.553114 52.319603,5.553112 52.319604,5.553111 52.319605,5.553109 52.319605,5.553108 52.319606,5.553107 52.319607,5.553105 52.319608,5.553104 52.319609,5.553102 52.319609,5.553101 52.31961,5.553099 52.319611,5.553098 52.319612,5.553098 52.319612,5.553091 52.319615,5.553084 52.319619,5.553077 52.319623,5.553071 52.319626,5.553064 52.31963,5.553057 52.319633,5.55305 52.319637,5.553044 52.319641,5.553037 52.319644,5.55303 52.319648,5.553024 52.319652,5.553017 52.319656,5.553011 52.319659,5.553004 52.319663,5.552998 52.319667,5.552991 52.319671,5.552985 52.319675,5.552978 52.319679,5.552972 52.319682,5.552965 52.319686,5.552959 52.31969,5.552953 52.319694,5.552946 52.319698,5.55294 52.319702,5.552934 52.319706,5.552928 52.31971,5.552922 52.319714,5.552915 52.319718,5.552909 52.319722,5.552903 52.319726,5.552897 52.31973,5.552891 52.319734,5.552885 52.319738,5.552879 52.319742,5.552873 52.319746,5.552867 52.319751,5.552861 52.319755,5.552855 52.319759,5.55285 52.319763,5.552844 52.319767,5.552838 52.319772,5.552832 52.319776,5.552827 52.31978,5.552821 52.319784,5.552815 52.319789,5.55281 52.319793,5.552804 52.319797,5.552798 52.319802,5.552793 52.319806,5.552787 52.31981,5.552782 52.319815,5.552776 52.319819,5.552771 52.319823,5.552766 52.319828,5.55276 52.319832,5.552755 52.319837,5.55275 52.319841,5.552744 52.319846,5.552739 52.31985,5.552734 52.319855,5.552729 52.319859,5.552724 52.319864,5.552719 52.319868,5.552713 52.319873,5.552708 52.319877,5.552703 52.319882,5.552698 52.319886,5.552694 52.319891,5.552689 52.319896,5.552684 52.3199,5.552679 52.319905,5.552674 52.31991,5.552669 52.319914,5.552665 52.319919,5.55266 52.319924,5.552655 52.319928,5.552651 52.319933,5.552646 52.319938,5.552641 52.319942,5.552637 52.319947,5.552632 52.319952,5.552628 52.319957,5.552623 52.319962,5.552619 52.319966,5.552615 52.319971,5.55261 52.319976,5.552606 52.319981,5.552602 52.319986,5.552597 52.31999,5.552593 52.319995,5.552589 52.32,5.552585 52.320005,5.552581 52.32001,5.552577 52.320015,5.552573 52.32002,5.552569 52.320025,5.552565 52.32003,5.552561 52.320035,5.552557 52.32004,5.552557 52.32004,5.552556 52.320041,5.552555 52.320041,5.552555 52.320042,5.552554 52.320043,5.552553 52.320044,5.552552 52.320045,5.552551 52.320046,5.552551 52.320047,5.55255 52.320047,5.552549 52.320048,5.552548 52.320049,5.552548 52.32005,5.552547 52.320051,5.552546 52.320052,5.552545 52.320053,5.552545 52.320054,5.552544 52.320054,5.552543 52.320055,5.552542 52.320056,5.552542 52.320057,5.552541 52.320058,5.55254 52.320059,5.552539 52.32006,5.552539 52.320061,5.552538 52.320061,5.552537 52.320062,5.552537 52.320063,5.552536 52.320064,5.552535 52.320065,5.552534 52.320066,5.552534 52.320067,5.552533 52.320068,5.552532 52.320068,5.552531 52.320069,5.552531 52.32007,5.55253 52.320071,5.552529 52.320072,5.552528 52.320073,5.552528 52.320074,5.552527 52.320075,5.552526 52.320075,5.552526 52.320076,5.552525 52.320077,5.552524 52.320078,5.552523 52.320079,5.552523 52.32008,5.552522 52.320081,5.552521 52.320082,5.55252 52.320083,5.55252 52.320083,5.552519 52.320084,5.552518 52.320085,5.552518 52.320086,5.552517 52.320087,5.552516 52.320088,5.552515 52.320089,5.552515 52.32009,5.552514 52.32009,5.552513 52.320091,5.552513 52.320092,5.552512 52.320093,5.552511 52.320094,5.55251 52.320095,5.55251 52.320096,5.552509 52.320097,5.552508 52.320098,5.552508 52.320098,5.552507 52.320099,5.552506 52.3201,5.552506 52.320101,5.552505 52.320102,5.552504 52.320103,5.552503 52.320104,5.552503 52.320105,5.552502 52.320106,5.552501 52.320106,5.552501 52.320107,5.5525 52.320108,5.552499 52.320109,5.552499 52.32011,5.552498 52.320111,5.552497 52.320112,5.552496 52.320113,5.552496 52.320114,5.552495 52.320114,5.552494 52.320115,5.552494 52.320116,5.552493 52.320117,5.552492 52.320118,5.552492 52.320119,5.552491 52.32012,5.55249 52.320121,5.55249 52.320122,5.552489 52.320122,5.552488 52.320123,5.552488 52.320124,5.552487 52.320125,5.552486 52.320126,5.552486 52.320127,5.552486 52.320127,5.552485 52.320339,5.552482 52.320905,5.552512 52.320911,5.552629 52.320937,5.552659 52.320928,5.552688 52.320918,5.552702 52.320912,5.552715 52.320906,5.552732 52.320897,5.55276 52.32088,5.552768 52.320876,5.55278 52.320873,5.552789 52.320873,5.552802 52.320874,5.552811 52.320876,5.552819 52.320879,5.552826 52.320883,5.552832 52.320888,5.552836 52.320894,5.552837 52.3209,5.552837 52.320906,5.552835 52.320912,5.55283 52.320917,5.552826 52.320921,5.552708 52.320989,5.552415 52.321102,5.552156 52.321196,5.552162 52.321222,5.551973 52.321293,5.551936 52.321282,5.551868 52.321307,5.5518 52.321332,5.551755 52.321355,5.55171 52.321378,5.551663 52.321407,5.55163 52.321433,5.551604 52.321458,5.551578 52.321489,5.551557 52.321522,5.551544 52.321552,5.551538 52.321577,5.551539 52.321643,5.551541 52.321709,5.55155 52.321762,5.551559 52.321814,5.551586 52.321875,5.551623 52.321934,5.55167 52.321991,5.551698 52.322017,5.551743 52.322057,5.551792 52.32208,5.551856 52.322104,5.551917 52.322122,5.551982 52.322136,5.552048 52.322146,5.552116 52.322151,5.552202 52.322154,5.552263 52.322152,5.552323 52.322147,5.552356 52.322142,5.552418 52.322129,5.552477 52.322112,5.552534 52.322092,5.552691 52.322022,5.552763 52.32199,5.552858 52.321949,5.55292 52.321953,5.552906 52.321989,5.552837 52.322021,5.552767 52.322054,5.55266 52.322103,5.55258 52.322137,5.552538 52.322152,5.552495 52.322166,5.552406 52.32219,5.55232 52.322204,5.552026 52.322225,5.552026 52.322225,5.552019 52.322227,5.552013 52.322228,5.552006 52.32223,5.551999 52.322232,5.551992 52.322233,5.551986 52.322235,5.551979 52.322237,5.551972 52.322239,5.551966 52.322241,5.551959 52.322243,5.551953 52.322245,5.551946 52.322247,5.55194 52.322249,5.551933 52.322251,5.551927 52.322253,5.551921 52.322256,5.551915 52.322258,5.551908 52.32226,5.551902 52.322263,5.551896 52.322265,5.55189 52.322268,5.551884 52.32227,5.551878 52.322273,5.551872 52.322275,5.551866 52.322278,5.551861 52.322281,5.551855 52.322283,5.551849 52.322286,5.551844 52.322289,5.551838 52.322292,5.551832 52.322295,5.551827 52.322298,5.551822 52.322301,5.551816 52.322304,5.551811 52.322307,5.551806 52.32231,5.551801 52.322313,5.551796 52.322316,5.55179 52.322319,5.551786 52.322323,5.551781 52.322326,5.551776 52.322329,5.551771 52.322333,5.551766 52.322336,5.551762 52.32234,5.551757 52.322343,5.551753 52.322347,5.551748 52.32235,5.551744 52.322354,5.55174 52.322357,5.551735 52.322361,5.551731 52.322365,5.551727 52.322368,5.551723 52.322372,5.551719 52.322376,5.551715 52.32238,5.551712 52.322383,5.551708 52.322387,5.551704 52.322391,5.551701 52.322395,5.551697 52.322399,5.551694 52.322403,5.551691 52.322407,5.551688 52.322411,5.551684 52.322415,5.551681 52.322419,5.551678 52.322423,5.551676 52.322427,5.551673 52.322431,5.55167 52.322435,5.551667 52.32244,5.551665 52.322444,5.551662 52.322448,5.55166 52.322452,5.551658 52.322456,5.551655 52.322461,5.551653 52.322465,5.551651 52.322469,5.551649 52.322474,5.551647 52.322478,5.551645 52.322482,5.551644 52.322487,5.551642 52.322491,5.551641 52.322495,5.551639 52.3225,5.551638 52.322504,5.551637 52.322508,5.551635 52.322513,5.551634 52.322517,5.551633 52.322522,5.551632 52.322526,5.551631 52.32253,5.551631 52.322535,5.55163 52.322539,5.551629 52.322544,5.551629 52.322548,5.551629 52.322553,5.551628 52.322557,5.551628 52.322562,5.551628 52.322562,5.551873 52.322671,5.551838 52.322805,5.551718 52.322924,5.551629 52.322991,5.55154 52.323059,5.551465 52.323087,5.551362 52.323106,5.55111 52.323061,5.55111 52.323022,5.550967 52.323075,5.550909 52.323107,5.550746 52.323208,5.550601 52.323319,5.550476 52.323439,5.550385 52.323582,5.550294 52.323726,5.550276 52.323766,5.550264 52.323806,5.55026 52.323848,5.550262 52.323889,5.550272 52.32393,5.550391 52.324048,5.550511 52.324165,5.550103 52.324535,5.549719 52.324881,5.549622 52.324988,5.549524 52.325094,5.549401 52.32526,5.549278 52.325426,5.549219 52.325555,5.549159 52.325685,5.549145 52.325732,5.549139 52.325781,5.549142 52.325829,5.549182 52.325895,5.549223 52.325961,5.549344 52.326069,5.549345 52.326184,5.549347 52.326299,5.549291 52.326313,5.549146 52.326461,5.549001 52.326609,5.548847 52.326806,5.548693 52.327002,5.548651 52.327097,5.548609 52.327192,5.548604 52.327216,5.548589 52.327264,5.548577 52.327288,5.548549 52.327334,5.548493 52.3274,5.548466 52.327451,5.548447 52.327497,5.548428 52.327544,5.548418 52.327591,5.548404 52.327686,5.548405 52.327798,5.54843 52.327911,5.548486 52.328019,5.54852 52.328077,5.548619 52.328227,5.548674 52.328288,5.548728 52.32835,5.548784 52.328407,5.548858 52.328469,5.548943 52.328525,5.548989 52.328551,5.549049 52.328582,5.549136 52.328617,5.549223 52.328652,5.549316 52.328681,5.549408 52.32871,5.549477 52.328724,5.549486 52.328723,5.5495 52.328719,5.549513 52.328713,5.549524 52.328705,5.54972 52.32871,5.550048 52.328659,5.550127 52.328691,5.55026 52.328659,5.550279 52.328657,5.550292 52.328656,5.550319 52.328657,5.550346 52.328662,5.550379 52.328673,5.550392 52.32868,5.550407 52.328694,5.550412 52.328704,5.550414 52.328715,5.550414 52.32872,5.550407 52.328741,5.550403 52.328748,5.550391 52.328761,5.550375 52.328772,5.550356 52.328781,5.550351 52.328782,5.550024 52.328869,5.549716 52.32895,5.549558 52.328919,5.549539 52.328915,5.549268 52.328862,5.549256 52.328883,5.548759 52.328786,5.548727 52.328844,5.548772 52.328854,5.548728 52.328938,5.548674 52.328927,5.548613 52.328818,5.548535 52.32868,5.548373 52.328396,5.546679 52.328066,5.546627 52.328056,5.546607 52.328049,5.546596 52.328042,5.546591 52.328038,5.546584 52.32803,5.546582 52.328025,5.54658 52.328015,5.546581 52.327855,5.546581 52.32784,5.546599 52.32781,5.546782 52.327606,5.546804 52.327574,5.546962 52.327273,5.547286 52.326652,5.547431 52.326373,5.547535 52.326171,5.547545 52.326153,5.547821 52.325625,5.547958 52.325385,5.54817 52.324979,5.548186 52.324949,5.548225 52.324805,5.548283 52.324594,5.548289 52.324581,5.548311 52.324551,5.548275 52.324545,5.548441 52.324224,5.548553 52.324008,5.548643 52.323836,5.548732 52.323663,5.548804 52.323525,5.548874 52.323384,5.54898 52.323173,5.549086 52.322954,5.549156 52.322805,5.549185 52.322737,5.549245 52.3226,5.549307 52.322443,5.54934 52.322353,5.549373 52.322264,5.549407 52.322175,5.549428 52.322098,5.54945 52.32202,5.549493 52.321866,5.549526 52.321728,5.54956 52.321591,5.549577 52.321493,5.549594 52.321396,5.549598 52.321376,5.549601 52.321357,5.549607 52.321322,5.549618 52.321262,5.549628 52.321201,5.549638 52.32112,5.549649 52.321038,5.549659 52.320956,5.549669 52.320874,5.549673 52.320799,5.549677 52.320725,5.549681 52.32065,5.549685 52.320576,5.549684 52.320487,5.549683 52.320399,5.549683 52.320311,5.549682 52.320222,5.549677 52.320135,5.549673 52.320047,5.549668 52.319959,5.549663 52.319872,5.54965 52.319769,5.549637 52.319666,5.549624 52.319563,5.549611 52.31946,5.549589 52.319358,5.549567 52.319255,5.549544 52.319153,5.549522 52.31905,5.549478 52.318888,5.549433 52.318727,5.549407 52.318646,5.549381 52.318566,5.549355 52.318485,5.549329 52.318405,5.549301 52.318332,5.549272 52.318259,5.549209 52.318109,5.549146 52.317958,5.549065 52.317792,5.548984 52.317625,5.548939 52.317536,5.548894 52.317447,5.548814 52.317296,5.548734 52.317144,5.548654 52.316993,5.548574 52.316842,5.548458 52.316622,5.548342 52.316402,5.54825 52.316227,5.548157 52.316052,5.547836 52.315444,5.547515 52.314837,5.547194 52.314229,5.547192 52.314225,5.548841 52.313867,5.548715 52.314026,5.548588 52.314184,5.548397 52.314336,5.548476 52.314532,5.548554 52.314727,5.54854 52.31478,5.548526 52.314833,5.548557 52.314934,5.548588 52.315035,5.54884 52.315529,5.549093 52.316023,5.549948 52.3176,5.550804 52.319176,5.550812 52.319185,5.550841 52.319213,5.550864 52.31923,5.550905 52.319252,5.550949 52.31927,5.55097 52.319276,5.551501 52.319437,5.552211 52.319577,5.552417 52.319654,5.552555 52.31962,5.552555 52.31962,5.552559 52.319619,5.552564 52.319618,5.552569 52.319617,5.552573 52.319616,5.552578 52.319616,5.552583 52.319615,5.552587 52.319614,5.552592 52.319613,5.552597 52.319612,5.552601 52.319611,5.552606 52.319611,5.552611 52.31961,5.552615 52.319609,5.55262 52.319608,5.552625 52.319607,5.552629 52.319606,5.552634 52.319605,5.552639 52.319604,5.552643 52.319603,5.552648 52.319603,5.552652 52.319602,5.552657 52.319601,5.552662 52.3196,5.552666 52.319599,5.552671 52.319598,5.552676 52.319597,5.55268 52.319596,5.552685 52.319595,5.552689 52.319594,5.552694 52.319593,5.552699 52.319592,5.552703 52.319591,5.552708 52.31959,5.552712 52.319589,5.552717 52.319588,5.552722 52.319587,5.552726 52.319586,5.552731 52.319585,5.552735 52.319584,5.55274 52.319583,5.552745 52.319582,5.552749 52.319581,5.552754 52.31958,5.552758 52.319579,5.552763 52.319578,5.552767 52.319577,5.552772 52.319576,5.552776 52.319575,5.552781 52.319574,5.552786 52.319573,5.55279 52.319571,5.552795 52.31957,5.552799 52.319569,5.552804 52.319568,5.552808 52.319567,5.552813 52.319566,5.552817 52.319565,5.552822 52.319564,5.552826 52.319563,5.552831 52.319561,5.552835 52.31956,5.55284 52.319559,5.552844 52.319558,5.552849 52.319557,5.552853 52.319556,5.552858 52.319554,5.552862 52.319553,5.552867 52.319552,5.552871 52.319551,5.552875 52.31955,5.55288 52.319548,5.552884 52.319547,5.552889 52.319546,5.552893 52.319545,5.552898 52.319544,5.552902 52.319542,5.552907 52.319541,5.552911 52.31954,5.552915 52.319539,5.55292 52.319537,5.552924 52.319536,5.552929 52.319535,5.552933 52.319534,5.552938 52.319532,5.552942 52.319531,5.552946 52.31953,5.552951 52.319529,5.552955 52.319527,5.552959 52.319526,5.552964 52.319525,5.552968 52.319523,5.552973 52.319522,5.552977 52.319521,5.552981 52.319519,5.552986 52.319518,5.55299 52.319517,5.552994 52.319515,5.552999 52.319514,5.553003 52.319513))) diff --git a/rust/sedona-geo-test-fixtures/fixtures/norway_concave_hull.wkt b/rust/sedona-geo-test-fixtures/fixtures/norway_concave_hull.wkt deleted file mode 100644 index bf01069f..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/norway_concave_hull.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(5.227792433014884 59.468030338041025,5.23044532188834 59.45613831272054,5.2384039885087095 59.432354262079556,5.249015544002534 59.432354262079556,5.48777554261359 58.75186614651813,5.503692875854327 58.743938129637804,5.519610209095064 58.72015407899682,5.516957320221608 58.70958338982305,5.538180431209257 58.671264641568136,5.551444875576538 58.656729943954204,5.572667986564188 58.648801927073876,5.625725764033311 58.59330580891158,5.6389902084005925 58.584056455884536,5.649601763894417 58.55498706065667,5.70265954136354 58.53516701845585,5.726535541224646 58.53516701845585,5.782246207567226 58.5008122786411,5.787551985314138 58.49024158946733,5.824692429542525 58.482313572587,5.861832873770911 58.47174288341323,5.8777502070116485 58.46381486653291,5.99447731744372 58.41888943754438,6.005088872937545 58.41096142066406,6.015700428431369 58.40303340378373,6.023659095051738 58.38849870616979,6.0501879837863 58.37528534470258,6.068758205900493 58.37264267240914,6.100592872381967 58.37132133626242,6.100592872381967 58.36075064708865,6.169567983091828 58.33828793259439,6.249154649295513 58.322431898833734,6.26507198253625 58.319789226540294,6.315476871131918 58.30921853736652,6.323435537752286 58.30129052048619,6.336699982119567 58.289398495165706,6.368534648601042 58.277506469845214,6.381799092968322 58.27354246140505,6.41098087057634 58.266935780671446,6.554236869742974 58.11894613223867,6.55688975861643 58.11101811535834,6.596683091718273 58.08459139242392,6.620559091579379 58.07402070325014,6.639129313693571 58.06609268636982,6.660352424681221 58.07666337554359,6.694839980036152 58.06609268636982,6.713410202150344 58.06873535866326,6.763815090746013 58.0647713502231,6.771773757366381 58.077984711690306,6.771773757366381 58.072699367103425,6.785038201733661 58.05420066104933,6.79299686835403 58.0647713502231,6.816872868215135 58.0647713502231,6.891153756671908 58.070056694809985,6.9097239787861024 58.07666337554359,6.920335534279927 58.072699367103425,6.933599978647207 58.06080734178293,6.93890575639412 58.050236652609165,6.960128867381769 58.04759398031572,6.984004867242875 58.027773938114905,7.015839533724349 58.03438061884851,7.037062644711998 58.02116725738129,7.034409755838542 58.00398988747392,7.02910397809163 57.99474053444687,7.055632866826192 57.97888450068622,7.076855977813841 57.98681251756655,7.108690644295315 58.005311223620645,7.113996422042227 58.01588191279441,7.121955088662596 58.02513126582146,7.124607977536052 58.03834462728867,7.140525310776789 58.05420066104933,7.148483977397158 58.050236652609165,7.156442644017527 58.04362997187556,7.169707088384808 58.0396659634354,7.20950042148665 58.030416610408345,7.2227648658539305 58.03173794655507,7.243987976841581 58.04362997187556,7.267863976702686 58.04759398031572,7.275822643323055 58.04362997187556,7.278475532196511 58.027773938114905,7.318268865298354 58.02513126582146,7.33418619853909 58.027773938114905,7.3819381982613015 58.01720324894113,7.403161309248951 58.005311223620645,7.419078642489688 58.02380992967474,7.429690197983513 58.01588191279441,7.456219086718074 58.01984592123458,7.498665308693374 58.005311223620645,7.517235530807566 58.005311223620645,7.549070197289041 58.00927523206081,7.575599086023603 58.007953895914085,7.583557752643971 57.99870454288703,7.594169308137796 58.00927523206081,7.6206981968723575 58.007953895914085,7.631309752366183 58.01720324894113,7.668450196594569 58.01323924050097,7.7825244181531845 58.06609268636982,7.79313597364701 58.06609268636982,7.817011973508115 58.06609268636982,7.838235084495764 58.0647713502231,7.84088797336922 58.07402070325014,7.8568053066099575 58.070056694809985,7.875375528724151 58.072699367103425,7.915168861825993 58.070056694809985,7.9443506394340115 58.07666337554359,7.949656417180924 58.07402070325014,7.976185305915486 58.08723406471736,8.124747082829032 58.108375443064894,8.135358638322856 58.10309009847801,8.15392886043705 58.10705410691818,8.206986637906173 58.11233945150506,8.217598193399997 58.12158880453211,8.241474193261103 58.12555281297227,8.257391526501841 58.1334808298526,11.525750618599853 58.876071744309925,11.539015062967135 58.88003575275009,11.570849729448607 58.88796376963042,11.573502618322063 58.89589178651074,11.589419951562801 58.89060644192386,11.6318661735381 58.909105147977954,11.650436395652292 58.90646247568451,30.9316327279318 69.55907449055096,30.94755006117254 69.57493052431161,30.93959139455217 69.59475056651243,30.950202950045995 69.60003591109931,30.95285583891945 69.6304266424739,30.944897172299083 69.68328008834276,30.928979839058343 69.68460142448947,30.92367406131143 69.66874539072882,31.06427717160461 70.28845204354107,31.061624282731152 70.32016411106238,31.045706949490416 70.33337747252959,31.053665616110784 70.36112553161074,31.037748282870048 70.3901949268386,30.995302060894748 70.41926432206647,30.96081450553982 70.42983501124024,30.955508727792907 70.44304837270745,30.926326950184887 70.44965505344106,30.634509174104707 70.54479125600498,30.61328606311706 70.55271927288531,30.207394065478265 70.67428219838366,30.178212287870245 70.68353155141071,30.101278510540016 70.6954235767312,30.08536117729928 70.7073156020517,30.011080288842507 70.71127961049186,29.94741095587956 70.70335159361153,29.920882067144998 70.68617422370416,29.904964733904258 70.68353155141071,29.812113623333293 70.69410224058448,29.80150206783947 70.72449297195907,29.71660962388887 70.73506366113284,29.27357718202169 70.8262358552566,29.24970118216058 70.83680654443037,29.247048293287126 70.84605589745742,29.201949182438373 70.85398391433775,29.132974071728512 70.84869856975087,29.093180738626668 70.85794792277791,29.09052784975321 70.87380395653857,29.05073451665137 70.87380395653857,28.992370961435334 70.8698399480984,28.976453628194598 70.88569598185906,28.83585051790142 70.87776796497873,28.750958073950823 70.85398391433775,28.459140297870643 70.87644662883201,28.47505763111138 70.88965999029922,28.48832207547866 70.90551602405988,28.50954518646631 70.9134440409402,28.549338519568153 70.96761882295577,28.54403274182124 70.97951084827626,28.52280963083359 70.98743886515659,28.408735409274975 71.00329489891725,28.305272743210182 71.00329489891725,28.284049632222533 70.99140287359675,28.26547941010834 71.04822032790577,28.24690918799415 71.08521774001396,28.191198521651568 71.09578842918773,28.156710966296636 71.09182442074757,28.130182077562075 71.0812537315738,28.06385985572567 71.0878604123074,28.018760744876918 71.07728972313363,27.98162030064853 71.08521774001396,27.963050078534337 71.06143368937298,27.7534718575313 71.10900179065494,27.708372746682542 71.11296579909511,27.644703413719593 71.13278584129593,27.628786080478857 71.1248578244156,27.57838119188319 71.10768045450823,27.551852303148628 71.10503778221478,27.54389363652826 71.09578842918773,27.50144741455296 71.08521774001396,27.37145585975361 71.02443627726478,27.374108748627066 71.01386558809102,27.31574519341103 71.03236429414511,27.275951860309185 71.0442563194656,27.212282527346236 71.02840028570495,27.199018082978956 71.01386558809102,26.70558075251611 70.96629748680905,26.671093197161177 70.97026149524922,26.63660564180625 70.95572679763528,26.567630531096388 70.95176278919512,26.511919864753807 70.93458541928774,25.909714090479255 70.87380395653857,25.904408312732343 70.86455460351152,25.88318520174469 70.89362399873939,25.84339186864285 70.90155201561971,25.742582091451514 70.88965999029922,25.713400313843497 70.89626667103283,25.708094536096585 70.90551602405988,25.647078092007092 70.90551602405988,25.607284758905248 70.9068373602066,25.548921203689215 70.9134440409402,25.511780759460827 70.92269339396725,25.50912787058737 70.93062141084758,25.448111426497878 70.94647744460823,25.437499871004054 70.95969080607544,25.379136315788017 70.96761882295577,25.355260315926913 70.9636548145156,25.34995453818 70.97422550368938,25.312814093951612 70.97422550368938,25.299549649584332 70.96233347836889,25.04487231773254 70.95440546148856,25.01038476237761 70.97158283139593,24.959979873781943 70.96233347836889,24.957326984908487 70.9755468398361,24.77427765264001 70.99008153745004,24.73979009728508 70.99008153745004,24.69734387530978 70.97158283139593,24.69734387530978 70.99008153745004,24.67081498657522 70.96761882295577,24.625715875726463 70.99008153745004,24.59388120924499 70.97951084827626,24.57265809825734 70.96233347836889,24.543476320649322 70.95440546148856,24.535517654028954 70.97026149524922,21.56693500463149 70.31355743032877,21.564282115758033 70.32412811950255,21.487348338427804 70.30959342188861,21.471431005187068 70.29770139656812,21.415720338844487 70.27391734592713,21.367968339122275 70.26466799290009,21.34409233926117 70.26466799290009,21.296340339538958 70.25673997601976,21.24062967319638 70.23691993381894,21.23532389544947 70.2408839422591,21.21144789558836 70.21049321088452,21.20614211784145 70.22370657235173,21.190224784600712 70.21974256391157,21.1849190068538 70.19992252171075,20.349259011715105 69.93961930080667,20.31742434523363 69.96472468759437,20.285589678752157 69.97661671291486,20.256407901144136 69.97529537676814,20.256407901144136 69.96472468759437,20.203350123675015 69.94094063695339,20.16355679057317 69.9356552923665,20.155598123952803 69.94358330924683,20.129069235218243 69.9356552923665,19.731135904199814 69.80748568613454,19.723177237579446 69.77841629090668,19.67011946011032 69.81541370301487,19.593185682780092 69.80484301384111,19.545433683057883 69.80087900540094,19.502987461082583 69.79691499696078,19.447276794740002 69.78238029934684,19.42870657262581 69.786344307787,19.39421901727088 69.77709495475996,19.322591017687564 69.77841629090668,19.293409240079544 69.7731309463198,19.272186129091896 69.77841629090668,19.195252351761667 69.7612389209993,19.174029240774015 69.74538288723865,19.144847463166 69.74141887879848,19.134235907672174 69.7480255595321,19.097095463443786 69.73349086191816,18.23490657957053 69.4811156578944,18.232253690697075 69.46658096028047,18.189807468721774 69.45997427954687,18.152667024493386 69.46525962413375,18.131443913505738 69.45336759881326,15.627116816963106 68.19017024254778,15.62446392808965 68.17431420878712,15.592629261608174 68.18092088952073,15.515695484277945 68.14920882199942,15.475902151176104 68.15317283043959,15.412232818213155 68.14260214126581,15.391009707225507 68.13071011594532,15.34591059637675 68.1042833930109,15.314075929895278 68.07653533392975,15.298158596654538 68.06464330860926,15.27693548566689 68.0606793001691,15.279588374540346 68.04482326640844,14.900225265636113 67.8862629288019,14.879002154648465 67.87701357577485,14.849820377040444 67.85455086128059,14.828597266052796 67.8611575420142,14.802068377318236 67.84133749981338,14.78349815520404 67.82548146605272,14.77023371083676 67.82944547449289,13.555210606793828 66.94547159233639,13.544599051300004 66.93225823086918,13.536640384679636 66.94018624774951,13.281963052827845 66.73273647271428,13.268698608460564 66.71688043895362,13.25543416409328 66.71291643051346,13.223599497611808 66.67724035455198,13.197070608877247 66.6719550099651,13.165235942395771 66.65742031235116,13.024632832102593 66.52792936997248,12.995451054494577 66.53189337841265,12.971575054633469 66.5226440253856,9.676687073800895 63.844295655981696,9.666075518307071 63.83372496680793,9.663422629433615 63.82315427763416,9.67403418492744 63.81786893304727,9.658116851686703 63.809940916166944,9.634240851825599 63.829760958367764,9.623629296331773 63.81522626075383,9.607711963091035 63.799370226993176,9.607711963091035 63.79144221011285,9.589141740976842 63.787478201672684,9.562612852242282 63.77294350405875,9.244266187427538 63.52321097232844,9.231001743060258 63.51660429159483,9.217737298692978 63.515282955448114,9.201819965452241 63.50339093012762,9.167332410097309 63.482249551780086,9.14610929910966 63.48621356022025,9.02938218867759 63.44657347581861,9.00020041106957 63.447894811965334,8.971018633461552 63.439966795085006,8.93122530035971 63.425432097471074,8.907349300498606 63.38711334921616,8.907349300498606 63.39504136609648,8.90469641162515 63.408254727563694,8.8834733006375 63.40957606371042,8.878167522890585 63.417504080590746,8.848985745282569 63.425432097471074,8.817151078801094 63.42939610591124,8.740217301470866 63.41354007215058,8.732258634850496 63.42146808903091,8.711035523862847 63.417504080590746,8.660630635267179 63.40957606371042,8.647366190899898 63.40164804683009,8.644713302026442 63.3897560215096,7.978838194788942 63.088491380057164,7.968226639295118 63.080563363176836,7.915168861825993 63.04224461492192,7.885987084217976 63.023745908867824,7.718855085190237 62.970892462998975,7.68171464096185 62.96692845455881,7.588863530390883 62.92464569786373,7.583557752643971 62.93653772318422,7.564987530529778 62.92464569786373,7.517235530807566 62.906146991809635,7.485400864326093 62.906146991809635,7.469483531085356 62.89821897492931,7.448260420097706 62.906146991809635,7.456219086718074 62.92068168942357,7.442954642350793 62.93653772318422,7.416425753616232 62.94842974850471,7.413772864742776 62.95503642923832,7.384591087134758 62.95900043767848,7.376632420514389 62.96692845455881,7.331533309665634 62.973535135292416,7.323574643045266 62.98939116905307,7.286434198816879 62.9788204798793,7.278475532196511 62.98939116905307,7.283781309943423 62.99996185822684,7.246640865715037 62.98939116905307,7.236029310221212 62.99996185822684,7.20950042148665 62.993355177493235,7.17501286613172 62.993355177493235,7.151136866270614 62.9973191859334,7.151136866270614 62.98542716061291,7.100731977674947 62.961643109971924,7.090120422181122 62.95900043767848,7.060938644573104 62.970892462998975,7.021145311471262 62.95239375694487,6.922988423153383 62.91407500868996,6.9070710899126455 62.90218298336947,6.89645953441882 62.9101110002498,5.225139544141428 62.20848150634083,5.209222210900691 62.205838834047384,5.180040433292673 62.21376685092771,5.177387544419217 62.1939468087269,5.14024710019083 62.2005534894605,5.097800878215532 62.1939468087269,5.095147989342076 62.18337611955313,5.095147989342076 62.16619874964575,5.103106655962444 62.14902137973837,5.113718211456269 62.12655866524412,5.116371100329725 62.10013194230969,4.991685323277284 61.7394071742548,4.983726656656916 61.72883648508103,4.98107376778346 61.72487247664087,4.970462212289635 61.71298045132038,4.970462212289635 61.68258971994579,4.970462212289635 61.6706976946253,4.989032434403828 61.625772265636776,4.9943382121507405 61.59802420655563,4.9969911010241965 61.580846836648256,4.973115101163091 61.41700115445482,4.9943382121507405 61.40510912913433,4.98107376778346 61.2848675397827,4.98107376778346 61.26108348914172,4.9943382121507405 61.25051279996795,5.007602656518022 61.24258478308762,5.007602656518022 61.224086077033526,5.010255545391478 61.22012206859336,4.949239101301986 60.807865190816344,4.965156434542723 60.79597316549585,5.227792433014884 59.51691977546972,5.222486655267972 59.50106374170906,5.227792433014884 59.468030338041025) diff --git a/rust/sedona-geo-test-fixtures/fixtures/norway_convex_hull.wkt b/rust/sedona-geo-test-fixtures/fixtures/norway_convex_hull.wkt deleted file mode 100644 index 0dd909ba..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/norway_convex_hull.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(7.717377961338066 57.74911832172092,6.968425350867709 57.74957737187902,5.464957056755467 58.24822761552509,4.722530819313656 59.24963650749106,4.346980035524813 60.498808789126734,4.340231074407465 61.998825794804695,12.617561279995918 68.4983356095851,15.010693169334283 69.49664550225157,18.503596794856012 70.49788127446817,23.41773118246719 71.25021807292373,23.99734444112429 71.25032666052927,25.81713611470763 71.25061029282803,27.018043769538682 71.25053409142788,28.291580927773403 71.25031072902001,30.61987385954102 70.74988171707938,31.220012092660365 70.50025174432726,31.22041170425437 70.00042112672493,31.220360609653444 69.74967563784787,31.218815724995086 69.50004679809811,11.84258850133738 58.74982401923083,7.717377961338066 57.74911832172092) diff --git a/rust/sedona-geo-test-fixtures/fixtures/norway_main.wkt b/rust/sedona-geo-test-fixtures/fixtures/norway_main.wkt deleted file mode 100644 index 180559e0..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/norway_main.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(11.82022128355349 59.29625663896727,11.830832839047314 59.240760520804976,11.804303950312752 59.22754715933777,11.783080839325102 59.206405780990224,11.775122172704734 59.17601504961564,11.77777506157819 59.136374965214,11.76451061721091 59.11523358686647,11.775122172704734 59.10730556998614,11.77777506157819 59.08880686393204,11.748593283970173 59.066344149437775,11.737981728476347 59.050488115677126,11.708799950868329 59.030668073476306,11.706147061994873 59.01349070356893,11.690229728754137 58.98970665292795,11.684923951007224 58.971207946873854,11.690229728754137 58.9553519131132,11.663700840019574 58.934210534765654,11.650436395652292 58.90646247568451,11.6318661735381 58.909105147977954,11.589419951562801 58.89060644192386,11.573502618322063 58.89589178651074,11.570849729448607 58.88796376963042,11.557585285081327 58.898534458804185,11.544320840714047 58.89457045036402,11.539015062967135 58.88003575275009,11.525750618599853 58.876071744309925,11.483304396624554 58.89192777807058,11.456775507889994 58.88796376963042,11.456775507889994 58.91703316485828,11.464734174510362 58.93288919861894,11.45942839676345 58.951387904673034,11.462081285636906 58.971207946873854,11.454122619016537 58.985742644487786,11.470039952257274 58.98177863604762,11.464734174510362 59.00027734210172,11.448816841269624 59.01216936742221,11.43024661915543 59.03595341806319,11.419635063661605 59.043881434943515,11.432899508028886 59.06238014099762,11.419635063661605 59.066344149437775,11.419635063661605 59.05445212411729,11.406370619294325 59.05709479641073,11.406370619294325 59.072950830171386,11.393106174927045 59.07691483861155,11.385147508306677 59.09541354466565,11.37453595281285 59.103341561545975,11.387800397180133 59.11523358686647,11.355965730698657 59.11919759530663,11.321478175343728 59.11787625915991,11.276379064494972 59.10069888925253,11.223321287025849 59.08880686393204,11.199445287164743 59.09144953622548,11.204751064911655 59.10730556998614,11.231279953646217 59.13373229292056,11.22862706477276 59.13769630136073,11.199445287164743 59.1112695784263,11.199445287164743 59.11919759530663,11.183527953924006 59.11787625915991,11.172916398430182 59.1297682844804,11.178222176177094 59.14166030980089,11.212709731532023 59.145624318241055,11.175569287303638 59.15223099897466,11.172916398430182 59.16015901585499,11.188833731670918 59.17865772190908,11.186180842797462 59.19715642796318,11.178222176177094 59.18658573878941,11.1596519540629 59.183943066495964,11.164957731809814 59.16015901585499,11.130470176454882 59.153552335121375,11.119858620961057 59.145624318241055,11.114552843214145 59.168087032735315,11.098635509973409 59.183943066495964,11.090676843353041 59.17865772190908,11.11189995434069 59.14166030980089,11.109247065467233 59.13373229292056,11.072106621238847 59.12184026760007,11.072106621238847 59.14033897365417,11.027007510390092 59.1297682844804,11.037619065883916 59.14033897365417,11.042924843630828 59.1614803520017,11.027007510390092 59.148266990534495,11.005784399402442 59.17601504961564,11.011090177149354 59.18658573878941,10.99251995503516 59.17865772190908,10.989867066161704 59.18790707493613,10.976602621794424 59.18658573878941,10.968643955174056 59.17601504961564,10.950073733059863 59.17205104117548,10.950073733059863 59.153552335121375,10.931503510945669 59.136374965214,10.907627511084563 59.13769630136073,10.918239066578387 59.14958832668121,10.90232173333765 59.148266990534495,10.897015955590739 59.15619500741482,10.907627511084563 59.168087032735315,10.899668844464195 59.18262173034925,10.883751511223458 59.17601504961564,10.886404400096914 59.190549747229575,10.86783417798272 59.17601504961564,10.857222622488896 59.18658573878941,10.859875511362352 59.17205104117548,10.825387956007422 59.15223099897466,10.825387956007422 59.17205104117548,10.80681773389323 59.19715642796318,10.790900400652491 59.18658573878941,10.788247511779035 59.19451375566974,10.804164845019773 59.20508444484351,10.761718623044473 59.232832503924655,10.793553289525947 59.25925922685908,10.772330178538297 59.255295218418915,10.745801289803737 59.232832503924655,10.729883956563 59.23151116777793,10.735189734309913 59.26586590759268,10.74314840093028 59.255295218418915,10.748454178677193 59.28172194135334,10.74314840093028 59.2856859497935,10.790900400652491 59.31475534502137,10.780288845158667 59.31871935346153,10.759065734171017 59.30814866428776,10.751107067550649 59.31607668116809,10.753759956424105 59.342503404102516,10.732536845436456 59.345146076395956,10.716619512195718 59.32400469804841,10.698049290081524 59.31871935346153,10.690090623461156 59.30154198355415,10.658255956979684 59.33457538722219,10.663561734726596 59.37950081621071,10.650297290359314 59.37157279933038,10.647644401485858 59.39403551382464,10.655603068106227 59.432354262079556,10.6874377345877 59.47199434648119,10.682131956840788 59.50899175858939,10.6874377345877 59.52484779235004,10.666214623600052 59.52352645620332,10.650297290359314 59.55391718757791,10.655603068106227 59.5843079189525,10.652950179232771 59.614698650327085,10.61846262387784 59.67415877692954,10.629074179371663 59.69794282757052,10.621115512751295 59.70058549986396,10.613156846130927 59.682086793809866,10.586627957396367 59.7217268782115,10.591933735143279 59.732297567385274,10.581322179649455 59.7402255842656,10.581322179649455 59.76136696261314,10.607851068384015 59.80364971930822,10.642338623738945 59.841968467563134,10.655603068106227 59.87235919893772,10.6874377345877 59.84989648444346,10.692743512334612 59.83404045068281,10.713966623322262 59.74815360114592,10.72192528994263 59.72833355894511,10.732536845436456 59.72833355894511,10.724578178816088 59.75079627343937,10.735189734309913 59.766652307200026,10.729883956563 59.77854433252051,10.735189734309913 59.797043038574614,10.753759956424105 59.82346976150904,10.767024400791385 59.83139777838936,10.780288845158667 59.864431182057395,10.751107067550649 59.89482191343198,10.751107067550649 59.906713938752475,10.740495512056825 59.90142859416559,10.732536845436456 59.91067794719264,10.711313734448806 59.906713938752475,10.690090623461156 59.91728462792624,10.695396401208068 59.90274993031231,10.67417329022042 59.89482191343198,10.663561734726596 59.90274993031231,10.668867512473508 59.91728462792624,10.642338623738945 59.91067794719264,10.626421290498207 59.88028721581805,10.602545290637103 59.87235919893772,10.591933735143279 59.88821523269837,10.610503957257471 59.90274993031231,10.570710624155629 59.886893896551655,10.530917291053786 59.886893896551655,10.509694180066138 59.87632320737789,10.501735513445768 59.853860492883626,10.491123957951944 59.841968467563134,10.469900846964293 59.83536178682952,10.47255373583775 59.83007644224264,10.499082624572312 59.83139777838936,10.47255373583775 59.819505753068874,10.501735513445768 59.80100704701478,10.501735513445768 59.7587242903197,10.51499995781305 59.76268829875986,10.512347068939594 59.734940239678714,10.520305735559962 59.72833355894511,10.522958624433418 59.709834852891014,10.517652846686506 59.69397881913036,10.533570179927242 59.6781227853697,10.538875957674154 59.68340812995659,10.581322179649455 59.66358808775577,10.599892401763647 59.664909423902486,10.615809735004383 59.59619994427299,10.615809735004383 59.569773221338565,10.589280846269823 59.55127451528446,10.536223068800698 59.53145447308365,10.4937768468254 59.51956244776316,10.480512402458118 59.52352645620332,10.464595069217381 59.51691977546972,10.448677735976645 59.52352645620332,10.419495958368627 59.52352645620332,10.4088844028748 59.53938248996398,10.427454624988995 59.56184520445824,10.440719069356277 59.60677063344676,10.41684306949517 59.61073464188692,10.443371958229733 59.62262666720741,10.43010751386245 59.6345186925279,10.427454624988995 59.653017398582,10.43806618048282 59.667552096195934,10.427454624988995 59.67415877692954,10.43010751386245 59.68605080225003,10.41684306949517 59.68340812995659,10.366438180899504 59.71379886133118,10.361132403152592 59.709834852891014,10.316033292303835 59.71644153362462,10.286851514695817 59.73626157582544,10.286851514695817 59.74815360114592,10.244405292720518 59.746832264999206,10.233793737226694 59.7402255842656,10.186041737504482 59.744189592705766,10.26297551483471 59.72040554206478,10.27093418145508 59.70851351674429,10.31338040343038 59.690014810690194,10.345215069911854 59.690014810690194,10.374396847519872 59.6781227853697,10.387661291887152 59.659624079315606,10.392967069634064 59.64376804555495,10.406231514001345 59.62659067564758,10.400925736254433 59.59619994427299,10.390314180760608 59.58034391051233,10.406231514001345 59.56448787675168,10.398272847380976 59.56052386831151,10.390314180760608 59.53541848152381,10.363785292026048 59.527490464643485,10.305421736810011 59.53938248996398,10.26297551483471 59.56448787675168,10.252363959340887 59.56052386831151,10.244405292720518 59.569773221338565,10.231140848353238 59.5658092128984,10.244405292720518 59.55788119601807,10.260322625961255 59.53145447308365,10.278892848075449 59.53145447308365,10.302768847936555 59.4970997332689,10.318686181177291 59.48917171638857,10.342562181038398 59.468030338041025,10.350520847658766 59.4786010272148,10.358479514279134 59.460102321160704,10.38235551414024 59.43763960666644,10.400925736254433 59.45085296813365,10.427454624988995 59.440282278959884,10.443371958229733 59.452174304280376,10.456636402597013 59.44424628740005,10.45928929147047 59.42839025363939,10.475206624711205 59.42839025363939,10.4937768468254 59.43631827051972,10.496429735698856 59.417819564465624,10.475206624711205 59.395356849971364,10.475206624711205 59.380822152357425,10.461942180343925 59.372894135477104,10.469900846964293 59.35043142098284,10.4937768468254 59.333254051075464,10.496429735698856 59.322683361901696,10.522958624433418 59.32004068960825,10.52826440218033 59.30814866428776,10.520305735559962 59.293613966673824,10.501735513445768 59.29229263052711,10.4937768468254 59.26982991603285,10.501735513445768 59.255295218418915,10.488471069078487 59.263223235299236,10.47255373583775 59.25925922685908,10.467247958090837 59.24340319309842,10.432760402735907 59.271151252179564,10.427454624988995 59.25925922685908,10.400925736254433 59.26586590759268,10.398272847380976 59.27643659676645,10.377049736393328 59.277757932913175,10.371743958646416 59.24340319309842,10.379702625266784 59.235475176218095,10.358479514279134 59.21036978943039,10.345215069911854 59.216976470164,10.329297736671116 59.193192419523015,10.32664484779766 59.168087032735315,10.308074625683467 59.145624318241055,10.321339070050747 59.145624318241055,10.32664484779766 59.1297682844804,10.31338040343038 59.125804276040235,10.310727514556923 59.13373229292056,10.278892848075449 59.14033897365417,10.308074625683467 59.09937755310581,10.305421736810011 59.080878847051714,10.316033292303835 59.06898682173122,10.300115959063099 59.05313078797057,10.302768847936555 59.06502281329106,10.292157292442731 59.0742721663181,10.289504403569275 59.09541354466565,10.26297551483471 59.12316160374679,10.257669737087799 59.10994824227958,10.273587070328537 59.09673488081236,10.281545736948905 59.04784544338368,10.27093418145508 59.03991742650335,10.257669737087799 59.06502281329106,10.252363959340887 59.09937755310581,10.241752403847062 59.09541354466565,10.233793737226694 59.12184026760007,10.22318218173287 59.125804276040235,10.225835070606326 59.09144953622548,10.217876403985958 59.0742721663181,10.233793737226694 59.058416132557454,10.228487959479782 59.038596090356634,10.20195907074522 59.02009738430254,10.15420707102301 59.005562686688606,10.130331071161903 59.005562686688606,10.127678182288447 59.0240613927427,10.175430182010658 59.038596090356634,10.16747151539029 59.05445212411729,10.148901293276097 59.0425600987968,10.117066626794621 59.03463208191647,10.109107960174253 59.0240613927427,10.074620404819324 59.01349070356893,10.064008849325498 59.03198940962303,10.042785738337848 59.0425600987968,10.016256849603288 59.04652410723696,10.026868405097112 59.03198940962303,10.018909738476744 59.028025401182866,10.03482707171748 59.016133375862374,10.042785738337848 59.00159867824844,10.03482707171748 58.97781462760746,10.016256849603288 58.979135963754175,10.002992405236007 58.96988661072713,9.981769294248357 58.98309997219434,9.963199072134163 58.97781462760746,9.971157738754531 58.965922602286966,9.957893294387251 58.96063725770008,9.93136440565269 58.965922602286966,9.923405739032322 58.973850619167294,9.883612405930478 58.96724393843369,9.867695072689742 58.97517195531402,9.857083517195917 58.956673249259914,9.81994307296753 58.971207946873854,9.854430628322461 58.98970665292795,9.84116618395518 59.01745471200909,9.84116618395518 59.03991742650335,9.822595961840985 59.03198940962303,9.806678628600249 59.03595341806319,9.79871996197988 59.066344149437775,9.806678628600249 59.09144953622548,9.790761295359513 59.09144953622548,9.788108406486057 59.066344149437775,9.772191073245319 59.05445212411729,9.772191073245319 59.03991742650335,9.737703517890388 59.072950830171386,9.72974485127002 59.06502281329106,9.71648040690274 59.06898682173122,9.711174629155828 59.09144953622548,9.719133295776196 59.10466289769269,9.700563073662002 59.10730556998614,9.697910184788546 59.07691483861155,9.689951518168177 59.06898682173122,9.705868851408916 59.05445212411729,9.69525729591509 59.050488115677126,9.658116851686703 59.058416132557454,9.644852407319423 59.083521519345155,9.650158185066335 59.103341561545975,9.63954662957251 59.1112695784263,9.586488852103386 59.12316160374679,9.589141740976842 59.11523358686647,9.530778185760806 59.131089620627115,9.509555074773157 59.125804276040235,9.562612852242282 59.11787625915991,9.559959963368826 59.10730556998614,9.581183074356474 59.103341561545975,9.626282185205229 59.080878847051714,9.626282185205229 59.06238014099762,9.644852407319423 59.058416132557454,9.650158185066335 59.04652410723696,9.671381296053983 59.050488115677126,9.697910184788546 59.04652410723696,9.735050629016932 59.028025401182866,9.7430092956373 59.01216936742221,9.748315073384212 58.98970665292795,9.732397740143476 58.993670661368114,9.721786184649652 59.008205358982046,9.700563073662002 59.00159867824844,9.713827518029284 58.993670661368114,9.705868851408916 58.985742644487786,9.671381296053983 58.996313333661554,9.652811073939791 58.98970665292795,9.671381296053983 58.98177863604762,9.700563073662002 58.979135963754175,9.689951518168177 58.96724393843369,9.676687073800895 58.973850619167294,9.663422629433615 58.96724393843369,9.647505296192879 58.971207946873854,9.650158185066335 58.96063725770008,9.623629296331773 58.9553519131132,9.631587962952143 58.94742389623287,9.623629296331773 58.93949587935254,9.607711963091035 58.951387904673034,9.589141740976842 58.94478122393943,9.613017740837948 58.93288919861894,9.581183074356474 58.92496118173861,9.552001296748456 58.93288919861894,9.549348407875 58.928925190178774,9.517513741393525 58.928925190178774,9.480373297165139 58.9368532070591,9.467108852797859 58.93288919861894,9.501596408152789 58.926282517885326,9.469761741671315 58.90249846724435,9.453844408430577 58.88664243348369,9.435274186316384 58.90646247568451,9.374257742226892 58.898534458804185,9.366299075606523 58.89192777807058,9.36895196447998 58.88003575275009,9.387522186594172 58.89457045036402,9.408745297581822 58.90249846724435,9.42466263082256 58.898534458804185,9.416703964202192 58.8681437274296,9.406092408708366 58.86417971898943,9.358340408986155 58.86153704669599,9.321199964757769 58.87210773586976,9.30528263151703 58.88003575275009,9.294671076023207 58.853609029815665,9.299976853770119 58.847002349082054,9.276100853909014 58.833788987614845,9.30528263151703 58.839074332201726,9.302629742643575 58.831146315321405,9.329158631378137 58.83775299605501,9.371604853353436 58.847002349082054,9.408745297581822 58.8496450213755,9.443232852936752 58.84568101293534,9.467108852797859 58.82718230688124,9.43792707518984 58.81925429000091,9.390175075467628 58.81529028156075,9.406092408708366 58.808683600827145,9.371604853353436 58.79943424780009,9.379563519973804 58.79282756706649,9.435274186316384 58.811326273120585,9.435274186316384 58.80075558394682,9.38221640884726 58.78489955018616,9.384869297720716 58.78225687789271,9.347728853492331 58.75450881881157,9.286712409402838 58.73997412119764,9.233654631933714 58.74261679349108,9.204472854325697 58.74790213807797,9.18855552108496 58.74261679349108,9.183249743338047 58.74790213807797,9.167332410097309 58.73997412119764,9.135497743615836 58.74261679349108,9.114274632628186 58.75054481037141,9.082439966146712 58.75054481037141,9.0771341883998 58.75979416339845,9.066522632905976 58.75583015495829,9.082439966146712 58.743938129637804,9.058563966285607 58.7254394235837,9.095704410513992 58.724118087436985,9.124886188122012 58.71751140670338,9.199167076578785 58.71619007055666,9.19651418770533 58.724118087436985,9.15937374347694 58.724118087436985,9.106315966007818 58.73204610431731,9.106315966007818 58.743938129637804,9.164679521223853 58.73336744046403,9.225695965313346 58.73865278505092,9.207125743199153 58.721475415143544,9.238960409680626 58.72808209587715,9.241613298554082 58.724118087436985,9.225695965313346 58.70561938138289,9.130191965868924 58.69504869220912,9.11162174375473 58.69769136450256,9.103663077134362 58.68712067532879,9.204472854325697 58.69504869220912,9.225695965313346 58.68712067532879,9.204472854325697 58.66465796083453,9.164679521223853 58.656729943954204,9.162026632350397 58.66730063312797,9.116927521501642 58.65012326322059,9.140803521362749 58.648801927073876,9.0771341883998 58.62501787643289,9.032035077551045 58.611804514965684,9.032035077551045 58.619732531846005,8.994894633322659 58.5880204643247,8.976324411208466 58.589341800471416,8.971018633461552 58.60255516193863,8.947142633600446 58.61048317881896,8.952448411347358 58.62501787643289,8.933878189233166 58.61841119569929,8.939183966980078 58.59991248964519,8.923266633739342 58.57348576671077,8.963059966841184 58.59594848120503,8.968365744588096 58.5880204643247,8.957754189094272 58.569521758270604,8.968365744588096 58.56291507753699,8.949795522473902 58.549701716069784,8.886126189510955 58.52459632928208,8.878167522890585 58.49816960634766,8.86225018964985 58.5008122786411,8.851638634156025 58.48892025332061,8.81980396767455 58.474385555706675,8.75082885696469 58.45588684965258,8.713688412736303 58.44003081589192,8.718994190483215 58.41888943754438,8.700423968369023 58.39114137846324,8.726952857103583 58.392462714609955,8.713688412736303 58.37924935314275,8.687159524001743 58.364714655528815,8.668589301887549 58.36867866396898,8.671242190761005 58.354143966355046,8.65267196864681 58.354143966355046,8.644713302026442 58.342251941034554,8.620837302165338 58.33960926874111,8.631448857659162 58.33168125186078,8.607572857798056 58.32771724342062,8.6049199689246 58.33828793259439,8.623490191038794 58.35678663864849,8.6049199689246 58.36075064708865,8.57043241356967 58.311861209659966,8.530639080467827 58.289398495165706,8.509415969480177 58.299969184339474,8.517374636100547 58.289398495165706,8.490845747365984 58.277506469845214,8.490845747365984 58.27354246140505,8.535944858214739 58.28543448672554,8.530639080467827 58.269578452964886,8.461663969757966 58.25900776379112,8.435135081023404 58.266935780671446,8.443093747643774 58.29336250360587,8.408606192288843 58.26561444452472,8.42452352552958 58.266935780671446,8.432482192149948 58.25107974691079,8.427176414403036 58.24315173003046,8.400647525668475 58.247115738470626,8.387383081301193 58.255043755350954,8.371465748060457 58.23654504929686,8.318407970591332 58.212760998655874,8.305143526224052 58.21672500709604,8.27861463748949 58.212760998655874,8.297184859603684 58.202190309482106,8.25208574875493 58.20615431792227,8.246779971008015 58.20086897333538,8.281267526362946 58.19161962030833,8.275961748616034 58.19822630104194,8.305143526224052 58.19161962030833,8.283920415236402 58.18369160342801,8.270655970869122 58.159907552787026,8.241474193261103 58.157264880493585,8.241474193261103 58.16783556966735,8.222903971146911 58.17576358654768,8.233515526640735 58.182370267281286,8.20168086015926 58.190298284161614,8.209639526779629 58.17179957810752,8.233515526640735 58.16387156122719,8.233515526640735 58.15330087205342,8.257391526501841 58.1334808298526,8.241474193261103 58.12555281297227,8.217598193399997 58.12158880453211,8.206986637906173 58.11233945150506,8.199027971285805 58.14140884673293,8.204333749032717 58.16387156122719,8.185763526918524 58.16387156122719,8.191069304665437 58.15330087205342,8.172499082551242 58.13480216599932,8.180457749171612 58.12951682141244,8.14597019381668 58.126874149119,8.164540415930874 58.12291014067883,8.15392886043705 58.10705410691818,8.135358638322856 58.10309009847801,8.130052860575944 58.12158880453211,8.124747082829032 58.108375443064894,8.087606638600645 58.12158880453211,8.087606638600645 58.1334808298526,8.063730638739539 58.11894613223867,8.058424860992627 58.12291014067883,8.071689305359907 58.14140884673293,8.058424860992627 58.137444838292765,8.047813305498803 58.14537285517309,8.058424860992627 58.16122888893374,8.076995083106821 58.16783556966735,8.087606638600645 58.18633427572145,8.071689305359907 58.19426229260178,8.058424860992627 58.2140823348026,8.034548861131523 58.23654504929686,8.02128441676424 58.232581040856694,8.050466194372259 58.2140823348026,8.053119083245715 58.202190309482106,8.037201750004979 58.19822630104194,8.050466194372259 58.182370267281286,8.037201750004979 58.179727594987845,8.047813305498803 58.16387156122719,8.026590194511153 58.157264880493585,8.034548861131523 58.14537285517309,7.997408416903135 58.14140884673293,8.013325750143872 58.130838157559154,7.997408416903135 58.12951682141244,7.984143972535854 58.14405151902637,7.962920861548205 58.13480216599932,7.978838194788942 58.126874149119,7.954962194927836 58.11233945150506,7.970879528168574 58.114982123798505,7.978838194788942 58.10309009847801,7.976185305915486 58.08723406471736,7.949656417180924 58.07402070325014,7.9443506394340115 58.07666337554359,7.933739083940187 58.10044742618457,7.915168861825993 58.070056694809985,7.875375528724151 58.072699367103425,7.8568053066099575 58.070056694809985,7.84088797336922 58.07402070325014,7.838235084495764 58.0647713502231,7.817011973508115 58.06609268636982,7.822317751255028 58.08062738398375,7.803747529140834 58.08062738398375,7.79313597364701 58.06609268636982,7.7825244181531845 58.06609268636982,7.7851773070266415 58.077984711690306,7.748036862798254 58.070056694809985,7.721507974063693 58.05155798875588,7.687020418708762 58.06873535866326,7.708243529696412 58.050236652609165,7.68171464096185 58.04759398031572,7.68171464096185 58.04362997187556,7.655185752227288 58.050236652609165,7.6604915299742 58.0396659634354,7.68171464096185 58.03570195499523,7.671103085468025 58.03173794655507,7.668450196594569 58.01323924050097,7.631309752366183 58.01720324894113,7.6206981968723575 58.027773938114905,7.6233510857458135 58.0396659634354,7.610086641378533 58.04362997187556,7.6206981968723575 58.007953895914085,7.594169308137796 58.00927523206081,7.583557752643971 57.99870454288703,7.575599086023603 58.007953895914085,7.549070197289041 58.00927523206081,7.517235530807566 58.005311223620645,7.498665308693374 58.005311223620645,7.503971086440286 58.01984592123458,7.456219086718074 58.01984592123458,7.429690197983513 58.01588191279441,7.429690197983513 58.027773938114905,7.442954642350793 58.03570195499523,7.41111997586932 58.04362997187556,7.424384420236601 58.03570195499523,7.403161309248951 58.02513126582146,7.419078642489688 58.02380992967474,7.403161309248951 58.005311223620645,7.3819381982613015 58.01720324894113,7.33418619853909 58.027773938114905,7.331533309665634 58.03570195499523,7.318268865298354 58.04362997187556,7.318268865298354 58.02513126582146,7.278475532196511 58.027773938114905,7.275822643323055 58.04362997187556,7.286434198816879 58.050236652609165,7.278475532196511 58.05816466948949,7.267863976702686 58.04759398031572,7.243987976841581 58.04362997187556,7.2227648658539305 58.03173794655507,7.20950042148665 58.030416610408345,7.198888865992825 58.04759398031572,7.177665755005176 58.05816466948949,7.169707088384808 58.0396659634354,7.156442644017527 58.04362997187556,7.124607977536052 58.03834462728867,7.121955088662596 58.02513126582146,7.111343533168771 58.03834462728867,7.106037755421859 58.027773938114905,7.113996422042227 58.01588191279441,7.108690644295315 58.005311223620645,7.076855977813841 57.98681251756655,7.055632866826192 57.97888450068622,7.02910397809163 57.99474053444687,7.034409755838542 58.00398988747392,7.037062644711998 58.02116725738129,7.0662444223200165 58.04362997187556,7.135219533029877 58.06873535866326,7.1458310885237015 58.06609268636982,7.140525310776789 58.05420066104933,7.148483977397158 58.050236652609165,7.17501286613172 58.10309009847801,7.185624421625544 58.11233945150506,7.182971532752088 58.1334808298526,7.177665755005176 58.13480216599932,7.180318643878632 58.11101811535834,7.167054199511352 58.108375443064894,7.1458310885237015 58.092519409304245,7.1458310885237015 58.072699367103425,7.124607977536052 58.072699367103425,7.103384866548403 58.08062738398375,7.106037755421859 58.06873535866326,7.092773311054579 58.07402070325014,7.074203088940385 58.05816466948949,7.050327089079279 58.055521997196045,7.039715533585454 58.046272644169,7.015839533724349 58.03438061884851,6.984004867242875 58.027773938114905,6.978699089495962 58.046272644169,7.002575089357068 58.05420066104933,7.013186644850893 58.06873535866326,7.002575089357068 58.072699367103425,7.013186644850893 58.08459139242392,7.058285755699648 58.11233945150506,7.060938644573104 58.11894613223867,7.02910397809163 58.108375443064894,7.023798200344718 58.09912609003785,6.986657756116331 58.070056694809985,6.97339331174905 58.070056694809985,6.976046200622506 58.05420066104933,6.960128867381769 58.04759398031572,6.93890575639412 58.050236652609165,6.933599978647207 58.06080734178293,6.952170200761401 58.06873535866326,6.933599978647207 58.07402070325014,6.960128867381769 58.08062738398375,6.930947089773751 58.08062738398375,6.946864423014489 58.09912609003785,6.928294200900295 58.092519409304245,6.920335534279927 58.072699367103425,6.891153756671908 58.070056694809985,6.9097239787861024 58.07666337554359,6.816872868215135 58.09119807315752,6.814219979341679 58.09912609003785,6.854013312443522 58.10441143462473,6.854013312443522 58.11101811535834,6.901765312165733 58.12555281297227,6.949517311887945 58.12158880453211,6.954823089634857 58.11233945150506,6.976046200622506 58.12291014067883,6.9946164227367 58.12158880453211,7.034409755838542 58.12951682141244,7.02910397809163 58.137444838292765,7.047674200205823 58.13876617443948,7.02910397809163 58.14537285517309,6.986657756116331 58.130838157559154,6.960128867381769 58.126874149119,6.930947089773751 58.12951682141244,6.888500867798452 58.137444838292765,6.888500867798452 58.14537285517309,6.854013312443522 58.1519795359067,6.832790201455873 58.17179957810752,6.867277756810803 58.187655611868166,6.859319090190434 58.190298284161614,6.819525757088591 58.17576358654768,6.814219979341679 58.18633427572145,6.79299686835403 58.18369160342801,6.814219979341679 58.165192897373906,6.803608423847855 58.15594354434686,6.843401756949698 58.14537285517309,6.867277756810803 58.1334808298526,6.851360423570066 58.117624796091945,6.8274844237089605 58.108375443064894,6.803608423847855 58.11101811535834,6.777079535113293 58.10044742618457,6.750550646378731 58.11101811535834,6.7452448686318185 58.130838157559154,6.7585093129991 58.14537285517309,6.7452448686318185 58.16915690581407,6.755856424125644 58.187655611868166,6.7452448686318185 58.19161962030833,6.734633313137994 58.18369160342801,6.739939090884906 58.14140884673293,6.721368868770713 58.130838157559154,6.73728620201145 58.12951682141244,6.739939090884906 58.10309009847801,6.7585093129991 58.09648341774441,6.806261312721311 58.09648341774441,6.806261312721311 58.09119807315752,6.771773757366381 58.077984711690306,6.811567090468223 58.08459139242392,6.816872868215135 58.0647713502231,6.79299686835403 58.0647713502231,6.785038201733661 58.05420066104933,6.771773757366381 58.072699367103425,6.763815090746013 58.0647713502231,6.713410202150344 58.06873535866326,6.694839980036152 58.06609268636982,6.660352424681221 58.07666337554359,6.639129313693571 58.06609268636982,6.620559091579379 58.07402070325014,6.615253313832466 58.08855540086408,6.596683091718273 58.08459139242392,6.55688975861643 58.11101811535834,6.554236869742974 58.11894613223867,6.586071536224448 58.12555281297227,6.623211980452835 58.157264880493585,6.623211980452835 58.17840625884112,6.694839980036152 58.17576358654768,6.6709639801750455 58.190298284161614,6.700145757783064 58.202190309482106,6.742591979758362 58.2140823348026,6.7452448686318185 58.22201035168292,6.769120868492925 58.232581040856694,6.811567090468223 58.24315173003046,6.877889312304628 58.266935780671446,6.869930645684259 58.27089978911161,6.814219979341679 58.26165043608456,6.814219979341679 58.255043755350954,6.777079535113293 58.24447306617718,6.731980424264538 58.224653023976366,6.708104424403432 58.2206890155362,6.686881313415783 58.25107974691079,6.684228424542327 58.26297177223128,6.6709639801750455 58.255043755350954,6.660352424681221 58.27089978911161,6.6709639801750455 58.28147047828538,6.663005313554677 58.29336250360587,6.64708798031394 58.29336250360587,6.64708798031394 58.26561444452472,6.6683110913015895 58.24050905773702,6.649740869187396 58.23654504929686,6.525055092134956 58.247115738470626,6.519749314388044 58.25900776379112,6.493220425653481 58.25240108305751,6.477303092412745 58.255043755350954,6.461385759172008 58.269578452964886,6.456079981425095 58.26297177223128,6.41098087057634 58.266935780671446,6.381799092968322 58.27354246140505,6.4322039815639895 58.28543448672554,6.424245314943621 58.289398495165706,6.368534648601042 58.277506469845214,6.336699982119567 58.289398495165706,6.323435537752286 58.30129052048619,6.3526173153603045 58.3263959072739,6.315476871131918 58.30921853736652,6.26507198253625 58.319789226540294,6.259766204789338 58.342251941034554,6.249154649295513 58.322431898833734,6.169567983091828 58.33828793259439,6.100592872381967 58.36075064708865,6.100592872381967 58.37132133626242,6.068758205900493 58.37264267240914,6.063452428153581 58.384534697729634,6.0501879837863 58.37528534470258,6.023659095051738 58.38849870616979,6.015700428431369 58.40303340378373,6.005088872937545 58.41096142066406,6.023659095051738 58.41888943754438,6.013047539557913 58.429460126718155,5.99447731744372 58.41888943754438,5.986518650823352 58.47042154726651,5.93876665110114 58.47042154726651,5.8777502070116485 58.46381486653291,5.861832873770911 58.47174288341323,5.880403095885105 58.47570689185339,5.824692429542525 58.482313572587,5.787551985314138 58.49024158946733,5.782246207567226 58.5008122786411,5.7955106519345065 58.502133614787816,5.7928577630610505 58.51534697625503,5.768981763199945 58.52856033772224,5.726535541224646 58.53516701845585,5.70265954136354 58.53516701845585,5.649601763894417 58.55498706065667,5.6389902084005925 58.584056455884536,5.625725764033311 58.59330580891158,5.572667986564188 58.648801927073876,5.551444875576538 58.656729943954204,5.538180431209257 58.671264641568136,5.548791986703082 58.693727356062396,5.516957320221608 58.70958338982305,5.519610209095064 58.72015407899682,5.503692875854327 58.743938129637804,5.48777554261359 58.75186614651813,5.501039986980871 58.76375817183862,5.532874653462345 58.77829286945256,5.543486208956169 58.79679157550665,5.538180431209257 58.82057562614763,5.5567506533234505 58.83511032376157,5.559403542196907 58.84568101293534,5.543486208956169 58.85228769366894,5.570015097690732 58.87342907201648,5.601849764172206 58.87739308045664,5.596543986425293 58.89060644192386,5.575320875437644 58.898534458804185,5.575320875437644 58.91703316485828,5.607155541919118 58.92496118173861,5.572667986564188 58.93024652632549,5.559403542196907 58.940817215499266,5.580626653184556 58.96063725770008,5.607155541919118 58.9553519131132,5.623072875159855 58.940817215499266,5.625725764033311 58.91306915641812,5.61246131966603 58.90646247568451,5.644295986147505 58.898534458804185,5.641643097274049 58.903819803391066,5.660213319388242 58.91042648412468,5.684089319249347 58.928925190178774,5.66817198600861 58.940817215499266,5.646948875020961 58.93024652632549,5.6336844306536795 58.93288919861894,5.628378652906767 58.95270924081975,5.591238208678381 58.96988661072713,5.609808430792574 58.97517195531402,5.604502653045662 58.985742644487786,5.56470931994382 58.979135963754175,5.56470931994382 59.016133375862374,5.591238208678381 59.02009738430254,5.575320875437644 59.028025401182866,5.580626653184556 59.03595341806319,5.604502653045662 59.0240613927427,5.625725764033311 59.02009738430254,5.654907541641329 59.00952669512876,5.660213319388242 58.99763466980828,5.681436430375891 58.99763466980828,5.731841318971559 58.97517195531402,5.761023096579576 58.96988661072713,5.763675985453032 58.956673249259914,5.747758652212296 58.951387904673034,5.755717318832664 58.928925190178774,5.737147096718471 58.91439049256484,5.753064429959208 58.89589178651074,5.74510576333884 58.87210773586976,5.753064429959208 58.856251702109105,5.774287540946857 58.88399976119025,5.774287540946857 58.926282517885326,5.787551985314138 58.93949587935254,5.819386651795613 58.92496118173861,5.84856842940363 58.93024652632549,5.851221318277086 58.9553519131132,5.8697915403912795 58.965922602286966,5.893667540252386 58.96724393843369,5.898973317999298 58.95931592155336,5.933460873354228 58.94742389623287,5.936113762227684 58.9553519131132,5.975907095329527 58.9368532070591,5.981212873076439 58.928925190178774,5.965295539835703 58.918354501005005,5.967948428709159 58.90249846724435,5.99447731744372 58.89457045036402,6.010394650684457 58.90249846724435,6.042229317165932 58.89192777807058,6.0501879837863 58.89457045036402,6.121815983369617 58.85228769366894,6.135080427736898 58.856251702109105,6.150997760977635 58.84171700449517,6.17487376083874 58.83511032376157,6.185485316332565 58.84171700449517,6.238543093801688 58.84171700449517,6.2783364269035316 58.83775299605501,6.280989315776988 58.84568101293534,6.246501760422057 58.8496450213755,6.172220871965284 58.847002349082054,6.119163094496161 58.87342907201648,6.103245761255423 58.89457045036402,6.087328428014686 58.8998557949509,6.103245761255423 58.90646247568451,6.103245761255423 58.920997173298446,6.121815983369617 58.93024652632549,6.121815983369617 58.940817215499266,6.143039094357266 58.94874523237959,6.148344872104179 58.9553519131132,6.169567983091828 58.956673249259914,6.1934439829529335 58.971207946873854,6.222625760560952 58.97781462760746,6.257113315915882 58.993670661368114,6.283642204650444 59.00027734210172,6.302212426764637 58.99763466980828,6.368534648601042 59.00424135054188,6.5064848700207625 59.028025401182866,6.527707981008412 59.028025401182866,6.641782202567027 59.050488115677126,6.641782202567027 59.05709479641073,6.525055092134956 59.038596090356634,6.50117909227385 59.03991742650335,6.371187537474498 59.02274005659598,6.342005759866479 59.016133375862374,6.2677248714097065 59.01216936742221,6.201402649573302 58.98970665292795,6.14038620548381 58.956673249259914,6.100592872381967 58.940817215499266,6.097939983508511 58.926282517885326,6.079369761394318 58.918354501005005,6.074063983647406 58.903819803391066,6.047535094912844 58.928925190178774,6.0289648727986505 58.93024652632549,5.99447731744372 58.96724393843369,6.015700428431369 58.98970665292795,6.052840872659756 59.00027734210172,6.087328428014686 58.985742644487786,6.066105317027037 59.005562686688606,6.015700428431369 59.0240613927427,5.991824428570264 59.02009738430254,5.9467253177215085 59.02274005659598,5.914890651240035 59.050488115677126,5.909584873493122 59.06502281329106,5.896320429125842 59.06502281329106,5.885708873632017 59.08484285549188,5.9546839843418775 59.11523358686647,5.981212873076439 59.12184026760007,5.997130206317176 59.11523358686647,6.0395764282924755 59.11523358686647,6.068758205900493 59.131089620627115,6.092634205761598 59.1297682844804,6.089981316888142 59.13769630136073,6.111204427875792 59.14033897365417,6.161609316471459 59.136374965214,6.17487376083874 59.13769630136073,6.161609316471459 59.148266990534495,6.100592872381967 59.145624318241055,6.089981316888142 59.15223099897466,6.076716872520862 59.14430298209433,6.047535094912844 59.13769630136073,6.023659095051738 59.14430298209433,6.0501879837863 59.170729705028755,6.0501879837863 59.17601504961564,6.068758205900493 59.17865772190908,6.068758205900493 59.193192419523015,6.097939983508511 59.1984777641099,6.103245761255423 59.22094047860416,6.1165102056227045 59.213012461723835,6.14038620548381 59.23151116777793,6.177526649712196 59.235475176218095,6.17487376083874 59.24736720153859,6.219972871687496 59.26586590759268,6.2677248714097065 59.2671872437394,6.304865315638093 59.280400605206616,6.323435537752286 59.26982991603285,6.323435537752286 59.2856859497935,6.37649331522141 59.30154198355415,6.416286648323252 59.31211267272793,6.517096425514588 59.31607668116809,6.461385759172008 59.322683361901696,6.424245314943621 59.32400469804841,6.3446586487399355 59.31607668116809,6.328741315499199 59.300220647407436,6.212014205067127 59.27379392447301,6.188138205206021 59.26982991603285,6.153650649851091 59.25925922685908,6.14038620548381 59.27379392447301,6.119163094496161 59.2856859497935,6.1138573167492485 59.30154198355415,6.127121761116529 59.30814866428776,6.172220871965284 59.3041846558476,6.182832427459109 59.30814866428776,6.249154649295513 59.31211267272793,6.2677248714097065 59.29757797511399,6.26507198253625 59.322683361901696,6.246501760422057 59.33457538722219,6.235890204928232 59.34911008483612,6.222625760560952 59.35703810171645,6.214667093940583 59.34911008483612,6.235890204928232 59.327968706488576,6.227931538307864 59.322683361901696,6.1907910940794775 59.31607668116809,6.19609687182639 59.333254051075464,6.214667093940583 59.34118206795579,6.1907910940794775 59.34118206795579,6.17487376083874 59.31475534502137,6.135080427736898 59.31475534502137,6.100592872381967 59.322683361901696,6.100592872381967 59.353074093276284,6.121815983369617 59.36893012703694,6.111204427875792 59.36893012703694,6.082022650267774 59.34646741254268,6.087328428014686 59.33457538722219,6.079369761394318 59.327968706488576,6.0395764282924755 59.330611378782024,6.015700428431369 59.34118206795579,6.023659095051738 59.353074093276284,6.0395764282924755 59.36100211015661,6.047535094912844 59.375536807770544,6.063452428153581 59.38478616079759,6.076716872520862 59.38346482465087,6.089981316888142 59.39403551382464,6.14038620548381 59.40328486685169,6.135080427736898 59.41385555602546,6.177526649712196 59.420462236759064,6.201402649573302 59.440282278959884,6.214667093940583 59.440282278959884,6.209361316193671 59.41517689217218,6.251807538168969 59.468030338041025,6.246501760422057 59.47727969106808,6.251807538168969 59.4970997332689,6.2677248714097065 59.505027750149225,6.3526173153603045 59.51956244776316,6.392410648462147 59.52484779235004,6.405675092829428 59.53409714537709,6.4322039815639895 59.53806115381725,6.469344425792376 59.5473105068443,6.517096425514588 59.5473105068443,6.562195536363342 59.55391718757791,6.538319536502237 59.55788119601807,6.479955981286201 59.555238523724626,6.464038648045464 59.56052386831151,6.4322039815639895 59.555238523724626,6.392410648462147 59.54598917069758,6.368534648601042 59.54598917069758,6.357923093107217 59.53806115381725,6.32078264887883 59.527490464643485,6.2677248714097065 59.51956244776316,6.296906649017725 59.55788119601807,6.307518204511549 59.56448787675168,6.331394204372655 59.58166524665905,6.328741315499199 59.62262666720741,6.342005759866479 59.62659067564758,6.365881759727586 59.64376804555495,6.342005759866479 59.64905339014184,6.336699982119567 59.64376804555495,6.304865315638093 59.63848270096806,6.2862950935239 59.614698650327085,6.294253760144269 59.60412796115331,6.2862950935239 59.592235935832825,6.304865315638093 59.5909145996861,6.304865315638093 59.57637990207217,6.280989315776988 59.5658092128984,6.26507198253625 59.55127451528446,6.2677248714097065 59.53541848152381,6.249154649295513 59.51956244776316,6.201402649573302 59.49842106941561,6.198749760699846 59.482565035654964,6.214667093940583 59.47199434648119,6.182832427459109 59.452174304280376,6.158956427598003 59.42574758134595,6.121815983369617 59.417819564465624,6.119163094496161 59.40592753914513,6.08467553914123 59.409891547585296,6.052840872659756 59.40592753914513,6.044882206039388 59.395356849971364,6.015700428431369 59.40328486685169,6.018353317304825 59.37950081621071,5.99447731744372 59.37685814391726,5.973254206456071 59.35703810171645,5.957336873215334 59.34911008483612,5.941419539974596 59.358359437863164,5.93876665110114 59.37950081621071,5.917543540113491 59.39932085841153,5.909584873493122 59.429711589786116,5.922849317860403 59.43631827051972,5.914890651240035 59.44821029584021,5.930807984480772 59.452174304280376,5.93876665110114 59.44688895969349,5.970601317582615 59.4416036151066,5.997130206317176 59.44821029584021,6.013047539557913 59.44424628740005,6.0501879837863 59.45613831272054,6.158956427598003 59.47067301033447,6.1934439829529335 59.47463701877464,6.19609687182639 59.482565035654964,6.158956427598003 59.48652904409513,6.156303538724547 59.48124369950824,6.063452428153581 59.47199434648119,6.0501879837863 59.47727969106808,5.922849317860403 59.47199434648119,5.885708873632017 59.48124369950824,5.901626206872754 59.48652904409513,5.901626206872754 59.49445706097545,5.880403095885105 59.49445706097545,5.867138651517823 59.505027750149225,5.867138651517823 59.54202516225742,5.84856842940363 59.54334649840414,5.837956873909805 59.52088378390987,5.8140808740487 59.51956244776316,5.84856842940363 59.48652904409513,5.859179984897455 59.46670900189431,5.835303985036349 59.45613831272054,5.774287540946857 59.43631827051972,5.763675985453032 59.440282278959884,5.755717318832664 59.460102321160704,5.739799985591927 59.47463701877464,5.731841318971559 59.47463701877464,5.739799985591927 59.460102321160704,5.737147096718471 59.452174304280376,5.750411541085752 59.44424628740005,5.750411541085752 59.429711589786116,5.70265954136354 59.40724887529185,5.684089319249347 59.40592753914513,5.684089319249347 59.395356849971364,5.774287540946857 59.42442624519923,5.843262651656718 59.43631827051972,5.845915540530174 59.42178357290579,5.867138651517823 59.39403551382464,5.896320429125842 59.37950081621071,5.89101465137893 59.34911008483612,5.8724444292647355 59.33457538722219,5.8697915403912795 59.342503404102516,5.835303985036349 59.342503404102516,5.822039540669069 59.327968706488576,5.811427985175244 59.34646741254268,5.7955106519345065 59.34646741254268,5.798163540807963 59.32664737034186,5.787551985314138 59.322683361901696,5.771634652073401 59.33457538722219,5.755717318832664 59.327968706488576,5.74510576333884 59.342503404102516,5.747758652212296 59.327968706488576,5.726535541224646 59.31475534502137,5.692047985869715 59.300220647407436,5.684089319249347 59.30154198355415,5.660213319388242 59.2856859497935,5.660213319388242 59.26586590759268,5.644295986147505 59.26190189915252,5.6310315417802235 59.26982991603285,5.646948875020961 59.2856859497935,5.641643097274049 59.288328622086944,5.644295986147505 59.31871935346153,5.684089319249347 59.322683361901696,5.686742208122803 59.327968706488576,5.660213319388242 59.342503404102516,5.662866208261698 59.353074093276284,5.6389902084005925 59.38346482465087,5.617767097412942 59.45613831272054,5.609808430792574 59.47067301033447,5.61246131966603 59.490493052535285,5.6336844306536795 59.49313572482873,5.617767097412942 59.49842106941561,5.575320875437644 59.49842106941561,5.559403542196907 59.48917171638857,5.5567506533234505 59.47463701877464,5.538180431209257 59.47199434648119,5.530221764588889 59.44821029584021,5.516957320221608 59.44424628740005,5.463899542752484 59.460102321160704,5.463899542752484 59.432354262079556,5.4718582093728525 59.440282278959884,5.511651542474696 59.42839025363939,5.538180431209257 59.43631827051972,5.543486208956169 59.44821029584021,5.5567506533234505 59.45085296813365,5.5567506533234505 59.468030338041025,5.591238208678381 59.47463701877464,5.591238208678381 59.45613831272054,5.609808430792574 59.44821029584021,5.615114208539486 59.40724887529185,5.591238208678381 59.41385555602546,5.591238208678381 59.40328486685169,5.617767097412942 59.39932085841153,5.625725764033311 59.38346482465087,5.607155541919118 59.375536807770544,5.61246131966603 59.353074093276284,5.609808430792574 59.32664737034186,5.593891097551837 59.322683361901696,5.588585319804925 59.300220647407436,5.56470931994382 59.277757932913175,5.548791986703082 59.26982991603285,5.530221764588889 59.27643659676645,5.519610209095064 59.26982991603285,5.46655243162594 59.277757932913175,5.4692053204993964 59.29229263052711,5.461246653879028 59.32004068960825,5.46655243162594 59.31607668116809,5.48777554261359 59.32664737034186,5.482469764866678 59.333254051075464,5.463899542752484 59.322683361901696,5.458593765005572 59.327968706488576,5.4771639871197655 59.36364478245005,5.4798168759932215 59.3913928415312,5.463899542752484 59.3913928415312,5.463899542752484 59.36100211015661,5.445329320638291 59.33721805951563,5.458593765005572 59.293613966673824,5.426759098524098 59.293613966673824,5.413494654156817 59.28964995823367,5.3922715431691675 59.31475534502137,5.3922715431691675 59.342503404102516,5.381659987675343 59.372894135477104,5.3922715431691675 59.380822152357425,5.405535987536449 59.37685814391726,5.384312876548799 59.40328486685169,5.386965765422255 59.42178357290579,5.368395543308062 59.40724887529185,5.373701321054974 59.387428833091036,5.365742654434606 59.37685814391726,5.365742654434606 59.364966118596776,5.373701321054974 59.33853939566235,5.349825321193869 59.327968706488576,5.333907987953132 59.330611378782024,5.299420432598201 59.364966118596776,5.294114654851289 59.3913928415312,5.283503099357464 59.3913928415312,5.249015544002534 59.432354262079556,5.2384039885087095 59.432354262079556,5.246362655129078 59.44424628740005,5.23044532188834 59.45613831272054,5.249015544002534 59.468030338041025,5.227792433014884 59.468030338041025,5.222486655267972 59.50106374170906,5.243709766255622 59.50106374170906,5.27289154386364 59.48652904409513,5.264932877243271 59.4786010272148,5.302073321471657 59.4786010272148,5.312684876965482 59.49445706097545,5.280850210484008 59.49313572482873,5.227792433014884 59.51691977546972,5.256974210622903 59.51691977546972,5.278197321610552 59.50899175858939,5.278197321610552 59.52352645620332,5.2410568773821655 59.52352645620332,5.2410568773821655 59.54598917069758,5.280850210484008 59.56184520445824,5.28615598823092 59.58827192739266,5.323296432459307 59.60016395271315,5.3153377658389385 59.61866265876725,5.325949321332763 59.62659067564758,5.373701321054974 59.63319735638118,5.371048432181518 59.64508938170167,5.408188876409905 59.653017398582,5.410841765283361 59.61866265876725,5.421453320777186 59.62659067564758,5.440023542891379 59.614698650327085,5.429411987397554 59.61205597803364,5.429411987397554 59.58166524665905,5.445329320638291 59.58166524665905,5.442676431764835 59.60677063344676,5.461246653879028 59.608091969593474,5.4771639871197655 59.62262666720741,5.463899542752484 59.63319735638118,5.41880043190373 59.65566007087544,5.445329320638291 59.66358808775577,5.447982209511747 59.6715161046361,5.429411987397554 59.679444121516426,5.450635098385203 59.690014810690194,5.461246653879028 59.704549508304126,5.4718582093728525 59.69133614683691,5.4798168759932215 59.709834852891014,5.498387098107415 59.71379886133118,5.527568875715433 59.732297567385274,5.535527542335801 59.73097623123855,5.519610209095064 59.71644153362462,5.540833320082713 59.709834852891014,5.535527542335801 59.6715161046361,5.52226309796852 59.659624079315606,5.532874653462345 59.64905339014184,5.511651542474696 59.6345186925279,5.527568875715433 59.62526933950085,5.519610209095064 59.61866265876725,5.519610209095064 59.585629255099214,5.538180431209257 59.569773221338565,5.514304431348152 59.55788119601807,5.506345764727783 59.5473105068443,5.493081320360503 59.55788119601807,5.503692875854327 59.54202516225742,5.506345764727783 59.52484779235004,5.498387098107415 59.51956244776316,5.4692053204993964 59.52352645620332,5.461246653879028 59.54334649840414,5.447982209511747 59.53938248996398,5.455940876132116 59.52352645620332,5.445329320638291 59.51295576702955,5.461246653879028 59.48124369950824,5.46655243162594 59.48917171638857,5.463899542752484 59.51163443088283,5.493081320360503 59.50899175858939,5.514304431348152 59.51691977546972,5.52226309796852 59.53541848152381,5.548791986703082 59.52484779235004,5.540833320082713 59.54202516225742,5.567362208817276 59.55788119601807,5.56470931994382 59.58166524665905,5.585932430931469 59.58827192739266,5.5540977644499945 59.60016395271315,5.5567506533234505 59.61073464188692,5.5540977644499945 59.62923334794102,5.559403542196907 59.63055468408774,5.5540977644499945 59.647732053995114,5.56470931994382 59.66358808775577,5.591238208678381 59.68605080225003,5.609808430792574 59.68340812995659,5.6336844306536795 59.667552096195934,5.665519097135154 59.66358808775577,5.678783541502435 59.667552096195934,5.737147096718471 59.653017398582,5.771634652073401 59.64905339014184,5.790204874187594 59.62130533106069,5.774287540946857 59.608091969593474,5.737147096718471 59.59884261656643,5.800816429681419 59.60280662500659,5.822039540669069 59.61073464188692,5.800816429681419 59.61866265876725,5.7928577630610505 59.64112537326151,5.859179984897455 59.64905339014184,5.893667540252386 59.64112537326151,5.920196428986947 59.64376804555495,5.896320429125842 59.64905339014184,5.930807984480772 59.6715161046361,5.917543540113491 59.67548011307626,5.867138651517823 59.659624079315606,5.859179984897455 59.659624079315606,5.819386651795613 59.64905339014184,5.7928577630610505 59.64905339014184,5.784899096440682 59.66358808775577,5.782246207567226 59.68340812995659,5.808775096301788 59.69133614683691,5.8140808740487 59.701906836010686,5.851221318277086 59.70851351674429,5.867138651517823 59.71644153362462,5.856527096023999 59.724369550504946,5.909584873493122 59.7402255842656,5.928155095607316 59.732297567385274,5.93876665110114 59.734940239678714,5.933460873354228 59.744189592705766,5.9467253177215085 59.75079627343937,5.930807984480772 59.757402954172974,5.936113762227684 59.769294979493466,5.95998976208879 59.754760281879534,5.957336873215334 59.744189592705766,5.981212873076439 59.732297567385274,6.007741761811001 59.7402255842656,6.044882206039388 59.744189592705766,6.087328428014686 59.73626157582544,6.1165102056227045 59.746832264999206,6.14038620548381 59.78118700481396,6.177526649712196 59.789115021694286,6.212014205067127 59.80364971930822,6.227931538307864 59.819505753068874,6.249154649295513 59.83007644224264,6.2783364269035316 59.83007644224264,6.315476871131918 59.83800445912297,6.3552702042337605 59.853860492883626,6.365881759727586 59.871037862791,6.336699982119567 59.853860492883626,6.288947982397356 59.841968467563134,6.2703777602831625 59.841968467563134,6.227931538307864 59.83404045068281,6.188138205206021 59.811577736188546,6.158956427598003 59.80364971930822,6.148344872104179 59.791757693987726,6.1138573167492485 59.77854433252051,6.092634205761598 59.78515101325412,6.08467553914123 59.7587242903197,6.063452428153581 59.76136696261314,6.052840872659756 59.754760281879534,6.015700428431369 59.75211760958609,5.975907095329527 59.76268829875986,5.957336873215334 59.789115021694286,5.978559984202983 59.804971055454935,5.989171539696808 59.82611243380248,5.978559984202983 59.84857514829674,5.99447731744372 59.85782450132379,5.965295539835703 59.853860492883626,5.970601317582615 59.83404045068281,5.957336873215334 59.811577736188546,5.936113762227684 59.79572170242789,5.909584873493122 59.791757693987726,5.883055984758561 59.769294979493466,5.827345318415981 59.789115021694286,5.798163540807963 59.819505753068874,5.75837020770612 59.83404045068281,5.710618207983909 59.82346976150904,5.7159239857308215 59.83007644224264,5.678783541502435 59.83800445912297,5.678783541502435 59.84989648444346,5.700006652490084 59.8459324760033,5.689395096996259 59.853860492883626,5.739799985591927 59.864431182057395,5.750411541085752 59.87632320737789,5.755717318832664 59.86575251820411,5.774287540946857 59.88292988811149,5.763675985453032 59.89085790499182,5.771634652073401 59.91067794719264,5.7928577630610505 59.92521264480657,5.819386651795613 59.931819325540175,5.851221318277086 59.929176653246735,5.8697915403912795 59.94371135086067,5.920196428986947 59.95296070388771,5.9520310954684215 59.945032687007384,5.991824428570264 59.95296070388771,5.997130206317176 59.974102082235255,6.010394650684457 59.97806609067542,5.989171539696808 59.98863677984919,5.981212873076439 60.00052880516968,5.997130206317176 60.02431285581066,6.018353317304825 60.038847553424596,6.015700428431369 60.05073957874509,6.0369235394190195 60.06527427635902,6.087328428014686 60.083772982413116,6.1138573167492485 60.09566500773361,6.135080427736898 60.09302233544016,6.185485316332565 60.103593024613936,6.212014205067127 60.103593024613936,6.235890204928232 60.11548504993442,6.2677248714097065 60.11812772222787,6.315476871131918 60.126055739108196,6.310171093385005 60.1326624198418,6.283642204650444 60.1326624198418,6.283642204650444 60.14983978974917,6.296906649017725 60.16437448736311,6.2783364269035316 60.16437448736311,6.26507198253625 60.15248246204262,6.251807538168969 60.133983755988524,6.198749760699846 60.114163713787704,6.169567983091828 60.11152104149426,6.148344872104179 60.1075570330541,6.135080427736898 60.11019970534754,6.156303538724547 60.11548504993442,6.164262205344915 60.126055739108196,6.124468872243073 60.14191177286885,6.121815983369617 60.15512513433606,6.092634205761598 60.17230250424343,6.092634205761598 60.18287319341721,6.082022650267774 60.190801210297536,6.1058986501288794 60.201371899471305,6.121815983369617 60.2198706055254,6.153650649851091 60.21722793323196,6.156303538724547 60.2132639247918,6.19609687182639 60.22515595011228,6.1934439829529335 60.23704797543277,6.206708427320215 60.246297328459825,6.201402649573302 60.25818935378032,6.233237316054776 60.25818935378032,6.233237316054776 60.27404538754097,6.249154649295513 60.27668805983441,6.238543093801688 60.288580085154905,6.225278649434408 60.29254409359507,6.273030649156619 60.307078791209,6.283642204650444 60.30443611891556,6.323435537752286 60.31500680808933,6.3446586487399355 60.33746952258359,6.37649331522141 60.34143353102375,6.3552702042337605 60.34936154790408,6.3552702042337605 60.3691815901049,6.395063537335603 60.36786025395818,6.453427092551639 60.37182426239834,6.493220425653481 60.38371628771883,6.5117906477676755 60.41014301065326,6.5224022032615 60.4127856829467,6.559542647489886 60.43656973358768,6.578112869604079 60.43656973358768,6.623211980452835 60.42599904441391,6.6683110913015895 60.408821674506534,6.6683110913015895 60.40221499377293,6.641782202567027 60.386358960012274,6.641782202567027 60.37314559854506,6.625864869326291 60.35728956478441,6.625864869326291 60.33746952258359,6.607294647212098 60.32954150570326,6.61260042495901 60.308400127355725,6.5887244250979045 60.27404538754097,6.578112869604079 60.27008137910081,6.562195536363342 60.23704797543277,6.572807091857167 60.223834613965565,6.543625314249149 60.17230250424343,6.548931091996062 60.15248246204262,6.540972425375693 60.14455444516229,6.527707981008412 60.07716630167951,6.540972425375693 60.069238284799184,6.551583980869518 60.07980897397295,6.543625314249149 60.09566500773361,6.55688975861643 60.11019970534754,6.559542647489886 60.1326624198418,6.572807091857167 60.14191177286885,6.572807091857167 60.170981168096716,6.599335980591729 60.20533590791147,6.599335980591729 60.223834613965565,6.620559091579379 60.23704797543277,6.615253313832466 60.25158267304671,6.623211980452835 60.25951068992703,6.615253313832466 60.27668805983441,6.633823535946659 60.29254409359507,6.657699535807765 60.32293482496966,6.652393758060852 60.33746952258359,6.684228424542327 60.386358960012274,6.708104424403432 60.37314559854506,6.724021757644169 60.37710960698522,6.705451535529976 60.398250985332766,6.734633313137994 60.406179002213094,6.755856424125644 60.43260572514752,6.774426646239837 60.433927061294234,6.779732423986749 60.443176414321286,6.806261312721311 60.451104431201614,6.814219979341679 60.46035378422866,6.840748868076242 60.4748884818426,6.888500867798452 60.46696046496227,6.941558645267576 60.470924473402434,6.9919635338632435 60.482816498722926,7.031756866965086 60.47753115413604,7.058285755699648 60.462996456522106,7.079508866687297 60.47885249028276,7.135219533029877 60.496029860190134,7.132566644156421 60.50131520477702,7.076855977813841 60.485459171016366,7.060938644573104 60.48678050716308,7.015839533724349 60.50131520477702,6.986657756116331 60.50395787707046,6.957475978508313 60.4999938686303,6.941558645267576 60.48942317945653,6.9123768676595585 60.496029860190134,6.949517311887945 60.51981391083112,6.944211534141032 60.52642059156472,7.034409755838542 60.583238045873735,7.015839533724349 60.5872020543139,6.965434645128681 60.558132659086034,6.928294200900295 60.53170593615161,6.922988423153383 60.558132659086034,6.944211534141032 60.566060675966355,6.944211534141032 60.57398869284668,6.9070710899126455 60.56473933981964,6.9123768676595585 60.55681132293931,6.9070710899126455 60.53434860844505,6.917682645406471 60.51981391083112,6.888500867798452 60.493387187896694,6.875236423431172 60.482816498722926,6.864624867937347 60.48942317945653,6.832790201455873 60.48942317945653,6.79299686835403 60.4748884818426,6.755856424125644 60.46960313725571,6.7478977575052745 60.45506843964178,6.705451535529976 60.440533742027846,6.70279864665652 60.42996305285407,6.6683110913015895 60.43260572514752,6.660352424681221 60.44449775046801,6.633823535946659 60.448461758908174,6.631170647073203 60.462996456522106,6.663005313554677 60.482816498722926,6.692187091162696 60.493387187896694,6.718715979897257 60.51981391083112,6.700145757783064 60.51981391083112,6.673616869048502 60.49735119633686,6.657699535807765 60.496029860190134,6.636476424820115 60.47885249028276,6.609947536085554 60.470924473402434,6.599335980591729 60.45903244808194,6.559542647489886 60.45506843964178,6.527707981008412 60.456389775788494,6.498526203400394 60.44449775046801,6.4322039815639895 60.428641716707354,6.41098087057634 60.43260572514752,6.395063537335603 60.41410701909342,6.357923093107217 60.4127856829467,6.342005759866479 60.39957232147948,6.296906649017725 60.39164430459916,6.273030649156619 60.3942869768926,6.235890204928232 60.42599904441391,6.243848871548601 60.440533742027846,6.214667093940583 60.470924473402434,6.201402649573302 60.465639128815546,6.222625760560952 60.440533742027846,6.227931538307864 60.418071027533585,6.2783364269035316 60.38371628771883,6.249154649295513 60.3691815901049,6.23058442718132 60.37975227927867,6.198749760699846 60.386358960012274,6.201402649573302 60.3691815901049,6.172220871965284 60.36389624551801,6.14038620548381 60.37182426239834,6.177526649712196 60.346718875610634,6.212014205067127 60.34539753946392,6.219972871687496 60.32954150570326,6.177526649712196 60.32029215267621,6.164262205344915 60.31236413579589,6.17487376083874 60.28461607671474,6.19609687182639 60.28065206827458,6.161609316471459 60.25554668148688,6.153650649851091 60.24233332001966,6.137733316610354 60.25158267304671,6.087328428014686 60.24761866460655,6.047535094912844 60.26215336222048,6.0316177616721065 60.27404538754097,6.013047539557913 60.27008137910081,6.015700428431369 60.25554668148688,6.005088872937545 60.25026133689999,6.005088872937545 60.229119958552445,5.965295539835703 60.2132639247918,5.957336873215334 60.18683720185737,5.9520310954684215 60.1762665126836,5.9546839843418775 60.16437448736311,5.93876665110114 60.15248246204262,5.920196428986947 60.14983978974917,5.922849317860403 60.16437448736311,5.901626206872754 60.16041047892295,5.901626206872754 60.14455444516229,5.896320429125842 60.133983755988524,5.909584873493122 60.114163713787704,5.920196428986947 60.07980897397295,5.914890651240035 60.05866759562541,5.920196428986947 60.061310267918856,5.909584873493122 60.03091953654427,5.896320429125842 60.01506350278361,5.867138651517823 60.001850141316396,5.867138651517823 59.993922124436075,5.824692429542525 59.98203009911558,5.811427985175244 60.00052880516968,5.829998207289437 60.016384838930335,5.800816429681419 60.00845682205001,5.776940429820313 59.979387426822136,5.761023096579576 59.97806609067542,5.755717318832664 60.009778158196724,5.739799985591927 60.00052880516968,5.726535541224646 60.001850141316396,5.721229763477734 60.026955528104104,5.7132710968573654 60.04677557030492,5.7159239857308215 60.071880957092624,5.721229763477734 60.07584496553279,5.753064429959208 60.05734625947869,5.750411541085752 60.066595612505736,5.782246207567226 60.066595612505736,5.7928577630610505 60.05073957874509,5.819386651795613 60.07716630167951,5.837956873909805 60.091700999293444,5.829998207289437 60.091700999293444,5.800816429681419 60.07716630167951,5.7928577630610505 60.091700999293444,5.782246207567226 60.07584496553279,5.755717318832664 60.07320229323935,5.734494207845015 60.09566500773361,5.74510576333884 60.106235696907376,5.72388265235119 60.10227168846721,5.737147096718471 60.12209173066803,5.755717318832664 60.1326624198418,5.72388265235119 60.15512513433606,5.721229763477734 60.17230250424343,5.763675985453032 60.18287319341721,5.75837020770612 60.18947987415081,5.739799985591927 60.18287319341721,5.70265954136354 60.178909184977044,5.697353763616628 60.190801210297536,5.684089319249347 60.16041047892295,5.646948875020961 60.148518453602456,5.609808430792574 60.14455444516229,5.572667986564188 60.15248246204262,5.591238208678381 60.178909184977044,5.604502653045662 60.18551586571065,5.591238208678381 60.20533590791147,5.623072875159855 60.20269323561802,5.665519097135154 60.229119958552445,5.726535541224646 60.23176263084589,5.750411541085752 60.23704797543277,5.737147096718471 60.24761866460655,5.721229763477734 60.243654656166385,5.662866208261698 60.243654656166385,5.623072875159855 60.23572663928606,5.665519097135154 60.266117370660645,5.66817198600861 60.27800939598114,5.660213319388242 60.281973404421294,5.628378652906767 60.25554668148688,5.596543986425293 60.23572663928606,5.596543986425293 60.25026133689999,5.585932430931469 60.25158267304671,5.604502653045662 60.2634746983672,5.6310315417802235 60.27008137910081,5.6336844306536795 60.27800939598114,5.662866208261698 60.3004721104754,5.649601763894417 60.30443611891556,5.654907541641329 60.33482685029015,5.684089319249347 60.34539753946392,5.697353763616628 60.3691815901049,5.74510576333884 60.3691815901049,5.768981763199945 60.39032296845244,5.755717318832664 60.398250985332766,5.739799985591927 60.39164430459916,5.721229763477734 60.403536329919646,5.7132710968573654 60.39560831303932,5.7185768746042775 60.37975227927867,5.686742208122803 60.37314559854506,5.676130652628979 60.36389624551801,5.665519097135154 60.34539753946392,5.652254652767873 60.34275486717047,5.660213319388242 60.37182426239834,5.644295986147505 60.37314559854506,5.641643097274049 60.34275486717047,5.623072875159855 60.3255774972631,5.628378652906767 60.32293482496966,5.623072875159855 60.293865429741786,5.61246131966603 60.28593741286146,5.559403542196907 60.25818935378032,5.575320875437644 60.243654656166385,5.5567506533234505 60.223834613965565,5.535527542335801 60.206657244058185,5.543486208956169 60.206657244058185,5.527568875715433 60.1947652187377,5.501039986980871 60.190801210297536,5.46655243162594 60.18287319341721,5.450635098385203 60.16701715965655,5.463899542752484 60.16437448736311,5.445329320638291 60.133983755988524,5.440023542891379 60.13001974754836,5.426759098524098 60.14455444516229,5.426759098524098 60.16041047892295,5.3922715431691675 60.14983978974917,5.381659987675343 60.13794776442869,5.352478210067325 60.1326624198418,5.360436876687693 60.14455444516229,5.405535987536449 60.16041047892295,5.3949244320426235 60.178909184977044,5.371048432181518 60.17494517653688,5.331255099079676 60.19344388259098,5.336560876826588 60.20533590791147,5.352478210067325 60.20929991635163,5.360436876687693 60.201371899471305,5.384312876548799 60.21722793323196,5.355131098940781 60.229119958552445,5.339213765700044 60.22779862240573,5.3153377658389385 60.21722793323196,5.28615598823092 60.221191941672124,5.280850210484008 60.20533590791147,5.264932877243271 60.201371899471305,5.243709766255622 60.20929991635163,5.246362655129078 60.221191941672124,5.262279988369815 60.22779862240573,5.280850210484008 60.22779862240573,5.28615598823092 60.23704797543277,5.333907987953132 60.25818935378032,5.325949321332763 60.27008137910081,5.299420432598201 60.25818935378032,5.280850210484008 60.27008137910081,5.262279988369815 60.266117370660645,5.275544432737096 60.25818935378032,5.262279988369815 60.24233332001966,5.235751099635253 60.246297328459825,5.2384039885087095 60.26215336222048,5.206569322027235 60.27404538754097,5.203916433153779 60.288580085154905,5.209222210900691 60.31500680808933,5.246362655129078 60.32029215267621,5.296767543724745 60.31500680808933,5.299420432598201 60.30443611891556,5.325949321332763 60.31236413579589,5.325949321332763 60.32689883340982,5.339213765700044 60.32954150570326,5.333907987953132 60.34275486717047,5.3179906547123945 60.32954150570326,5.28615598823092 60.32293482496966,5.278197321610552 60.32689883340982,5.25166843287599 60.32293482496966,5.2384039885087095 60.34143353102375,5.235751099635253 60.35993223707785,5.214527988647603 60.33482685029015,5.203916433153779 60.32689883340982,5.180040433292673 60.34143353102375,5.203916433153779 60.353325556344245,5.193304877659954 60.35993223707785,5.174734655545761 60.353325556344245,5.172081766672305 60.37182426239834,5.219833766394516 60.39164430459916,5.2410568773821655 60.398250985332766,5.259627099496359 60.39032296845244,5.264932877243271 60.3942869768926,5.310031988092026 60.38371628771883,5.302073321471657 60.398250985332766,5.3179906547123945 60.40221499377293,5.3179906547123945 60.41014301065326,5.280850210484008 60.43260572514752,5.278197321610552 60.44714042276145,5.3153377658389385 60.43656973358768,5.3179906547123945 60.443176414321286,5.267585766116727 60.45903244808194,5.278197321610552 60.46696046496227,5.25166843287599 60.4748884818426,5.259627099496359 60.50395787707046,5.299420432598201 60.52642059156472,5.336560876826588 60.51981391083112,5.371048432181518 60.507921885510626,5.39757732091608 60.48942317945653,5.455940876132116 60.443176414321286,5.461246653879028 60.45242576734833,5.511651542474696 60.42203503597375,5.5567506533234505 60.42203503597375,5.5779737643111 60.428641716707354,5.623072875159855 60.42996305285407,5.644295986147505 60.45506843964178,5.665519097135154 60.46035378422866,5.692047985869715 60.451104431201614,5.734494207845015 60.45506843964178,5.739799985591927 60.470924473402434,5.734494207845015 60.47885249028276,5.7185768746042775 60.53963395303194,5.737147096718471 60.55284731449915,5.721229763477734 60.558132659086034,5.737147096718471 60.59645140734095,5.737147096718471 60.65723287009012,5.768981763199945 60.65987554238357,5.7955106519345065 60.65326886164996,5.800816429681419 60.64005550018275,5.829998207289437 60.61362877724832,5.880403095885105 60.62155679412865,5.8724444292647355 60.630806147155695,5.896320429125842 60.625520802568815,5.9546839843418775 60.64005550018275,5.9467253177215085 60.645340844769635,5.901626206872754 60.63609149174258,5.867138651517823 60.63741282788931,5.837956873909805 60.62155679412865,5.800816429681419 60.65987554238357,5.768981763199945 60.667803559263895,5.739799985591927 60.66648222311717,5.739799985591927 60.68233825687783,5.774287540946857 60.70480097137209,5.7955106519345065 60.72858502201307,5.7928577630610505 60.735191702746675,5.771634652073401 60.72065700513274,5.753064429959208 60.70083696293192,5.686742208122803 60.70480097137209,5.676130652628979 60.70083696293192,5.665519097135154 60.72065700513274,5.70265954136354 60.74444105577372,5.70265954136354 60.75369040880077,5.721229763477734 60.755011744947495,5.763675985453032 60.780117131735196,5.774287540946857 60.799937173936016,5.800816429681419 60.81182919925651,5.790204874187594 60.81579320769667,5.768981763199945 60.807865190816344,5.737147096718471 60.76954644256143,5.70265954136354 60.765582434121264,5.662866208261698 60.72726368586635,5.654907541641329 60.73122769430651,5.607155541919118 60.70480097137209,5.575320875437644 60.69687295449176,5.551444875576538 60.70083696293192,5.567362208817276 60.670446231557335,5.575320875437644 60.65987554238357,5.575320875437644 60.64137683632947,5.540833320082713 60.625520802568815,5.519610209095064 60.62948481100898,5.498387098107415 60.62948481100898,5.4771639871197655 60.62155679412865,5.463899542752484 60.60702209651472,5.426759098524098 60.59513007119423,5.3922715431691675 60.603058088074555,5.408188876409905 60.58455938202046,5.3922715431691675 60.58455938202046,5.360436876687693 60.59909407963439,5.368395543308062 60.580595373580294,5.386965765422255 60.57002468440652,5.37635420992843 60.56473933981964,5.336560876826588 60.5620966675262,5.312684876965482 60.55416865064587,5.296767543724745 60.54227662532538,5.278197321610552 60.53963395303194,5.275544432737096 60.55284731449915,5.235751099635253 60.5620966675262,5.227792433014884 60.5872020543139,5.201263544280323 60.61759278568849,5.206569322027235 60.62155679412865,5.172081766672305 60.63344881944914,5.116371100329725 60.66119687853028,5.116371100329725 60.67573157614422,5.12698265582355 60.67837424843766,5.174734655545761 60.66648222311717,5.19595776653341 60.6559115339434,5.209222210900691 60.64005550018275,5.246362655129078 60.61891412183521,5.264932877243271 60.61891412183521,5.227792433014884 60.64401950862291,5.227792433014884 60.6559115339434,5.243709766255622 60.65987554238357,5.1057595448359 60.71669299669258,5.129635544697006 60.71405032439913,5.129635544697006 60.72462101357291,5.190651988786498 60.69819429063848,5.166775988925393 60.72462101357291,5.206569322027235 60.71669299669258,5.209222210900691 60.72462101357291,5.148205766811199 60.732549030453235,5.1057595448359 60.72858502201307,5.063313322860601 60.75104773650733,5.044743100746408 60.777474459441756,4.989032434403828 60.799937173936016,4.986379545530372 60.79200915705569,4.965156434542723 60.79597316549585,4.949239101301986 60.807865190816344,4.970462212289635 60.807865190816344,4.989032434403828 60.81843587999011,5.023519989758759 60.81447187154995,5.012908434264934 60.822399888430276,5.042090211872952 60.81579320769667,5.039437322999496 60.810507863109784,5.060660433987145 60.80125851008273,5.0818835449747946 60.780117131735196,5.1057595448359 60.76293976182782,5.087189322721707 60.78936648476225,5.100453767088988 60.78936648476225,5.129635544697006 60.76690377026799,5.121676878076637 60.78143846788192,5.1561644334315675 60.77615312329503,5.172081766672305 60.76293976182782,5.246362655129078 60.73915571118684,5.2410568773821655 60.74708372806717,5.262279988369815 60.74708372806717,5.278197321610552 60.73915571118684,5.278197321610552 60.73122769430651,5.294114654851289 60.735191702746675,5.3179906547123945 60.73122769430651,5.349825321193869 60.70612230751881,5.349825321193869 60.69819429063848,5.331255099079676 60.69687295449176,5.355131098940781 60.667803559263895,5.357783987814237 60.65326886164996,5.3922715431691675 60.63741282788931,5.39757732091608 60.64005550018275,5.373701321054974 60.6559115339434,5.357783987814237 60.67969558458438,5.381659987675343 60.67176756770406,5.445329320638291 60.63344881944914,5.463899542752484 60.64137683632947,5.386965765422255 60.67969558458438,5.389618654295711 60.69819429063848,5.410841765283361 60.69423028219832,5.440023542891379 60.67176756770406,5.463899542752484 60.65723287009012,5.4692053204993964 60.67176756770406,5.445329320638291 60.68233825687783,5.445329320638291 60.690266273758155,5.424106209650642 60.70215829907865,5.447982209511747 60.70612230751881,5.450635098385203 60.71669299669258,5.41880043190373 60.70876497981225,5.37635420992843 60.732549030453235,5.386965765422255 60.74972640036061,5.368395543308062 60.73915571118684,5.347172432320413 60.74444105577372,5.352478210067325 60.765582434121264,5.339213765700044 60.765582434121264,5.323296432459307 60.74972640036061,5.296767543724745 60.75104773650733,5.267585766116727 60.76293976182782,5.264932877243271 60.76954644256143,5.299420432598201 60.799937173936016,5.3179906547123945 60.799937173936016,5.331255099079676 60.81579320769667,5.357783987814237 60.81843587999011,5.37635420992843 60.81447187154995,5.355131098940781 60.83429191375077,5.352478210067325 60.84618393907126,5.368395543308062 60.864682645125356,5.41880043190373 60.864682645125356,5.4692053204993964 60.875253334299124,5.493081320360503 60.872610662005684,5.511651542474696 60.85411195595158,5.538180431209257 60.86864665356552,5.585932430931469 60.86864665356552,5.591238208678381 60.872610662005684,5.570015097690732 60.87657467044585,5.519610209095064 60.872610662005684,5.485122653740134 60.88450268732617,5.530221764588889 60.91357208255404,5.519610209095064 60.91489341870076,5.463899542752484 60.887145359619616,5.405535987536449 60.87657467044585,5.368395543308062 60.87657467044585,5.3418666545735 60.867325317418796,5.336560876826588 60.82768523301716,5.310031988092026 60.830327905310604,5.312684876965482 60.81579320769667,5.280850210484008 60.81182919925651,5.283503099357464 60.823721224577,5.262279988369815 60.832970577604044,5.214527988647603 60.823721224577,5.209222210900691 60.832970577604044,5.214527988647603 60.85675462824503,5.23044532188834 60.864682645125356,5.203916433153779 60.864682645125356,5.201263544280323 60.830327905310604,5.172081766672305 60.81182919925651,5.1535115445581114 60.81579320769667,5.1535115445581114 60.83429191375077,5.169428877798849 60.842219930631096,5.137594211317374 60.83825592219093,5.116371100329725 60.82768523301716,5.100453767088988 60.830327905310604,5.063313322860601 60.842219930631096,5.058007545113689 60.872610662005684,5.031478656379127 60.895073376499944,5.03678443412604 60.929428116314696,5.020867100885303 60.929428116314696,5.004949767644566 60.951890830808956,5.007602656518022 60.96642552842289,5.039437322999496 60.962461519982725,5.044743100746408 60.95849751154256,5.119023989203181 60.95849751154256,5.116371100329725 60.91489341870076,5.113718211456269 60.89903738494011,5.116371100329725 60.87657467044585,5.134941322443918 60.87921734273929,5.12698265582355 60.89375204035322,5.129635544697006 60.92810678016797,5.134941322443918 60.939998805488464,5.132288433570462 60.962461519982725,5.1535115445581114 60.96642552842289,5.209222210900691 60.962461519982725,5.267585766116727 60.97038953686305,5.3179906547123945 60.99020957906387,5.299420432598201 60.99020957906387,5.246362655129078 60.97038953686305,5.190651988786498 60.96642552842289,5.172081766672305 60.98888824291715,5.185346211039586 60.99285225135731,5.185346211039586 61.007386948971245,5.1641231000519365 60.99020957906387,5.1641231000519365 60.97435354530322,5.116371100329725 60.96378285612944,5.087189322721707 60.97435354530322,5.087189322721707 60.982281562183545,5.042090211872952 60.97831755374338,5.026172878632215 61.01135095741141,5.042090211872952 61.0166363019983,5.026172878632215 61.02456431887862,5.047395989619864 61.02852832731878,5.023519989758759 61.03117099961223,5.044743100746408 61.049669705666325,5.042090211872952 61.06024039484009,5.068619100607513 61.06420440328026,5.0818835449747946 61.069489747867145,5.14024710019083 61.072132420160585,5.1561644334315675 61.08138177318763,5.166775988925393 61.069489747867145,5.185346211039586 61.069489747867145,5.203916433153779 61.077417764747466,5.23044532188834 61.06552573942698,5.294114654851289 61.06552573942698,5.296767543724745 61.047027033372885,5.325949321332763 61.03909901649256,5.3179906547123945 61.03117099961223,5.360436876687693 61.03381367190567,5.408188876409905 61.0232429827319,5.421453320777186 61.027206991172065,5.434717765144466 61.0232429827319,5.463899542752484 61.03117099961223,5.458593765005572 61.01531496585157,5.46655243162594 61.00870828511797,5.4718582093728525 60.98888824291715,5.482469764866678 60.98624557062371,5.482469764866678 61.00870828511797,5.493081320360503 61.01927897429174,5.4798168759932215 61.047027033372885,5.503692875854327 61.05363371410649,5.519610209095064 61.06552573942698,5.559403542196907 61.06420440328026,5.609808430792574 61.08006043704091,5.660213319388242 61.05759772254665,5.681436430375891 61.06024039484009,5.617767097412942 61.085345781627794,5.6389902084005925 61.09988047924173,5.66817198600861 61.10648715997534,5.665519097135154 61.09591647080157,5.731841318971559 61.09855914309501,5.771634652073401 61.107808496122054,5.774287540946857 61.11837918529583,5.800816429681419 61.12630720217616,5.822039540669069 61.11837918529583,5.819386651795613 61.08402444548108,5.798163540807963 61.072132420160585,5.7928577630610505 61.05099104181304,5.808775096301788 61.049669705666325,5.811427985175244 61.069489747867145,5.832651096162893 61.077417764747466,5.845915540530174 61.09591647080157,5.8724444292647355 61.091952462361405,5.880403095885105 61.09988047924173,5.851221318277086 61.1104511684155,5.885708873632017 61.11837918529583,5.89101465137893 61.1289498744696,5.989171539696808 61.1289498744696,6.042229317165932 61.10648715997534,6.060799539280125 61.114415176855665,6.08467553914123 61.10648715997534,6.132427538863442 61.11837918529583,6.188138205206021 61.114415176855665,6.214667093940583 61.09988047924173,6.273030649156619 61.09988047924173,6.323435537752286 61.08006043704091,6.299559537891181 61.04570569722616,6.26507198253625 61.03909901649256,6.2862950935239 61.03381367190567,6.310171093385005 61.041741688786,6.315476871131918 61.049669705666325,6.342005759866479 61.072132420160585,6.41098087057634 61.069489747867145,6.41098087057634 61.05363371410649,6.381799092968322 61.027206991172065,6.381799092968322 61.0166363019983,6.3473115376133915 61.01135095741141,6.413633759449796 61.007386948971245,6.397716426209059 61.0232429827319,6.418939537196708 61.03909901649256,6.4322039815639895 61.069489747867145,6.456079981425095 61.08006043704091,6.5064848700207625 61.08402444548108,6.540972425375693 61.1038444876819,6.575459980730623 61.09988047924173,6.5887244250979045 61.09063112621468,6.607294647212098 61.12630720217616,6.628517758199747 61.15273392511058,6.631170647073203 61.17387530345812,6.641782202567027 61.17519663960484,6.6656582024281334 61.16066194199091,6.700145757783064 61.14876991667042,6.766467979619469 61.14876991667042,6.777079535113293 61.142163235936806,6.816872868215135 61.147448580523694,6.851360423570066 61.14480590823025,6.877889312304628 61.11837918529583,6.875236423431172 61.091952462361405,6.944211534141032 61.07609642860075,6.946864423014489 61.08798845392124,6.976046200622506 61.08402444548108,7.005227978230524 61.06552573942698,7.013186644850893 61.03117099961223,7.02910397809163 61.0166363019983,7.034409755838542 60.99681625979748,7.013186644850893 60.97831755374338,6.930947089773751 60.959818847689284,6.928294200900295 60.94792682236879,6.891153756671908 60.94132014163518,6.869930645684259 60.93207078860814,6.859319090190434 60.90696540182043,6.840748868076242 60.87921734273929,6.875236423431172 60.90168005723355,6.888500867798452 60.929428116314696,6.928294200900295 60.939998805488464,6.978699089495962 60.962461519982725,6.9946164227367 60.959818847689284,7.031756866965086 60.97171087300977,7.047674200205823 60.98624557062371,7.092773311054579 60.9545335031024,7.1458310885237015 60.939998805488464,7.156442644017527 60.91357208255404,7.124607977536052 60.875253334299124,7.121955088662596 60.86071863668519,7.140525310776789 60.867325317418796,7.169707088384808 60.90168005723355,7.180318643878632 60.90300139338027,7.196235977119369 60.92150009943437,7.193583088245913 60.937356133195024,7.180318643878632 60.95056949466223,7.161748421764439 60.95585483924912,7.124607977536052 60.95585483924912,7.08481464443421 60.97435354530322,7.058285755699648 61.020600310438454,7.039715533585454 61.03381367190567,7.034409755838542 61.047027033372885,7.047674200205823 61.06024039484009,7.034409755838542 61.08402444548108,7.026451089218174 61.08798845392124,7.039715533585454 61.1038444876819,7.0662444223200165 61.1104511684155,7.079508866687297 61.10648715997534,7.137872421903333 61.1104511684155,7.159095532890983 61.11837918529583,7.217459088107018 61.11837918529583,7.236029310221212 61.13291388290976,7.241335087968125 61.147448580523694,7.259905310082317 61.14480590823025,7.326227531918722 61.12102185758927,7.358062198400196 61.12630720217616,7.3819381982613015 61.12234319373599,7.392549753755127 61.1104511684155,7.421731531363145 61.10252315153517,7.450913308971162 61.1038444876819,7.472136419958812 61.09988047924173,7.453566197844618 61.11177250456222,7.424384420236601 61.1104511684155,7.416425753616232 61.13291388290976,7.371326642767476 61.14480590823025,7.421731531363145 61.15537659740402,7.456219086718074 61.17519663960484,7.472136419958812 61.17783931189828,7.517235530807566 61.19105267336549,7.578251974897059 61.19369534565894,7.604780863631621 61.19105267336549,7.64722708560692 61.20558737097943,7.657838641100744 61.224086077033526,7.673755974341481 61.21747939629992,7.6976319742025865 61.22012206859336,7.710896418569868 61.22805008547369,7.69497908532913 61.23597810235402,7.68171464096185 61.232014093913854,7.649879974480376 61.24258478308762,7.633962641239639 61.23069275776713,7.6233510857458135 61.21351538785976,7.5437644195421285 61.20823004327287,7.50131819756683 61.209551379419594,7.48009508657918 61.201623362539266,7.432343086856969 61.1976593540991,7.392549753755127 61.20558737097943,7.379285309387845 61.26504749758188,7.360715087273652 61.27033284216877,7.35540930952674 61.28090353134254,7.3129630875514415 61.29543822895647,7.3129630875514415 61.299402237396635,7.360715087273652 61.31129426271713,7.397855531502039 61.3350783133581,7.392549753755127 61.35621969170565,7.437648864603881 61.39453843996056,7.477442197705724 61.40510912913433,7.493359530946462 61.43549986050892,7.511929753060654 61.44871322197613,7.538458641795216 61.451355894269575,7.594169308137796 61.477782617204,7.599475085884708 61.48835330637777,7.583557752643971 61.49760265940482,7.549070197289041 61.473818608763835,7.503971086440286 61.45267723041629,7.442954642350793 61.44078520509581,7.437648864603881 61.41039447372122,7.405814198122407 61.406430465281055,7.36867375389402 61.391895767667116,7.360715087273652 61.38000374234663,7.33418619853909 61.3905744315204,7.3076573098045285 61.39453843996056,7.283781309943423 61.40510912913433,7.294392865437247 61.383967750786795,7.342144865159459 61.36811171702614,7.350103531779828 61.34564900253188,7.32092175417181 61.32715029647778,7.26521108782923 61.3033662458368,7.246640865715037 61.299402237396635,7.291739976563791 61.27297551446221,7.326227531918722 61.266368833728606,7.339491976286003 61.25051279996795,7.347450642906372 61.209551379419594,7.35540930952674 61.19369534565894,7.395202642628583 61.181803320338446,7.363367976147108 61.167268622724514,7.326227531918722 61.156697933550745,7.278475532196511 61.16330461428435,7.257252421208861 61.16858995887123,7.26521108782923 61.17783931189828,7.236029310221212 61.181803320338446,7.243987976841581 61.17123263116468,7.188277310499 61.167268622724514,7.172359977258264 61.156697933550745,7.17501286613172 61.142163235936806,7.1458310885237015 61.14480590823025,7.076855977813841 61.13291388290976,7.06359153344656 61.136877891349926,6.999922200483612 61.124985866029434,6.9946164227367 61.10648715997534,6.968087534002137 61.11177250456222,6.944211534141032 61.11177250456222,6.944211534141032 61.12630720217616,6.925641312026839 61.14084189979009,6.960128867381769 61.15273392511058,6.9919635338632435 61.14876991667042,7.047674200205823 61.18708866492533,7.074203088940385 61.1976593540991,7.113996422042227 61.19898069024582,7.169707088384808 61.1976593540991,7.172359977258264 61.204266034832706,7.121955088662596 61.209551379419594,7.11930219978914 61.21351538785976,7.137872421903333 61.246548791527786,7.161748421764439 61.25051279996795,7.17501286613172 61.25844081684828,7.167054199511352 61.269011506022046,7.156442644017527 61.25844081684828,7.140525310776789 61.25844081684828,7.111343533168771 61.2478701276745,7.111343533168771 61.23597810235402,7.095426199928035 61.21351538785976,7.058285755699648 61.20558737097943,7.055632866826192 61.1976593540991,7.021145311471262 61.189731337218774,7.015839533724349 61.181803320338446,6.997269311610156 61.17123263116468,6.9893106449897875 61.159340605844186,6.9097239787861024 61.16066194199091,6.888500867798452 61.17387530345812,6.869930645684259 61.17123263116468,6.840748868076242 61.18576732877861,6.731980424264538 61.179160648045006,6.710757313276888 61.18312465648517,6.697492868909608 61.1976593540991,6.633823535946659 61.209551379419594,6.596683091718273 61.20558737097943,6.580765758477535 61.22805008547369,6.5887244250979045 61.23994211079418,6.625864869326291 61.25051279996795,6.649740869187396 61.266368833728606,6.676269757921958 61.276939522902374,6.676269757921958 61.299402237396635,6.718715979897257 61.3350783133581,6.734633313137994 61.33904232179827,6.742591979758362 61.35225568326548,6.7585093129991 61.40510912913433,6.755856424125644 61.42096516289499,6.734633313137994 61.406430465281055,6.73728620201145 61.39453843996056,6.721368868770713 61.34961301097204,6.692187091162696 61.33772098565155,6.663005313554677 61.31129426271713,6.655046646934309 61.2848675397827,6.572807091857167 61.25183413611467,6.562195536363342 61.266368833728606,6.562195536363342 61.296759565103194,6.551583980869518 61.299402237396635,6.540972425375693 61.27297551446221,6.527707981008412 61.27033284216877,6.498526203400394 61.274296850608934,6.538319536502237 61.26240482528844,6.554236869742974 61.246548791527786,6.543625314249149 61.23069275776713,6.562195536363342 61.212194051713034,6.490567536780025 61.224086077033526,6.493220425653481 61.21351538785976,6.535666647628781 61.20823004327287,6.525055092134956 61.19369534565894,6.543625314249149 61.159340605844186,6.538319536502237 61.15273392511058,6.540972425375693 61.136877891349926,6.477303092412745 61.13027121061632,6.474650203539289 61.114415176855665,6.4295510926905335 61.11177250456222,6.413633759449796 61.11837918529583,6.37649331522141 61.1104511684155,6.299559537891181 61.13423521905648,6.2703777602831625 61.13291388290976,6.222625760560952 61.16066194199091,6.206708427320215 61.16330461428435,6.227931538307864 61.18576732877861,6.214667093940583 61.189731337218774,6.19609687182639 61.17783931189828,6.182832427459109 61.16066194199091,6.14038620548381 61.15273392511058,6.119163094496161 61.156697933550745,6.055493761533212 61.14480590823025,6.007741761811001 61.164625950431066,6.0289648727986505 61.17519663960484,6.047535094912844 61.17519663960484,6.068758205900493 61.18312465648517,6.082022650267774 61.1976593540991,6.079369761394318 61.21351538785976,6.060799539280125 61.2161580601532,6.0501879837863 61.19369534565894,6.002435984064089 61.18312465648517,5.978559984202983 61.16858995887123,5.930807984480772 61.16066194199091,5.901626206872754 61.16330461428435,5.8724444292647355 61.159340605844186,5.851221318277086 61.167268622724514,5.824692429542525 61.164625950431066,5.819386651795613 61.189731337218774,5.829998207289437 61.20558737097943,5.819386651795613 61.20823004327287,5.7928577630610505 61.19105267336549,5.800816429681419 61.159340605844186,5.771634652073401 61.16066194199091,5.755717318832664 61.167268622724514,5.72388265235119 61.167268622724514,5.7185768746042775 61.16066194199091,5.72388265235119 61.14480590823025,5.70265954136354 61.136877891349926,5.673477763755523 61.147448580523694,5.649601763894417 61.14876991667042,5.628378652906767 61.14084189979009,5.615114208539486 61.15273392511058,5.609808430792574 61.14084189979009,5.588585319804925 61.12630720217616,5.52226309796852 61.10252315153517,5.503692875854327 61.1038444876819,5.41880043190373 61.072132420160585,5.3922715431691675 61.069489747867145,5.373701321054974 61.09063112621468,5.347172432320413 61.09988047924173,5.349825321193869 61.12630720217616,5.3418666545735 61.13819922749664,5.325949321332763 61.12234319373599,5.283503099357464 61.1104511684155,5.27289154386364 61.12234319373599,5.267585766116727 61.11177250456222,5.249015544002534 61.1038444876819,5.227792433014884 61.10648715997534,5.227792433014884 61.12630720217616,5.19595776653341 61.13291388290976,5.193304877659954 61.14480590823025,5.243709766255622 61.142163235936806,5.262279988369815 61.13027121061632,5.288808877104376 61.136877891349926,5.211875099774147 61.16330461428435,5.185346211039586 61.156697933550745,5.177387544419217 61.147448580523694,5.166775988925393 61.147448580523694,5.111065322582813 61.164625950431066,5.0765777672278825 61.167268622724514,5.0765777672278825 61.17783931189828,5.097800878215532 61.201623362539266,5.148205766811199 61.20558737097943,5.222486655267972 61.18576732877861,5.256974210622903 61.167268622724514,5.299420432598201 61.17123263116468,5.296767543724745 61.17519663960484,5.262279988369815 61.181803320338446,5.25166843287599 61.19369534565894,5.280850210484008 61.189731337218774,5.299420432598201 61.181803320338446,5.3153377658389385 61.18576732877861,5.262279988369815 61.20558737097943,5.180040433292673 61.224086077033526,5.063313322860601 61.21747939629992,5.010255545391478 61.22012206859336,5.007602656518022 61.224086077033526,5.028825767505671 61.23597810235402,5.087189322721707 61.23597810235402,5.100453767088988 61.232014093913854,5.111065322582813 61.24390611923434,5.100453767088988 61.25844081684828,5.09249510046862 61.24258478308762,5.042090211872952 61.23994211079418,5.007602656518022 61.24258478308762,5.026172878632215 61.257119480701554,5.026172878632215 61.27297551446221,5.007602656518022 61.266368833728606,4.9943382121507405 61.25051279996795,4.98107376778346 61.26108348914172,4.98107376778346 61.2848675397827,5.05004887849332 61.2848675397827,5.055354656240233 61.29147422051631,5.028825767505671 61.29543822895647,5.060660433987145 61.299402237396635,5.116371100329725 61.296759565103194,5.129635544697006 61.288831548222866,5.150858655684655 61.299402237396635,5.132288433570462 61.299402237396635,5.129635544697006 61.30865159042368,5.150858655684655 61.31790094345073,5.1561644334315675 61.30733025427696,5.206569322027235 61.30072357354335,5.225139544141428 61.304687581983515,5.201263544280323 61.31525827115729,5.219833766394516 61.32715029647778,5.19595776653341 61.331114304917946,5.201263544280323 61.34564900253188,5.227792433014884 61.344327666385155,5.235751099635253 61.34961301097204,5.278197321610552 61.34829167482532,5.333907987953132 61.319222279597454,5.355131098940781 61.31790094345073,5.333907987953132 61.33375697721139,5.294114654851289 61.35225568326548,5.355131098940781 61.34961301097204,5.368395543308062 61.36018370014581,5.408188876409905 61.36546904473269,5.4028830986629925 61.3720757254663,5.426759098524098 61.37603973390647,5.442676431764835 61.3720757254663,5.4798168759932215 61.3720757254663,5.532874653462345 61.37075438931958,5.559403542196907 61.36018370014581,5.644295986147505 61.36811171702614,5.660213319388242 61.36018370014581,5.676130652628979 61.36018370014581,5.652254652767873 61.37603973390647,5.570015097690732 61.37075438931958,5.530221764588889 61.38000374234663,5.4771639871197655 61.38000374234663,5.463899542752484 61.37868240619991,5.440023542891379 61.383967750786795,5.39757732091608 61.38264641464007,5.389618654295711 61.3720757254663,5.312684876965482 61.3720757254663,5.28615598823092 61.364147708585975,5.185346211039586 61.35754102785236,5.172081766672305 61.34961301097204,5.169428877798849 61.331114304917946,5.1057595448359 61.32715029647778,5.0765777672278825 61.321864951890895,5.068619100607513 61.33772098565155,5.111065322582813 61.33772098565155,5.111065322582813 61.36811171702614,5.100453767088988 61.36811171702614,5.097800878215532 61.344327666385155,5.047395989619864 61.34564900253188,5.031478656379127 61.36018370014581,5.026172878632215 61.37868240619991,5.031478656379127 61.391895767667116,5.055354656240233 61.40246645684089,5.09249510046862 61.39850244840073,5.100453767088988 61.37603973390647,5.1057595448359 61.38000374234663,5.103106655962444 61.41039447372122,5.166775988925393 61.42757184362859,5.1641231000519365 61.431535852068755,5.121676878076637 61.42492917133515,5.087189322721707 61.42492917133515,5.047395989619864 61.41303714601466,4.9943382121507405 61.40510912913433,4.973115101163091 61.41700115445482,5.004949767644566 61.428893179775315,5.047395989619864 61.43946386894908,5.073924878354426 61.44871322197613,5.121676878076637 61.45267723041629,5.235751099635253 61.45531990270974,5.246362655129078 61.46985460032367,5.235751099635253 61.48174662564416,5.262279988369815 61.48174662564416,5.278197321610552 61.47117593647039,5.349825321193869 61.4592839111499,5.381659987675343 61.46324791959007,5.323296432459307 61.477782617204,5.368395543308062 61.477782617204,5.421453320777186 61.473818608763835,5.429411987397554 61.45796257500318,5.450635098385203 61.4592839111499,5.46655243162594 61.44474921353597,5.538180431209257 61.43946386894908,5.585932430931469 61.44078520509581,5.5567506533234505 61.44474921353597,5.596543986425293 61.45796257500318,5.6336844306536795 61.45531990270974,5.662866208261698 61.46721192803023,5.662866208261698 61.477782617204,5.684089319249347 61.477782617204,5.689395096996259 61.48967464252449,5.7132710968573654 61.493638650964655,5.755717318832664 61.49231731481793,5.763675985453032 61.48571063408433,5.7928577630610505 61.48174662564416,5.7955106519345065 61.46721192803023,5.832651096162893 61.45531990270974,5.856527096023999 61.4592839111499,5.811427985175244 61.473818608763835,5.811427985175244 61.48835330637777,5.761023096579576 61.50156666784498,5.721229763477734 61.50156666784498,5.7159239857308215 61.50553067628514,5.6310315417802235 61.484389297937604,5.625725764033311 61.47117593647039,5.591238208678381 61.46589059188351,5.482469764866678 61.45267723041629,5.445329320638291 61.46985460032367,5.461246653879028 61.473818608763835,5.4771639871197655 61.46589059188351,5.4692053204993964 61.48174662564416,5.495734209233959 61.48571063408433,5.501039986980871 61.493638650964655,5.4692053204993964 61.493638650964655,5.440023542891379 61.48571063408433,5.41880043190373 61.48967464252449,5.355131098940781 61.48571063408433,5.296767543724745 61.49760265940482,5.246362655129078 61.49760265940482,5.219833766394516 61.50553067628514,5.222486655267972 61.51213735701875,5.190651988786498 61.51213735701875,5.169428877798849 61.516101365458915,5.187999099913042 61.52270804619252,5.1588173223050235 61.53460007151301,5.180040433292673 61.531957399219564,5.172081766672305 61.55706278600727,5.214527988647603 61.55442011371383,5.2384039885087095 61.54252808839334,5.296767543724745 61.538564079953176,5.280850210484008 61.55045610527367,5.320643543585851 61.546492096833504,5.3418666545735 61.55706278600727,5.3922715431691675 61.546492096833504,5.39757732091608 61.55045610527367,5.352478210067325 61.56234813059415,5.331255099079676 61.558384122153996,5.262279988369815 61.57291881976793,5.27289154386364 61.57688282820809,5.227792433014884 61.583489508941696,5.203916433153779 61.580846836648256,5.174734655545761 61.59273886196874,5.209222210900691 61.59934554270235,5.2410568773821655 61.59538153426219,5.246362655129078 61.605952223435956,5.299420432598201 61.60727355958268,5.360436876687693 61.59934554270235,5.3949244320426235 61.591417525822024,5.349825321193869 61.583489508941696,5.347172432320413 61.591417525822024,5.333907987953132 61.580846836648256,5.355131098940781 61.57291881976793,5.357783987814237 61.57688282820809,5.450635098385203 61.571597483621204,5.463899542752484 61.58745351738186,5.426759098524098 61.59538153426219,5.389618654295711 61.60727355958268,5.336560876826588 61.613880240316284,5.3153377658389385 61.60991623187612,5.28615598823092 61.611237568022844,5.227792433014884 61.611237568022844,5.1641231000519365 61.603309551142516,5.100453767088988 61.59802420655563,5.09249510046862 61.59273886196874,5.044743100746408 61.58877485352858,5.03678443412604 61.583489508941696,4.9969911010241965 61.580846836648256,4.9943382121507405 61.59802420655563,5.068619100607513 61.603309551142516,5.0765777672278825 61.611237568022844,5.132288433570462 61.611237568022844,5.137594211317374 61.60727355958268,5.19595776653341 61.61520157646301,5.275544432737096 61.61784424875645,5.3179906547123945 61.62973627407694,5.365742654434606 61.625772265636776,5.41880043190373 61.641628299397425,5.336560876826588 61.64030696325071,5.304726210345113 61.636342954810544,5.280850210484008 61.625772265636776,5.222486655267972 61.625772265636776,5.2384039885087095 61.633700282517104,5.148205766811199 61.62973627407694,5.097800878215532 61.63766429095727,4.989032434403828 61.625772265636776,5.007602656518022 61.648234980131036,4.970462212289635 61.6706976946253,4.970462212289635 61.68258971994579,4.986379545530372 61.69448174526628,4.970462212289635 61.71298045132038,4.98107376778346 61.72487247664087,5.007602656518022 61.71694445976054,5.007602656518022 61.723551140494145,4.983726656656916 61.72883648508103,4.991685323277284 61.7394071742548,5.020867100885303 61.74733519113513,5.031478656379127 61.7579058803089,5.05004887849332 61.7579058803089,5.084536433848251 61.75394187186873,5.103106655962444 61.73676450196135,5.1057595448359 61.70505243444005,5.119023989203181 61.706373770586765,5.116371100329725 61.743371182694965,5.148205766811199 61.73147915737447,5.166775988925393 61.71958713205398,5.1561644334315675 61.7024097621466,5.169428877798849 61.701088425999885,5.177387544419217 61.723551140494145,5.193304877659954 61.71958713205398,5.222486655267972 61.72751514893431,5.190651988786498 61.73544316581464,5.148205766811199 61.7394071742548,5.150858655684655 61.75394187186873,5.169428877798849 61.76186988874906,5.19595776653341 61.7579058803089,5.222486655267972 61.76186988874906,5.267585766116727 61.76186988874906,5.299420432598201 61.76979790562939,5.262279988369815 61.77772592250972,5.206569322027235 61.77244057792283,5.190651988786498 61.768476569482665,5.1535115445581114 61.77244057792283,5.132288433570462 61.7579058803089,5.121676878076637 61.76319122489578,5.097800878215532 61.75922721645561,5.097800878215532 61.77640458636299,5.150858655684655 61.80415264544414,5.177387544419217 61.810759326177745,5.219833766394516 61.810759326177745,5.235751099635253 61.816044670764626,5.3179906547123945 61.8266153599384,5.320643543585851 61.830579368378565,5.296767543724745 61.83454337681873,5.323296432459307 61.8451140659925,5.386965765422255 61.84247139369906,5.386965765422255 61.84907807443266,5.299420432598201 61.85700609131299,5.331255099079676 61.875504797367086,5.339213765700044 61.88739682268758,5.386965765422255 61.90721686488839,5.43206487627101 61.917787554062166,5.463899542752484 61.905895528741674,5.511651542474696 61.905895528741674,5.540833320082713 61.90193152030151,5.530221764588889 61.89400350342118,5.543486208956169 61.88739682268758,5.580626653184556 61.897967511861346,5.609808430792574 61.89928884800807,5.646948875020961 61.88739682268758,5.705312430236996 61.88343281424741,5.737147096718471 61.85700609131299,5.776940429820313 61.853042082872825,5.692047985869715 61.84247139369906,5.6336844306536795 61.81208066232446,5.665519097135154 61.810759326177745,5.678783541502435 61.82529402379168,5.70265954136354 61.83454337681873,5.787551985314138 61.84247139369906,5.819386651795613 61.84247139369906,5.859179984897455 61.853042082872825,5.909584873493122 61.85964876360643,5.936113762227684 61.853042082872825,5.978559984202983 61.84907807443266,5.978559984202983 61.830579368378565,5.967948428709159 61.82000867920479,5.970601317582615 61.808116653884305,5.95998976208879 61.788296611683485,5.941419539974596 61.765833897189225,5.909584873493122 61.746013854988405,5.920196428986947 61.73147915737447,5.928155095607316 61.743371182694965,5.9520310954684215 61.75129919957529,5.967948428709159 61.76319122489578,5.99447731744372 61.83718604911217,6.0316177616721065 61.8451140659925,6.127121761116529 61.77640458636299,6.177526649712196 61.76319122489578,6.212014205067127 61.77376191406955,6.214667093940583 61.77772592250972,6.177526649712196 61.78433260324332,6.150997760977635 61.80415264544414,6.082022650267774 61.83454337681873,6.082022650267774 61.8451140659925,6.124468872243073 61.82925803223184,6.161609316471459 61.83454337681873,6.1934439829529335 61.833222040672005,6.251807538168969 61.8451140659925,6.294253760144269 61.8451140659925,6.336699982119567 61.83850738525889,6.379146204094866 61.816044670764626,6.479955981286201 61.80283130929742,6.527707981008412 61.808116653884305,6.562195536363342 61.82925803223184,6.607294647212098 61.8451140659925,6.615253313832466 61.853042082872825,6.578112869604079 61.863612772046594,6.586071536224448 61.86757678048676,6.636476424820115 61.87154078892692,6.686881313415783 61.87154078892692,6.7585093129991 61.863612772046594,6.787691090607117 61.85039941057938,6.806261312721311 61.83454337681873,6.819525757088591 61.86757678048676,6.846054645823154 61.86493410819332,6.84870753469661 61.87154078892692,6.819525757088591 61.875504797367086,6.795649757227486 61.86757678048676,6.766467979619469 61.8768261335138,6.710757313276888 61.87946880580725,6.700145757783064 61.89928884800807,6.673616869048502 61.886075486540854,6.628517758199747 61.89003949498102,6.564848425236798 61.88211147810069,6.540972425375693 61.868898116633474,6.530360869881868 61.85700609131299,6.5224022032615 61.833222040672005,6.413633759449796 61.830579368378565,6.371187537474498 61.84247139369906,6.336699982119567 61.86097009975315,6.315476871131918 61.863612772046594,6.26507198253625 61.85964876360643,6.235890204928232 61.86097009975315,6.177526649712196 61.85039941057938,6.137733316610354 61.846435402139214,6.047535094912844 61.875504797367086,5.957336873215334 61.87154078892692,5.909584873493122 61.88211147810069,5.851221318277086 61.87286212507364,5.829998207289437 61.86097009975315,5.808775096301788 61.85700609131299,5.798163540807963 61.87154078892692,5.771634652073401 61.87154078892692,5.763675985453032 61.87946880580725,5.731841318971559 61.89400350342118,5.811427985175244 61.89928884800807,5.84856842940363 61.895324839567905,5.90427909574621 61.90193152030151,5.973254206456071 61.897967511861346,5.989171539696808 61.90193152030151,5.981212873076439 61.91250220947528,5.896320429125842 61.920430226355606,5.859179984897455 61.91250220947528,5.843262651656718 61.91646621791544,5.806122207428332 61.91646621791544,5.7928577630610505 61.920430226355606,5.721229763477734 61.91250220947528,5.678783541502435 61.90985953718184,5.617767097412942 61.917787554062166,5.604502653045662 61.92175156250233,5.548791986703082 61.92175156250233,5.516957320221608 61.92439423479577,5.501039986980871 61.9323222516761,5.485122653740134 61.92571557094249,5.455940876132116 61.928358243235934,5.458593765005572 61.9389289324097,5.442676431764835 61.940250268556426,5.384312876548799 61.928358243235934,5.3179906547123945 61.90721686488839,5.304726210345113 61.913823545622,5.2410568773821655 61.90721686488839,5.222486655267972 61.913823545622,5.201263544280323 61.89928884800807,5.174734655545761 61.895324839567905,5.150858655684655 61.90985953718184,5.187999099913042 61.91250220947528,5.190651988786498 61.917787554062166,5.166775988925393 61.91646621791544,5.119023989203181 61.917787554062166,5.1561644334315675 61.95610630231708,5.1535115445581114 61.97724768066462,5.172081766672305 61.985175697544946,5.193304877659954 61.98649703369166,5.187999099913042 61.978569016811335,5.193304877659954 61.950820957730194,5.209222210900691 61.94685694929003,5.214527988647603 61.9323222516761,5.227792433014884 61.9323222516761,5.222486655267972 61.948178285436754,5.209222210900691 61.95478496617036,5.203916433153779 61.97724768066462,5.235751099635253 61.97724768066462,5.243709766255622 61.9825330252515,5.280850210484008 61.95610630231708,5.28615598823092 61.948178285436754,5.302073321471657 61.95610630231708,5.275544432737096 61.97724768066462,5.299420432598201 61.985175697544946,5.3179906547123945 61.97460500837118,5.3179906547123945 61.98913970598511,5.333907987953132 61.993103714425274,5.336560876826588 62.01688776506625,5.3418666545735 62.02349444579986,5.389618654295711 62.02349444579986,5.408188876409905 62.012923756626094,5.426759098524098 62.0195304373597,5.41880043190373 62.027458454240026,5.3922715431691675 62.03406513497363,5.336560876826588 62.03538647112035,5.349825321193869 62.04595716029412,5.3418666545735 62.057849185614614,5.310031988092026 62.07634789166871,5.262279988369815 62.08427590854904,5.2410568773821655 62.102774614603135,5.116371100329725 62.10013194230969,5.113718211456269 62.12655866524412,5.1535115445581114 62.12127332065723,5.1588173223050235 62.125237329097395,5.137594211317374 62.145057371298215,5.103106655962444 62.14902137973837,5.095147989342076 62.16619874964575,5.111065322582813 62.16355607735231,5.1057595448359 62.17941211111297,5.095147989342076 62.18337611955313,5.097800878215532 62.1939468087269,5.14024710019083 62.2005534894605,5.1561644334315675 62.18601879184657,5.177387544419217 62.1939468087269,5.180040433292673 62.21376685092771,5.209222210900691 62.205838834047384,5.225139544141428 62.20848150634083,5.227792433014884 62.1939468087269,5.249015544002534 62.17809077496624,5.280850210484008 62.1754481026728,5.283503099357464 62.1569493966187,5.299420432598201 62.1569493966187,5.294114654851289 62.17148409423264,5.325949321332763 62.167520085792475,5.323296432459307 62.152985388178536,5.310031988092026 62.12920133753756,5.325949321332763 62.11466663992363,5.349825321193869 62.11070263148346,5.355131098940781 62.09881060616297,5.3922715431691675 62.09088258928264,5.39757732091608 62.080311900108875,5.429411987397554 62.069741210935106,5.442676431764835 62.07238388322855,5.445329320638291 62.060491857908055,5.4718582093728525 62.057849185614614,5.4692053204993964 62.049921168734286,5.48777554261359 62.03406513497363,5.4718582093728525 62.015566428919534,5.450635098385203 62.00895974818593,5.46655243162594 62.0010317313056,5.493081320360503 62.012923756626094,5.516957320221608 62.04199315185396,5.527568875715433 62.04595716029412,5.519610209095064 62.060491857908055,5.519610209095064 62.07634789166871,5.543486208956169 62.07634789166871,5.572667986564188 62.06577720249494,5.588585319804925 62.07238388322855,5.607155541919118 62.049921168734286,5.617767097412942 62.049921168734286,5.617767097412942 62.07238388322855,5.604502653045662 62.080311900108875,5.572667986564188 62.08427590854904,5.567362208817276 62.09484659772281,5.543486208956169 62.09881060616297,5.482469764866678 62.10013194230969,5.461246653879028 62.09881060616297,5.434717765144466 62.102774614603135,5.429411987397554 62.1133453037769,5.4028830986629925 62.12920133753756,5.434717765144466 62.15562806047198,5.434717765144466 62.17412676652608,5.463899542752484 62.189982800286735,5.485122653740134 62.2005534894605,5.516957320221608 62.18734012799329,5.5567506533234505 62.167520085792475,5.609808430792574 62.16619874964575,5.6389902084005925 62.17412676652608,5.676130652628979 62.13712935441789,5.673477763755523 62.11863064836379,5.721229763477734 62.08691858084248,5.747758652212296 62.09484659772281,5.689395096996259 62.122594656803955,5.697353763616628 62.13580801827116,5.66817198600861 62.17412676652608,5.710618207983909 62.167520085792475,5.737147096718471 62.17941211111297,5.771634652073401 62.17941211111297,5.798163540807963 62.18734012799329,5.798163540807963 62.19791081716706,5.819386651795613 62.19658948102034,5.851221318277086 62.20187482560723,5.883055984758561 62.2005534894605,5.914890651240035 62.18601879184657,5.9520310954684215 62.1569493966187,5.936113762227684 62.13712935441789,5.941419539974596 62.122594656803955,5.933460873354228 62.102774614603135,5.8777502070116485 62.049921168734286,5.843262651656718 62.012923756626094,5.856527096023999 62.004995739745766,5.885708873632017 62.03538647112035,5.901626206872754 62.04199315185396,5.93876665110114 62.07899056396215,5.970601317582615 62.102774614603135,5.975907095329527 62.122594656803955,5.95998976208879 62.13580801827116,5.981212873076439 62.14109336285805,6.010394650684457 62.13977202671133,6.044882206039388 62.10938129533674,6.066105317027037 62.1067386230433,6.087328428014686 62.09088258928264,6.068758205900493 62.069741210935106,6.0501879837863 62.06577720249494,6.0316177616721065 62.04595716029412,6.052840872659756 62.049921168734286,6.066105317027037 62.06181319405478,6.082022650267774 62.05388517717445,6.089981316888142 62.069741210935106,6.1138573167492485 62.07899056396215,6.153650649851091 62.07634789166871,6.177526649712196 62.08427590854904,6.214667093940583 62.07370521937526,6.23058442718132 62.07899056396215,6.246501760422057 62.06841987478838,6.2677248714097065 62.06577720249494,6.2783364269035316 62.07899056396215,6.299559537891181 62.069741210935106,6.288947982397356 62.06445586634822,6.310171093385005 62.057849185614614,6.32078264887883 62.07238388322855,6.310171093385005 62.080311900108875,6.283642204650444 62.08427590854904,6.249154649295513 62.082954572402315,6.249154649295513 62.0882399169892,6.219972871687496 62.08691858084248,6.177526649712196 62.09881060616297,6.150997760977635 62.09088258928264,6.124468872243073 62.10938129533674,6.076716872520862 62.130522673684276,6.074063983647406 62.14109336285805,6.0395764282924755 62.15959206891215,6.007741761811001 62.167520085792475,5.981212873076439 62.189982800286735,5.9520310954684215 62.20187482560723,5.965295539835703 62.20451749790067,5.930807984480772 62.22037353166132,5.970601317582615 62.23094422083509,5.986518650823352 62.22698021239493,5.99447731744372 62.205838834047384,6.018353317304825 62.19658948102034,6.042229317165932 62.20187482560723,6.079369761394318 62.189982800286735,6.119163094496161 62.18734012799329,6.121815983369617 62.2005534894605,6.0395764282924755 62.212445514780995,6.013047539557913 62.21376685092771,6.005088872937545 62.23622956542198,5.95998976208879 62.25076426303591,5.986518650823352 62.26926296909001,6.005088872937545 62.27322697753017,6.233237316054776 62.35647115477361,6.2677248714097065 62.36043516321377,6.318129760005374 62.374969860827704,6.3446586487399355 62.372327188534264,6.3526173153603045 62.352507146333444,6.395063537335603 62.322116414958856,6.418939537196708 62.28908301129083,6.426898203817077 62.26133495220968,6.469344425792376 62.24944292688919,6.487914647906569 62.217730859367876,6.474650203539289 62.212445514780995,6.479955981286201 62.20187482560723,6.498526203400394 62.20451749790067,6.5224022032615 62.18337611955313,6.538319536502237 62.17941211111297,6.55688975861643 62.15959206891215,6.578112869604079 62.145057371298215,6.575459980730623 62.13316534597772,6.543625314249149 62.125237329097395,6.540972425375693 62.1067386230433,6.55688975861643 62.1067386230433,6.559542647489886 62.11730931221707,6.594030202844817 62.122594656803955,6.61260042495901 62.13316534597772,6.5887244250979045 62.167520085792475,6.55688975861643 62.1939468087269,6.596683091718273 62.20187482560723,6.652393758060852 62.189982800286735,6.639129313693571 62.20187482560723,6.594030202844817 62.212445514780995,6.527707981008412 62.20451749790067,6.538319536502237 62.212445514780995,6.498526203400394 62.262656288356396,6.469344425792376 62.27322697753017,6.464038648045464 62.29304701973099,6.445468425931271 62.31154572578509,6.4322039815639895 62.33797244871951,6.397716426209059 62.357792490920325,6.424245314943621 62.3683631800941,6.405675092829428 62.38421921385475,6.418939537196708 62.3934685668818,6.464038648045464 62.40139658376213,6.498526203400394 62.40139658376213,6.551583980869518 62.39082589458836,6.554236869742974 62.364399171653936,6.572807091857167 62.35647115477361,6.575459980730623 62.33797244871951,6.5887244250979045 62.33400844027935,6.5887244250979045 62.35382848248017,6.570154202983711 62.3683631800941,6.578112869604079 62.40139658376213,6.543625314249149 62.406681928349016,6.607294647212098 62.429144642843276,6.676269757921958 62.44103666816376,6.710757313276888 62.45160735733754,6.742591979758362 62.44764334889737,6.742591979758362 62.43310865128343,6.785038201733661 62.429144642843276,6.808914201594767 62.43575132357688,6.859319090190434 62.43178731513672,6.9123768676595585 62.41328860908262,6.88319509005154 62.37893386926787,6.893806645545364 62.3683631800941,6.888500867798452 62.364399171653936,6.901765312165733 62.349864474040004,6.917682645406471 62.34590046559984,6.917682645406471 62.32343775110557,6.954823089634857 62.307581717344924,6.962781756255225 62.28908301129083,7.005227978230524 62.285119002850664,6.997269311610156 62.270584305236724,7.005227978230524 62.24283624615558,6.999922200483612 62.21376685092771,7.015839533724349 62.19791081716706,7.015839533724349 62.18205478340641,6.9893106449897875 62.167520085792475,6.933599978647207 62.13316534597772,6.928294200900295 62.12127332065723,6.867277756810803 62.0882399169892,6.875236423431172 62.080311900108875,6.93890575639412 62.1067386230433,6.986657756116331 62.09484659772281,7.005227978230524 62.08427590854904,7.06359153344656 62.08691858084248,7.098079088801491 62.09484659772281,7.121955088662596 62.1133453037769,7.140525310776789 62.11466663992363,7.177665755005176 62.1067386230433,7.196235977119369 62.09616793386952,7.206847532613194 62.10013194230969,7.188277310499 62.11466663992363,7.148483977397158 62.125237329097395,7.113996422042227 62.122594656803955,7.074203088940385 62.09881060616297,7.034409755838542 62.09484659772281,6.960128867381769 62.11466663992363,6.986657756116331 62.14109336285805,7.034409755838542 62.16619874964575,7.039715533585454 62.18601879184657,7.034409755838542 62.20451749790067,7.039715533585454 62.22037353166132,7.034409755838542 62.27322697753017,7.04236842245891 62.277190985970336,7.076855977813841 62.279833658263776,7.106037755421859 62.27454831367689,7.129913755282965 62.2811549944105,7.172359977258264 62.26133495220968,7.217459088107018 62.26133495220968,7.2227648658539305 62.25340693532935,7.259905310082317 62.28379766670394,7.3076573098045285 62.2811549944105,7.32092175417181 62.287761675144104,7.350103531779828 62.26926296909001,7.363367976147108 62.26926296909001,7.392549753755127 62.25076426303591,7.41111997586932 62.232265556981815,7.429690197983513 62.234908229275256,7.416425753616232 62.2441575823023,7.429690197983513 62.25076426303591,7.363367976147108 62.2811549944105,7.344797754032915 62.29304701973099,7.3076573098045285 62.29568969202443,7.283781309943423 62.29172568358427,7.246640865715037 62.297011028171156,7.217459088107018 62.285119002850664,7.17501286613172 62.285119002850664,7.1458310885237015 62.29568969202443,7.124607977536052 62.297011028171156,7.092773311054579 62.29304701973099,7.087467533307666 62.30097503661131,7.060938644573104 62.307581717344924,7.005227978230524 62.307581717344924,6.9893106449897875 62.31154572578509,6.962781756255225 62.32608042339902,6.930947089773751 62.374969860827704,6.984004867242875 62.374969860827704,6.986657756116331 62.38289787770803,6.957475978508313 62.386861886148196,6.941558645267576 62.42518063440311,6.885847978924996 62.44764334889737,6.869930645684259 62.459535374217865,6.832790201455873 62.45821403807114,6.811567090468223 62.462178046511305,6.771773757366381 62.459535374217865,6.774426646239837 62.46614205495147,6.808914201594767 62.47010606339163,6.811567090468223 62.481998088712125,6.705451535529976 62.4740700718318,6.694839980036152 62.484640761005565,6.652393758060852 62.46349938265803,6.633823535946659 62.459535374217865,6.609947536085554 62.46614205495147,6.596683091718273 62.45160735733754,6.564848425236798 62.44764334889737,6.535666647628781 62.43310865128343,6.485261759033113 62.429144642843276,6.4295510926905335 62.43178731513672,6.395063537335603 62.417252617522784,6.381799092968322 62.42121662596295,6.392410648462147 62.429144642843276,6.342005759866479 62.43575132357688,6.3552702042337605 62.44367934045721,6.342005759866479 62.45160735733754,6.3526173153603045 62.45821403807114,6.318129760005374 62.462178046511305,6.249154649295513 62.4555713657777,6.227931538307864 62.46746339109819,6.371187537474498 62.47671274412524,6.373840426347954 62.484640761005565,6.403022203955972 62.48860476944573,6.450774203678183 62.49256877788589,6.477303092412745 62.504460803206385,6.5064848700207625 62.49785412247277,6.5224022032615 62.504460803206385,6.540972425375693 62.49653278632606,6.572807091857167 62.49653278632606,6.594030202844817 62.50181813091294,6.601988869465185 62.49389011403261,6.628517758199747 62.49653278632606,6.641782202567027 62.481998088712125,6.6709639801750455 62.484640761005565,6.6656582024281334 62.48860476944573,6.718715979897257 62.49256877788589,6.710757313276888 62.49653278632606,6.660352424681221 62.50181813091294,6.615253313832466 62.504460803206385,6.599335980591729 62.51238882008671,6.623211980452835 62.51899550082032,6.609947536085554 62.52295950926048,6.527707981008412 62.51503149238015,6.525055092134956 62.51635282852688,6.474650203539289 62.51238882008671,6.46669153691892 62.51635282852688,6.519749314388044 62.526923517700645,6.540972425375693 62.524280845407205,6.586071536224448 62.53088752614081,6.575459980730623 62.5427795514613,6.538319536502237 62.5427795514613,6.448121314804727 62.53088752614081,6.371187537474498 62.53485153458097,6.342005759866479 62.53088752614081,6.251807538168969 62.52824485384736,6.2862950935239 62.54145821531458,6.2703777602831625 62.549386232194905,6.273030649156619 62.5612782575154,6.251807538168969 62.58109829971622,6.304865315638093 62.59959700577031,6.334047093246111 62.614131703384245,6.379146204094866 62.60356101421047,6.434856870437446 62.614131703384245,6.450774203678183 62.59034765274326,6.450774203678183 62.567884938249,6.461385759172008 62.567884938249,6.469344425792376 62.58374097200966,6.453427092551639 62.614131703384245,6.525055092134956 62.61809571182441,6.564848425236798 62.624702392558014,6.570154202983711 62.594311661183426,6.601988869465185 62.59034765274326,6.609947536085554 62.58374097200966,6.596683091718273 62.5612782575154,6.61260042495901 62.554671576781786,6.633823535946659 62.591668988889985,6.631170647073203 62.60356101421047,6.609947536085554 62.61016769494408,6.631170647073203 62.6299877371449,6.649740869187396 62.6299877371449,6.657699535807765 62.60620368650392,6.6709639801750455 62.602239678063754,6.663005313554677 62.633951745585065,6.771773757366381 62.6550931239326,6.798302646100942 62.65245045163916,6.8221786459620475 62.636594417878506,6.877889312304628 62.6114890310908,6.9150297565330145 62.58770498044982,6.9123768676595585 62.57317028283589,6.930947089773751 62.58770498044982,6.917682645406471 62.59959700577031,6.93890575639412 62.614131703384245,6.925641312026839 62.6299877371449,6.9097239787861024 62.633951745585065,6.9070710899126455 62.647165107052274,6.960128867381769 62.65245045163916,6.9946164227367 62.65112911549244,7.047674200205823 62.6550931239326,7.08481464443421 62.6550931239326,7.08481464443421 62.62866640099818,7.0662444223200165 62.6299877371449,7.026451089218174 62.62205972026457,7.023798200344718 62.614131703384245,7.076855977813841 62.61809571182441,7.090120422181122 62.62205972026457,7.106037755421859 62.57977696356949,7.124607977536052 62.57581295512933,7.132566644156421 62.55731424907523,7.121955088662596 62.5427795514613,7.124607977536052 62.526923517700645,7.140525310776789 62.52031683696704,7.148483977397158 62.53749420687441,7.1458310885237015 62.57977696356949,7.124607977536052 62.591668988889985,7.124607977536052 62.60620368650392,7.1458310885237015 62.614131703384245,7.1431781996502455 62.62602372870474,7.167054199511352 62.6299877371449,7.198888865992825 62.62205972026457,7.233376421347756 62.61016769494408,7.254599532335405 62.62205972026457,7.286434198816879 62.607525022650634,7.326227531918722 62.60620368650392,7.331533309665634 62.61016769494408,7.360715087273652 62.60620368650392,7.379285309387845 62.57317028283589,7.416425753616232 62.5612782575154,7.434995975730425 62.549386232194905,7.448260420097706 62.53088752614081,7.474789308832268 62.53485153458097,7.474789308832268 62.54542222375474,7.525194197427935 62.53353019843425,7.546417308415585 62.49653278632606,7.564987530529778 62.49653278632606,7.559681752782866 62.53353019843425,7.586210641517427 62.5427795514613,7.657838641100744 62.54674355990146,7.663144418847656 62.56392092980884,7.687020418708762 62.569206274395725,7.748036862798254 62.56524226595556,7.7851773070266415 62.571848946689165,7.7825244181531845 62.57713429127605,7.750689751671711 62.57713429127605,7.732119529557517 62.58374097200966,7.6604915299742 62.57713429127605,7.655185752227288 62.571848946689165,7.549070197289041 62.55335024063507,7.5437644195421285 62.55731424907523,7.493359530946462 62.56524226595556,7.474789308832268 62.56524226595556,7.456219086718074 62.57713429127605,7.469483531085356 62.58374097200966,7.429690197983513 62.58770498044982,7.405814198122407 62.60620368650392,7.395202642628583 62.6299877371449,7.474789308832268 62.64055842631867,7.496012419819918 62.633951745585065,7.496012419819918 62.61809571182441,7.511929753060654 62.60356101421047,7.503971086440286 62.58374097200966,7.530499975174848 62.58770498044982,7.538458641795216 62.57317028283589,7.546417308415585 62.591668988889985,7.5437644195421285 62.62073838411785,7.506623975313742 62.633951745585065,7.50131819756683 62.66302114081293,7.527847086301391 62.666985149253094,7.549070197289041 62.67491316613342,7.599475085884708 62.678877174573586,7.6206981968723575 62.69341187218752,7.687020418708762 62.69737588062768,7.710896418569868 62.70794656980145,7.832929306748852 62.731730620442434,7.8674168621037825 62.7356946288826,7.907210195205625 62.731730620442434,7.925780417319818 62.723802603562106,7.9416977505605555 62.723802603562106,7.931086195066731 62.73833730117604,7.95230930605438 62.743622645762926,7.997408416903135 62.73965863732276,8.031895972258067 62.72908794814899,8.037201750004979 62.723802603562106,8.08495374972719 62.709267905948174,8.095565305221013 62.709267905948174,8.10617686071484 62.69737588062768,8.116788416208664 62.701339889067846,8.122094193955576 62.686805191453914,8.143317304943224 62.68284118301375,8.140664416069768 62.70530389750801,8.130052860575944 62.71587458668178,8.111482638461752 62.72115993126866,8.108829749588295 62.72908794814899,8.018631527890784 62.75022932649653,8.018631527890784 62.75551467108341,8.066383527612995 62.77004936869735,8.066383527612995 62.776656049430954,7.968226639295118 62.766085360257186,7.928433306193274 62.77004936869735,7.671103085468025 62.72115993126866,7.55702886390941 62.6986972167744,7.50131819756683 62.686805191453914,7.450913308971162 62.68284118301375,7.440301753477337 62.69737588062768,7.413772864742776 62.69076919989408,7.352756420653284 62.69076919989408,7.347450642906372 62.6986972167744,7.384591087134758 62.70794656980145,7.419078642489688 62.70794656980145,7.413772864742776 62.71983859512194,7.392549753755127 62.71983859512194,7.416425753616232 62.72776661200227,7.36867375389402 62.731730620442434,7.366020865020564 62.73833730117604,7.413772864742776 62.746265318056366,7.450913308971162 62.75551467108341,7.594169308137796 62.77797738557767,7.679061752088394 62.776656049430954,7.721507974063693 62.79251208319161,7.668450196594569 62.78458406631128,7.671103085468025 62.79251208319161,7.633962641239639 62.79251208319161,7.6206981968723575 62.788548074751446,7.503971086440286 62.77797738557767,7.450913308971162 62.77004936869735,7.376632420514389 62.76212135181702,7.251946643461949 62.743622645762926,7.1431781996502455 62.734373292735874,7.06359153344656 62.72908794814899,7.015839533724349 62.723802603562106,6.984004867242875 62.723802603562106,6.968087534002137 62.7356946288826,6.986657756116331 62.73965863732276,6.9946164227367 62.75815734337686,6.968087534002137 62.77797738557767,6.9893106449897875 62.78722673860472,6.978699089495962 62.79251208319161,7.015839533724349 62.81101078924571,7.015839533724349 62.81761746997931,7.0688973111934725 62.8295094952998,7.092773311054579 62.8295094952998,7.108690644295315 62.8229028145662,7.076855977813841 62.821581478419475,7.076855977813841 62.81497479768587,7.106037755421859 62.81233212539242,7.156442644017527 62.818938806126035,7.159095532890983 62.80704678080554,7.198888865992825 62.80308277236538,7.233376421347756 62.8044041085121,7.241335087968125 62.81101078924571,7.20950042148665 62.81101078924571,7.177665755005176 62.8229028145662,7.206847532613194 62.83347350373997,7.185624421625544 62.83347350373997,7.151136866270614 62.841401520620295,7.17501286613172 62.84932953750062,7.140525310776789 62.85197220979406,7.103384866548403 62.8480082013539,7.060938644573104 62.83743751218013,6.9893106449897875 62.83875884832685,7.010533755977437 62.8480082013539,7.005227978230524 62.85725755438095,6.9893106449897875 62.85990022667439,6.9946164227367 62.87179225199488,6.962781756255225 62.87443492428832,6.978699089495962 62.89425496648914,6.952170200761401 62.88764828575553,6.960128867381769 62.89821897492931,6.9070710899126455 62.90218298336947,6.89645953441882 62.9101110002498,6.922988423153383 62.91407500868996,7.021145311471262 62.95239375694487,7.060938644573104 62.970892462998975,7.090120422181122 62.95900043767848,7.100731977674947 62.961643109971924,7.079508866687297 62.973535135292416,7.103384866548403 62.98806983290635,7.121955088662596 62.98146315217274,7.151136866270614 62.98542716061291,7.151136866270614 62.9973191859334,7.17501286613172 62.993355177493235,7.20950042148665 62.993355177493235,7.236029310221212 62.99996185822684,7.2970457543107035 63.00788987510717,7.283781309943423 62.99996185822684,7.246640865715037 62.98939116905307,7.286434198816879 62.9788204798793,7.278475532196511 62.98939116905307,7.3076573098045285 62.99996185822684,7.323574643045266 62.98939116905307,7.315615976424898 62.970892462998975,7.331533309665634 62.973535135292416,7.376632420514389 62.96692845455881,7.384591087134758 62.95900043767848,7.413772864742776 62.95503642923832,7.416425753616232 62.94842974850471,7.442954642350793 62.93653772318422,7.456219086718074 62.92068168942357,7.448260420097706 62.906146991809635,7.429690197983513 62.906146991809635,7.432343086856969 62.89821897492931,7.469483531085356 62.89821897492931,7.485400864326093 62.906146991809635,7.517235530807566 62.906146991809635,7.564987530529778 62.92464569786373,7.588863530390883 62.92464569786373,7.583557752643971 62.93653772318422,7.68171464096185 62.96692845455881,7.718855085190237 62.970892462998975,7.79313597364701 62.95900043767848,7.748036862798254 62.94314440391783,7.710896418569868 62.92464569786373,7.673755974341481 62.89425496648914,7.687020418708762 62.89425496648914,7.721507974063693 62.91275367254324,7.753342640545167 62.92068168942357,7.84088797336922 62.951072420798155,7.8647639732303265 62.944465740064544,7.885987084217976 62.95900043767848,7.939044861687099 62.961643109971924,7.97353241704203 62.970892462998975,8.02128441676424 62.96296444611865,8.034548861131523 62.96560711841209,8.04250752775189 62.951072420798155,8.061077749866083 62.951072420798155,8.071689305359907 62.93653772318422,8.10617686071484 62.928609706303895,8.095565305221013 62.92068168942357,8.11944130508212 62.92068168942357,8.087606638600645 62.88764828575553,8.111482638461752 62.886326949608815,8.10617686071484 62.87972026887521,8.111482638461752 62.85725755438095,8.135358638322856 62.818938806126035,8.172499082551242 62.808368116952266,8.169846193677786 62.80044010007194,8.262697304248753 62.77797738557767,8.310449303970964 62.78458406631128,8.329019526085158 62.766085360257186,8.384730192427737 62.754193334936694,8.400647525668475 62.74758665420309,8.419217747782668 62.717195922828495,8.429829303276492 62.71983859512194,8.429829303276492 62.731730620442434,8.45901108088451 62.72776661200227,8.496151525112897 62.71587458668178,8.501457302859809 62.71983859512194,8.517374636100547 62.67755583842686,8.525333302720915 62.67094915769326,8.549209302582021 62.67491316613342,8.562473746949301 62.69473320833424,8.554515080328933 62.717195922828495,8.52798619159437 62.734373292735874,8.443093747643774 62.75815734337686,8.408606192288843 62.77269204099079,8.339631081578982 62.788548074751446,8.323713748338246 62.8044041085121,8.24412708213456 62.808368116952266,8.222903971146911 62.821581478419475,8.193722193538893 62.82686682300636,8.172499082551242 62.8480082013539,8.156581749310506 62.85725755438095,8.16719330480433 62.86782824355472,8.151275971563594 62.89029095804898,8.16719330480433 62.89821897492931,8.204333749032717 62.906146991809635,8.20168086015926 62.91407500868996,8.156581749310506 62.9101110002498,8.159234638183962 62.91407500868996,8.135358638322856 62.944465740064544,8.053119083245715 62.97485647143914,8.02128441676424 62.9973191859334,7.994755528029679 62.99996185822684,7.997408416903135 63.03167392574815,7.976185305915486 63.03960194262847,7.949656417180924 63.01978190042766,7.981491083662398 63.02770991730799,7.989449750282766 63.0224245727211,7.981491083662398 63.01185388354733,7.949656417180924 62.9973191859334,7.891292861964888 62.98939116905307,7.885987084217976 63.001283194373556,7.899251528585257 63.01185388354733,7.885987084217976 63.023745908867824,7.915168861825993 63.04224461492192,7.954962194927836 63.03960194262847,7.978838194788942 63.048851295655524,7.968226639295118 63.080563363176836,7.978838194788942 63.088491380057164,8.069036416486451 63.110954094551424,8.108829749588295 63.103026077671096,8.111482638461752 63.088491380057164,8.127399971702488 63.088491380057164,8.138011527196312 63.068671337856344,8.124747082829032 63.05281530409569,8.087606638600645 63.05017263180225,8.087606638600645 63.04224461492192,8.130052860575944 63.046208623362084,8.130052860575944 63.03431659804159,8.15392886043705 63.023745908867824,8.172499082551242 63.023745908867824,8.191069304665437 63.01185388354733,8.257391526501841 62.995997849786676,8.241474193261103 62.98146315217274,8.254738637628385 62.970892462998975,8.275961748616034 62.98278448831946,8.302490637350596 62.97749914373258,8.33432530383207 62.96296444611865,8.283920415236402 62.928609706303895,8.289226192983314 62.92068168942357,8.31310219284442 62.91275367254324,8.336978192705526 62.89029095804898,8.29983774847714 62.863864235114555,8.31310219284442 62.863864235114555,8.368812859187 62.886326949608815,8.419217747782668 62.86782824355472,8.45901108088451 62.844044192913735,8.485539969619072 62.84536552906046,8.496151525112897 62.83479483988668,8.517374636100547 62.83743751218013,8.51472174722709 62.85725755438095,8.456358192011054 62.87179225199488,8.42452352552958 62.886326949608815,8.416564858909211 62.90218298336947,8.45901108088451 62.883684277315375,8.490845747365984 62.87972026887521,8.509415969480177 62.86518557126128,8.546556413708565 62.863864235114555,8.578391080190038 62.86782824355472,8.618184413291882 62.83743751218013,8.636754635406074 62.8295094952998,8.650019079773354 62.8295094952998,8.697771079495567 62.81761746997931,8.700423968369023 62.82686682300636,8.65267196864681 62.83875884832685,8.634101746532618 62.83875884832685,8.62614307991225 62.84932953750062,8.628795968785706 62.86518557126128,8.610225746671512 62.87972026887521,8.589002635683864 62.883684277315375,8.541250635961653 62.87839893272849,8.535944858214739 62.886326949608815,8.520027524974003 62.886326949608815,8.49349863623944 62.90086164722275,8.472275525251792 62.90218298336947,8.45901108088451 62.92200302557029,8.429829303276492 62.93257371474406,8.416564858909211 62.95503642923832,8.474928414125248 62.961643109971924,8.50676308060672 62.95767910153176,8.657977746393723 62.970892462998975,8.650019079773354 62.98939116905307,8.607572857798056 62.98939116905307,8.567779524696213 62.98542716061291,8.50676308060672 62.96692845455881,8.461663969757966 62.970892462998975,8.490845747365984 62.99203384134651,8.522680413847459 62.9973191859334,8.594308413430776 63.01978190042766,8.565126635822757 63.01978190042766,8.485539969619072 62.9973191859334,8.419217747782668 62.97485647143914,8.368812859187 62.96692845455881,8.344936859325895 62.98542716061291,8.318407970591332 62.993355177493235,8.34758974819935 63.00788987510717,8.43778796989686 63.00788987510717,8.49349863623944 63.015817891987496,8.469622636378336 63.0224245727211,8.432482192149948 63.015817891987496,8.382077303554281 63.01449655584077,8.34758974819935 63.01978190042766,8.307796415097508 63.00788987510717,8.217598193399997 63.02770991730799,8.214945304526541 63.03431659804159,8.236168415514191 63.05017263180225,8.230862637767279 63.0660286655629,8.191069304665437 63.07924202703011,8.177804860298156 63.088491380057164,8.183110638045068 63.096419396937485,8.159234638183962 63.105668749964536,8.156581749310506 63.12284611987191,8.222903971146911 63.14002348977929,8.241474193261103 63.125488792165356,8.257391526501841 63.110954094551424,8.275961748616034 63.09906206923093,8.307796415097508 63.09245538849733,8.283920415236402 63.084527371617,8.283920415236402 63.07263534629651,8.323713748338246 63.07659935473667,8.326366637211702 63.09509806079077,8.31310219284442 63.103026077671096,8.326366637211702 63.1096327584047,8.273308859742578 63.11756077528503,8.241474193261103 63.14134482592601,8.275961748616034 63.147951506659616,8.33432530383207 63.14398749821945,8.368812859187 63.13209547289896,8.403300414541931 63.133416809045684,8.427176414403036 63.14134482592601,8.432482192149948 63.136059481339124,8.464316858631422 63.133416809045684,8.496151525112897 63.14002348977929,8.504110191733265 63.12945280060552,8.535944858214739 63.136059481339124,8.565126635822757 63.12152478372519,8.589002635683864 63.118882111431745,8.607572857798056 63.09509806079077,8.628795968785706 63.09509806079077,8.62614307991225 63.11491810299158,8.602267080051144 63.1281314644588,8.562473746949301 63.136059481339124,8.567779524696213 63.147951506659616,8.549209302582021 63.158522195833385,8.57043241356967 63.167771548860436,8.644713302026442 63.17173555730059,8.665936413014093 63.17966357418092,8.726952857103583 63.18627025491453,8.742870190344322 63.18230624647437,8.801233745560356 63.18627025491453,8.830415523168377 63.19419827179486,8.936531078106622 63.1968409440883,8.981630188955378 63.20212628867519,8.98693596670229 63.20873296940879,8.838374189788745 63.200804952528465,8.73756441259741 63.19287693564814,8.687159524001743 63.19419827179486,8.676547968507917 63.198162280235024,8.644713302026442 63.18891292720797,8.6049199689246 63.19419827179486,8.6049199689246 63.20609029711535,8.58369685793695 63.200804952528465,8.581043969063494 63.22458900316945,8.57043241356967 63.23515969234322,8.549209302582021 63.24176637307682,8.551862191455477 63.25365839839731,8.52798619159437 63.25497973454404,8.517374636100547 63.27347844059813,8.49349863623944 63.2774424490383,8.496151525112897 63.29197714665223,8.530639080467827 63.28933447435878,8.522680413847459 63.29990516353256,8.57043241356967 63.31179718885305,8.596961302304232 63.310475852706325,8.63940752427953 63.31972520573338,8.657977746393723 63.31576119729321,8.665936413014093 63.32236787802682,8.705729746115935 63.32633188646698,8.713688412736303 63.330295894907145,8.75082885696469 63.33425990334731,8.766746190205428 63.34086658408091,8.8410270786622 63.34483059252108,8.8410270786622 63.352758609401405,8.75082885696469 63.34483059252108,8.708382634989391 63.346151928667794,8.692465301748655 63.36861464316206,8.67389507963446 63.375221323895666,8.665936413014093 63.38711334921616,8.644713302026442 63.3897560215096,8.647366190899898 63.40164804683009,8.660630635267179 63.40957606371042,8.711035523862847 63.417504080590746,8.740217301470866 63.41354007215058,8.732258634850496 63.42146808903091,8.817151078801094 63.42939610591124,8.848985745282569 63.425432097471074,8.864903078523305 63.428074769764514,8.878167522890585 63.417504080590746,8.870208856270217 63.405612055270254,8.891431967257867 63.38711334921616,8.907349300498606 63.38711334921616,8.907349300498606 63.39504136609648,8.8834733006375 63.40957606371042,8.90469641162515 63.408254727563694,8.93122530035971 63.425432097471074,8.960407077967728 63.41354007215058,8.96571285571464 63.402969382976806,9.02142352205722 63.41221873600386,8.978977300081922 63.42146808903091,9.00020041106957 63.428074769764514,8.971018633461552 63.439966795085006,9.00020041106957 63.447894811965334,8.994894633322659 63.462429509579266,9.018770633183763 63.462429509579266,9.02938218867759 63.44657347581861,9.093051521640536 63.439966795085006,9.085092855020168 63.428074769764514,9.095704410513992 63.420146752884186,9.135497743615836 63.420146752884186,9.151415076856573 63.39372002994976,9.148762187983117 63.37654266004239,9.175291076717679 63.37918533233583,9.177943965591135 63.372578651602225,9.130191965868924 63.35672261784157,9.116927521501642 63.34483059252108,9.138150632489292 63.34086658408091,9.095704410513992 63.31840386958665,9.085092855020168 63.29197714665223,9.093051521640536 63.2840491297719,9.130191965868924 63.302547835826,9.127539076995468 63.310475852706325,9.143456410236205 63.31972520573338,9.183249743338047 63.32633188646698,9.204472854325697 63.34086658408091,9.238960409680626 63.330295894907145,9.23630752080717 63.346151928667794,9.268142187288646 63.34879460096124,9.29201818714975 63.36068662628173,9.363646186733067 63.36068662628173,9.469761741671315 63.380506668482546,9.501596408152789 63.39372002994976,9.493637741532421 63.397684038389926,9.453844408430577 63.38711334921616,9.371604853353436 63.375221323895666,9.321199964757769 63.375221323895666,9.25753063179482 63.36729330701534,9.228348854186802 63.372578651602225,9.231001743060258 63.39107735765632,9.215084409819521 63.383149340775994,9.18855552108496 63.39504136609648,9.177943965591135 63.41354007215058,9.18855552108496 63.42939610591124,9.217737298692978 63.4333601143514,9.225695965313346 63.425432097471074,9.233654631933714 63.43600278664484,9.25753063179482 63.4333601143514,9.270795076162102 63.442609467378446,9.284059520529382 63.4333601143514,9.302629742643575 63.439966795085006,9.358340408986155 63.447894811965334,9.371604853353436 63.44657347581861,9.443232852936752 63.46639351801943,9.498943519279333 63.45978683728582,9.501596408152789 63.482249551780086,9.440579964063296 63.473000198753034,9.398133742087998 63.45978683728582,9.376910631100348 63.462429509579266,9.366299075606523 63.455822828845655,9.342423075745419 63.455822828845655,9.347728853492331 63.46903619031287,9.323852853631225 63.47432153489976,9.284059520529382 63.495462913247295,9.273447965035558 63.495462913247295,9.281406631655926 63.47828554333992,9.297323964896663 63.47828554333992,9.284059520529382 63.465072181872706,9.329158631378137 63.465072181872706,9.329158631378137 63.45450149269894,9.297323964896663 63.44657347581861,9.286712409402838 63.455822828845655,9.241613298554082 63.447894811965334,9.225695965313346 63.447894811965334,9.225695965313346 63.455822828845655,9.175291076717679 63.4584655011391,9.180596854464591 63.46639351801943,9.167332410097309 63.482249551780086,9.14610929910966 63.48621356022025,9.201819965452241 63.50339093012762,9.217737298692978 63.515282955448114,9.231001743060258 63.51660429159483,9.254877742921364 63.50339093012762,9.249571965174452 63.490177568660414,9.262836409541732 63.490177568660414,9.27875374278247 63.5086762747145,9.262836409541732 63.50735493856779,9.244266187427538 63.52321097232844,9.29201818714975 63.527174980768606,9.294671076023207 63.515282955448114,9.315894187010855 63.52321097232844,9.323852853631225 63.53378166150221,9.360993297859611 63.55360170370303,9.400786630961454 63.55624437599647,9.384869297720716 63.515282955448114,9.408745297581822 63.49678424939402,9.427315519696016 63.50339093012762,9.408745297581822 63.52585364462188,9.443232852936752 63.537745669942375,9.445885741810208 63.55624437599647,9.485679074912053 63.57210040975713,9.504249297026245 63.5641723928768,9.533431074634262 63.56945773746368,9.562612852242282 63.56152972058336,9.573224407736106 63.53113898920877,9.586488852103386 63.53378166150221,9.575877296609562 63.5641723928768,9.559959963368826 63.57210040975713,9.567918629989194 63.580028426637455,9.544042630128088 63.58399243507762,9.520166630266981 63.580028426637455,9.493637741532421 63.580028426637455,9.517513741393525 63.58663510737106,9.525472408013893 63.599848468838275,9.567918629989194 63.60645514957188,9.599753296470666 63.62098984718581,9.650158185066335 63.62098984718581,9.689951518168177 63.63684588094647,9.724439073523108 63.644773897826795,9.750967962257668 63.644773897826795,9.737703517890388 63.624953855625975,9.71648040690274 63.61438316645221,9.737703517890388 63.61702583874565,9.761579517751494 63.59059911581122,9.753620851131124 63.582671098930895,9.7854555176126 63.57606441819729,9.788108406486057 63.56152972058336,9.809331517473705 63.557565712143195,9.833207517334811 63.5390670060891,9.822595961840985 63.527174980768606,9.804025739726793 63.515282955448114,9.851777739449005 63.50074825783418,9.843819072828635 63.484892224073526,9.904835516918128 63.470357526459594,9.907488405791584 63.45978683728582,9.979116405374901 63.442609467378446,9.957893294387251 63.40164804683009,9.941975961146515 63.372578651602225,9.907488405791584 63.34879460096124,9.880959517057022 63.34483059252108,9.814637295220617 63.31972520573338,9.86238929494283 63.31179718885305,9.891571072550846 63.32633188646698,9.949934627766883 63.34086658408091,9.960546183260707 63.34879460096124,10.000339516362551 63.34483059252108,10.03482707171748 63.34879460096124,10.05605018270513 63.34483059252108,10.074620404819324 63.323689214173534,10.101149293553885 63.32897455876042,10.148901293276097 63.31972520573338,10.16747151539029 63.310475852706325,10.209917737365588 63.32236787802682,10.231140848353238 63.34483059252108,10.146248404402641 63.34483059252108,10.125025293414991 63.352758609401405,10.106455071300797 63.352758609401405,10.085231960313148 63.3712573154555,10.071967515945868 63.3712573154555,10.05605018270513 63.385792013069434,10.064008849325498 63.402969382976806,10.114413737921165 63.425432097471074,10.140942626655727 63.42411076132435,10.18073595975757 63.447894811965334,10.233793737226694 63.45450149269894,10.300115959063099 63.4584655011391,10.34786795878531 63.447894811965334,10.355826625405678 63.43203877820468,10.4088844028748 63.439966795085006,10.443371958229733 63.455822828845655,10.467247958090837 63.45185882040549,10.469900846964293 63.439966795085006,10.499082624572312 63.4333601143514,10.557446179788347 63.42939610591124,10.602545290637103 63.44393080352517,10.615809735004383 63.43864545893828,10.63968573486549 63.44393080352517,10.666214623600052 63.43600278664484,10.767024400791385 63.42939610591124,10.782941734032123 63.41354007215058,10.809470622766685 63.417504080590746,10.804164845019773 63.4333601143514,10.838652400374702 63.4333601143514,10.862528400235808 63.44393080352517,10.899668844464195 63.44657347581861,10.907627511084563 63.45185882040549,10.907627511084563 63.46903619031287,10.897015955590739 63.473000198753034,10.883751511223458 63.465072181872706,10.878445733476546 63.47432153489976,10.838652400374702 63.470357526459594,10.812123511640142 63.470357526459594,10.774983067411753 63.484892224073526,10.756412845297561 63.50074825783418,10.756412845297561 63.51924696388828,10.772330178538297 63.537745669942375,10.835999511501246 63.5390670060891,10.894363066717283 63.5456736868227,10.934156399819125 63.56152972058336,10.907627511084563 63.560208384436635,10.915586177704931 63.56813640131696,10.859875511362352 63.56152972058336,10.870487066856178 63.57210040975713,10.849263955868526 63.57342174590384,10.873139955729634 63.58795644351778,10.899668844464195 63.58399243507762,10.918239066578387 63.58663510737106,10.891710177843827 63.59192045195795,10.934156399819125 63.61041915801204,10.897015955590739 63.61041915801204,10.843958178121614 63.59192045195795,10.80681773389323 63.58399243507762,10.82008217826051 63.580028426637455,10.790900400652491 63.57870709049073,10.767024400791385 63.56813640131696,10.748454178677193 63.565493729023515,10.737842623183369 63.57342174590384,10.72192528994263 63.56152972058336,10.70866084557535 63.56152972058336,10.682131956840788 63.5456736868227,10.647644401485858 63.537745669942375,10.623768401624751 63.54699502296942,10.647644401485858 63.557565712143195,10.666214623600052 63.55624437599647,10.676826179093876 63.580028426637455,10.70070217895498 63.59192045195795,10.70070217895498 63.60645514957188,10.72192528994263 63.62098984718581,10.740495512056825 63.62098984718581,10.780288845158667 63.63684588094647,10.804164845019773 63.6328818725063,10.841305289248158 63.63684588094647,10.857222622488896 63.65534458700056,10.870487066856178 63.65666592314729,10.907627511084563 63.68177130993499,10.931503510945669 63.689699326815315,10.955379510806775 63.70159135213581,11.00047862165553 63.70159135213581,11.011090177149354 63.7134833774563,11.045577732504285 63.709519369016135,11.045577732504285 63.69366333525548,11.11189995434069 63.70819803286941,11.151693287442532 63.70423402442925,11.149040398569076 63.71612604974974,11.186180842797462 63.712162041309575,11.210056842658567 63.7200900581899,11.204751064911655 63.754444798004656,11.239238620266587 63.754444798004656,11.27107328674806 63.76633682332515,11.286990619988796 63.75048078956449,11.329436841964096 63.754444798004656,11.345354175204832 63.76237281488498,11.329436841964096 63.77030083176531,11.371883063939395 63.77294350405875,11.390453286053589 63.78087152093908,11.422287952535061 63.76633682332515,11.440858174649255 63.784835529379244,11.432899508028886 63.79540621855301,11.462081285636906 63.80333423543334,11.4382052857758 63.81126225231367,11.401064841547413 63.81522626075383,11.401064841547413 63.82315427763416,11.432899508028886 63.821832941487436,11.4382052857758 63.832403630661204,11.419635063661605 63.83372496680793,11.3957590638005 63.84825966442186,11.369230175065939 63.83372496680793,11.316172397596816 63.83768897524809,11.30556084210299 63.84825966442186,11.316172397596816 63.852223672862024,11.300255064356078 63.864115698182516,11.334742619711008 63.857509017448905,11.355965730698657 63.864115698182516,11.377188841686307 63.87997173194317,11.348007064078288 63.89318509341038,11.358618619572113 63.91036246331775,11.377188841686307 63.91036246331775,11.369230175065939 63.92093315249153,11.385147508306677 63.94603853927923,11.37453595281285 63.95000254771939,11.342701286331376 63.936789186252184,11.342701286331376 63.92357582478497,11.318825286470272 63.9130051356112,11.329436841964096 63.894506429557104,11.30556084210299 63.87997173194317,11.300255064356078 63.87072237891612,11.268420397874603 63.86807970662268,11.244544398013499 63.86015168974235,11.231279953646217 63.87072237891612,11.220668398152393 63.86279436203579,11.191486620544374 63.85618768130219,11.178222176177094 63.84561699212842,11.13842884307525 63.83768897524809,11.093329732226497 63.83768897524809,11.082718176732671 63.841652983688256,11.072106621238847 63.86279436203579,11.074759510112303 63.883935740383336,11.114552843214145 63.89847043799727,11.127817287581426 63.90639845487759,11.154346176315988 63.90507711873087,11.186180842797462 63.916969144051365,11.204751064911655 63.919611816344805,11.20740395378511 63.936789186252184,11.255155953507323 63.95132388386612,11.279031953368428 63.97642927065382,11.310866619849904 63.96982258992021,11.316172397596816 63.961894573039885,11.3533128418252 63.97378659836038,11.38249461943322 63.967179917626765,11.38249461943322 63.98039327909398,11.401064841547413 63.97775060680054,11.483304396624554 64.0068200020284,11.43024661915543 64.01342668276202,11.443511063522712 64.02135469964234,11.43024661915543 64.02928271652267,11.37453595281285 64.0187120273489,11.363924397319026 64.03853206954972,11.318825286470272 64.03060405266939,11.316172397596816 64.03853206954972,11.279031953368428 64.03456806110955,11.263114620127691 64.02664004422923,11.241891509140043 64.02664004422923,11.233932842519673 64.07156547321775,11.279031953368428 64.07552948165791,11.350659952951744 64.09799219615218,11.387800397180133 64.10327754073906,11.385147508306677 64.11120555761939,11.334742619711008 64.11120555761939,11.310866619849904 64.11516956605955,11.302907953229534 64.10327754073906,11.318825286470272 64.0993135322989,11.30556084210299 64.09138551541857,11.265767509001147 64.07949349009807,11.218015509278937 64.0742081455112,11.204751064911655 64.05174543101693,11.220668398152393 64.02267603578906,11.202098176038199 64.0068200020284,11.164957731809814 63.9936066405612,11.109247065467233 63.984357287534145,11.016395954896268 63.95528789230628,11.011090177149354 63.94603853927923,10.989867066161704 63.94339586698579,10.939462177566037 63.916969144051365,10.920891955451843 63.90507711873087,10.849263955868526 63.88261440423661,10.711313734448806 63.84825966442186,10.6874377345877 63.84561699212842,10.605198179510559 63.809940916166944,10.594586624016735 63.79672755469973,10.647644401485858 63.81522626075383,10.666214623600052 63.81522626075383,10.695396401208068 63.84033164754153,10.753759956424105 63.84825966442186,10.767024400791385 63.84561699212842,10.812123511640142 63.852223672862024,10.849263955868526 63.864115698182516,10.85456973361544 63.87072237891612,10.963338177427143 63.90507711873087,10.971296844047512 63.894506429557104,11.042924843630828 63.87865039579645,11.04823062137774 63.857509017448905,11.066800843491933 63.841652983688256,11.064147954618477 63.83768897524809,10.995172843908616 63.81786893304727,11.008437288275898 63.79540621855301,10.955379510806775 63.74651678112433,10.944767955312951 63.738588764244,10.796206178399403 63.70819803286941,10.774983067411753 63.70819803286941,10.711313734448806 63.69366333525548,10.679479067967332 63.68177130993499,10.626421290498207 63.67516462920138,10.610503957257471 63.66591527617433,10.607851068384015 63.64873790626696,10.557446179788347 63.624953855625975,10.530917291053786 63.62231118333253,10.507041291192682 63.61041915801204,10.45928929147047 63.599848468838275,10.45928929147047 63.59192045195795,10.419495958368627 63.58795644351778,10.419495958368627 63.56813640131696,10.355826625405678 63.57342174590384,10.305421736810011 63.55360170370303,10.233793737226694 63.55624437599647,10.209917737365588 63.54963769526287,10.209917737365588 63.5390670060891,10.156859959896465 63.52321097232844,10.119719515668077 63.50074825783418,10.101149293553885 63.492820240953854,10.045438627211304 63.490177568660414,10.018909738476744 63.492820240953854,9.989727960868725 63.48621356022025,9.98707507199527 63.495462913247295,9.949934627766883 63.495462913247295,9.934017294526146 63.50074825783418,9.907488405791584 63.535102997648934,9.923405739032322 63.54303101452926,9.894223961424302 63.56152972058336,9.899529739171214 63.57342174590384,9.926058627905778 63.582671098930895,9.918099961285408 63.59192045195795,9.854430628322461 63.58663510737106,9.817290184094073 63.61041915801204,9.806678628600249 63.62891786406614,9.859736406069374 63.64080988938663,9.822595961840985 63.647416570120235,9.822595961840985 63.65666592314729,9.801372850853337 63.660629931587444,9.825248850714441 63.67120062076122,9.811984406347161 63.683092646081704,9.851777739449005 63.689699326815315,9.865042183816286 63.67780730149482,9.873000850436654 63.689699326815315,9.918099961285408 63.70159135213581,9.918099961285408 63.69762734369564,9.960546183260707 63.69630600754892,9.936670183399603 63.70819803286941,9.979116405374901 63.7200900581899,9.979116405374901 63.70819803286941,10.07727329369278 63.73066074736367,10.082579071439692 63.738588764244,10.130331071161903 63.75312346185793,10.07727329369278 63.74915945341777,10.037479960590936 63.731982083510395,10.013603960729831 63.72801807507023,10.018909738476744 63.738588764244,10.03482707171748 63.74651678112433,10.040132849464392 63.757087470298096,10.07727329369278 63.76237281488498,10.071967515945868 63.76897949561859,10.117066626794621 63.776907512498916,10.117066626794621 63.784835529379244,10.064008849325498 63.77558617635219,10.029521293970568 63.76237281488498,9.981769294248357 63.754444798004656,9.934017294526146 63.754444798004656,9.91014129466504 63.742552772684164,9.87565373931011 63.734624755803836,9.880959517057022 63.72801807507023,9.846471961702091 63.71876872204318,9.827901739587897 63.722732730483344,9.804025739726793 63.709519369016135,9.748315073384212 63.70423402442925,9.737703517890388 63.69630600754892,9.67403418492744 63.70159135213581,9.663422629433615 63.69366333525548,9.663422629433615 63.67516462920138,9.636893740699055 63.67780730149482,9.591794629850298 63.67384329305466,9.565265741115738 63.65534458700056,9.544042630128088 63.660629931587444,9.575877296609562 63.68573531837515,9.575877296609562 63.709519369016135,9.549348407875 63.7200900581899,9.620976407458317 63.72801807507023,9.623629296331773 63.731982083510395,9.668728407180527 63.738588764244,9.697910184788546 63.754444798004656,9.766885295498406 63.76237281488498,9.804025739726793 63.76105147873826,9.79871996197988 63.76897949561859,9.753620851131124 63.76897949561859,9.71648040690274 63.76237281488498,9.613017740837948 63.757087470298096,9.581183074356474 63.76237281488498,9.562612852242282 63.77294350405875,9.589141740976842 63.787478201672684,9.607711963091035 63.79144221011285,9.607711963091035 63.799370226993176,9.658116851686703 63.809940916166944,9.67403418492744 63.81786893304727,9.663422629433615 63.82315427763416,9.623629296331773 63.81522626075383,9.634240851825599 63.829760958367764,9.666075518307071 63.83372496680793,9.676687073800895 63.844295655981696,9.72974485127002 63.852223672862024,9.721786184649652 63.85618768130219,9.753620851131124 63.864115698182516,9.76423240662495 63.85618768130219,9.804025739726793 63.86015168974235,9.814637295220617 63.857509017448905,9.79871996197988 63.841652983688256,9.697910184788546 63.827118286074324,9.69525729591509 63.81522626075383,9.735050629016932 63.82315427763416,9.769538184371862 63.821832941487436,9.780149739865688 63.829760958367764,9.817290184094073 63.83768897524809,9.817290184094073 63.84825966442186,9.835860406208267 63.852223672862024,9.851777739449005 63.844295655981696,9.865042183816286 63.852223672862024,9.883612405930478 63.852223672862024,9.886265294803934 63.87072237891612,9.859736406069374 63.85618768130219,9.827901739587897 63.872043715062844,9.88891818367739 63.89318509341038,9.923405739032322 63.89847043799727,9.93136440565269 63.89054242111694,9.957893294387251 63.894506429557104,9.926058627905778 63.88261440423661,9.934017294526146 63.872043715062844,10.029521293970568 63.90904112717104,10.111760849047709 63.92357582478497,10.109107960174253 63.92753983322513,10.156859959896465 63.93282517781202,10.186041737504482 63.94075319469235,10.188694626377938 63.92886116937186,10.215223515112502 63.92357582478497,10.220529292859414 63.936789186252184,10.204611959618676 63.93546785010546,10.204611959618676 63.94735987542595,10.225835070606326 63.94735987542595,10.22318218173287 63.959251900746445,10.183388848631026 63.95000254771939,10.188694626377938 63.959251900746445,10.140942626655727 63.94603853927923,10.106455071300797 63.94075319469235,10.10380218242734 63.95793056459972,10.22318218173287 63.99757064900136,10.20195907074522 63.99757064900136,10.106455071300797 63.9632159091866,10.079926182566236 63.96585858148005,10.119719515668077 63.98039327909398,10.098496404680429 63.97775060680054,10.042785738337848 63.961894573039885,10.026868405097112 63.961894573039885,9.955240405513795 63.95000254771939,9.952587516640339 63.959251900746445,9.981769294248357 63.97642927065382,10.002992405236007 63.97642927065382,10.000339516362551 63.99889198514808,10.050744404958218 63.984357287534145,10.050744404958218 63.9936066405612,10.005645294109463 64.0068200020284,10.005645294109463 64.0187120273489,10.029521293970568 64.02664004422923,10.05605018270513 64.01474801890873,10.064008849325498 64.02267603578906,10.03482707171748 64.03456806110955,10.064008849325498 64.03853206954972,10.082579071439692 64.05042409487021,10.061355960452042 64.05438810331037,10.018909738476744 64.08213616239152,10.037479960590936 64.07949349009807,10.026868405097112 64.09799219615218,10.071967515945868 64.10724154917922,10.143595515529185 64.07817215395136,10.252363959340887 64.10063486844561,10.252363959340887 64.11516956605955,10.207264848492132 64.10327754073906,10.175430182010658 64.10327754073906,10.132983960035359 64.11120555761939,10.119719515668077 64.12838292752676,10.156859959896465 64.14556029743413,10.183388848631026 64.1561309866079,10.220529292859414 64.14423896128741,10.228487959479782 64.14820296972758,10.215223515112502 64.16141633119479,10.22318218173287 64.17595102880873,10.186041737504482 64.18387904568905,10.196653292998308 64.20105641559643,10.228487959479782 64.20105641559643,10.252363959340887 64.18520038183577,10.265628403708167 64.18520038183577,10.247058181593975 64.20502042403659,10.281545736948905 64.20502042403659,10.284198625822361 64.19180706256938,10.300115959063099 64.18520038183577,10.308074625683467 64.20105641559643,10.300115959063099 64.2116271047702,10.350520847658766 64.20502042403659,10.36909106977296 64.19180706256938,10.358479514279134 64.17727236495544,10.374396847519872 64.17727236495544,10.39561995850752 64.20105641559643,10.342562181038398 64.21691244935708,10.292157292442731 64.22484046623741,10.273587070328537 64.23408981926445,10.297463070189643 64.24598184458495,10.323991958924204 64.24598184458495,10.358479514279134 64.25787386990544,10.331950625544572 64.26580188678577,10.36909106977296 64.28297925669314,10.406231514001345 64.25390986146527,10.424801736115539 64.25390986146527,10.39561995850752 64.27769391210626,10.406231514001345 64.28165792054642,10.403578625127889 64.29487128201363,10.435413291609365 64.2988352904538,10.435413291609365 64.28562192898659,10.451330624850101 64.27769391210626,10.467247958090837 64.28165792054642,10.448677735976645 64.29090727357347,10.467247958090837 64.29751395430708,10.491123957951944 64.2869432651333,10.507041291192682 64.3054419711874,10.475206624711205 64.2988352904538,10.451330624850101 64.30676330733412,10.45928929147047 64.31469132421445,10.446024847103189 64.32261934109478,10.469900846964293 64.3305473579751,10.451330624850101 64.33979671100215,10.446024847103189 64.35168873632264,10.483165291331574 64.35829541705625,10.565404846408716 64.32790468568166,10.581322179649455 64.33186869412182,10.512347068939594 64.3556527447628,10.509694180066138 64.37283011467018,10.578669290775998 64.3675447700833,10.615809735004383 64.33979671100215,10.650297290359314 64.3556527447628,10.682131956840788 64.36225942549642,10.63968573486549 64.35961675320297,10.610503957257471 64.36622343393658,10.626421290498207 64.37150877852346,10.602545290637103 64.38736481228412,10.573363513029085 64.38340080384395,10.56275195753526 64.38868614843084,10.581322179649455 64.39529282916445,10.56275195753526 64.40322084604477,10.499082624572312 64.39529282916445,10.483165291331574 64.38736481228412,10.451330624850101 64.40718485448494,10.536223068800698 64.4362542497128,10.56275195753526 64.42039821595215,10.586627957396367 64.41643420751198,10.607851068384015 64.392650156871,10.63968573486549 64.39132882072428,10.615809735004383 64.40850619063166,10.642338623738945 64.4111488629251,10.626421290498207 64.41643420751198,10.607851068384015 64.41643420751198,10.605198179510559 64.42436222439231,10.581322179649455 64.42436222439231,10.549487513167978 64.43889692200625,10.570710624155629 64.44153959429968,10.589280846269823 64.4362542497128,10.599892401763647 64.45607429191362,10.615809735004383 64.45739562806034,10.650297290359314 64.44021825815297,10.682131956840788 64.41247019907182,10.751107067550649 64.41511287136527,10.751107067550649 64.38736481228412,10.759065734171017 64.37679412311034,10.796206178399403 64.38472213999067,10.82008217826051 64.3675447700833,10.841305289248158 64.37150877852346,10.822735067133966 64.38868614843084,10.782941734032123 64.40454218219149,10.82008217826051 64.41511287136527,10.801511956146317 64.42832623283248,10.809470622766685 64.4362542497128,10.761718623044473 64.43229024127264,10.745801289803737 64.44418226659313,10.740495512056825 64.42832623283248,10.70070217895498 64.42436222439231,10.695396401208068 64.4362542497128,10.658255956979684 64.44418226659313,10.655603068106227 64.45607429191362,10.690090623461156 64.45739562806034,10.692743512334612 64.47721567026116,10.70866084557535 64.47721567026116,10.735189734309913 64.46532364494067,10.737842623183369 64.45739562806034,10.756412845297561 64.45607429191362,10.764371511917929 64.46532364494067,10.759065734171017 64.473251661821,10.769677289664841 64.48117967870132,10.812123511640142 64.473251661821,10.828040844880878 64.45343161962018,10.862528400235808 64.45343161962018,10.822735067133966 64.473251661821,10.838652400374702 64.47721567026116,10.793553289525947 64.49703571246198,10.788247511779035 64.51024907392919,10.835999511501246 64.50628506548902,10.873139955729634 64.4983570486087,10.894363066717283 64.46796631723412,10.907627511084563 64.47193032567428,10.891710177843827 64.49307170402182,10.88905728897037 64.50628506548902,10.907627511084563 64.50099972090214,10.907627511084563 64.5168557546628,10.950073733059863 64.50628506548902,10.973949732920968 64.49703571246198,10.947420844186407 64.52081976310296,10.976602621794424 64.53271178842346,10.960685288553687 64.5419611414505,10.934156399819125 64.57103053667836,10.918239066578387 64.5670665282382,10.907627511084563 64.57895855355869,10.944767955312951 64.58688657043902,10.947420844186407 64.59877859575951,10.9659910663006 64.60670661263984,11.00047862165553 64.59481458731935,11.00047862165553 64.5855652342923,11.02170173264318 64.58688657043902,11.072106621238847 64.56574519209148,11.072106621238847 64.53799713301034,11.082718176732671 64.53403312457017,11.072106621238847 64.51421308236935,11.090676843353041 64.51421308236935,11.098635509973409 64.52610510768984,11.1596519540629 64.49307170402182,11.16761062068327 64.49439304016853,11.188833731670918 64.48117967870132,11.191486620544374 64.46928765338083,11.1596519540629 64.44418226659313,11.191486620544374 64.43889692200625,11.223321287025849 64.45211028347346,11.244544398013499 64.4481462750333,11.29229639773571 64.46400230879395,11.342701286331376 64.46003830035379,11.342701286331376 64.44153959429968,11.294949286609166 64.4481462750333,11.294949286609166 64.44021825815297,11.34004839745792 64.4362542497128,11.31351950872336 64.38736481228412,11.279031953368428 64.37547278696363,11.223321287025849 64.3305473579751,11.212709731532023 64.31336998806773,11.23658573139313 64.31336998806773,11.27107328674806 64.35433140861609,11.332089730837552 64.37283011467018,11.337395508584464 64.39132882072428,11.37453595281285 64.39661416531116,11.393106174927045 64.37943679540379,11.377188841686307 64.37943679540379,11.358618619572113 64.36622343393658,11.387800397180133 64.36358076164314,11.409023508167781 64.3675447700833,11.387800397180133 64.40454218219149,11.371883063939395 64.40454218219149,11.350659952951744 64.41907687980543,11.385147508306677 64.42832623283248,11.38249461943322 64.43493291356609,11.406370619294325 64.44418226659313,11.446163952396168 64.43229024127264,11.52044484085294 64.4481462750333,11.517791951979484 64.4613596365005,11.49922172986529 64.46003830035379,11.480651507751098 64.46796631723412,11.462081285636906 64.45343161962018,11.440858174649255 64.45211028347346,11.443511063522712 64.46928765338083,11.424940841408517 64.47589433411444,11.443511063522712 64.48514368714149,11.462081285636906 64.5168557546628,11.512486174232572 64.51421308236935,11.536362174093679 64.51817709080952,11.52044484085294 64.53403312457017,11.509833285359116 64.52610510768984,11.491263063244922 64.52610510768984,11.49922172986529 64.53667579686362,11.48595728549801 64.5419611414505,11.523097729726397 64.54592514989066,11.52044484085294 64.55781717521116,11.573502618322063 64.55517450291771,11.544320840714047 64.53403312457017,11.557585285081327 64.53403312457017,11.621254618044276 64.56574519209148,11.72206439523561 64.58160122585214,11.783080839325102 64.58688657043902,11.780427950451646 64.59085057887918,11.716758617488697 64.58952924273247,11.692882617627593 64.59481458731935,11.650436395652292 64.57895855355869,11.639824840158468 64.58292256199886,11.610643062550452 64.57103053667836,11.621254618044276 64.58688657043902,11.610643062550452 64.5855652342923,11.629213284664644 64.61463462952017,11.602684395930083 64.61859863796033,11.546973729587503 64.60274260419968,11.552279507334415 64.59877859575951,11.589419951562801 64.60406394034639,11.602684395930083 64.5974572596128,11.594725729309713 64.58292256199886,11.552279507334415 64.56574519209148,11.536362174093679 64.56574519209148,11.491263063244922 64.57763721741198,11.48595728549801 64.5855652342923,11.4382052857758 64.60406394034639,11.432899508028886 64.61463462952017,11.398411952673957 64.63181199942754,11.3957590638005 64.64238268860132,11.411676397041237 64.6476680331882,11.385147508306677 64.65427471392181,11.379841730559763 64.66880941153573,11.393106174927045 64.68730811758984,11.41698217478815 64.67938010070951,11.4382052857758 64.69127212603,11.427593730281973 64.69920014291033,11.406370619294325 64.70052147905704,11.403717730420869 64.71241350437754,11.427593730281973 64.70844949593737,11.52044484085294 64.72826953813819,11.533709285220223 64.73751889116524,11.52840350747331 64.74941091648573,11.546973729587503 64.75601759721934,11.581461284942433 64.74412557189885,11.600031507056627 64.7414828996054,11.634519062411556 64.7533749249259,11.623907506917732 64.76130294180622,11.581461284942433 64.75601759721934,11.565543951701695 64.76130294180622,11.600031507056627 64.77187363098,11.629213284664644 64.76790962253983,11.650436395652292 64.77583763942016,11.663700840019574 64.76923095868655,11.708799950868329 64.77319496712671,11.72206439523561 64.7850869924472,11.740634617349803 64.77319496712671,11.793692394818926 64.77319496712671,11.849403061161507 64.7969790177677,11.783080839325102 64.80490703464802,11.780427950451646 64.79433634547425,11.740634617349803 64.79301500932753,11.745940395096717 64.80887104308819,11.703494173121417 64.80490703464802,11.676965284386856 64.81812039611523,11.639824840158468 64.81415638767507,11.639824840158468 64.8220844045554,11.796345283692382 64.83794043831605,11.775122172704734 64.84190444675622,11.809609728059664 64.85908181666359,11.796345283692382 64.8656884973972,11.756551950590541 64.84322578290293,11.719411506362153 64.83794043831605,11.655742173399206 64.8352977660226,11.671659506639942 64.85908181666359,11.708799950868329 64.86304582510375,11.690229728754137 64.87097384198408,11.897155060883719 64.91457793482589,11.952865727226298 64.9343979770267,12.021840837936159 64.9277912962931,12.037758171176897 64.94364733005375,12.064287059911457 64.94761133849391,12.074898615405282 64.95553935537424,12.096121726392932 64.9528966830808,12.106733281886756 64.9595033638144,12.146526614988598 64.96082469996112,12.175708392596617 64.95553935537424,12.191625725837355 64.9410046577603,12.167749725976249 64.93175530473326,12.199584392457723 64.93175530473326,12.242030614433022 64.93836198546687,12.247336392179934 64.9343979770267,12.287129725281776 64.9343979770267,12.295088391902144 64.9277912962931,12.372022169232373 64.91854194326605,12.440997279942234 64.88550853959802,12.456914613182972 64.88947254803819,12.390592391346567 64.92382728785293,12.316311502889794 64.93968332161359,12.300394169649056 64.94496866620047,12.252642169926846 64.94893267464063,12.24998928105339 64.94496866620047,12.199584392457723 64.94761133849391,12.188972836963899 64.95553935537424,12.15183239273551 64.96743138069473,12.117344837380582 64.9713953891349,12.085510170899106 64.96478870840129,12.05632839329109 64.9713953891349,12.024493726809615 64.96082469996112,12.029799504556527 64.95553935537424,12.00592350469542 64.94496866620047,11.952865727226298 64.94893267464063,11.910419505251 64.9277912962931,11.796345283692382 64.90400724565211,11.68757683988068 64.8775805227177,11.613295951423908 64.8656884973972,11.621254618044276 64.85908181666359,11.655742173399206 64.86172448895704,11.639824840158468 64.83794043831605,11.613295951423908 64.82604841299556,11.565543951701695 64.8220844045554,11.552279507334415 64.81283505152835,11.52044484085294 64.81679905996852,11.509833285359116 64.80887104308819,11.45942839676345 64.80887104308819,11.467387063383818 64.79301500932753,11.393106174927045 64.75205358877918,11.3533128418252 64.74544690804557,11.332089730837552 64.74544690804557,11.249850175760411 64.72826953813819,11.218015509278937 64.72562686584475,11.191486620544374 64.74412557189885,11.25780884238078 64.7533749249259,11.279031953368428 64.74808958033901,11.308213730976448 64.7599816056595,11.34004839745792 64.76130294180622,11.366577286192483 64.77319496712671,11.414329285914693 64.80094302620786,11.446163952396168 64.80887104308819,11.443511063522712 64.81415638767507,11.411676397041237 64.80622837079474,11.342701286331376 64.80490703464802,11.310866619849904 64.8101923792349,11.329436841964096 64.8220844045554,11.294949286609166 64.81679905996852,11.29229639773571 64.80887104308819,11.244544398013499 64.80622837079474,11.265767509001147 64.82472707684884,11.260461731254235 64.83133375758244,11.308213730976448 64.83794043831605,11.27107328674806 64.83926177446277,11.276379064494972 64.84586845519638,11.409023508167781 64.8656884973972,11.525750618599853 64.86304582510375,11.531056396346766 64.86965250583737,11.565543951701695 64.87097384198408,11.570849729448607 64.86700983354392,11.60533728480354 64.87890185886441,11.66635372889303 64.88682987574474,11.703494173121417 64.9026859095054,11.684923951007224 64.90664991794556,11.637171951285012 64.89475789262507,11.560238173954783 64.87890185886441,11.454122619016537 64.87097384198408,11.411676397041237 64.87361651427753,11.281684842241884 64.85379647207671,11.276379064494972 64.86700983354392,11.329436841964096 64.8907938841849,11.3533128418252 64.89475789262507,11.3533128418252 64.9026859095054,11.45942839676345 64.93571931317342,11.480651507751098 64.92646996014638,11.54166795184059 64.88682987574474,11.568196840575151 64.89211522033162,11.560238173954783 64.89872190106523,11.59737861818317 64.92382728785293,11.565543951701695 64.91854194326605,11.539015062967135 64.9026859095054,11.52044484085294 64.9158992709726,11.475345730004186 64.93571931317342,11.509833285359116 64.94893267464063,11.565543951701695 64.95686069152096,11.570849729448607 64.94364733005375,11.589419951562801 64.9595033638144,11.60533728480354 64.96082469996112,11.629213284664644 64.94496866620047,11.626560395791188 64.9343979770267,11.655742173399206 64.9343979770267,11.647783506778836 64.94364733005375,11.613295951423908 64.96478870840129,11.650436395652292 64.96875271684145,11.6743123955134 64.96082469996112,11.655742173399206 64.95157534693408,11.727370172982523 64.9528966830808,11.732675950729435 64.96743138069473,11.783080839325102 64.98328741445539,11.716758617488697 64.9846087506021,11.719411506362153 64.97535939757506,11.70084128424796 64.98328741445539,11.639824840158468 64.98064474216194,11.61860172917082 64.97668073372178,11.592072840436257 64.97668073372178,11.613295951423908 64.9965007759226,11.637171951285012 65.00442879280293,11.6743123955134 65.0097141373898,11.669006617766486 65.00046478436276,11.684923951007224 65.00046478436276,11.698188395374505 65.01632081812342,11.711452839741785 65.01632081812342,11.730023061855979 65.00046478436276,11.748593283970173 64.9965007759226,11.775122172704734 65.00310745665621,11.772469283831278 64.99253676748243,11.793692394818926 64.99517943977588,11.788386617072014 65.00839280124309,11.809609728059664 65.02028482656358,11.836138616794226 65.02028482656358,11.928989727365192 65.05728223867177,11.952865727226298 65.05860357481849,11.947559949479386 65.07313827243243,11.921031060744824 65.06653159169882,11.84675017228805 65.03746219647095,11.780427950451646 65.01632081812342,11.748593283970173 65.0097141373898,11.737981728476347 65.02424883500375,11.756551950590541 65.04539021335128,11.793692394818926 65.07049560013898,11.836138616794226 65.08635163389964,11.814915505806576 65.08635163389964,11.854708838908419 65.11409969298079,11.899807949757175 65.127313054448,11.905113727504087 65.13788374362177,11.984700393707772 65.16166779426275,11.990006171454684 65.1709171472898,12.019187949062703 65.16298913040947,12.035105282303439 65.14713309664882,12.003270615821965 65.11277835683407,11.990006171454684 65.11409969298079,11.950212838352842 65.1022076676603,11.995311949201596 65.10617167610046,11.990006171454684 65.08635163389964,12.013882171315789 65.09427965077997,12.043063948923809 65.0771022808726,12.066939948784913 65.07842361701931,12.06959283765837 65.08899430619309,12.053675504417633 65.10617167610046,12.08285728202565 65.1339197351816,12.088163059772562 65.11409969298079,12.1040803930133 65.11277835683407,12.13856794836823 65.11938503756767,12.114691948507126 65.12599171830128,12.109386170760212 65.13788374362177,12.119997726254038 65.15109710508898,12.11203905963367 65.17884516417013,12.117344837380582 65.18677318105046,12.154485281608967 65.19470119793078,12.159791059355879 65.20262921481111,12.202237281331179 65.21187856783816,12.226113281192283 65.21187856783816,12.242030614433022 65.19998654251766,12.265906614294128 65.19073718949062,12.276518169787952 65.1709171472898,12.295088391902144 65.16695313884964,12.2977412807756 65.15506111352914,12.234071947812652 65.11013568454062,12.300394169649056 65.11806370142095,12.337534613877445 65.11277835683407,12.329575947257077 65.09824365922013,12.300394169649056 65.08635163389964,12.234071947812652 65.0652102555521,12.17305550372316 65.05331823023161,12.12530350400095 65.05331823023161,12.093468837519476 65.06917426399227,11.976741727087404 65.07049560013898,11.960824393846666 65.0652102555521,12.077551504278738 65.06124624711194,12.117344837380582 65.04935422179145,12.098774615266388 65.04142620491112,12.133262170621318 65.04539021335128,12.159791059355879 65.04539021335128,12.181014170343529 65.03614086032424,12.19427861471081 65.01632081812342,12.175708392596617 64.9846087506021,12.210195947951547 64.99517943977588,12.212848836825003 65.02028482656358,12.181014170343529 65.04803288564473,12.247336392179934 65.05860357481849,12.252642169926846 65.05331823023161,12.321617280636707 65.06653159169882,12.326923058383619 65.08106628931276,12.385286613599655 65.0903156423398,12.411815502334218 65.08899430619309,12.427732835574954 65.0771022808726,12.459567502056428 65.0771022808726,12.480790613044078 65.08635163389964,12.494055057411359 65.10485033995374,12.480790613044078 65.10617167610046,12.44365016881569 65.08899430619309,12.401203946840392 65.09824365922013,12.43038572444841 65.1022076676603,12.448955946562602 65.11277835683407,12.483443501917534 65.11409969298079,12.502013724031727 65.12202770986111,12.539154168260113 65.13127706288816,12.586906167982324 65.12995572674144,12.586906167982324 65.13920507976849,12.655881278692185 65.16166779426275,12.671798611932921 65.17488115572996,12.714244833908221 65.19470119793078,12.738120833769326 65.1960225340775,12.77791416687117 65.21848524857177,12.793831500111907 65.21187856783816,12.79117861123845 65.22377059315865,12.825666166593379 65.25283998838651,12.857500833074855 65.27266003058733,12.93708749927854 65.30569343425536,12.960963499139645 65.30965744269552,12.966269276886557 65.31758545957585,12.942393277025452 65.33212015718979,12.83362483321375 65.27794537517421,12.801790166732275 65.25283998838651,12.76464972250389 65.23698395462586,12.751385278136606 65.2264132654521,12.677104389679833 65.1960225340775,12.639963945451449 65.18677318105046,12.502013724031727 65.1339197351816,12.41712128008113 65.13920507976849,12.353451947118181 65.15770378582259,12.369369280358917 65.17620249187668,12.409162613460762 65.18809451719717,12.440997279942234 65.18280917261029,12.472831946423709 65.18413050875701,12.509972390652095 65.1960225340775,12.475484835297166 65.1960225340775,12.459567502056428 65.20791455939799,12.425079946701498 65.20659322325128,12.422427057828042 65.2145212401316,12.44365016881569 65.21980658471848,12.422427057828042 65.23169861003898,12.387939502473111 65.22377059315865,12.342840391624357 65.22244925701193,12.334881725003989 65.23169861003898,12.353451947118181 65.23301994618569,12.401203946840392 65.24887597994635,12.46487327980334 65.2396266269193,12.507319501778639 65.2396266269193,12.509972390652095 65.2515186522398,12.462220390929884 65.24491197150618,12.414468391207674 65.25283998838651,12.419774168954586 65.25680399682668,12.462220390929884 65.25548266067996,12.422427057828042 65.26869602214717,12.372022169232373 65.25680399682668,12.390592391346567 65.26869602214717,12.361410613738549 65.26737468600045,12.345493280497813 65.25680399682668,12.321617280636707 65.25680399682668,12.295088391902144 65.24359063535947,12.276518169787952 65.22773460159881,12.247336392179934 65.23037727389226,12.326923058383619 65.26869602214717,12.329575947257077 65.28587339205454,12.364063502612005 65.30833610654881,12.385286613599655 65.30965744269552,12.419774168954586 65.30569343425536,12.446303057689146 65.31362145113569,12.451608835436058 65.32419214030946,12.472831946423709 65.32419214030946,12.470179057550252 65.33608416562996,12.425079946701498 65.31758545957585,12.40385683571385 65.3202281318693,12.422427057828042 65.33740550177667,12.422427057828042 65.345333518657,12.475484835297166 65.36251088856437,12.467526168676796 65.3704389054447,12.433038613321866 65.36118955241766,12.425079946701498 65.36251088856437,12.3401875027509 65.32419214030946,12.273865280914496 65.31758545957585,12.268559503167584 65.31230011498897,12.247336392179934 65.31758545957585,12.244683503306478 65.32815614874963,12.226113281192283 65.32947748489634,12.223460392318827 65.31758545957585,12.234071947812652 65.30040808966848,12.27121239204104 65.2898374004947,12.263253725420672 65.27266003058733,12.252642169926846 65.27266003058733,12.199584392457723 65.23698395462586,12.13856794836823 65.23037727389226,12.074898615405282 65.20791455939799,12.053675504417633 65.21055723169144,12.048369726670721 65.21848524857177,12.1040803930133 65.23698395462586,12.088163059772562 65.2396266269193,12.117344837380582 65.25680399682668,12.1040803930133 65.26341067756029,12.135915059494774 65.28058804746766,12.11203905963367 65.28455205590782,12.13856794836823 65.29644408122832,12.13856794836823 65.30833610654881,12.085510170899106 65.30437209810864,12.085510170899106 65.31362145113569,12.127956392874406 65.32551347645618,12.12530350400095 65.34665485480372,12.13856794836823 65.35061886324388,12.149179503862054 65.3704389054447,12.186319948090443 65.36515356085782,12.19427861471081 65.345333518657,12.218154614571915 65.35061886324388,12.196931503584267 65.36647489700454,12.223460392318827 65.37440291388486,12.231419058939196 65.36647489700454,12.27121239204104 65.38100959461848,12.265906614294128 65.39025894764552,12.212848836825003 65.37836692232503,12.178361281470073 65.37440291388486,12.165096837102793 65.38629493920536,12.186319948090443 65.40611498140618,12.247336392179934 65.43122036819388,12.348146169371269 65.46028976342174,12.353451947118181 65.46689644415535,12.326923058383619 65.46689644415535,12.342840391624357 65.49068049479634,12.27121239204104 65.46689644415535,12.273865280914496 65.4761457971824,12.252642169926846 65.46689644415535,12.24998928105339 65.48010980562256,12.268559503167584 65.48407381406273,12.287129725281776 65.49596583938322,12.231419058939196 65.48275247791601,12.22876617006574 65.4642537718619,12.178361281470073 65.4391483850742,12.19427861471081 65.46689644415535,12.234071947812652 65.49596583938322,12.234071947812652 65.50389385626355,12.260600836547216 65.5448552768119,12.239377725559565 65.5448552768119,12.226113281192283 65.55542596598568,12.263253725420672 65.57656734433321,12.289782614155232 65.58581669736026,12.324270169510163 65.57656734433321,12.324270169510163 65.54089126837174,12.366716391485461 65.5197498900242,12.37467505810583 65.5197498900242,12.448955946562602 65.47878846947584,12.451608835436058 65.46293243571519,12.435691502195322 65.45368308268814,12.44365016881569 65.41932834287338,12.475484835297166 65.41536433443322,12.48609639079099 65.40215097296601,12.509972390652095 65.39818696452585,12.504666612905183 65.37308157773815,12.54180705713357 65.3704389054447,12.536501279386657 65.39025894764552,12.512625279525551 65.38497360305864,12.52058394614592 65.40215097296601,12.496707946284815 65.40611498140618,12.49936083515827 65.4140429982865,12.470179057550252 65.43386304048732,12.456914613182972 65.45368308268814,12.48609639079099 65.45896842727502,12.478137724170622 65.44311239351437,12.502013724031727 65.44971907424798,12.536501279386657 65.4391483850742,12.539154168260113 65.44575506580782,12.515278168399007 65.45764709112831,12.54976572375394 65.4510404103947,12.568335945868132 65.4391483850742,12.552418612627395 65.40611498140618,12.565683056994676 65.41007898984634,12.592211945729236 65.40611498140618,12.578947501361956 65.41536433443322,12.581600390235412 65.4391483850742,12.592211945729236 65.44179105736765,12.63200527883108 65.41007898984634,12.666492834186009 65.39158028379224,12.706286167287853 65.36251088856437,12.698327500667485 65.38629493920536,12.613435056716886 65.43518437663404,12.639963945451449 65.42725635975371,12.653228389818729 65.43386304048732,12.64526972319836 65.44575506580782,12.759343944756978 65.45764709112831,12.77791416687117 65.4642537718619,12.65853416756564 65.45896842727502,12.626699501084168 65.45500441883486,12.602823501223062 65.4642537718619,12.663839945312553 65.48010980562256,12.653228389818729 65.48407381406273,12.592211945729236 65.47482446103568,12.581600390235412 65.49068049479634,12.552418612627395 65.50785786470371,12.581600390235412 65.51710721773075,12.592211945729236 65.51578588158404,12.624046612210712 65.52107122617092,12.626699501084168 65.52767790690453,12.586906167982324 65.52503523461108,12.568335945868132 65.55542596598568,12.5762946124885 65.58449536121354,12.56303016812122 65.5884593696537,12.54976572375394 65.56467531901272,12.552418612627395 65.53296325149141,12.533848390513201 65.51710721773075,12.49936083515827 65.50785786470371,12.459567502056428 65.51710721773075,12.517931057272463 65.55542596598568,12.536501279386657 65.57260333589305,12.539154168260113 65.58449536121354,12.52058394614592 65.58053135277338,12.504666612905183 65.56071131057256,12.446303057689146 65.52767790690453,12.440997279942234 65.52107122617092,12.398551057966936 65.53692725993157,12.385286613599655 65.54881928525207,12.379980835852741 65.56863932745289,12.401203946840392 65.57260333589305,12.414468391207674 65.58978070580042,12.385286613599655 65.57656734433321,12.366716391485461 65.60167273112091,12.366716391485461 65.6254567817619,12.350799058244725 65.62677811790861,12.440997279942234 65.69813026983157,12.507319501778639 65.73909169037992,12.581600390235412 65.71795031203239,12.58955905685578 65.69945160597828,12.605476390096518 65.69945160597828,12.570988834741588 65.67831022763075,12.581600390235412 65.67434621919058,12.61078216784343 65.6941662613914,12.634658167704536 65.69152358909795,12.64526972319836 65.68227423607091,12.602823501223062 65.66641820231025,12.613435056716886 65.6505621685496,12.624046612210712 65.66245419387009,12.642616834324905 65.67038221075042,12.637311056577992 65.64527682396272,12.706286167287853 65.64263415166927,12.74873238926315 65.63470613478894,12.743426611516238 65.61752876488157,12.775261277997714 65.60563673956108,12.783219944618082 65.59374471424059,12.807095944479187 65.60167273112091,12.759343944756978 65.61752876488157,12.761996833630434 65.63074212634878,12.793831500111907 65.63338479864223,12.751385278136606 65.64659816010943,12.743426611516238 65.64263415166927,12.700980389540941 65.65320484084305,12.653228389818729 65.6505621685496,12.655881278692185 65.67038221075042,12.671798611932921 65.68755958065779,12.63200527883108 65.69813026983157,12.626699501084168 65.71398630359222,12.608129278969974 65.71134363129877,12.608129278969974 65.72191432047255,12.539154168260113 65.75230505184713,12.581600390235412 65.76419707716762,12.602823501223062 65.78401711936844,12.61078216784343 65.80383716156926,12.671798611932921 65.81176517844959,12.685063056300205 65.78005311092828,12.714244833908221 65.7747677663414,12.72220350052859 65.78269578322173,12.690368834047117 65.79855181698238,12.693021722920573 65.80383716156926,12.719550611655134 65.79855181698238,12.730162167148958 65.80383716156926,12.693021722920573 65.81705052303647,12.685063056300205 65.84479858211762,12.677104389679833 65.81969319532992,12.663839945312553 65.8249785399168,12.629352389957624 65.82365720377008,12.608129278969974 65.81572918688975,12.597517723476148 65.8249785399168,12.605476390096518 65.84479858211762,12.629352389957624 65.85272659899795,12.642616834324905 65.89765202798647,12.663839945312553 65.92143607862745,12.716897722781678 65.9372921123881,12.716897722781678 65.92936409550778,12.740773722642782 65.94257745697499,12.801790166732275 65.96239749917581,12.809748833352643 65.96768284376269,12.844236388707575 65.9742895244963,12.86811238856868 65.97164685220285,12.86811238856868 65.95711215458893,12.899947055050152 65.95843349073564,12.921170166037804 65.94125612082827,12.939740388151996 65.93861344853482,12.93708749927854 65.9306854316545,12.960963499139645 65.92540008706762,13.02728572097605 65.92540008706762,13.045855943090242 65.91747207018729,13.053814609710614 65.90029470027991,13.072384831824806 65.88972401110614,13.093607942812454 65.88576000266598,13.128095498167387 65.89633069183975,13.141359942534667 65.86990396890532,13.18645905338342 65.82894254835696,13.183806164509964 65.86461862431844,13.165235942395771 65.87386797734548,13.157277275775403 65.8936880195463,13.162583053522315 65.90954405330696,13.133401275914299 65.918793406334,13.136054164787755 65.93861344853482,13.12544260929393 65.94257745697499,13.09626083168591 65.93332810394794,13.064426165204438 65.9372921123881,13.051161720837158 65.94654146541515,13.021979943229137 65.94522012926844,12.987492387874209 65.94654146541515,12.93708749927854 65.97032551605614,12.897294166176696 65.97032551605614,12.897294166176696 65.98353887752334,12.934434610405084 65.99410956669712,12.953004832519277 66.00732292816433,12.93708749927854 66.02185762577827,12.953004832519277 66.03507098724548,12.95035194364582 66.04696301256597,12.990145276747665 66.06017637403318,13.024632832102593 66.06414038247334,13.045855943090242 66.07735374394055,12.95035194364582 66.06281904632662,12.897294166176696 66.05092702100613,12.857500833074855 66.04828434871268,12.846889277581031 66.0548910294463,12.807095944479187 66.05224835715285,12.655881278692185 66.0297856426586,12.653228389818729 66.03507098724548,12.83362483321375 66.0681043909135,12.714244833908221 66.05224835715285,12.746079500389694 66.06281904632662,12.677104389679833 66.06017637403318,12.674451500806377 66.0681043909135,12.703633278414397 66.08131775238071,12.759343944756978 66.10113779458153,12.823013277719923 66.11963650063564,12.823013277719923 66.12756451751596,12.918517277164348 66.14077787898317,12.998103943368033 66.14474188742334,12.99279816562112 66.15002723201022,13.067079054077894 66.15795524889054,13.075037720698262 66.14077787898317,13.093607942812454 66.14606322357005,13.08299638731863 66.15266990430366,13.09626083168591 66.16191925733071,13.191764831130332 66.18173929953153,13.247475497472912 66.18966731641186,13.22890527535872 66.19495266099874,13.29788038606858 66.22137938393317,13.321756385929685 66.22666472852005,13.356243941284617 66.22666472852005,13.377467052272266 66.21873671163972,13.462359496222863 66.23062873696021,13.504805718198163 66.23062873696021,13.5207230514389 66.2425207622807,13.579086606654936 66.23459274540038,13.584392384401848 66.217415375493,13.57643371778148 66.20684468631923,13.549904829046916 66.20684468631923,13.499499940451251 66.19098865255857,13.526028829185812 66.19098865255857,13.608268384262953 66.1989166694389,13.597656828769129 66.1738112826512,13.549904829046916 66.14606322357005,13.539293273553092 66.13549253439629,13.536640384679636 66.10906581146186,13.560516384540744 66.1051018030217,13.565822162287656 66.1236005090758,13.597656828769129 66.14606322357005,13.642755939617885 66.16191925733071,13.682549272719726 66.15795524889054,13.714383939201202 66.16191925733071,13.74887149455613 66.16984727421104,13.801929272025255 66.15399124045038,13.815193716392535 66.14077787898317,13.841722605127096 66.16191925733071,13.788664827657975 66.18306063567825,13.754177272303043 66.18570330797169,13.682549272719726 66.1738112826512,13.66663193947899 66.19098865255857,13.616227050883321 66.17777529109136,13.618879939756777 66.19363132485202,13.650714606238253 66.20684468631923,13.626838606377145 66.21345136705284,13.640103050744429 66.22137938393317,13.597656828769129 66.22666472852005,13.658673272858621 66.23327140925366,13.717036828074658 66.2425207622807,13.793970605404887 66.2425207622807,13.820499494139447 66.23062873696021,13.770094605543779 66.20552335017251,13.76213593892341 66.19363132485202,13.783359049911063 66.18966731641186,13.791317716531431 66.20684468631923,13.847028382874008 66.22270072007989,13.966408382179537 66.24648477072087,13.966408382179537 66.26234080448152,13.982325715420274 66.27159015750857,14.030077715142486 66.27555416594873,14.045995048383222 66.29008886356267,14.088441270358523 66.29141019970939,14.128234603460363 66.3046235611766,14.122928825713451 66.31519425035037,14.149457714448015 66.33633562869791,14.122928825713451 66.34029963713807,14.11762304796654 66.33237162025775,14.019466159648662 66.3046235611766,13.992937270914098 66.31123024191021,13.93722660457152 66.30330222502988,13.910697715836957 66.28744619126923,13.905391938090045 66.27026882136185,13.873557271608572 66.27555416594873,13.844375494000552 66.27159015750857,13.809887938645623 66.27555416594873,13.740912827935762 66.25837679604136,13.74887149455613 66.27159015750857,13.770094605543779 66.27423282980202,13.770094605543779 66.29141019970939,13.743565716809218 66.2927315358561,13.754177272303043 66.27819683824218,13.72234260582157 66.27423282980202,13.727648383568482 66.25837679604136,13.616227050883321 66.23855675384054,13.573780828908024 66.2544127876012,13.579086606654936 66.26630481292169,13.640103050744429 66.28744619126923,13.565822162287656 66.29008886356267,13.552557717920372 66.27159015750857,13.512764384818531 66.25837679604136,13.4782768294636 66.2544127876012,13.462359496222863 66.24516343457415,13.380119941145722 66.23723541769382,13.364202607904986 66.24912744301432,13.316450608182773 66.25044877916103,13.244822608599456 66.21873671163972,13.15993016464886 66.19363132485202,13.035244387596418 66.1738112826512,13.019327054355681 66.17645395494465,13.008715498861857 66.20155934173235,13.02728572097605 66.20155934173235,13.101566609432822 66.23459274540038,13.18645905338342 66.25837679604136,13.183806164509964 66.26234080448152,13.114831053800103 66.24912744301432,13.133401275914299 66.25969813218808,13.199723497750703 66.2795181743889,13.252781275219824 66.28348218282906,13.321756385929685 66.29669554429627,13.382772830019178 66.30330222502988,13.414607496500654 66.30065955273643,13.4782768294636 66.30330222502988,13.499499940451251 66.30726623347005,13.555210606793828 66.30330222502988,13.5631692734142 66.30726623347005,13.502152829324707 66.31915825879054,13.446442162982127 66.31915825879054,13.427871940867934 66.32840761181758,13.483582607210511 66.34426364557824,13.45705371847595 66.34294230943152,13.427871940867934 66.3482276540184,13.403995941006826 66.33633562869791,13.366855496778442 66.3350142925512,13.36154971903153 66.32708627567087,13.236863941979088 66.30726623347005,13.133401275914299 66.30065955273643,13.112178164926647 66.3046235611766,13.144012831408123 66.31123024191021,13.165235942395771 66.32840761181758,13.144012831408123 66.33237162025775,13.104219498306279 66.32047959493725,13.098913720559366 66.31123024191021,13.000756832241489 66.33105028411103,12.990145276747665 66.3482276540184,13.003409721114945 66.3601196793389,13.085649276192086 66.37597571309955,13.133401275914299 66.39711709144709,13.157277275775403 66.40108109988725,13.141359942534667 66.4288291589684,13.149318609155035 66.43675717584873,13.088302165065542 66.45261320960938,13.08299638731863 66.46450523492987,13.114831053800103 66.45789855419626,13.165235942395771 66.46186256263643,13.151971498028491 66.46979057951675,13.101566609432822 66.47375458795692,13.098913720559366 66.49489596630445,13.043203054216786 66.49093195786429,13.02728572097605 66.5094306639184,12.971575054633469 66.5226440253856,12.995451054494577 66.53189337841265,13.024632832102593 66.52792936997248,13.090955053938998 66.5477494121733,13.12544260929393 66.55039208446675,13.122789720420474 66.53850005914626,13.210335053244528 66.51471600850527,13.218293719864896 66.49093195786429,13.239516830852544 66.48961062171757,13.250128386346368 66.48036126869053,13.236863941979088 66.46054122648971,13.21564083099144 66.45261320960938,13.250128386346368 66.4539345457561,13.25543416409328 66.44600652887577,13.350938163537705 66.46186256263643,13.419913274247566 66.46979057951675,13.33236794142351 66.47375458795692,13.295227497195125 66.46450523492987,13.260739941840193 66.46846924337004,13.281963052827845 66.4724332518102,13.274004386207476 66.48564661327741,13.311144830435861 66.50546665547823,13.292574608321669 66.50678799162495,13.258087052966737 66.52660803382577,13.33236794142351 66.53057204226593,13.350938163537705 66.54246406758642,13.37481416339881 66.53850005914626,13.425219051994478 66.53982139529298,13.438483496361759 66.54642807602659,13.549904829046916 66.54246406758642,13.613574162009865 66.52792936997248,13.634797272997517 66.51868001694544,13.66663193947899 66.51471600850527,13.661326161732077 66.5345360507061,13.552557717920372 66.55567742905363,13.472971051716687 66.5596414374938,13.50745860707162 66.58342548813478,13.53398749580618 66.58342548813478,13.560516384540744 66.59531751345527,13.656020383985165 66.6032455303356,13.717036828074658 66.59928152189543,13.732954161315394 66.60853087492248,13.701119494833918 66.61249488336264,13.58969816214876 66.60853087492248,13.560516384540744 66.60720953877576,13.496847051577795 66.5913535050151,13.454400829602495 66.56360544593396,13.433177718614846 66.5596414374938,13.337673719170422 66.5596414374938,13.292574608321669 66.5477494121733,13.223599497611808 66.55832010134708,13.207682164371072 66.55567742905363,13.18645905338342 66.56756945437412,13.212987942117984 66.57549747125445,13.218293719864896 66.59796018574872,13.247475497472912 66.59531751345527,13.25543416409328 66.59928152189543,13.22890527535872 66.61117354721593,13.258087052966737 66.62438690868314,13.276657275080932 66.61117354721593,13.289921719448213 66.61645889180281,13.281963052827845 66.6283509171233,13.313797719309317 66.62306557253642,13.303186163815493 66.63231492556346,13.372161274525354 66.63099358941675,13.380119941145722 66.63627893400363,13.321756385929685 66.64420695088396,13.289921719448213 66.64420695088396,13.274004386207476 66.63760027015034,13.223599497611808 66.63231492556346,13.189111942256876 66.65213496776428,13.165235942395771 66.65742031235116,13.197070608877247 66.6719550099651,13.223599497611808 66.67724035455198,13.260739941840193 66.66799100152494,13.313797719309317 66.66931233767166,13.335020830296965 66.66534832923149,13.369508385651898 66.66931233767166,13.36154971903153 66.64949229547084,13.390731496639546 66.64552828703067,13.385425718892634 66.66006298464461,13.406648829880282 66.653456303911,13.425219051994478 66.66138432079133,13.523375940312356 66.65609897620445,13.518070162565444 66.64552828703067,13.555210606793828 66.64420695088396,13.536640384679636 66.66799100152494,13.49419416270434 66.67724035455198,13.45705371847595 66.67591901840527,13.451747940729039 66.6838470352856,13.390731496639546 66.68913237987248,13.289921719448213 66.69573906060609,13.274004386207476 66.70498841363313,13.295227497195125 66.70763108592658,13.25543416409328 66.71291643051346,13.268698608460564 66.71688043895362,13.21564083099144 66.72084444739379,13.226252386485264 66.72612979198067,13.281963052827845 66.73273647271428,13.324409274803141 66.73009380042083,13.380119941145722 66.734057808861,13.425219051994478 66.72612979198067,13.454400829602495 66.73009380042083,13.472971051716687 66.71820177510034,13.50745860707162 66.72612979198067,13.531334606932724 66.72480845583395,13.528681718059268 66.70366707748641,13.568475051161112 66.69309638831264,13.592351051022217 66.69309638831264,13.640103050744429 66.6970603967528,13.714383939201202 66.69970306904625,13.714383939201202 66.70763108592658,13.687855050466638 66.71291643051346,13.72234260582157 66.71688043895362,13.807235049772167 66.72084444739379,13.902739049216589 66.72612979198067,13.902739049216589 66.73009380042083,13.764788827796867 66.73273647271428,13.72234260582157 66.73009380042083,13.69316082821355 66.72084444739379,13.671937717225902 66.72480845583395,13.671937717225902 66.71688043895362,13.600309717642585 66.7089524220733,13.57643371778148 66.7089524220733,13.552557717920372 66.72480845583395,13.5631692734142 66.74594983418149,13.54725194017346 66.75387785106182,13.592351051022217 66.7591631956487,13.743565716809218 66.75123517876837,13.76213593892341 66.75387785106182,13.613574162009865 66.77105522096919,13.53398749580618 66.76312720408886,13.54725194017346 66.77369789326264,13.510111495945075 66.77501922940935,13.523375940312356 66.78558991858313,13.496847051577795 66.78955392702329,13.502152829324707 66.8027672884905,13.610921273136409 66.80540996078395,13.62418571750369 66.81069530537083,13.701119494833918 66.81333797766428,13.719689716948114 66.80540996078395,13.759483050049955 66.8027672884905,13.820499494139447 66.79483927161017,13.998243048661013 66.79748194390362,13.982325715420274 66.80673129693066,13.945185271191889 66.81069530537083,13.905391938090045 66.80673129693066,13.823152383012903 66.80937396922411,13.743565716809218 66.83183668371836,13.767441716670323 66.83580069215853,13.740912827935762 66.84372870903886,13.706425272580834 66.83051534757165,13.66663193947899 66.83051534757165,13.70907816145429 66.83976470059869,13.695813717087006 66.85165672591918,13.717036828074658 66.85958474279951,13.701119494833918 66.87147676812,13.658673272858621 66.88072612114705,13.648061717364797 66.90054616334787,13.629491495250601 66.9084741802282,13.571127940034568 66.90715284408148,13.54725194017346 66.89922482720115,13.53398749580618 66.90318883564132,13.544599051300004 66.93225823086918,13.496847051577795 66.93490090316263,13.483582607210511 66.94943560077655,13.504805718198163 66.95604228151016,13.54725194017346 66.95339960921672,13.555210606793828 66.94547159233639,13.536640384679636 66.94018624774951,13.555210606793828 66.93622223930934,13.610921273136409 66.95339960921672,13.727648383568482 66.94415025618967,13.801929272025255 66.96132762609705,13.793970605404887 66.96925564297737,13.740912827935762 66.96793430683066,13.72234260582157 66.97454098756425,13.746218605682675 66.98114766829787,13.81254082751908 66.98511167673803,13.862945716114748 66.98246900444458,13.873557271608572 67.00096771049868,13.902739049216589 67.00096771049868,13.92130927133078 67.00889572737901,13.992937270914098 67.01021706352573,14.003548826407926 67.00096771049868,13.963755493306081 66.98246900444458,13.945185271191889 66.96793430683066,13.89478038259622 66.97189831527082,13.905391938090045 66.96132762609705,13.905391938090045 66.94547159233639,13.945185271191889 66.95207827307,13.982325715420274 66.98114766829787,14.01416038190175 66.98643301288475,13.992937270914098 66.96925564297737,14.011507493028294 66.96132762609705,14.038036381762854 66.98114766829787,14.02742482626903 66.9890756851782,14.061912381623959 66.99039702132491,14.024771937395574 67.01814508040606,14.016813270775206 67.03267977802,14.022119048522118 67.04985714792737,14.04068927063631 67.04192913104704,14.038036381762854 67.06703451783474,14.051300826130134 67.08156921544868,14.077829714864698 67.06307050939458,14.101705714725803 67.0577851648077,14.11762304796654 67.03796512260688,14.125581714586907 67.0141810719659,14.138846158954188 66.99436102976507,14.157416381068384 67.00625305508557,14.16006926994184 66.98643301288475,14.183945269802944 66.99700370205852,14.21312704741096 66.99039702132491,14.239655936145525 67.00096771049868,14.226391491778244 67.00625305508557,14.255573269386261 67.02210908884622,14.274143491500453 67.05382115636753,14.237003047272069 67.07760520700852,14.279449269247365 67.07760520700852,14.308631046855385 67.06703451783474,14.353730157704138 67.07760520700852,14.428011046160911 67.07892654315523,14.481068823630036 67.06307050939458,14.486374601376948 67.05514249251425,14.52086215673188 67.0577851648077,14.531473712225704 67.06307050939458,14.571267045327545 67.04985714792737,14.584531489694829 67.03267977802,14.613713267302845 67.03400111416671,14.603101711809021 67.04192913104704,14.61106037842939 67.05117848407409,14.584531489694829 67.0709985262749,14.54739104546644 67.0709985262749,14.499639045744228 67.07496253471507,14.489027490250404 67.06967719012819,14.446581268275107 67.07892654315523,14.446581268275107 67.08685456003556,14.406787935173263 67.09478257691589,14.343118602210314 67.07892654315523,14.303325269108473 67.09213990462244,14.282102158120821 67.08685456003556,14.250267491639349 67.08685456003556,14.247614602765893 67.09213990462244,14.274143491500453 67.09874658535605,14.27679638037391 67.11063861067655,14.300672380235017 67.10006792150277,14.308631046855385 67.1264946444372,14.340465713336858 67.14763602278474,14.31924260234921 67.15952804810523,14.337812824463402 67.17274140957244,14.396176379679439 67.1767054180126,14.438622601654739 67.1952041240667,14.483721712503492 67.19652546021342,14.462498601515843 67.18066942645277,14.502291934617684 67.18331209874621,14.571267045327545 67.17934809030605,14.571267045327545 67.18727610718638,14.621671933923214 67.19652546021342,14.642895044910862 67.18066942645277,14.709217266747267 67.17934809030605,14.727787488861463 67.1885974433331,14.648200822657774 67.19124011562654,14.616366156176301 67.20445347709375,14.544738156592985 67.19916813250687,14.515556378984968 67.20445347709375,14.542085267719528 67.20973882168063,14.62432482279667 67.2203095108544,14.66677104477197 67.21766683856096,14.703911489000355 67.21238149397408,14.73574615548183 67.21634550241424,14.751663488722567 67.22823752773473,14.794109710697864 67.24012955305523,14.823291488305884 67.24012955305523,14.841861710420076 67.22823752773473,14.902878154509569 67.22955886388145,14.974506154092886 67.24937890608227,14.979811931839798 67.24012955305523,15.006340820574358 67.24012955305523,14.940018598737954 67.2203095108544,14.950630154231781 67.20445347709375,14.897572376762657 67.17934809030605,14.886960821268833 67.15952804810523,14.921448376623761 67.1516000312249,14.947977265358325 67.1516000312249,14.955935931978694 67.12781598058392,14.97185326521943 67.11592395526343,15.001035042827446 67.11988796370359,14.974506154092886 67.15556403966507,14.926754154370673 67.16217072039868,14.918795487750305 67.16745606498556,14.94532437648487 67.19256145177326,14.966547487472518 67.2018108048003,15.008993709447815 67.21238149397408,15.02756393156201 67.22823752773473,15.003687931700902 67.22955886388145,15.019605264941642 67.23748688076178,15.09123326452496 67.23616554461506,15.123067931006432 67.22823752773473,15.133679486500256 67.20973882168063,15.15755548636136 67.20841748553391,15.207960374957029 67.2203095108544,15.255712374679241 67.20841748553391,15.266323930173066 67.19916813250687,15.298158596654538 67.19256145177326,15.388356818352051 67.1885974433331,15.420191484833524 67.16745606498556,15.377745262858223 67.12781598058392,15.385703929478595 67.12385197214375,15.417538595960067 67.13574399746425,15.385703929478595 67.10271059379622,15.420191484833524 67.09874658535605,15.433455929200804 67.10271059379622,15.457331929061912 67.09213990462244,15.467943484555736 67.10271059379622,15.438761706947716 67.11063861067655,15.452026151314996 67.11988796370359,15.444067484694628 67.13045865287737,15.44937326244154 67.14763602278474,15.47855504004956 67.16481339269211,15.481207928923016 67.18463343489293,15.467943484555736 67.19256145177326,15.441414595821172 67.19916813250687,15.43610881807426 67.20841748553391,15.396315484972419 67.21238149397408,15.401621262719331 67.22163084700112,15.375092373984767 67.21766683856096,15.351216374123663 67.22163084700112,15.42284437370698 67.24409356149539,15.444067484694628 67.23748688076178,15.430803040327348 67.22559485544129,15.494472373290296 67.23352287232161,15.486513706669928 67.2454148976421,15.44937326244154 67.24409356149539,15.430803040327348 67.25994959525605,15.385703929478595 67.2573069229626,15.351216374123663 67.24805756993555,15.329993263136014 67.23616554461506,15.295505707781082 67.22823752773473,15.27693548566689 67.23352287232161,15.239795041438505 67.23352287232161,15.27693548566689 67.2454148976421,15.314075929895278 67.24145088920194,15.343257707503295 67.24937890608227,15.348563485250207 67.26391360369621,15.231836374818133 67.26787761213637,15.226530597071221 67.2573069229626,15.1734728196021 67.25334291452243,15.115109264386064 67.27316295672325,15.04082837592929 67.26919894828309,15.04082837592929 67.2758056290167,15.077968820157675 67.2824123097503,15.085927486778044 67.27844830131014,15.120415042132976 67.28637631819046,15.1734728196021 67.29034032663063,15.20000170833666 67.30619636039128,15.226530597071221 67.30619636039128,15.258365263552697 67.31412437727161,15.258365263552697 67.34187243635276,15.229183485944677 67.34187243635276,15.229183485944677 67.32998041103227,15.207960374957029 67.32998041103227,15.197348819463205 67.31808838571177,15.160208375234816 67.29430433507079,15.141638153120624 67.29430433507079,15.168167041855188 67.3260164025921,15.154902597487904 67.32733773873882,15.112456375512608 67.32205239415194,15.038175487055835 67.31808838571177,14.987770598460166 67.29694700736424,15.019605264941642 67.29430433507079,14.990423487333622 67.28901899048391,14.974506154092886 67.29430433507079,14.92940704324413 67.29034032663063,14.8949194878892 67.29694700736424,14.815332821685516 67.29430433507079,14.791456821824408 67.28637631819046,14.86573771028118 67.2824123097503,14.83920882154662 67.26787761213637,14.794109710697864 67.26391360369621,14.722481711114547 67.24145088920194,14.69329993350653 67.24937890608227,14.690647044633074 67.25598558681588,14.719828822241091 67.26127093140276,14.717175933367635 67.29430433507079,14.733093266608375 67.30223235195112,14.722481711114547 67.3128030411249,14.714523044494179 67.30487502424457,14.669423933645426 67.29430433507079,14.605754600682477 67.28901899048391,14.632283489417038 67.28505498204375,14.56065548983372 67.27316295672325,14.526167934478792 67.27712696516342,14.4651514903893 67.27316295672325,14.428011046160911 67.26523493984293,14.414746601793631 67.26919894828309,14.316589713475754 67.25202157837572,14.311283935728841 67.26523493984293,14.337812824463402 67.26919894828309,14.404135046299807 67.28637631819046,14.382911935312158 67.29430433507079,14.398829268552895 67.31016036883145,14.430663935034367 67.30619636039128,14.473110157009668 67.31940972185849,14.489027490250404 67.33526575561915,14.565961267580633 67.35904980626013,14.568614156454089 67.3696204954339,14.632283489417038 67.38547652919456,14.640242156037406 67.40001122680849,14.61106037842939 67.39604721836832,14.573919934201001 67.40397523524865,14.589837267441741 67.41190325212898,14.629630600543582 67.41058191598226,14.640242156037406 67.43568730276996,14.685341266886162 67.44361531965029,14.709217266747267 67.43965131121013,14.738399044355287 67.44361531965029,14.727787488861463 67.43304463047652,14.791456821824408 67.43700863891668,14.794109710697864 67.44493665579701,14.860431932534269 67.43568730276996,14.86573771028118 67.42908062203635,14.8524732659139 67.40793924368882,14.820638599432428 67.38679786534128,14.86573771028118 67.38679786534128,14.863084821407725 67.39868989066177,14.910836821129937 67.4317232943298,14.947977265358325 67.42908062203635,14.974506154092886 67.44757932809046,15.056745709170027 67.45154333653062,15.051439931423115 67.4568286811175,14.98511770958671 67.45550734497078,14.940018598737954 67.44757932809046,14.82594437717934 67.46079268955766,14.767580821963303 67.45154333653062,14.703911489000355 67.45550734497078,14.65350660040469 67.47664872331832,14.658812378151602 67.48061273175848,14.775539488583671 67.525538160747,14.932059932117586 67.57442759817569,15.054092820296571 67.59028363193634,15.093886153398415 67.58631962349618,15.125720819879888 67.5625355728552,15.149596819740992 67.56517824514864,15.154902597487904 67.55460755597487,15.136332375373712 67.54139419450766,15.083274597904587 67.54139419450766,15.032869709308923 67.57046358973552,15.001035042827446 67.57707027046914,14.990423487333622 67.5625355728552,14.99838215395399 67.55725022826832,15.02756393156201 67.55460755597487,15.030216820435466 67.54139419450766,15.077968820157675 67.52818083304045,15.030216820435466 67.5123247992798,15.008993709447815 67.49911143781259,14.92940704324413 67.49118342093226,14.977159042966342 67.48457674019865,15.01164659832127 67.48854074863881,15.054092820296571 67.50836079083963,15.083274597904587 67.50968212698635,15.15755548636136 67.53214484148062,15.202654597210117 67.52950216918717,15.202654597210117 67.51628880771996,15.239795041438505 67.50836079083963,15.239795041438505 67.50439678239947,15.18673726396938 67.49646876551914,15.15755548636136 67.5004327739593,15.141638153120624 67.48854074863881,15.176125708475556 67.48325540405193,15.165514152981732 67.46739937029128,15.128373708753344 67.45947135341095,15.138985264247168 67.44757932809046,15.133679486500256 67.43304463047652,15.146943930867536 67.4317232943298,15.15755548636136 67.45286467267734,15.20000170833666 67.46343536185111,15.226530597071221 67.47664872331832,15.218571930450853 67.4872194124921,15.239795041438505 67.49646876551914,15.279588374540346 67.49646876551914,15.29019993003417 67.50439678239947,15.401621262719331 67.49646876551914,15.44937326244154 67.48854074863881,15.473249262302648 67.48061273175848,15.47855504004956 67.46872070643799,15.473249262302648 67.44361531965029,15.518348373151401 67.42775928588964,15.539571484139053 67.40793924368882,15.544877261885965 67.37094183158062,15.584670594987806 67.37358450387407,15.58201770611435 67.34980045323309,15.589976372734718 67.34715778093964,15.635075483583474 67.3696204954339,15.61119948372237 67.37358450387407,15.592629261608174 67.40001122680849,15.65099281682421 67.40793924368882,15.68017459443223 67.42379527744947,15.722620816407527 67.43700863891668,15.696091927672967 67.43700863891668,15.658951483444579 67.42775928588964,15.661604372318035 67.41983126900931,15.63772837245693 67.41190325212898,15.584670594987806 67.40793924368882,15.571406150620525 67.41190325212898,15.542224373012509 67.43700863891668,15.521001262024857 67.43965131121013,15.515695484277945 67.46079268955766,15.55548881737979 67.46475669799783,15.584670594987806 67.47664872331832,15.552835928506333 67.47136337873144,15.528959928645229 67.47664872331832,15.53426570639214 67.4872194124921,15.58201770611435 67.51761014386668,15.68017459443223 67.55328621982815,15.765067038382828 67.5625355728552,15.81016614923158 67.57310626202897,15.844653704586513 67.57046358973552,15.892405704308722 67.57839160661585,15.865876815574161 67.58631962349618,15.918934593043286 67.59424764037651,15.88709992656181 67.59424764037651,15.847306593459969 67.59028363193634,15.844653704586513 67.58631962349618,15.78363726049702 67.5810342789093,15.778331482750108 67.57442759817569,15.733232371901352 67.57046358973552,15.666910150064947 67.5625355728552,15.587323483861262 67.5374301860675,15.518348373151401 67.50836079083963,15.473249262302648 67.525538160747,15.46529059568228 67.53346617762733,15.433455929200804 67.52818083304045,15.385703929478595 67.53610884992078,15.356522151870575 67.53214484148062,15.284894152287258 67.5374301860675,15.223877708197765 67.54932221138799,15.213266152703941 67.56121423670848,15.226530597071221 67.58235561505602,15.213266152703941 67.59028363193634,15.237142152565049 67.59028363193634,15.215919041577397 67.59821164881667,15.253059485805785 67.606139665697,15.242447930311961 67.61671035487078,15.30346437440145 67.61935302716421,15.393662596098963 67.59821164881667,15.425497262580436 67.59689031266996,15.441414595821172 67.57442759817569,15.452026151314996 67.59028363193634,15.433455929200804 67.60878233799045,15.398968373845875 67.60878233799045,15.29019993003417 67.63785173321831,15.268976819046522 67.63917306936503,15.226530597071221 67.62331703560437,15.194695930589749 67.62331703560437,15.15755548636136 67.6312450524847,15.231836374818133 67.68409849835355,15.279588374540346 67.69070517908716,15.324687485389102 67.68409849835355,15.33264615200947 67.69863319596749,15.26367104129961 67.69863319596749,15.247753708058873 67.6999545321142,15.26367104129961 67.71845323816831,15.282241263413802 67.72241724660847,15.311423041021822 67.7369519442224,15.348563485250207 67.73166659963552,15.401621262719331 67.7118465574347,15.398968373845875 67.70391854055437,15.462637706808824 67.69599052367404,15.526307039771769 67.68013448991339,15.536918595265597 67.68277716220683,15.502431039910665 67.6999545321142,15.544877261885965 67.71052522128798,15.627116816963106 67.686741170647,15.653645705697667 67.69070517908716,15.616505261469282 67.69863319596749,15.571406150620525 67.71581056587486,15.547530150759421 67.71977457431503,15.473249262302648 67.71581056587486,15.446720373568084 67.73166659963552,15.406927040466243 67.74752263339617,15.4095799293397 67.75280797798305,15.444067484694628 67.7554506502765,15.53426570639214 67.76866401174371,15.613852372595826 67.76073599486338,15.674868816685319 67.7369519442224,15.712009260913703 67.7303452634888,15.75710837176246 67.7303452634888,15.759761260635916 67.7118465574347,15.778331482750108 67.6999545321142,15.834042149092689 67.68013448991339,15.855265260080337 67.71052522128798,15.818124815851949 67.70391854055437,15.78363726049702 67.71448922972814,15.78363726049702 67.74091595266256,15.72792659415444 67.74884396954289,15.661604372318035 67.77262802018387,15.61119948372237 67.7805560370642,15.571406150620525 67.7805560370642,15.43610881807426 67.80962543229207,15.412232818213155 67.82151745761256,15.420191484833524 67.83340948293305,15.430803040327348 67.82548146605272,15.44937326244154 67.83340948293305,15.452026151314996 67.8492655166937,15.425497262580436 67.87304956733469,15.428150151453892 67.8492655166937,15.404274151592787 67.84133749981338,15.383051040605139 67.8743709034814,15.372439485111311 67.86908555889453,15.375092373984767 67.83737349137321,15.396315484972419 67.83340948293305,15.375092373984767 67.80169741541174,15.306117263274906 67.78980539009125,15.29019993003417 67.77791336477075,15.237142152565049 67.76073599486338,15.197348819463205 67.7554506502765,15.192043041716293 67.74752263339617,15.207960374957029 67.7369519442224,15.168167041855188 67.71845323816831,15.146943930867536 67.71845323816831,15.115109264386064 67.70391854055437,15.101844820018783 67.70788254899453,15.054092820296571 67.68806250679371,14.98511770958671 67.67617048147322,14.947977265358325 67.66295712000601,14.860431932534269 67.65502910312568,14.764927933089847 67.65899311156585,14.786151044077496 67.66427845615273,14.733093266608375 67.66692112844618,14.73574615548183 67.6748491453265,14.791456821824408 67.69070517908716,14.873696376901552 67.70391854055437,14.8949194878892 67.71052522128798,14.884307932395377 67.71977457431503,14.79941548844478 67.71581056587486,14.804721266191692 67.72770259119535,14.762275044216391 67.72373858275519,14.788803932950952 67.73959461651584,14.889613710142289 67.73563060807568,14.977159042966342 67.75148664183634,15.038175487055835 67.74487996110273,15.09123326452496 67.75148664183634,15.14429104199408 67.76337866715683,15.083274597904587 67.76337866715683,15.01164659832127 67.75941465871666,15.030216820435466 67.76998534789043,14.993076376207078 67.76866401174371,14.995729265080534 67.77659202862404,15.04082837592929 67.78584138165108,15.043481264802747 67.7924480623847,14.97185326521943 67.78584138165108,14.82594437717934 67.76866401174371,14.820638599432428 67.77659202862404,14.873696376901552 67.78452004550437,14.833903043799708 67.78848405394453,14.836555932673164 67.8056614238519,14.79941548844478 67.7924480623847,14.75696926646948 67.80169741541174,14.78349815520404 67.82548146605272,14.77023371083676 67.82944547449289,14.810027043938604 67.83340948293305,14.802068377318236 67.84133749981338,14.817985710558972 67.84662284440026,14.876349265775008 67.82944547449289,14.897572376762657 67.83340948293305,14.884307932395377 67.84133749981338,15.067357264663851 67.86644288660108,15.085927486778044 67.85322952513387,15.10449770889224 67.86512155045436,15.138985264247168 67.86908555889453,15.107150597765695 67.8743709034814,14.849820377040444 67.85455086128059,14.828597266052796 67.8611575420142,14.892266599015745 67.86908555889453,14.879002154648465 67.87701357577485,14.900225265636113 67.8862629288019,14.995729265080534 67.90344029870927,15.093886153398415 67.90608297100272,15.085927486778044 67.8994762902691,15.136332375373712 67.89154827338878,15.229183485944677 67.90344029870927,15.20000170833666 67.89022693724206,15.247753708058873 67.89022693724206,15.25040659693233 67.8862629288019,15.194695930589749 67.86644288660108,15.178778597349012 67.85058685284042,15.194695930589749 67.85058685284042,15.27693548566689 67.8862629288019,15.27693548566689 67.89815495412239,15.324687485389102 67.91533232402976,15.35917504074403 67.91929633246993,15.327340374262558 67.90608297100272,15.335299040882926 67.8994762902691,15.42284437370698 67.92326034091009,15.531612817518685 67.9417590469642,15.560794595126701 67.93515236623058,15.526307039771769 67.91533232402976,15.542224373012509 67.9113683155896,15.59528215048163 67.93911637467075,15.59528215048163 67.94704439155107,15.65099281682421 67.94968706384452,15.648339927950754 67.95893641687157,15.725273705280983 67.96818576989861,15.778331482750108 67.9668644337519,15.815471926978493 67.95365107228469,15.849959482333425 67.91533232402976,15.868529704447617 67.9113683155896,15.892405704308722 67.91929633246993,15.884447037688354 67.9417590469642,15.932199037410566 67.96290042531173,15.88709992656181 67.97214977833877,15.905670148676005 67.9800777952191,15.940157704030934 67.97214977833877,15.979951037132778 67.97611378677894,15.953422148398214 67.98404180365927,15.950769259524758 67.9919698205396,15.990562592626603 67.9919698205396,15.987909703753147 67.99725516512648,15.961380815018583 67.99593382897976,15.948116370651302 68.0051831820068,15.977298148259322 68.00782585430025,15.95607503727167 68.0236818880609,15.924240370790198 68.03293124108795,15.860571037827249 68.03689524952811,15.834042149092689 68.05539395558222,15.794248815990844 68.0487872748486,15.778331482750108 68.05671529172893,15.75710837176246 68.04350193026173,15.807513260358125 68.04350193026173,15.820777704725408 68.0355739133814,15.743843927395176 68.03293124108795,15.709356372040247 68.04746593870189,15.619158150342738 68.04746593870189,15.58201770611435 68.04482326640844,15.58201770611435 68.06332197246255,15.59528215048163 68.07257132548959,15.53426570639214 68.08974869539696,15.518348373151401 68.09767671227729,15.521001262024857 68.06464330860926,15.446720373568084 68.04482326640844,15.396315484972419 68.03953792182156,15.404274151592787 68.03293124108795,15.35917504074403 68.02896723264779,15.385703929478595 68.0236818880609,15.428150151453892 68.02500322420762,15.441414595821172 68.01575387118058,15.42284437370698 68.00782585430025,15.414885707086611 67.99593382897976,15.367133707364399 68.0051831820068,15.377745262858223 68.01971787962074,15.335299040882926 68.01178986274041,15.30346437440145 68.0170752073273,15.279588374540346 68.04482326640844,15.27693548566689 68.0606793001691,15.298158596654538 68.06464330860926,15.353869262997119 68.06464330860926,15.314075929895278 68.07653533392975,15.34591059637675 68.1042833930109,15.398968373845875 68.11749675447811,15.391009707225507 68.13071011594532,15.412232818213155 68.14260214126581,15.475902151176104 68.15317283043959,15.515695484277945 68.14920882199942,15.507736817657577 68.13071011594532,15.49181948441684 68.12674610750516,15.497125262163753 68.11353274603795,15.521001262024857 68.10692606530434,15.531612817518685 68.13335278823877,15.55548881737979 68.1293887797986,15.587323483861262 68.13335278823877,15.58201770611435 68.14920882199942,15.627116816963106 68.1412808051191,15.62446392808965 68.17431420878712,15.592629261608174 68.18092088952073,15.627116816963106 68.19017024254778,15.674868816685319 68.18224222566745,15.672215927811859 68.17431420878712,15.717315038660615 68.17035020034696,15.725273705280983 68.14920882199942,15.698744816546423 68.15053015814614,15.685480372179143 68.14524481355926,15.71466214978716 68.13731679667893,15.725273705280983 68.11749675447811,15.704050594293335 68.1042833930109,15.66425726119149 68.10560472915762,15.603240817102002 68.11485408218466,15.597935039355086 68.10956873759778,15.643034150203842 68.09767671227729,15.648339927950754 68.0857846869568,15.61119948372237 68.07257132548959,15.635075483583474 68.06860731704943,15.629769705836562 68.05671529172893,15.658951483444579 68.05935796402238,15.66425726119149 68.07124998934287,15.65099281682421 68.07653533392975,15.669563038938403 68.08842735925025,15.74119103852172 68.0857846869568,15.72792659415444 68.09767671227729,15.762414149509372 68.10692606530434,15.767719927256284 68.09767671227729,15.807513260358125 68.09635537613057,15.7969017048643 68.10956873759778,15.815471926978493 68.11749675447811,15.842000815713057 68.1108900737445,15.897711482055637 68.13335278823877,15.87383548219453 68.13863813282565,15.940157704030934 68.1544941665863,15.868529704447617 68.16242218346663,15.889752815435266 68.17035020034696,15.852612371206881 68.17695688108057,15.849959482333425 68.19941959557482,15.879141259941441 68.20734761245515,15.892405704308722 68.19545558713466,15.92954614853711 68.19545558713466,15.964033703892039 68.20734761245515,15.95607503727167 68.23113166309614,15.940157704030934 68.24302368841663,15.937504815157478 68.25623704988384,15.974645259385866 68.26416506676416,16.046273258969183 68.25623704988384,16.064843481083376 68.22716765465597,16.104636814185216 68.20734761245515,16.01974437023462 68.18620623410762,16.046273258969183 68.17827821722729,16.059537703336463 68.18224222566745,16.091372369817936 68.17827821722729,16.115248369679044 68.19941959557482,16.141777258413605 68.18620623410762,16.14443014728706 68.16242218346663,16.128512814046324 68.1544941665863,16.107289703058672 68.12146076291828,16.1179012585525 68.11749675447811,16.099331036438304 68.08974869539696,16.115248369679044 68.0857846869568,16.064843481083376 68.04746593870189,16.086066592071024 68.0487872748486,16.133818591793236 68.02500322420762,16.155041702780885 68.02764589650107,16.181570591515445 67.99989783741992,16.2266697023642 67.96818576989861,16.229322591237658 67.96025775301828,16.192182147009273 67.90608297100272,16.210752369123465 67.89419094568223,16.237281257858026 67.89022693724206,16.261157257719134 67.89419094568223,16.3115621463148 67.86644288660108,16.3540083682901 67.86644288660108,16.377884368151204 67.8492655166937,16.48665281196291 67.81226810458551,16.51848747844438 67.82019612146584,16.47869414534254 67.82548146605272,16.438900812240696 67.83737349137321,16.438900812240696 67.84530150825354,16.468082589848713 67.85851486972075,16.412371923506136 67.86512155045436,16.36727281265738 67.87965624806829,16.295644813074063 67.89022693724206,16.271768813212958 67.90211896256255,16.242587035604938 67.90211896256255,16.28503325758024 67.95893641687157,16.266463035466046 67.98272046751255,16.29033903532715 67.98800581209943,16.197487924756185 68.01575387118058,16.192182147009273 68.02103921576746,16.231975480111114 68.0236818880609,16.229322591237658 68.03953792182156,16.261157257719134 68.02896723264779,16.279727479833326 68.02896723264779,16.338091035049363 67.97214977833877,16.364619923783923 67.96290042531173,16.43624792336724 67.91797499632321,16.465429700975257 67.91533232402976,16.441553701114152 67.93118835779042,16.468082589848713 67.9549724084314,16.396454590265396 67.95365107228469,16.327479479555535 68.00386184586009,16.31686792406171 68.02896723264779,16.3540083682901 68.02896723264779,16.383190145898116 68.01575387118058,16.388495923645028 68.02896723264779,16.420330590126504 68.01311119888713,16.452165256607977 67.97479245063222,16.4627768121018 67.9668644337519,16.523793256191293 67.96290042531173,16.537057700558574 67.97611378677894,16.489305700836365 67.97611378677894,16.45747103435489 68.00386184586009,16.49195858970982 68.00782585430025,16.510528811824013 68.02896723264779,16.465429700975257 68.03160990494123,16.399107479138852 68.03953792182156,16.356661257163555 68.03953792182156,16.35931414603701 68.0606793001691,16.391148812518484 68.07389266163631,16.401760368012308 68.08974869539696,16.43624792336724 68.08974869539696,16.433595034493784 68.10164072071746,16.454818145481433 68.10560472915762,16.454818145481433 68.12146076291828,16.47869414534254 68.12146076291828,16.515834589570925 68.09371270383713,16.552975033799314 68.08049934236992,16.635214588876455 68.08049934236992,16.65909058873756 68.06332197246255,16.69092525521903 68.07257132548959,16.66439636648447 68.07389266163631,16.648479033243735 68.08446335081008,16.709495477333228 68.08049934236992,16.72806569944742 68.08974869539696,16.606032811268435 68.08974869539696,16.563586589293138 68.09635537613057,16.537057700558574 68.10560472915762,16.53175192281166 68.12146076291828,16.489305700836365 68.13335278823877,16.446859478861064 68.1293887797986,16.420330590126504 68.1108900737445,16.364619923783923 68.09239136769041,16.338091035049363 68.09371270383713,16.279727479833326 68.11749675447811,16.300950590820975 68.11749675447811,16.28503325758024 68.13071011594532,16.24789281335185 68.13335278823877,16.245239924478394 68.13863813282565,16.274421702086414 68.15053015814614,16.29829770194752 68.13863813282565,16.34074392392282 68.14260214126581,16.34074392392282 68.16242218346663,16.36727281265738 68.17035020034696,16.401760368012308 68.13863813282565,16.417677701253048 68.13863813282565,16.420330590126504 68.1663861919068,16.38053725702466 68.17035020034696,16.383190145898116 68.17827821722729,16.452165256607977 68.17695688108057,16.465429700975257 68.1663861919068,16.481347034215997 68.16902886420024,16.473388367595625 68.18752757025433,16.420330590126504 68.19413425098794,16.39380170139194 68.20338360401499,16.407066145759224 68.20734761245515,16.5052230340771 68.19017024254778,16.547669256052398 68.17695688108057,16.587462589154242 68.17695688108057,16.58215681140733 68.18224222566745,16.47604125646908 68.20602627630844,16.47869414534254 68.21923963777564,16.465429700975257 68.22716765465597,16.47604125646908 68.24302368841663,16.452165256607977 68.23641700768302,16.44951236773452 68.22452498236252,16.32482659068208 68.22320364621581,16.269115924339502 68.2099902847486,16.24789281335185 68.21527562933548,16.19483503588273 68.21131162089532,16.1842234803889 68.23245299924285,16.224016813490746 68.23641700768302,16.23462836898457 68.23113166309614,16.269115924339502 68.2350956715363,16.327479479555535 68.24698769685679,16.361967034910467 68.24434502456334,16.351355479416643 68.26812907520433,16.29033903532715 68.25887972217728,16.266463035466046 68.260201058324,16.26381014659259 68.27077174749778,16.21340525799692 68.28002110052482,16.14443014728706 68.28398510896498,16.141777258413605 68.29191312584531,16.173611924895077 68.32098252107318,16.205446591376553 68.32098252107318,16.229322591237658 68.33287454639367,16.25585147997222 68.33155321024695,16.239934146731482 68.31701851263301,16.26381014659259 68.30909049575268,16.29033903532715 68.31305450419285,16.287686146453694 68.31966118492646,16.34604970166973 68.30909049575268,16.335438146175907 68.30116247887236,16.369925701530835 68.29455579813876,16.38053725702466 68.29851980657892,16.364619923783923 68.31305450419285,16.452165256607977 68.29587713428548,16.415024812379592 68.28794911740515,16.47869414534254 68.28794911740515,16.545016367178942 68.26812907520433,16.56889236704005 68.25491571373712,16.571545255913506 68.24434502456334,16.60337992239498 68.23641700768302,16.61664436676226 68.22452498236252,16.60337992239498 68.20206226786827,16.67235503310484 68.18620623410762,16.730718588320876 68.15845817502647,16.81030525452456 68.15053015814614,16.807652365651105 68.16110084731991,16.746635921561612 68.17035020034696,16.738677254941244 68.18092088952073,16.65909058873756 68.20338360401499,16.635214588876455 68.21923963777564,16.648479033243735 68.23113166309614,16.60337992239498 68.24830903300351,16.635214588876455 68.260201058324,16.613991477888803 68.28002110052482,16.44951236773452 68.3038051511658,16.446859478861064 68.31173316804613,16.404413256885768 68.31173316804613,16.34074392392282 68.32362519336662,16.35931414603701 68.32494652951334,16.338091035049363 68.33683855483383,16.300950590820975 68.33155321024695,16.27707459095987 68.33683855483383,16.29829770194752 68.34476657171416,16.269115924339502 68.36062260547482,16.27707459095987 68.37383596694202,16.377884368151204 68.38572799226252,16.407066145759224 68.38044264767564,16.412371923506136 68.38969200070268,16.45747103435489 68.39762001758301,16.49195858970982 68.4095120429035,16.521140367317837 68.40819070675678,16.558280811546226 68.41479738749038,16.579503922533874 68.41083337905022,16.592768366901154 68.42272540437071,16.640520366623367 68.42140406822399,16.66439636648447 68.40554803446334,16.696231032965947 68.41744005978383,16.730718588320876 68.42272540437071,16.78377636579 68.41347605134366,16.773164810296176 68.40158402602317,16.79704081015728 68.40554803446334,16.895197698475158 68.38837066455596,16.903156365095526 68.36987195850186,16.87397458748751 68.3540159247412,16.834181254385665 68.34212389942071,16.842139921006037 68.33683855483383,16.95090836481774 68.35269458859449,17.00661903116032 68.35797993318137,17.027842142147968 68.35665859703465,17.041106586515248 68.36458661391498,17.038453697641792 68.38176398382235,17.099470141731285 68.38572799226252,17.11008169722511 68.38176398382235,17.131304808212757 68.39233467299613,17.187015474555338 68.39365600914284,17.22150302991027 68.37251463079531,17.23476747427755 68.36987195850186,17.245379029771374 68.35005191630104,17.226808807657182 68.340802563274,17.23476747427755 68.3156971764863,17.250684807518287 68.30776915960597,17.332924362595428 68.28002110052482,17.33823014034234 68.26416506676416,17.332924362595428 68.24434502456334,17.309048362734323 68.23245299924285,17.31170125160778 68.22056097392236,17.340883029215796 68.20734761245515,17.31700702935469 68.19017024254778,17.36741191795036 68.20734761245515,17.335577251468884 68.22320364621581,17.362106140203448 68.25887972217728,17.391287917811464 68.24698769685679,17.4072052510522 68.25887972217728,17.391287917811464 68.2786997643781,17.35149458470962 68.29587713428548,17.306395473860867 68.31305450419285,17.258643474138655 68.32362519336662,17.282519473999763 68.32758920180679,17.271907918505935 68.33683855483383,17.279866585126307 68.34873058015432,17.250684807518287 68.36987195850186,17.250684807518287 68.39365600914284,17.26925502963248 68.40158402602317,17.301089696113955 68.40158402602317,17.2984368072405 68.41876139593055,17.35149458470962 68.42536807666416,17.40189947330529 68.41347605134366,17.433734139786765 68.40026268987646,17.574337250079942 68.37251463079531,17.598213249941047 68.38044264767564,17.492097695002798 68.39762001758301,17.423122584292937 68.41347605134366,17.43108125091331 68.42140406822399,17.417816806546025 68.43065342125104,17.383329251191096 68.43065342125104,17.396593695558376 68.4465094550117,17.478833250635518 68.45179479959857,17.545155472471922 68.45443747189202,17.611477694308327 68.44518811886498,17.63004791642252 68.4465094550117,17.693717249385468 68.43329609354448,17.709634582626204 68.43858143813137,17.760039471221873 68.41876139593055,17.82370880418482 68.40554803446334,17.84493191517247 68.41479738749038,17.79717991545026 68.41876139593055,17.688411471638556 68.46236548877235,17.653923916283627 68.46632949721251,17.638006583042888 68.47425751409284,17.598213249941047 68.47557885023956,17.47087458401515 68.46368682491907,17.47618036176206 68.47954285867972,17.53984969472501 68.49936290088054,17.563725694586115 68.51918294308136,17.574337250079942 68.53636031298873,17.545155472471922 68.55089501060267,17.494750583876254 68.53107496840185,17.423122584292937 68.52314695152153,17.35149458470962 68.49539889244038,17.295783918367043 68.47425751409284,17.24803191864483 68.46236548877235,17.08885858623746 68.45047346345186,17.02518925327451 68.45047346345186,17.014577697780688 68.45840148033218,17.05967680862944 68.47557885023956,17.10212303060474 68.47954285867972,17.104775919478197 68.48614953941333,17.072941252996724 68.49539889244038,17.070288364123268 68.5033269093207,17.001313253413407 68.51389759849448,16.99866036453995 68.52446828766824,16.932338142703546 68.51389759849448,16.932338142703546 68.5033269093207,16.868668809740598 68.46765083335923,16.786429254663457 68.46632949721251,16.76255325480235 68.4597228164789,16.66439636648447 68.45179479959857,16.648479033243735 68.47029350565268,16.635214588876455 68.45840148033218,16.563586589293138 68.45047346345186,16.51318170069747 68.45047346345186,16.53175192281166 68.47029350565268,16.523793256191293 68.49143488400021,16.44951236773452 68.50993359005432,16.473388367595625 68.52182561537481,16.4627768121018 68.5403243214289,16.5052230340771 68.54693100216251,16.521140367317837 68.558823027483,16.552975033799314 68.55618035518955,16.58215681140733 68.53636031298873,16.613991477888803 68.53107496840185,16.629908811129543 68.53636031298873,16.627255922256087 68.55618035518955,16.648479033243735 68.558823027483,16.64582614437028 68.56939371665676,16.62195014450917 68.56410837206988,16.56093370041968 68.58128574197725,16.571545255913506 68.61299780949857,16.613991477888803 68.64206720472643,16.68561947747212 68.6526378939002,16.720107032827052 68.6460312131666,16.725412810573964 68.66981526380758,16.799693699030737 68.68302862527479,16.84744569875295 68.68567129756823,16.881933254107878 68.6777432806879,16.90050347622207 68.68170728912807,16.958867031438107 68.71341935664938,17.041106586515248 68.7147406927961,17.041106586515248 68.69492065059528,17.07559414187018 68.67377927224774,17.112734586098565 68.66981526380758,17.133957697086217 68.64470987701988,17.173751030188058 68.64206720472643,17.20823858554299 68.65792323848709,17.12334614159239 68.67377927224774,17.099470141731285 68.68567129756823,17.120693252718933 68.7147406927961,17.187015474555338 68.72134737352971,17.26129636301211 68.73456073499692,17.29047814062013 68.73456073499692,17.301089696113955 68.72663271811659,17.340883029215796 68.72266870967643,17.399246584431832 68.72927539041004,17.417816806546025 68.72266870967643,17.439039917533677 68.68302862527479,17.494750583876254 68.6777432806879,17.531891028104642 68.6777432806879,17.550461250218834 68.68302862527479,17.584948805573767 68.68567129756823,17.667188360650908 68.66981526380758,17.683105693891644 68.67377927224774,17.65922969403054 68.68302862527479,17.60351902768796 68.69359931444856,17.555767027965747 68.69359931444856,17.53984969472501 68.6896353060084,17.481486139508974 68.69888465903544,17.468221695141693 68.71077668435593,17.473527472888605 68.72531138196987,17.46291591739478 68.73456073499692,17.391287917811464 68.74645276031741,17.36741191795036 68.73852474343708,17.322312807101603 68.73720340729037,17.31170125160778 68.74248875187725,17.253337696391743 68.75438077719774,17.26129636301211 68.77155814710511,17.31170125160778 68.77948616398544,17.391287917811464 68.80062754233298,17.42046969541948 68.81648357609363,17.460263028521325 68.81912624838708,17.508015028243538 68.81251956765347,17.58229591670031 68.79137818930593,17.64596524966326 68.77948616398544,17.725551915866944 68.77816482783872,17.746775026854593 68.77155814710511,17.794527026576805 68.74645276031741,17.80513858207063 68.74909543261086,17.79717991545026 68.77420081939856,17.770651026715697 68.78873551701248,17.733510582487312 68.79269952545265,17.656576805157083 68.7953421977461,17.632700805295975 68.79930620618626,17.531891028104642 68.82441159297396,17.473527472888605 68.83101827370757,17.48413902838243 68.8389462905879,17.619436360928695 68.89179973645675,17.669841249524364 68.89576374489691,17.691064360512012 68.89312107260346,17.720246138120032 68.89972775333707,17.717593249246576 68.88387171957642,17.688411471638556 68.87990771113625,17.7282048047404 68.86933702196248,17.744122137981137 68.87330103040264,17.807791470944085 68.86273034122888,17.85289058179284 68.8640516773756,17.778609693336065 68.90501309792396,17.733510582487312 68.91294111480428,17.704328804879292 68.90897710636412,17.720246138120032 68.9327611570051,17.69902302713238 68.93408249315182,17.63535369416943 68.92086913168461,17.529238139231186 68.90897710636412,17.460263028521325 68.89312107260346,17.446998584154045 68.90897710636412,17.452304361900957 68.91822645939116,17.48413902838243 68.93011848471166,17.468221695141693 68.94993852691248,17.49740347274971 68.9578665437928,17.55311413909229 68.95390253535264,17.56637858345957 68.96447322452642,17.54780836134538 68.96843723296658,17.54780836134538 68.9829719305805,17.48413902838243 68.97768658599362,17.47618036176206 68.994863955901,17.48944480612934 68.994863955901,17.529238139231186 69.01468399810182,17.550461250218834 69.03186136800919,17.592907472194135 69.04243205718296,17.693717249385468 69.08603615002477,17.648618138536715 69.09660683919853,17.624742138675607 69.09264283075836,17.640659471916344 69.10849886451902,17.730857693613856 69.12039088983951,17.75473369347496 69.11510554525263,17.786568359956433 69.11642688139935,17.826361693058278 69.12699757057312,17.89533680376814 69.13360425130672,17.929824359123067 69.1441749404805,17.985535025465648 69.15210295736082,18.05981591392242 69.14813894892066,18.05451013617551 69.13228291516,18.131443913505738 69.1441749404805,18.17919591322795 69.12303356213296,18.197766135342142 69.12831890671984,18.147361246746474 69.14813894892066,18.152667024493386 69.1573883019477,18.118179469138457 69.1573883019477,18.112873691391545 69.16531631882803,18.08369191378353 69.1573883019477,18.06777458054279 69.16531631882803,18.08103902491007 69.17720834414853,18.051857247302053 69.18117235258869,18.065121691669333 69.20627773937639,18.086344802656985 69.23006179001737,18.043898580681685 69.23402579845754,17.972270581098368 69.22609778157721,17.974923469971824 69.2379898068977,17.998799469832928 69.2498818322182,17.982882136592192 69.27102321056573,17.996146580959472 69.29877126964688,17.993493692086016 69.30934195882065,18.05451013617551 69.3185913118477,18.08103902491007 69.33973269019523,18.104915024771177 69.3436966986354,18.112873691391545 69.36351674083622,18.094303469277353 69.37937277459687,18.104915024771177 69.38465811918375,18.16593146886067 69.38465811918375,18.176543024354494 69.39522880835753,18.152667024493386 69.40051415294441,18.163278579987214 69.43222622046572,18.131443913505738 69.45336759881326,18.152667024493386 69.46525962413375,18.189807468721774 69.45997427954687,18.232253690697075 69.46658096028047,18.23490657957053 69.4811156578944,18.298575912533476 69.4811156578944,18.301228801406936 69.47318764101408,18.343675023382232 69.46525962413375,18.372856800990252 69.44147557349277,18.35959235662297 69.40051415294441,18.314493245774216 69.36351674083622,18.38877413423099 69.39655014450425,18.48427813367541 69.37540876615671,18.494889689169234 69.36748074927638,18.486931022548866 69.33048333716819,18.500195466916146 69.31991264799441,18.489583911422322 69.28687924432639,18.502848355789602 69.27366588285918,18.500195466916146 69.25913118524524,18.478972355928498 69.24327515148458,18.478972355928498 69.22477644543049,18.492236800295778 69.22213377313705,18.51080702240997 69.2379898068977,18.508154133536515 69.2498818322182,18.524071466777254 69.25780984909852,18.542641688891447 69.29480726120671,18.545294577764903 69.31462730340753,18.529377244524166 69.3318046733149,18.53998880001799 69.35162471551573,18.56651768875255 69.35558872395589,18.590393688613656 69.33973269019523,18.569170577626007 69.3185913118477,18.606311021854395 69.30141394194033,18.691203465804993 69.27102321056573,18.688550576931537 69.25384584065836,18.71242657679264 69.25384584065836,18.715079465666097 69.27895122744606,18.648757243829692 69.30273527808704,18.638145688335868 69.31330596726082,18.664674577070432 69.31330596726082,18.677939021437712 69.31991264799441,18.744261243274117 69.32255532028786,18.760178576514853 69.32651932872803,18.898128797934575 69.31991264799441,18.89547590906112 69.31462730340753,18.855682575959275 69.30537795038049,18.945880797656784 69.29480726120671,18.951186575403696 69.28687924432639,19.006897241746277 69.28687924432639,18.975062575264804 69.29877126964688,18.93526924216296 69.32784066487474,18.815889242857434 69.3318046733149,18.640798577209324 69.36748074927638,18.60365813298094 69.38333678303704,18.59569946636057 69.40447816138457,18.545294577764903 69.42826221202556,18.486931022548866 69.44411824578621,18.476319467055042 69.43619022890589,18.447137689447025 69.44147557349277,18.478972355928498 69.4811156578944,18.444484800573566 69.51018505312227,18.476319467055042 69.51414906156243,18.53468302227108 69.5181130700026,18.5877407997402 69.52604108688293,18.606311021854395 69.53396910376325,18.65671591045006 69.53396910376325,18.746914132147573 69.54189712064358,18.770790132008678 69.54189712064358,18.834459464971626 69.56303849899112,18.85302968708582 69.55378914596407,18.87159990920001 69.5062210446821,18.834459464971626 69.49432901936161,18.855682575959275 69.4811156578944,18.890170131314207 69.4930076832149,18.911393242301855 69.44543958193293,18.996285686252453 69.42033419514523,18.980368353011716 69.39258613606408,19.089136796823418 69.34766070707556,19.13688879654563 69.34237536248868,19.195252351761667 69.34633937092885,19.29075635120609 69.3436966986354,19.319938128814105 69.33576868175507,19.34646701754867 69.31066329496737,19.335855462054845 69.29480726120671,19.285450573459176 69.2815938997395,19.245657240357332 69.25384584065836,19.23239279599005 69.2498818322182,19.237698573736964 69.23270446231082,19.285450573459176 69.22213377313705,19.311979462193737 69.23006179001737,19.35973146191595 69.23666847075098,19.436665239246178 69.22609778157721,19.534822127564055 69.21288442011,19.54012790531097 69.21816976469688,19.48441723896839 69.23006179001737,19.42870657262581 69.24591782377803,19.410136350511618 69.26573786597885,19.40748346163816 69.29084325276655,19.41544212825853 69.3185913118477,19.354425684169037 69.36483807698293,19.37299590628323 69.37540876615671,19.314632351067193 69.37144475771655,19.280144795712264 69.37937277459687,19.237698573736964 69.37937277459687,19.113012796684526 69.37276609386326,19.07321946358268 69.39258613606408,19.0599550192154 69.430904884319,19.03342613048084 69.44015423734605,19.00424435287282 69.44147557349277,18.969756797517892 69.46129561569359,18.996285686252453 69.48640100248129,18.993632797378996 69.50225703624194,19.009550130619733 69.5181130700026,19.03342613048084 69.52075574229605,19.078525241329594 69.54586112908375,19.166070574153647 69.55378914596407,19.17933501852093 69.54057578449687,19.211169685002403 69.53000509532309,19.237698573736964 69.51414906156243,19.250963018104247 69.52075574229605,19.17933501852093 69.55907449055096,19.184640796267843 69.57096651587145,19.168723463027103 69.57096651587145,19.147500352039454 69.5617171628444,19.065260796962313 69.55511048211079,19.036079019354297 69.54586112908375,19.03342613048084 69.53793311220342,19.00424435287282 69.52868375917637,18.96445101977098 69.54057578449687,18.943227908783328 69.55907449055096,18.929963464416048 69.60796392797964,18.945880797656784 69.62778397018046,18.983021241885172 69.65024668467473,19.065260796962313 69.68460142448947,19.089136796823418 69.70442146669029,19.097095463443786 69.73349086191816,19.134235907672174 69.7480255595321,19.144847463166 69.74141887879848,19.174029240774015 69.74538288723865,19.195252351761667 69.7612389209993,19.272186129091896 69.77841629090668,19.293409240079544 69.7731309463198,19.322591017687564 69.77841629090668,19.39421901727088 69.77709495475996,19.42870657262581 69.786344307787,19.447276794740002 69.78238029934684,19.502987461082583 69.79691499696078,19.545433683057883 69.80087900540094,19.569309682918988 69.79691499696078,19.593185682780092 69.80484301384111,19.67011946011032 69.81541370301487,19.731135904199814 69.80748568613454,19.723177237579446 69.77841629090668,19.675425237857233 69.75331090411898,19.69930123771834 69.74009754265177,19.696648348844885 69.72556284503783,19.67011946011032 69.70177879439684,19.662160793489953 69.67667340760914,19.646243460249217 69.6674240545821,19.65685501574304 69.65949603770177,19.691342571097973 69.65553202926161,19.736441681946726 69.64364000394112,19.736441681946726 69.63571198706079,19.709912793212165 69.61985595330013,19.715218570959077 69.60796392797964,19.688689682224517 69.57889453275178,19.69930123771834 69.57493052431161,19.675425237857233 69.55907449055096,19.63828479362885 69.54189712064358,19.627673238135024 69.5062210446821,19.64359057137576 69.4930076832149,19.672772348983777 69.48507966633457,19.65685501574304 69.47318764101408,19.606450127147372 69.4494035903731,19.558698127425163 69.4375115650526,19.53747501643751 69.41901285899851,19.51094612770295 69.40447816138457,19.439318128119634 69.39522880835753,19.434012350372722 69.38862212762392,19.51094612770295 69.39258613606408,19.603797238273916 69.43222622046572,19.640937682502305 69.42033419514523,19.64359057137576 69.40844216982474,19.662160793489953 69.42033419514523,19.640937682502305 69.43619022890589,19.71256568208562 69.47847298560096,19.731135904199814 69.48507966633457,19.731135904199814 69.49432901936161,19.70725990433871 69.49829302780178,19.715218570959077 69.51414906156243,19.739094570820182 69.52604108688293,19.715218570959077 69.55511048211079,19.749706126314006 69.5736091881649,19.760317681807834 69.58814388577882,19.752359015187462 69.5987145749526,19.728483015326358 69.59607190265915,19.736441681946726 69.60664259183292,19.78949945941585 69.6119279364198,19.8107225704035 69.60399991953948,19.842557236884975 69.60267858339276,19.980507458304697 69.58021586889849,20.12376345747133 69.58285854119194,20.10254034648368 69.5868225496321,19.993771902671977 69.59078655807227,19.938061236329396 69.60399991953948,19.837251459138063 69.61985595330013,19.813375459276955 69.64364000394112,19.821334125897323 69.65553202926161,19.800111014909675 69.66874539072882,19.773582126175114 69.67667340760914,19.773582126175114 69.68856543292964,19.80276390378313 69.71631349201078,19.847863014631887 69.72952685347799,19.837251459138063 69.74934689567881,19.842557236884975 69.76520292943947,19.86643323674608 69.77841629090668,19.900920792101008 69.78238029934684,19.93540834745594 69.82202038374848,19.99111901379852 69.84712577053618,19.993771902671977 69.82598439218864,19.95663145844359 69.78238029934684,19.946019902949764 69.75991758485259,19.98581323605161 69.76520292943947,19.99111901379852 69.78502297164029,20.08131723549603 69.87883783805749,20.10784612423059 69.89601520796487,20.129069235218243 69.9356552923665,20.155598123952803 69.94358330924683,20.16355679057317 69.9356552923665,20.16355679057317 69.9105499055788,20.152945235079347 69.89601520796487,20.18477990156082 69.85505378741651,20.208655901421928 69.85505378741651,20.195391457054644 69.87883783805749,20.174168346066995 69.89601520796487,20.203350123675015 69.94094063695339,20.256407901144136 69.96472468759437,20.256407901144136 69.97529537676814,20.285589678752157 69.97661671291486,20.31742434523363 69.96472468759437,20.349259011715105 69.93961930080667,20.37313501157621 69.89997921640503,20.394358122563858 69.8920511995247,20.38639945594349 69.866945812737,20.367829233829298 69.85505378741651,20.354564789462017 69.82202038374848,20.33599456734782 69.80616434998782,20.301507011992893 69.76388159329275,20.285589678752157 69.71631349201078,20.264366567764505 69.71234948357062,20.288242567625613 69.70574280283701,20.24844923452377 69.68063741604931,20.26967234551142 69.67931607990259,20.272325234384876 69.65817470155505,20.35191190058856 69.63571198706079,20.34660612284165 69.61060660027309,20.320077234107085 69.60003591109931,20.314771456360173 69.5868225496321,20.27763101213179 69.58417987733866,20.264366567764505 69.57889453275178,20.221920345789208 69.57757319660506,20.224573234662664 69.54718246523046,20.27763101213179 69.54718246523046,20.221920345789208 69.52868375917637,20.2404905679034 69.5181130700026,20.216614568042296 69.51018505312227,20.208655901421928 69.49829302780178,20.251102123397224 69.49432901936161,20.232531901283032 69.46525962413375,20.198044345928103 69.45336759881326,20.192738568181188 69.4811156578944,20.179474123813907 69.48243699404112,20.15825101282626 69.44808225422638,20.152945235079347 69.40844216982474,20.142333679585523 69.39655014450425,20.09458167986331 69.38069411074359,20.036218124647274 69.3688020854231,19.967243013937413 69.3436966986354,19.980507458304697 69.33576868175507,19.924796791962116 69.30141394194033,19.898267903227552 69.2749872190059,19.903573680974464 69.26970187441901,19.95663145844359 69.2749872190059,19.959284347317045 69.29084325276655,19.993771902671977 69.3066992865272,20.02560656915345 69.33444734560835,20.062747013381838 69.35030337936901,20.19008567930773 69.3873007914772,20.25375501227068 69.37540876615671,20.26701945663796 69.39522880835753,20.25375501227068 69.41637018670507,20.274978123258332 69.4242982035854,20.2829367898787 69.4375115650526,20.32273012298054 69.45733160725342,20.343953233968193 69.49697169165506,20.375787900449666 69.53000509532309,20.39966390031077 69.5868225496321,20.418234122424966 69.59078655807227,20.521696788489756 69.56964517972473,20.534961232857036 69.54453979293703,20.569448788211968 69.54718246523046,20.59597767694653 69.54189712064358,20.617200787934177 69.52075574229605,20.69148167639095 69.51018505312227,20.74188656498662 69.51414906156243,20.789638564708827 69.49697169165506,20.81086167569648 69.50225703624194,20.771068342594635 69.52207707844276,20.74188656498662 69.52604108688293,20.686175898644038 69.52207707844276,20.603936343566897 69.55511048211079,20.577407454832336 69.58285854119194,20.537614121730492 69.60267858339276,20.479250566514455 69.61457060871325,20.458027455526807 69.63967599550095,20.479250566514455 69.66874539072882,20.500473677502107 69.67667340760914,20.527002566236668 69.70838547513046,20.516391010742844 69.73745487035832,20.48190345538791 69.74538288723865,20.49251501088174 69.75331090411898,20.460680344400263 69.76388159329275,20.49251501088174 69.76784560173292,20.542919899477404 69.76520292943947,20.646382565542194 69.79030831622717,20.710051898505142 69.79427232466733,20.776374120341547 69.82202038374848,20.78698567583537 69.84712577053618,20.7551510093539 69.85901779585667,20.749845231606987 69.86958848503045,20.76841545372118 69.88280184649766,20.848002119924864 69.90262188869848,20.8639194531656 69.91847792245913,20.967382119230393 69.93169128392634,21.020439896699518 69.95679667071404,21.06023322980136 69.9607606791542,21.07880345191555 69.95679667071404,21.068191896421727 69.93961930080667,21.031051452193342 69.93301262007306,20.977993674724217 69.91847792245913,20.90105989739399 69.87090982117716,20.842696342177952 69.85505378741651,20.858613675418688 69.84712577053618,20.930241675002005 69.85108977897634,20.95677056373657 69.83919775365585,20.91963011950818 69.83787641750914,20.90105989739399 69.82994840062881,20.92758878612855 69.79691499696078,20.954117674863113 69.79030831622717,20.967382119230393 69.77841629090668,21.004522563458778 69.78105896320012,21.03901011881371 69.79427232466733,20.993911007964954 69.81012835842799,20.98860523021804 69.81805637530832,21.028398563319886 69.83126973677552,21.04696878543408 69.82994840062881,21.054927452054446 69.85108977897634,21.031051452193342 69.85769645970996,21.041663007687166 69.87487382961733,21.076150563042095 69.87883783805749,21.123902562764307 69.87751650191078,21.153084340372324 69.88148051035094,21.182266117980344 69.87487382961733,21.192877673474168 69.86166046815012,21.13451411825813 69.82994840062881,21.126555451637763 69.80616434998782,21.1424727848785 69.80616434998782,21.153084340372324 69.81805637530832,21.214100784461817 69.8418404259493,21.227365228829097 69.85505378741651,21.187571895727256 69.88412318264437,21.1849190068538 69.89601520796487,21.200836340094536 69.9039432248452,21.230018117702553 69.89865788025831,21.314910561653154 69.89997921640503,21.31756345052661 69.91187124172552,21.245935450943293 69.91979925860585,21.1849190068538 69.93301262007306,21.21144789558836 69.98058072135503,21.24062967319638 70.00965011658289,21.2936874506655 70.01229278887634,21.35205100588154 70.02154214190338,21.428984783211767 70.01361412502305,21.442249227579047 70.00040076355585,21.474083894060524 69.9977580912624,21.521835893782733 69.98058072135503,21.51122433828891 69.97133136832798,21.529794560403104 69.95679667071404,21.55897633801112 69.95283266227388,21.577546560125313 69.94094063695339,21.561629226884577 69.93301262007306,21.574893671251857 69.91451391401897,21.720802559291947 69.88280184649766,21.76059589239379 69.87883783805749,21.808347892116 69.85901779585667,21.82426522535674 69.84712577053618,21.87732300282586 69.84316176209602,21.866711447332037 69.83391240906897,21.87732300282586 69.81805637530832,21.917116335927705 69.79427232466733,21.922422113674617 69.77841629090668,21.980785668890654 69.76520292943947,22.015273224245583 69.7731309463198,22.00996744649867 69.76388159329275,22.05241366847397 69.74934689567881,22.03119055748632 69.74406155109193,22.05241366847397 69.73745487035832,21.95425678015609 69.73745487035832,22.007314557625214 69.72556284503783,22.057719446220883 69.72556284503783,22.0869012238289 69.73745487035832,22.12138877918383 69.7361335342116,22.137306112424568 69.7480255595321,22.044455001853603 69.76784560173292,22.07894255720853 69.76916693787963,22.070983890588163 69.78105896320012,21.959562557903002 69.82202038374848,21.943645224662266 69.8114496945747,21.88528166944623 69.83523374521569,21.898546113813513 69.84712577053618,21.951603891282634 69.83787641750914,22.012620335372127 69.8418404259493,22.02323189086595 69.84712577053618,22.007314557625214 69.85901779585667,21.964868335649918 69.866945812737,21.91976922480116 69.87090982117716,21.88528166944623 69.88676585493782,21.88528166944623 69.90658589713864,21.874670113952405 69.9105499055788,21.861405669585125 69.93961930080667,21.87201722507895 69.94490464539355,21.91446344705425 69.947547317687,21.917116335927705 69.95547533456732,21.87732300282586 69.96472468759437,21.87732300282586 69.98322339364847,21.951603891282634 69.99247274667552,21.986091446637566 69.99247274667552,22.012620335372127 69.98454472979519,22.015273224245583 69.96472468759437,21.988744335511022 69.94358330924683,22.033843446359775 69.93301262007306,22.049760779600515 69.94358330924683,22.03119055748632 69.95547533456732,22.041802112980147 69.98850873823535,22.007314557625214 70.01361412502305,22.06567811284125 70.02022080575667,22.076289668335075 70.03211283107716,22.00466166875176 70.02550615034355,21.917116335927705 70.01229278887634,21.842835447470932 70.01229278887634,21.78712478112835 70.028148822637,21.77386033676107 70.03739817566404,21.848141225217844 70.0532542094247,21.86405855845858 70.06250356245174,21.90650478043388 70.06118222630502,21.959562557903002 70.06514623474519,22.002008779878302 70.07439558777223,22.025884779739407 70.09421562997305,22.06037233509434 70.10214364685338,22.07363677946162 70.12328502520091,22.05241366847397 70.12592769749436,22.03119055748632 70.10610765529354,22.00996744649867 70.09817963841321,21.988744335511022 70.10478631914683,21.986091446637566 70.09289429382633,21.943645224662266 70.07703826006568,21.895893224940057 70.0783595962124,21.84548833634439 70.07307425162551,21.829571003103652 70.07439558777223,21.813653669862912 70.09025162153289,21.797736336622176 70.08628761309272,21.797736336622176 70.07703826006568,21.818959447609828 70.0664675708919,21.74733144802651 70.0532542094247,21.723455448165403 70.05061153713125,21.702232337177755 70.05853955401157,21.58550522674568 70.084966276946,21.60142255998642 70.10082231070666,21.58019944899877 70.1100716637337,21.55897633801112 70.09289429382633,21.53244744927656 70.09025162153289,21.45551367194633 70.10082231070666,21.442249227579047 70.1219636890542,21.40776167222412 70.14310506740173,21.44755500532596 70.15103308428206,21.482042560680892 70.16424644574927,21.47673678293398 70.17481713492305,21.38123278348956 70.15896110116239,21.336133672640802 70.15499709272223,21.272464339677853 70.16424644574927,21.251241228690205 70.17481713492305,21.25389411756366 70.18803049639025,21.22471233995564 70.19595851327058,21.21144789558836 70.21049321088452,21.1849190068538 70.19992252171075,21.190224784600712 70.21974256391157,21.20614211784145 70.22370657235173,21.23532389544947 70.2408839422591,21.24062967319638 70.23691993381894,21.296340339538958 70.25673997601976,21.320216339400066 70.24881195913943,21.34409233926117 70.26466799290009,21.367968339122275 70.26466799290009,21.415720338844487 70.27391734592713,21.436943449832135 70.2527759675796,21.4210261165914 70.22370657235173,21.492654116174716 70.19199450483042,21.495307005048172 70.21181454703124,21.46877811631361 70.22238523620501,21.492654116174716 70.2408839422591,21.487348338427804 70.28845204354107,21.471431005187068 70.29770139656812,21.487348338427804 70.30959342188861,21.564282115758033 70.32412811950255,21.56693500463149 70.31355743032877,21.55367056026421 70.28977337968779,21.59346389336605 70.26863200134025,21.68631500393702 70.24484795069927,21.70488522605121 70.23295592537877,21.72610833703886 70.23295592537877,21.715496781545035 70.2157785554714,21.749984336899967 70.21974256391157,21.771207447887615 70.21181454703124,21.784471892254896 70.17878114336321,21.832223891977108 70.16688911804272,21.840182558597476 70.14310506740173,21.861405669585125 70.13914105896157,21.856099891838213 70.1721744626296,21.82426522535674 70.18406648795009,21.811000780989456 70.20388653015091,21.82426522535674 70.21049321088452,21.869364336205493 70.21181454703124,21.869364336205493 70.2157785554714,21.813653669862912 70.21974256391157,21.776513225634528 70.23691993381894,21.784471892254896 70.26202532060664,21.83752966972402 70.27656001822058,21.90119900268697 70.30959342188861,21.948951002409178 70.32941346408943,21.980785668890654 70.32941346408943,22.012620335372127 70.3214854472091,22.00466166875176 70.30562941344844,21.95425678015609 70.28977337968779,21.951603891282634 70.27656001822058,21.988744335511022 70.28580937124762,22.05241366847397 70.31223609418205,22.070983890588163 70.31355743032877,22.09220700157581 70.30430807730173,22.09220700157581 70.28184536280746,22.081595446081987 70.2659893290468,22.084248334955443 70.24484795069927,22.076289668335075 70.23163458923206,22.110777223690008 70.23956260611239,22.105471445943092 70.2659893290468,22.147917667918392 70.28845204354107,22.187711001020237 70.28977337968779,22.291173667085026 70.28052402666074,22.296479444831938 70.27391734592713,22.26729766722392 70.24484795069927,22.27525633384429 70.23559859767222,22.22485144524862 70.21974256391157,22.272603444970834 70.22370657235173,22.26199188947701 70.18803049639025,22.227504334122077 70.15235442042878,22.25138033398318 70.1470690758419,22.203628334260973 70.1351770505214,22.240768778489358 70.12724903364108,22.26729766722392 70.1351770505214,22.333619889060326 70.13121304208124,22.33892566680724 70.13914105896157,22.402594999770187 70.13914105896157,22.439735443998572 70.12989170593453,22.48483455484733 70.12328502520091,22.506057665834977 70.11535700832059,22.53789233231645 70.11403567217387,22.521974999075713 70.12592769749436,22.439735443998572 70.15103308428206,22.386677666529447 70.15499709272223,22.304438111452306 70.15235442042878,22.291173667085026 70.16292510960255,22.30974388919922 70.16688911804272,22.333619889060326 70.19860118556403,22.33096700018687 70.23295592537877,22.34423144455415 70.23559859767222,22.349537222301063 70.26070398445992,22.450346999492396 70.2527759675796,22.50340477696152 70.24484795069927,22.52462788794917 70.22502790849845,22.55380966555719 70.23295592537877,22.612173220773222 70.22370657235173,22.58033855429175 70.20785053859107,22.62278477626705 70.20652920244436,22.6440078872547 70.21974256391157,22.678495442609627 70.21974256391157,22.80318121966207 70.20785053859107,22.906643885726858 70.20785053859107,22.959701663195982 70.19595851327058,22.965007440942895 70.17878114336321,22.935825663334878 70.15631842886894,22.89868521910649 70.16688911804272,22.909296774600314 70.15103308428206,22.882767885865753 70.14310506740173,22.874809219245385 70.13121304208124,22.82971010839663 70.11932101676075,22.80318121966207 70.11403567217387,22.83501588614354 70.1100716637337,22.7952225530417 70.10214364685338,22.723594553458383 70.0968583022665,22.678495442609627 70.08628761309272,22.630743442887418 70.08893028538617,22.60686744302631 70.0783595962124,22.569726998797925 70.07439558777223,22.47687588822696 70.07703826006568,22.44769411061894 70.08232360465256,22.4079007775171 70.06911024318535,22.35749588892143 70.06250356245174,22.35749588892143 70.05457554557141,22.312396778072674 70.04929020098453,22.269950556097378 70.03739817566404,22.293826555958482 70.02154214190338,22.39198344427636 70.05457554557141,22.49809899921461 70.05721821786486,22.646660776128154 70.07439558777223,22.681148331483083 70.07439558777223,22.742164775572576 70.09025162153289,22.78195810867442 70.09025162153289,22.861544774878105 70.10214364685338,22.970313218689807 70.13914105896157,23.002147885171283 70.1351770505214,22.986230551930547 70.12592769749436,22.99153632967746 70.1100716637337,22.98092477418363 70.07439558777223,22.999494996297827 70.05721821786486,22.957048774322526 70.0413621841042,22.999494996297827 70.02947015878371,23.026023885032387 70.0162567973165,23.076428773628056 70.02947015878371,23.102957662362616 70.00040076355585,23.092346106868792 69.98850873823535,23.102957662362616 69.97529537676814,23.132139439970636 69.98058072135503,23.132139439970636 69.96472468759437,23.11356921785644 69.96340335144765,23.04989988489349 69.947547317687,23.012759440665107 69.92376326704601,23.033982551652755 69.92376326704601,23.08704032912188 69.94490464539355,23.110916328982984 69.94490464539355,23.094998995742248 69.93169128392634,23.118874995603353 69.9290486116329,23.132139439970636 69.94094063695339,23.161321217578653 69.95283266227388,23.187850106313213 69.95151132612716,23.2249905505416 69.95943934300749,23.251519439276162 69.97133136832798,23.25947810589653 69.98850873823535,23.304577216745287 69.99247274667552,23.307230105618743 69.97661671291486,23.331106105479847 69.97529537676814,23.368246549708235 69.98058072135503,23.381510994075516 69.96736735988782,23.408039882810076 69.96472468759437,23.429262993797728 69.97661671291486,23.471709215773025 69.98058072135503,23.48232077126685 69.99247274667552,23.52476699324215 70.01361412502305,23.500890993381045 70.02550615034355,23.39212254956934 70.02550615034355,23.35763499421441 70.02022080575667,23.25947810589653 70.03871951181075,23.193155884060126 70.05721821786486,23.1825443285663 70.06911024318535,23.132139439970636 70.08628761309272,23.14275099546446 70.09025162153289,23.19050299518667 70.09421562997305,23.227643439415058 70.10214364685338,23.331106105479847 70.10478631914683,23.347023438720583 70.09817963841321,23.373552327455148 70.12328502520091,23.33641188322676 70.13385571437469,23.29661855012492 70.15235442042878,23.2674367725169 70.15896110116239,23.264783883643442 70.17481713492305,23.37089943858169 70.17613847106976,23.362940771961323 70.18406648795009,23.2674367725169 70.18406648795009,23.198461661807038 70.19992252171075,23.198461661807038 70.21181454703124,23.174585661945933 70.2157785554714,23.21172610617432 70.21974256391157,23.278048328010726 70.21974256391157,23.325800327732935 70.2276705807919,23.402734105063164 70.2276705807919,23.402734105063164 70.23559859767222,23.431915882671184 70.23956260611239,23.5035438822545 70.23691993381894,23.49823810450759 70.24749062299271,23.36559366083478 70.24484795069927,23.317841661112567 70.2408839422591,23.256825217023074 70.24352661455255,23.243560772655794 70.24881195913943,23.27274255026381 70.2593826483132,23.32314743885948 70.26070398445992,23.3523292164675 70.26863200134025,23.408039882810076 70.26070398445992,23.410692771683532 70.26466799290009,23.362940771961323 70.27656001822058,23.445180327038464 70.28580937124762,23.53007277098906 70.28052402666074,23.5884363262051 70.28845204354107,23.60700654831929 70.29770139656812,23.53007277098906 70.29373738812795,23.4610976602792 70.30430807730173,23.51150254887487 70.3214854472091,23.500890993381045 70.32544945564926,23.44783321591192 70.31223609418205,23.429262993797728 70.31223609418205,23.445180327038464 70.32941346408943,23.535378548735974 70.37037488463778,23.58047765958473 70.38226690995828,23.58047765958473 70.3901949268386,23.622923881560027 70.39944427986565,23.62822965930694 70.40737229674598,23.771485658473573 70.44701238114762,23.798014547208137 70.47608177637548,23.853725213550714 70.49325914628285,23.959840768488963 70.50779384389679,23.983716768350067 70.50779384389679,24.042080323566104 70.51307918848367,24.103096767655597 70.49193781013614,24.166766100618545 70.48665246554926,24.222476766961123 70.48665246554926,24.26757587780988 70.47872444866893,24.26757587780988 70.45890440646811,24.304716322038267 70.44701238114762,24.32859232189937 70.44965505344106,24.304716322038267 70.48268845710909,24.25961721118951 70.50382983545663,24.222476766961123 70.51572186077712,24.137584323010525 70.53157789453778,24.097790989908685 70.53289923068449,24.10044387878214 70.55271927288531,24.158807433998177 70.56989664279268,24.174724767238914 70.5897166849935,24.20390654484693 70.601608710314,24.23308832245495 70.59764470187383,24.230435433581494 70.63728478627547,24.243699877948774 70.66239017306317,24.28614609992407 70.65842616462301,24.27288165555679 70.67428219838366,24.291451877670983 70.68353155141071,24.33655098851974 70.68749555985087,24.360426988380844 70.6954235767312,24.355121210633932 70.68617422370416,24.47450120993946 70.67824620682383,24.471848321066005 70.66635418150334,24.562046542763515 70.64653413930252,24.567352320510427 70.63464211398203,24.604492764738815 70.61350073563449,24.63367454234683 70.61350073563449,24.69734387530978 70.63067810554186,24.6840794309425 70.64653413930252,24.62836876459992 70.6703181899435,24.59388120924499 70.69410224058448,24.657550542207936 70.6954235767312,24.57796387600425 70.7139222827853,24.57796387600425 70.70335159361153,24.543476320649322 70.70995827434514,24.562046542763515 70.71656495507874,24.511641654167846 70.72713564425251,24.53817054290241 70.74695568645333,24.527558987408586 70.75488370333366,24.48776565430674 70.74431301415989,24.40022032148269 70.74827702260005,24.344509655140108 70.75224103104021,24.357774099507388 70.7641330563607,24.30206343316481 70.76677572865415,24.238394100201862 70.77866775397464,24.26757587780988 70.81698650222955,24.230435433581494 70.83812788057709,24.352468321760476 70.87644662883201,24.389608765988864 70.86587593965824,24.389608765988864 70.84605589745742,24.410831876976513 70.84869856975087,24.445319432331445 70.83812788057709,24.424096321343793 70.8262358552566,24.519600320788218 70.80773714920251,24.58592254262462 70.78395309856153,24.62041009797955 70.79188111544185,24.62041009797955 70.81698650222955,24.570005209383883 70.82359318296317,24.580616764877707 70.8447345613107,24.556740765016603 70.86587593965824,24.57796387600425 70.87380395653857,24.649591875587568 70.8698399480984,24.673467875448676 70.86587593965824,24.71060831967706 70.8698399480984,24.66285631995485 70.88569598185906,24.548782098396234 70.900230679473,24.554087876143146 70.90551602405988,24.60714565361227 70.9134440409402,24.617757209106095 70.91872938552709,24.55143498726969 70.92269339396725,24.543476320649322 70.95440546148856,24.591228320371535 70.95440546148856,24.638980320093744 70.95969080607544,24.57265809825734 70.96233347836889,24.535517654028954 70.97026149524922,24.59388120924499 70.97951084827626,24.625715875726463 70.99008153745004,24.69734387530978 70.99008153745004,24.67081498657522 70.96761882295577,24.69734387530978 70.97158283139593,24.73979009728508 70.99008153745004,24.77427765264001 70.99008153745004,24.758360319399273 70.9636548145156,24.782236319260377 70.95836946992873,24.7928478747542 70.94383477231479,24.80876520799494 70.94647744460823,24.835294096729502 70.92665740240741,24.790194985880746 70.91476537708692,24.82998831898259 70.9134440409402,24.891004763072083 70.92665740240741,24.92549231842701 70.91740804938037,24.94671542941466 70.91872938552709,24.922839429553555 70.93326408314103,24.959979873781943 70.96233347836889,24.957326984908487 70.9755468398361,25.01038476237761 70.97158283139593,25.04487231773254 70.95440546148856,25.034260762238716 70.93326408314103,24.941409651667747 70.89362399873939,24.875087429831343 70.87380395653857,24.936103873920835 70.88041063727218,24.944062540541204 70.87380395653857,25.018343428997976 70.86587593965824,25.01569054012452 70.8817319734189,25.050178095479453 70.91080136864676,25.119153206189313 70.92665740240741,25.156293650417698 70.9068373602066,25.193434094646086 70.900230679473,25.233227427747927 70.86851861195169,25.235880316621383 70.83284253599021,25.24649187211521 70.82095051066972,25.23057453887447 70.81302249378939,25.233227427747927 70.79716646002873,25.25445053873558 70.81302249378939,25.26771498310286 70.80905848534923,25.291590982963964 70.8262358552566,25.320772760571984 70.80773714920251,25.341995871559632 70.80905848534923,25.328731427192352 70.82887852755005,25.341995871559632 70.83019986369676,25.36321898254728 70.84869856975087,25.320772760571984 70.86059059507136,25.326078538318896 70.86587593965824,25.36321898254728 70.85794792277791,25.35791320480037 70.87776796497873,25.387094982408385 70.8817319734189,25.38444209353493 70.90155201561971,25.341995871559632 70.93458541928774,25.3075083162047 70.93987076387462,25.299549649584332 70.96233347836889,25.312814093951612 70.97422550368938,25.34995453818 70.97422550368938,25.355260315926913 70.9636548145156,25.379136315788017 70.96761882295577,25.437499871004054 70.95969080607544,25.448111426497878 70.94647744460823,25.50912787058737 70.93062141084758,25.511780759460827 70.92269339396725,25.548921203689215 70.9134440409402,25.52239231495465 70.89758800717955,25.40566520452258 70.86191193121807,25.3924007601553 70.85398391433775,25.437499871004054 70.86059059507136,25.429541204383685 70.84605589745742,25.450764315371334 70.8447345613107,25.498516315093546 70.88041063727218,25.50912787058737 70.87776796497873,25.49586342622009 70.85794792277791,25.506474981713914 70.8566265866312,25.533003870448475 70.87380395653857,25.607284758905248 70.9068373602066,25.647078092007092 70.90551602405988,25.708094536096585 70.90551602405988,25.713400313843497 70.89626667103283,25.67625986961511 70.88965999029922,25.72401186933732 70.88437464571234,25.721358980463865 70.86191193121807,25.75054075807188 70.86851861195169,25.742582091451514 70.88965999029922,25.84339186864285 70.90155201561971,25.88318520174469 70.89362399873939,25.85135053526322 70.87644662883201,25.819515868781743 70.8698399480984,25.85135053526322 70.86587593965824,25.909714090479255 70.87380395653857,25.904408312732343 70.86455460351152,25.86992075737741 70.84869856975087,25.848697646389763 70.84605589745742,25.77441675793299 70.82491451910988,25.758499424692253 70.81170115764267,25.76115231356571 70.79188111544185,25.739929202578057 70.78659577085497,25.68421853623548 70.78395309856153,25.62054920327253 70.7760250816812,25.59136742566451 70.74827702260005,25.612590536652164 70.75224103104021,25.623202092145988 70.74299167801317,25.673606980741653 70.76016904792054,25.694830091729305 70.75884771177383,25.68421853623548 70.73109965269268,25.66299542524783 70.72317163581235,25.660342536374372 70.73638499727956,25.64177231426018 70.74034900571972,25.54626831481576 70.70335159361153,25.52239231495465 70.70599426590498,25.50912787058737 70.69410224058448,25.458722981991702 70.67296086223695,25.395053649028757 70.6703181899435,25.40566520452258 70.65710482847629,25.291590982963964 70.59235935728695,25.25445053873558 70.5897166849935,25.233227427747927 70.56593263435252,25.18547542802572 70.55536194517876,25.13507053943005 70.53686323912466,25.09262431745475 70.53289923068449,25.055483873226365 70.50382983545663,25.089971428581293 70.51307918848367,25.219962983380647 70.52893522224433,25.235880316621383 70.521007205364,25.21731009450719 70.49986582701646,25.16159942816461 70.49193781013614,25.076706984214013 70.49722315472302,25.060789650973277 70.48797380169597,25.08466565083438 70.4707964317886,25.222615872254103 70.48004578481564,25.22526876112756 70.46815375949515,25.275673649723227 70.46683242334844,25.23057453887447 70.45890440646811,25.21200431676028 70.43908436426729,25.16159942816461 70.42190699435992,25.18547542802572 70.41397897747959,25.241186094368295 70.41001496903942,25.23853320549484 70.3901949268386,25.21731009450719 70.38623091839844,25.174863872531894 70.3901949268386,25.17751676140535 70.40340828830581,25.14833498379733 70.40605096059926,25.08466565083438 70.36641087619762,25.042219428859084 70.35319751473041,25.06609542872019 70.34923350629025,25.105888761822033 70.36112553161074,25.129764761683138 70.36112553161074,25.082012761960925 70.34262682555664,25.074054095340557 70.32809212794271,25.055483873226365 70.31752143876894,25.0714012064671 70.31355743032877,25.143029206050418 70.33337747252959,25.182822539152262 70.32544945564926,25.16955809478498 70.29373738812795,25.140376317176962 70.28580937124762,25.1138474284424 70.29241605198123,25.116500317315857 70.2778813543673,25.0714012064671 70.26070398445992,25.03160787336526 70.26070398445992,25.02364920674489 70.2527759675796,24.936103873920835 70.23163458923206,24.93875676279429 70.20785053859107,24.917533651806643 70.19992252171075,24.930798096173923 70.18406648795009,24.9626327626554 70.1721744626296,24.928145207300467 70.16424644574927,24.904269207439363 70.15235442042878,24.91222787405973 70.14310506740173,24.914880762933187 70.08100226850584,24.973244318149224 70.0783595962124,24.994467429136872 70.07043157933207,24.983855873643048 70.05457554557141,25.03160787336526 70.05853955401157,25.034260762238716 70.084966276946,24.981202984769592 70.10082231070666,24.98916165138996 70.12724903364108,25.02364920674489 70.15499709272223,25.055483873226365 70.14310506740173,25.087318539707837 70.15896110116239,25.09262431745475 70.13914105896157,25.060789650973277 70.1351770505214,25.060789650973277 70.1219636890542,25.08466565083438 70.12328502520091,25.116500317315857 70.13914105896157,25.145682094923874 70.13385571437469,25.150987872670786 70.12328502520091,25.129764761683138 70.12328502520091,25.105888761822033 70.11403567217387,25.063442539846733 70.11403567217387,25.074054095340557 70.10875032758699,25.082012761960925 70.08232360465256,25.116500317315857 70.0664675708919,25.150987872670786 70.06514623474519,25.180169650278806 70.08100226850584,25.22526876112756 70.09025162153289,25.233227427747927 70.11403567217387,25.25445053873558 70.12989170593453,25.241186094368295 70.13781972281485,25.270367871976315 70.14574773969518,25.283632316343596 70.16292510960255,25.278326538596684 70.1721744626296,25.299549649584332 70.19595851327058,25.320772760571984 70.18803049639025,25.355260315926913 70.19860118556403,25.397706537902213 70.22502790849845,25.40566520452258 70.24881195913943,25.487904759599722 70.26995333748697,25.52239231495465 70.28977337968779,25.493210537346634 70.28845204354107,25.52239231495465 70.31223609418205,25.461375870865158 70.30827208574189,25.42688831551023 70.3214854472091,25.3924007601553 70.3214854472091,25.387094982408385 70.33337747252959,25.429541204383685 70.34262682555664,25.437499871004054 70.3650895400509,25.466681648612074 70.37037488463778,25.493210537346634 70.38226690995828,25.498516315093546 70.39944427986565,25.525045203828107 70.38623091839844,25.55157409256267 70.39548027142548,25.53035098157502 70.40605096059926,25.57279720355032 70.41397897747959,25.580755870170687 70.4271923389468,25.612590536652164 70.43908436426729,25.61524342552562 70.45626173417466,25.64177231426018 70.46022574261482,25.665648314121285 70.49193781013614,25.742582091451514 70.51307918848367,25.8646149796305 70.57253931508613,25.885838090618147 70.56989664279268,25.92563142371999 70.5897166849935,25.981342090062572 70.60557271875416,25.96807764569529 70.6267140971017,25.981342090062572 70.63860612242219,26.013176756544045 70.65842616462301,26.018482534290957 70.68221021526399,26.04235853415206 70.6954235767312,26.02378831203787 70.7073156020517,26.055622978519345 70.72845698039923,26.082151867253906 70.72845698039923,26.108680755988466 70.71920762737219,26.140515422469942 70.75884771177383,26.129903866976118 70.76809706480087,26.17500297782487 70.77866775397464,26.196226088812523 70.77866775397464,26.233366533040908 70.78791710700169,26.220102088673627 70.79320245158857,26.243978088534732 70.81302249378939,26.400498532068646 70.8883386541525,26.42702742080321 70.89230266259267,26.437638976297034 70.90155201561971,26.511919864753807 70.93458541928774,26.567630531096388 70.95176278919512,26.63660564180625 70.95572679763528,26.671093197161177 70.97026149524922,26.70558075251611 70.96629748680905,26.687010530401913 70.95836946992873,26.7241509746303 70.93458541928774,26.700274974769194 70.91872938552709,26.729456752377214 70.91080136864676,26.708233641389565 70.88041063727218,26.665787419414265 70.86191193121807,26.665787419414265 70.82887852755005,26.73210964125067 70.84209188901725,26.73210964125067 70.82359318296317,26.71088653026302 70.82359318296317,26.71884519688339 70.80377314076235,26.681704752655 70.78395309856153,26.673746086034633 70.77206107324103,26.684357641528457 70.75620503948038,26.679051863781545 70.74431301415989,26.623341197438965 70.72317163581235,26.51722564250072 70.69806624902465,26.45355630953777 70.68617422370416,26.400498532068646 70.67956754297055,26.360705198966805 70.66106883691646,26.30764742149768 70.65049814774268,26.336829199105697 70.64653413930252,26.46682075390505 70.66635418150334,26.533142975741455 70.6703181899435,26.58620075321058 70.66106883691646,26.562324753349476 70.67428219838366,26.594159419830948 70.67692487067711,26.618035419692053 70.69013823214432,26.633952752932792 70.68353155141071,26.62068830856551 70.6703181899435,26.59946519757786 70.66899685379678,26.604770975324772 70.65710482847629,26.639258530679705 70.64653413930252,26.615382530818597 70.5897166849935,26.602118086451316 70.57386065123285,26.61272964194514 70.54875526444515,26.551713197855648 70.521007205364,26.54906030898219 70.48929513784269,26.58620075321058 70.48268845710909,26.55701897560256 70.45626173417466,26.527837197994543 70.45097638958778,26.506614087006895 70.42322833050663,26.533142975741455 70.39415893527877,26.501308309259983 70.38755225454516,26.47477942052542 70.36244686775746,26.477432309398875 70.35451885087713,26.51722564250072 70.3465908339968,26.538448753488368 70.37830290151811,26.578242086590212 70.38755225454516,26.610076753071684 70.37830290151811,26.631299864059333 70.37962423766483,26.62599408631242 70.39812294371893,26.580894975463668 70.4020869521591,26.62599408631242 70.43115634738696,26.687010530401913 70.41133630518614,26.721498085756846 70.4153003136263,26.734762530124126 70.42322833050663,26.73210964125067 70.43776302812057,26.763944307732142 70.43908436426729,26.755985641111774 70.45097638958778,26.769250085479054 70.46418975105499,26.74537408561795 70.47872444866893,26.74537408561795 70.48797380169597,26.803737640833987 70.48004578481564,26.817002085201267 70.4959018185763,26.838225196188915 70.48797380169597,26.83557230731546 70.47608177637548,26.9178118623926 70.47872444866893,26.949646528874077 70.48268845710909,26.915158973519144 70.46022574261482,26.962910973241357 70.45494039802794,26.989439861975917 70.4707964317886,27.031886083951218 70.48400979325581,27.076985194799974 70.47476044022876,27.095555416914166 70.46418975105499,27.103514083534535 70.48004578481564,27.084943861420342 70.48665246554926,27.039844750571586 70.48929513784269,27.026580306204306 70.50779384389679,26.99474563972283 70.50911518004351,26.99474563972283 70.52364987765745,26.949646528874077 70.54743392829843,27.01596875071048 70.55536194517876,27.005357195216657 70.56989664279268,26.952299417747533 70.57253931508613,27.008010084090113 70.60557271875416,27.031886083951218 70.60689405490088,27.026580306204306 70.61878608022137,27.076985194799974 70.61878608022137,27.069026528179602 70.61350073563449,27.095555416914166 70.60557271875416,27.20962963847278 70.59632336572712,27.24677008270117 70.58443134040662,27.236158527207344 70.60689405490088,27.13269586114255 70.63332077783531,27.108819861281447 70.63067810554186,27.074332305926518 70.64653413930252,27.076985194799974 70.66106883691646,27.130042972269095 70.6703181899435,27.130042972269095 70.67824620682383,27.084943861420342 70.68221021526399,27.111472750154903 70.68749555985087,27.145960305509835 70.67956754297055,27.172489194244395 70.66899685379678,27.164530527624027 70.68617422370416,27.13269586114255 70.69410224058448,27.06372075043269 70.70203025746481,27.084943861420342 70.71127961049186,27.111472750154903 70.75488370333366,27.14861319438329 70.74827702260005,27.26003452706845 70.7509196948935,27.299827860170293 70.72713564425251,27.326356748904853 70.73506366113284,27.323703860031397 70.74827702260005,27.35553852651287 70.75620503948038,27.270646082562273 70.7641330563607,27.27329897143573 70.79055977929514,27.283910526929553 70.8011304684689,27.27860474918264 70.82491451910988,27.291869193549925 70.83284253599021,27.37145585975361 70.83284253599021,27.41920785947582 70.82491451910988,27.443083859336927 70.81566516608284,27.485530081312223 70.81566516608284,27.506753192299872 70.80773714920251,27.527976303287524 70.80905848534923,27.591645636250473 70.80377314076235,27.708372746682542 70.79980913232218,27.711025635556 70.80377314076235,27.65531496921342 70.81302249378939,27.541240747654804 70.819629174523,27.477571414691855 70.82887852755005,27.45369541483075 70.8447345613107,27.512058970046787 70.85001990589758,27.50940608117333 70.86059059507136,27.53062919216098 70.86587593965824,27.469612748071487 70.8698399480984,27.472265636944943 70.88569598185906,27.374108748627066 70.8817319734189,27.42451363722273 70.9068373602066,27.41124919285545 70.9253360662607,27.3475798598925 70.89362399873939,27.310439415664117 70.88965999029922,27.297174971296837 70.89626667103283,27.25207586044808 70.89362399873939,27.236158527207344 70.90155201561971,27.222894082840064 70.89626667103283,27.164530527624027 70.90419468791316,27.15657186100366 70.9134440409402,27.116778527901815 70.91740804938037,27.10616697240799 70.93458541928774,27.124737194522183 70.9385494277279,27.145960305509835 70.98215352056971,27.193712305232044 70.97951084827626,27.299827860170293 70.94647744460823,27.352885637639414 70.94647744460823,27.318398082284485 70.95572679763528,27.30778652679066 70.97158283139593,27.267993193688817 70.99933089047708,27.222894082840064 71.00329489891725,27.199018082978956 71.01386558809102,27.212282527346236 71.02840028570495,27.275951860309185 71.0442563194656,27.31574519341103 71.03236429414511,27.37145585975361 71.02443627726478,27.374108748627066 71.01386558809102,27.427166526096187 71.02443627726478,27.506753192299872 71.00990157965086,27.504100303426416 70.9755468398361,27.514711858920244 70.95572679763528,27.567769636389365 70.96233347836889,27.554505192022084 70.97026149524922,27.575728303009733 71.01122291579757,27.538587858781348 71.03236429414511,27.498794525679504 71.04029231102544,27.50144741455296 71.08521774001396,27.54389363652826 71.09578842918773,27.551852303148628 71.10503778221478,27.57838119188319 71.10768045450823,27.618174524985033 71.09710976533445,27.644703413719593 71.09710976533445,27.644703413719593 71.10900179065494,27.628786080478857 71.1248578244156,27.644703413719593 71.13278584129593,27.708372746682542 71.11296579909511,27.7534718575313 71.10900179065494,27.718984302176366 71.08521774001396,27.729595857670194 71.08521774001396,27.68184385794798 71.06143368937298,27.72429007992328 71.06407636166642,27.721637191049822 71.05218433634593,27.7534718575313 71.04822032790577,27.795918079506595 71.07200437854675,27.817141190494247 71.06011235322626,27.787959412886227 71.0442563194656,27.82244696824116 71.03236429414511,27.851628745849176 71.05086300019921,27.87019896796337 71.05218433634593,27.867546079089912 71.03500696643856,27.98162030064853 71.08521774001396,27.963050078534337 71.06143368937298,27.98162030064853 71.05350567249265,28.018760744876918 71.07728972313363,28.06385985572567 71.0878604123074,28.05855407797876 71.04822032790577,28.074471411219495 71.04689899175905,28.130182077562075 71.0812537315738,28.156710966296636 71.09182442074757,28.191198521651568 71.09578842918773,28.24690918799415 71.08521774001396,28.26547941010834 71.04822032790577,28.23099185475341 71.03632830258528,28.167322521790464 71.03236429414511,28.20976874376576 71.02707894955823,28.172628299537376 70.99536688203692,28.16997541066392 70.97951084827626,28.191198521651568 70.99800955433037,28.21772741038613 71.00725890735741,28.225686077006497 70.99933089047708,28.180586966157744 70.96233347836889,28.199157188271936 70.95836946992873,28.225686077006497 70.97818951212955,28.23895052137378 70.97158283139593,28.284049632222533 70.99140287359675,28.305272743210182 71.00329489891725,28.408735409274975 71.00329489891725,28.52280963083359 70.98743886515659,28.54403274182124 70.97951084827626,28.549338519568153 70.96761882295577,28.50954518646631 70.9134440409402,28.48832207547866 70.90551602405988,28.47505763111138 70.88965999029922,28.42465274251571 70.88569598185906,28.366289187299675 70.89362399873939,28.347718965185482 70.88569598185906,28.459140297870643 70.87644662883201,28.40608252040152 70.85001990589758,28.326495854197834 70.85266257819103,28.371594965046587 70.84077055287054,28.35037185405894 70.82491451910988,28.331801631944746 70.82359318296317,28.22303318813304 70.8447345613107,28.212421632639217 70.84077055287054,28.313231409830554 70.81170115764267,28.22303318813304 70.78791710700169,28.095694522207147 70.79584512388202,28.10630607770097 70.80509447690906,28.074471411219495 70.79716646002873,28.07712430009295 70.79055977929514,28.018760744876918 70.79716646002873,28.00814918938309 70.81698650222955,27.963050078534337 70.81302249378939,27.957744300787425 70.8011304684689,27.92590963430595 70.79716646002873,27.87815763458374 70.8011304684689,27.78530652401277 70.79716646002873,27.74020741316402 70.8011304684689,27.73224874654365 70.79716646002873,27.80918252387388 70.78791710700169,27.830405634861528 70.78263176241481,27.806529635000423 70.77073973709432,27.7534718575313 70.75224103104021,27.76673630189858 70.74431301415989,27.87019896796337 70.77206107324103,27.902033634444845 70.7760250816812,27.96835585628125 70.77073973709432,28.026719411497286 70.76281172021399,28.000190522762722 70.74034900571972,28.018760744876918 70.74431301415989,28.04528963361148 70.75884771177383,28.098347411080603 70.75224103104021,28.13283496643553 70.74431301415989,28.1407936330559 70.7324209888394,28.108958966574427 70.71920762737219,28.082430077839863 70.71656495507874,28.061206966852215 70.70335159361153,27.984273189521986 70.68749555985087,27.93121541205286 70.68353155141071,27.84897585697572 70.66899685379678,27.88611630120411 70.65710482847629,27.79857096838005 70.63860612242219,27.75877763527821 70.63860612242219,27.729595857670194 70.63067810554186,27.63939763597268 70.62142875251482,27.671232302454158 70.6148220717812,27.742860302037474 70.61746474407465,27.825099857114616 70.63067810554186,27.896727856697932 70.63464211398203,27.936521189799773 70.64653413930252,28.039983855864566 70.66239017306317,28.167322521790464 70.68749555985087,28.201810077145392 70.7073156020517,28.27874385447562 70.7205289635189,28.305272743210182 70.68749555985087,28.289355409969446 70.65446215618284,28.268132298981797 70.63067810554186,28.215074521512673 70.60028737416728,28.079777188966407 70.55536194517876,27.949785634167057 70.52497121380416,27.89938074557139 70.51307918848367,27.88611630120411 70.49986582701646,27.811835412747335 70.48797380169597,27.825099857114616 70.47872444866893,27.851628745849176 70.48004578481564,27.825099857114616 70.4456910450009,27.851628745849176 70.44172703656074,27.854281634722632 70.43115634738696,27.87815763458374 70.42983501124024,27.872851856836828 70.45626173417466,27.88611630120411 70.47872444866893,27.95509141191397 70.49986582701646,27.976314522901617 70.4959018185763,27.928562523179405 70.48004578481564,27.907339412191757 70.46022574261482,27.923256745432493 70.45890440646811,27.978967411775074 70.49193781013614,27.98162030064853 70.48268845710909,28.005496300509634 70.48004578481564,28.02406652262383 70.48929513784269,28.069165633472583 70.49986582701646,28.09038874446023 70.4959018185763,28.15405807742318 70.51175785233696,28.199157188271936 70.50779384389679,28.191198521651568 70.4959018185763,28.130182077562075 70.48929513784269,28.034678078117654 70.45097638958778,28.04528963361148 70.4271923389468,28.05855407797876 70.43115634738696,28.069165633472583 70.45097638958778,28.12752918868862 70.47476044022876,28.177934077284288 70.48797380169597,28.207115854892304 70.48797380169597,28.24690918799415 70.50911518004351,28.2920082988429 70.50911518004351,28.302619854336726 70.50382983545663,28.366289187299675 70.51307918848367,28.366289187299675 70.49986582701646,28.32914874307129 70.48004578481564,28.35567763180585 70.47608177637548,28.39281807603424 70.48797380169597,28.43261140913608 70.49193781013614,28.459140297870643 70.48797380169597,28.44587585350336 70.46418975105499,28.48832207547866 70.44304837270745,28.512198075339764 70.44965505344106,28.506892297592852 70.46418975105499,28.485669186605204 70.4707964317886,28.512198075339764 70.49193781013614,28.546685630694697 70.49986582701646,28.528115408580504 70.50779384389679,28.50954518646631 70.50382983545663,28.46709896449101 70.50911518004351,28.443222964629904 70.52761388609761,28.395470964907695 70.54082724756482,28.408735409274975 70.54875526444515,28.414041187021887 70.56989664279268,28.43791718688299 70.58839534884679,28.46709896449101 70.59764470187383,28.485669186605204 70.63728478627547,28.506892297592852 70.65446215618284,28.50954518646631 70.68353155141071,28.5705616305558 70.67428219838366,28.6130078525311 70.67428219838366,28.623619408024926 70.68353155141071,28.575867408302713 70.68749555985087,28.541379852947784 70.70203025746481,28.51485096421322 70.72713564425251,28.605049185910733 70.76809706480087,28.666065630000222 70.77998909012136,28.658106963379854 70.79320245158857,28.750958073950823 70.85398391433775,28.83585051790142 70.87776796497873,28.976453628194598 70.88569598185906,28.992370961435334 70.8698399480984,29.05073451665137 70.87380395653857,29.09052784975321 70.87380395653857,29.093180738626668 70.85794792277791,29.132974071728512 70.84869856975087,29.201949182438373 70.85398391433775,29.247048293287126 70.84605589745742,29.24970118216058 70.83680654443037,29.27357718202169 70.8262358552566,29.26031273765441 70.819629174523,29.27357718202169 70.80509447690906,29.255006959907494 70.79980913232218,29.278882959768602 70.79188111544185,29.318676292870443 70.79188111544185,29.39030429245376 70.78395309856153,29.358469625972287 70.76281172021399,29.329287848364267 70.75224103104021,29.255006959907494 70.74034900571972,29.27357718202169 70.73638499727956,29.26031273765441 70.72713564425251,29.310717626250074 70.7324209888394,29.331940737237726 70.72449297195907,29.4062216256945 70.73506366113284,29.416833181188323 70.72845698039923,29.284188737515514 70.70995827434514,29.323982070617355 70.69938758517137,29.361122514845743 70.70335159361153,29.37703984808648 70.69938758517137,29.310717626250074 70.68353155141071,29.24439540441367 70.6703181899435,29.30010607075625 70.66503284535662,29.252354071034038 70.65710482847629,29.297453181882794 70.65446215618284,29.345205181605007 70.67956754297055,29.392957181327215 70.69410224058448,29.416833181188323 70.69013823214432,29.451320736543252 70.70203025746481,29.5149900695062 70.70203025746481,29.589270957962974 70.70995827434514,29.66885762416666 70.72845698039923,29.71660962388887 70.73506366113284,29.80150206783947 70.72449297195907,29.7935434012191 70.69938758517137,29.812113623333293 70.69410224058448,29.785584734598732 70.65446215618284,29.69803940177468 70.6267140971017,29.679469179660483 70.6148220717812,29.70334517952159 70.61746474407465,29.743138512623432 70.6267140971017,29.796196290092556 70.63067810554186,29.83333673432094 70.64257013086235,29.904964733904258 70.68353155141071,29.920882067144998 70.68617422370416,29.94741095587956 70.70335159361153,30.011080288842507 70.71127961049186,30.08536117729928 70.7073156020517,30.101278510540016 70.6954235767312,30.178212287870245 70.68353155141071,30.207394065478265 70.67428219838366,30.19412962111098 70.66635418150334,30.11189006603384 70.65446215618284,30.11984873265421 70.64653413930252,30.18882384336407 70.64653413930252,30.247187398580106 70.64124879471564,30.33473273140416 70.61085806334104,30.32146828703688 70.59235935728695,30.28167495393504 70.57386065123285,30.228617176465914 70.56989664279268,30.207394065478265 70.55271927288531,30.156989176882597 70.54875526444515,30.080055399552368 70.54875526444515,30.088014066172736 70.54082724756482,30.146377621388773 70.53289923068449,30.122501621527665 70.52893522224433,30.053526510817804 70.52893522224433,30.024344733209787 70.54082724756482,30.000468733348683 70.53686323912466,30.040262066450524 70.52497121380416,30.114542954907296 70.51704319692384,30.138418954768404 70.50382983545663,30.16229495462951 70.51307918848367,30.21004695435172 70.52497121380416,30.379831842252916 70.5513979367386,30.443501175215864 70.55271927288531,30.475335841697337 70.54743392829843,30.552269619027566 70.54082724756482,30.594715841002866 70.54082724756482,30.61328606311706 70.55271927288531,30.634509174104707 70.54479125600498,30.610633174243603 70.53686323912466,30.61859184086397 70.52497121380416,30.581451396635586 70.50911518004351,30.676955396080007 70.48797380169597,30.740624729042956 70.46815375949515,30.72470739580222 70.43115634738696,30.761847840030605 70.43115634738696,30.77245939552443 70.42190699435992,30.79368250651208 70.42190699435992,30.80164117313245 70.43115634738696,30.85469895060157 70.44304837270745,30.873269172715766 70.43908436426729,30.926326950184887 70.44965505344106,30.955508727792907 70.44304837270745,30.96081450553982 70.42983501124024,30.995302060894748 70.41926432206647,31.037748282870048 70.3901949268386,31.019178060755856 70.36641087619762,31.053665616110784 70.36112553161074,31.045706949490416 70.33337747252959,31.061624282731152 70.32016411106238,31.037748282870048 70.30430807730173,31.06427717160461 70.28845204354107,31.00856650526203 70.28052402666074,30.982037616527467 70.2844880351009,30.94755006117254 70.26863200134025,30.9316327279318 70.27259600978041,30.796335395385537 70.25673997601976,30.761847840030605 70.26070398445992,30.719401618055308 70.25673997601976,30.711442951434936 70.24484795069927,30.666343840586183 70.25145463143288,30.60002161874978 70.24484795069927,30.560228285647934 70.24484795069927,30.554922507901022 70.23691993381894,30.520434952546093 70.2408839422591,30.488600286064617 70.22502790849845,30.48064161944425 70.20785053859107,30.379831842252916 70.19992252171075,30.35595584239181 70.19595851327058,30.329426953657247 70.17613847106976,30.32677406478379 70.16292510960255,30.353302953518355 70.15235442042878,30.36391450901218 70.13914105896157,30.332079842530703 70.1351770505214,30.289633620555406 70.1219636890542,30.21800562097209 70.11403567217387,30.18882384336407 70.10214364685338,30.172906510123333 70.10610765529354,30.122501621527665 70.0968583022665,30.093319843919648 70.084966276946,30.103931399413472 70.0783595962124,30.143724732515317 70.0783595962124,30.172906510123333 70.06911024318535,30.101278510540016 70.0664675708919,30.082708288425824 70.0783595962124,30.00312162222214 70.0664675708919,29.878435845169697 70.05853955401157,29.825378067700573 70.06118222630502,29.785584734598732 70.07307425162551,29.748444290370344 70.07439558777223,29.61314695782408 70.09025162153289,29.54151895824076 70.09289429382633,29.461932292037076 70.10082231070666,29.427444736682148 70.09421562997305,29.339899403858094 70.10214364685338,29.30806473737662 70.11403567217387,29.24439540441367 70.11932101676075,29.19133762694455 70.11403567217387,29.11970962736123 70.12989170593453,29.079916294259387 70.12328502520091,29.018899850169895 70.12328502520091,28.976453628194598 70.1351770505214,28.928701628472385 70.13914105896157,28.902172739737825 70.14839041198861,28.854420740015613 70.14310506740173,28.86237940663598 70.14839041198861,28.809321629166856 70.15631842886894,28.769528296065015 70.17085312648288,28.658106963379854 70.18010247950993,28.562602963935433 70.1721744626296,28.589131852669993 70.1602824373091,28.73769362958354 70.16292510960255,28.764222518318103 70.15896110116239,28.73769362958354 70.14839041198861,28.663412741126766 70.13121304208124,28.575867408302713 70.1219636890542,28.57852029717617 70.11139299988042,28.64749540788603 70.10214364685338,28.674024296620594 70.09421562997305,28.71116474084898 70.10610765529354,28.756263851697735 70.10478631914683,28.796057184799576 70.10875032758699,28.838503406774876 70.10214364685338,28.851767851142156 70.09025162153289,28.83585051790142 70.08628761309272,28.727082074089715 70.09025162153289,28.769528296065015 70.0783595962124,28.833197629027964 70.0783595962124,28.84380918452179 70.07307425162551,28.90482562861128 70.07439558777223,28.955230517206946 70.06250356245174,29.010941183549527 70.06118222630502,29.069304738765563 70.0532542094247,29.106445182993948 70.05721821786486,29.106445182993948 70.04532619254437,29.14889140496925 70.04664752869108,29.18072607145072 70.03343416722387,29.117056738487776 70.01361412502305,29.146238516095792 70.00832878043617,29.178073182577265 70.01757813346322,29.21786651567911 70.00965011658289,29.239089626666757 70.01757813346322,29.276230070895146 70.00965011658289,29.31337051512353 70.02022080575667,29.379692736959935 70.00568610814273,29.39030429245376 70.00965011658289,29.461932292037076 70.00040076355585,29.504378514012377 70.00040076355585,29.493766958518552 69.98850873823535,29.644981624305554 69.97529537676814,29.66089895754629 69.9607606791542,29.637022957685186 69.94886865383371,29.55213051373459 69.92772727548618,29.48315540302473 69.91583525016569,29.464585180910532 69.89997921640503,29.430097625555604 69.89997921640503,29.400915847947584 69.88412318264437,29.41152740344141 69.87090982117716,29.35581673709883 69.87355249347061,29.353163848225375 69.86298180429684,29.42479184780869 69.85505378741651,29.438056292175972 69.866945812737,29.504378514012377 69.90658589713864,29.52825451387348 69.91583525016569,29.60518829120371 69.91451391401897,29.644981624305554 69.9039432248452,29.68742784628085 69.89997921640503,29.684774957407395 69.91187124172552,29.708650957268503 69.91451391401897,29.73783273487652 69.9039432248452,29.72987406825615 69.89469387181815,29.759055845864168 69.88676585493782,29.753750068117256 69.85901779585667,29.743138512623432 69.85108977897634,29.78027895685182 69.83126973677552,29.740485623749976 69.82202038374848,29.759055845864168 69.81409236686815,29.72987406825615 69.80616434998782,29.695386512901223 69.78898698008045,29.68212206853394 69.7731309463198,29.615799846697534 69.76388159329275,29.631717179938274 69.75595357641242,29.658246068672835 69.75727491255914,29.650287402052466 69.74538288723865,29.626411402191362 69.74538288723865,29.562742069228413 69.70045745825013,29.525601625000025 69.70442146669029,29.512337180632745 69.70045745825013,29.4062216256945 69.70045745825013,29.42479184780869 69.69649344980996,29.49641984739201 69.6925294413698,29.533560291620393 69.69781478595668,29.538866069367305 69.6925294413698,29.499072736265465 69.66478138228865,29.4725438475309 69.65949603770177,29.499072736265465 69.65156802082144,29.549477624861133 69.66874539072882,29.57070073584878 69.68856543292964,29.623758513317906 69.70442146669029,29.64763451317901 69.72556284503783,29.679469179660483 69.73745487035832,29.774973179104908 69.7480255595321,29.851906956435137 69.74406155109193,29.886394511790066 69.73216952577144,29.91822917827154 69.75727491255914,29.971286955740663 69.76916693787963,30.05617939969126 69.78105896320012,30.077402510678912 69.76916693787963,30.037609177577067 69.73745487035832,29.99516295560177 69.72556284503783,29.94741095587956 69.71631349201078,29.920882067144998 69.70574280283701,29.894353178410434 69.70442146669029,29.894353178410434 69.68460142448947,29.920882067144998 69.6674240545821,29.91822917827154 69.65156802082144,29.934146511512278 69.59078655807227,29.95271673362647 69.5868225496321,29.928840733765366 69.69649344980996,30.04291495532398 69.72820551733128,30.082708288425824 69.72952685347799,30.069443844058544 69.7176348281575,30.08536117729928 69.70574280283701,30.11189006603384 69.67270939916898,30.127807399274577 69.67270939916898,30.11189006603384 69.70838547513046,30.130460288148033 69.72556284503783,30.109237177160384 69.73216952577144,30.09862562166656 69.75595357641242,30.20208828773135 69.76916693787963,30.191476732237525 69.79030831622717,30.15433628800914 69.80748568613454,30.172906510123333 69.82202038374848,30.133113177021492 69.84976844282963,30.14903051026223 69.87090982117716,30.199435398857894 69.87883783805749,30.225964287592458 69.87487382961733,30.268410509567754 69.88148051035094,30.30024517604923 69.87883783805749,30.33473273140416 69.86562447659028,30.310856731543055 69.85373245126979,30.233922954212826 69.84316176209602,30.233922954212826 69.83391240906897,30.329426953657247 69.8418404259493,30.353302953518355 69.84712577053618,30.371873175632548 69.84316176209602,30.387790508873284 69.81409236686815,30.387790508873284 69.78238029934684,30.401054953240564 69.78238029934684,30.409013619860932 69.7480255595321,30.406360730987476 69.72027750045095,30.419625175354756 69.68856543292964,30.35595584239181 69.67667340760914,30.305550953796143 69.67138806302226,30.38248473112637 69.66478138228865,30.44615406408932 69.67535207146243,30.456765619583145 69.68460142448947,30.443501175215864 69.6925294413698,30.435542508595496 69.72556284503783,30.443501175215864 69.7361335342116,30.46737717507697 69.73349086191816,30.462071397330057 69.7480255595321,30.43288961972204 69.7612389209993,30.44084828634241 69.78238029934684,30.419625175354756 69.80220034154766,30.422278064228212 69.81409236686815,30.504517619305357 69.8233417198952,30.533699396913374 69.8114496945747,30.554922507901022 69.81409236686815,30.602674507623234 69.79691499696078,30.602674507623234 69.81409236686815,30.63185628523125 69.81012835842799,30.671649618333095 69.81012835842799,30.650426507345447 69.7982363331075,30.66899672945964 69.79030831622717,30.6955256181942 69.80220034154766,30.732666062422588 69.7982363331075,30.722054506928764 69.786344307787,30.684914062700376 69.78238029934684,30.68226117382692 69.76388159329275,30.71674872918185 69.7612389209993,30.727360284675676 69.77180961017308,30.796335395385537 69.79030831622717,30.822864284120097 69.79030831622717,30.873269172715766 69.75595357641242,30.873269172715766 69.74141887879848,30.889186505956502 69.73745487035832,30.889186505956502 69.72027750045095,30.873269172715766 69.71367081971734,30.928979839058343 69.68460142448947,30.944897172299083 69.68328008834276,30.92367406131143 69.66874539072882,30.95285583891945 69.6304266424739,30.950202950045995 69.60003591109931,30.93959139455217 69.59475056651243,30.94755006117254 69.57493052431161,30.9316327279318 69.55907449055096,30.817558506373185 69.52868375917637,30.692872729320744 69.53793311220342,30.51512917479918 69.54057578449687,30.4169722864813 69.58814388577882,30.233922954212826 69.65024668467473,30.151683399135685 69.66874539072882,30.08536117729928 69.65817470155505,30.090666955046192 69.6423186677944,30.138418954768404 69.64364000394112,30.151683399135685 69.60796392797964,30.18882384336407 69.56700250743128,30.17555939899679 69.53793311220342,30.122501621527665 69.5181130700026,30.117195843780753 69.46922363257391,30.053526510817804 69.43619022890589,30.00842739996905 69.41637018670507,29.936799400385734 69.40447816138457,29.91822917827154 69.41637018670507,29.859865623055505 69.4242982035854,29.796196290092556 69.40712083367802,29.782931845725276 69.39655014450425,29.72456829050924 69.38862212762392,29.695386512901223 69.36351674083622,29.57070073584878 69.31726997570098,29.533560291620393 69.3185913118477,29.52294873612657 69.32784066487474,29.4725438475309 69.31991264799441,29.416833181188323 69.3185913118477,29.39561007020067 69.32387665643458,29.289494515262426 69.29480726120671,29.276230070895146 69.25780984909852,29.289494515262426 69.24591782377803,29.31337051512353 69.2379898068977,29.305411848503162 69.20892041166984,29.294800293009338 69.20495640322967,29.28684162638897 69.17588700800181,29.24970118216058 69.16135231038787,29.257659848780953 69.15342429350754,29.239089626666757 69.13624692360017,29.241742515540214 69.11246287295918,29.16746162708344 69.07150145241083,29.093180738626668 69.03978938488952,29.056040294398283 69.01468399810182,29.042775850031003 69.01071998966165,29.018899850169895 69.02393335112886,28.928701628472385 69.05168141021001,28.85707362888907 69.07546546085099,28.8066687402934 69.11114153681247,28.830544740154508 69.17192299956164,28.833197629027964 69.22477644543049,29.05869318327174 69.32387665643458,29.220519404552565 69.39655014450425,29.33724651498464 69.47715164945424,29.28684162638897 69.52604108688293,29.20460207131183 69.60796392797964,29.170114515956897 69.63967599550095,29.132974071728512 69.69385077751652,28.894214073117457 69.73349086191816,28.644842519012574 69.77841629090668,28.403429631528063 69.81805637530832,28.32914874307129 69.84976844282963,28.345066076312026 69.87883783805749,28.162016744043548 69.91979925860585,28.032025189244198 69.98718740208864,27.984273189521986 70.01361412502305,27.976314522901617 70.0532542094247,27.96039718966088 70.09025162153289,27.883463412330652 70.08628761309272,27.787959412886227 70.07439558777223,27.742860302037474 70.06250356245174,27.700414080062174 70.07439558777223,27.61286874723812 70.07439558777223,27.559810969768996 70.05853955401157,27.525323414414068 70.02154214190338,27.427166526096187 70.01757813346322,27.358191415386326 69.9911514105288,27.30778652679066 69.98850873823535,27.275951860309185 69.97529537676814,27.305133637917205 69.9607606791542,27.29452208242338 69.95283266227388,27.236158527207344 69.94886865383371,27.167183416497483 69.93301262007306,27.13269586114255 69.93169128392634,27.10086119466108 69.91583525016569,27.058414972685778 69.91583525016569,27.03719186169813 69.9105499055788,26.98678697310246 69.9356552923665,26.94168786225371 69.93961930080667,26.87801852929076 69.93169128392634,26.859448307176567 69.94094063695339,26.8514896405562 69.9607606791542,26.785167418719794 69.95679667071404,26.716192308009933 69.94358330924683,26.679051863781545 69.96472468759437,26.551713197855648 69.947547317687,26.488043864892703 69.94358330924683,26.464167865031595 69.93961930080667,26.456209198411226 69.91847792245913,26.408457198689014 69.89997921640503,26.416415865309386 69.88676585493782,26.387234087701366 69.85505378741651,26.241325199661276 69.81409236686815,26.246630977408188 69.79427232466733,26.228060755293995 69.79295098852062,26.214796310926715 69.77841629090668,26.18826742219215 69.77709495475996,26.180308755571783 69.75991758485259,26.151126977963767 69.75595357641242,26.13520964472303 69.73745487035832,26.045011423025517 69.72027750045095,26.01052386767059 69.72159883659766,25.949507423581096 69.69649344980996,25.941548756960728 69.68460142448947,25.89114386836506 69.66478138228865,25.899102534985428 69.65817470155505,25.93359009034036 69.65421069311489,25.954813201328008 69.64364000394112,25.96011897907492 69.61985595330013,25.97603631231566 69.61060660027309,25.936242979213816 69.57096651587145,25.875226535124323 69.55378914596407,25.840738979769394 69.55114647367063,25.840738979769394 69.54189712064358,25.86992075737741 69.53264776761654,25.87787942399778 69.52207707844276,25.846044757516307 69.49036501092145,25.8646149796305 69.4745089771608,25.835433202022482 69.46922363257391,25.8221687576552 69.44808225422638,25.792986980047182 69.42033419514523,25.819515868781743 69.41637018670507,25.811557202161374 69.40447816138457,25.832780313149026 69.40712083367802,25.846044757516307 69.39258613606408,25.811557202161374 69.37540876615671,25.816862979908286 69.35955273239605,25.782375424553358 69.35294605166244,25.758499424692253 69.33973269019523,25.758499424692253 69.32784066487474,25.7372763137046 69.31066329496737,25.74523498032497 69.28555790817967,25.721358980463865 69.25780984909852,25.702788758349673 69.25384584065836,25.713400313843497 69.21024174781655,25.69217720285585 69.19570705020263,25.73197053595769 69.15342429350754,25.742582091451514 69.13756825974689,25.721358980463865 69.11114153681247,25.73197053595769 69.10321351993214,25.72401186933732 69.07942946929116,25.747887869198426 69.05960942709034,25.747887869198426 69.03054003186247,25.777069646806446 69.01864800654198,25.763805202439165 69.00279197278132,25.716053202716953 68.98165059443379,25.713400313843497 68.96579456067313,25.69217720285585 68.94993852691248,25.65503675862746 68.90501309792396,25.59932609228488 68.88519305572314,25.53035098157502 68.88783572801658,25.48259898185281 68.90501309792396,25.397706537902213 68.8891570641633,25.397706537902213 68.88519305572314,25.26771498310286 68.85083831590839,25.235880316621383 68.8389462905879,25.196086983519542 68.8085555592133,25.156293650417698 68.79930620618626,25.124458983936226 68.75041676875757,25.12180609506277 68.73059672655675,25.129764761683138 68.7147406927961,25.111194539568945 68.70152733132889,25.10854165069549 68.6777432806879,25.119153206189313 68.64206720472643,25.068748317593645 68.6209258263789,25.01569054012452 68.6209258263789,24.991814540263416 68.61299780949857,24.957326984908487 68.61696181793873,24.917533651806643 68.60506979261824,24.90692209631282 68.57996440583054,24.904269207439363 68.55485901904284,24.85651720771715 68.56146569977643,24.782236319260377 68.63678186013955,24.60714565361227 68.68170728912807,24.466542543319093 68.69888465903544,24.30206343316481 68.71738336508955,24.251658544569143 68.72663271811659,24.209212322593842 68.7451314241707,24.153501656251265 68.75173810490429,24.158807433998177 68.78873551701248,24.073914990047577 68.77948616398544,23.983716768350067 68.8270542652674,23.87229543566491 68.83630361829445,23.77413854734703 68.81912624838708,23.731692325371732 68.75041676875757,23.673328770155695 68.70549133976905,23.439874549291552 68.69095664215511,23.33641188322676 68.66981526380758,23.166626995325565 68.62885384325922,23.04459410714658 68.6896353060084,22.800528330788612 68.68567129756823,22.59360299865903 68.72927539041004,22.535239443442993 68.7451314241707,22.373413222162167 68.7147406927961,22.3654545555418 68.75041676875757,22.341578555680695 68.8270542652674,22.19301677876715 68.91690512324445,22.171793667779497 68.95654520764609,22.02323189086595 69.04771740176984,21.975479891143742 69.07810813314444,21.84548833634439 69.1441749404805,21.723455448165403 69.21420575625672,21.62795144872098 69.2749872190059,21.529794560403104 69.28555790817967,21.277770117424765 69.31066329496737,21.097373674029747 69.25913118524524,21.004522563458778 69.22213377313705,20.98860523021804 69.19174304176246,21.04696878543408 69.13756825974689,21.054927452054446 69.12039088983951,21.10798522952357 69.10453485607886,21.057580340927903 69.03450404030264,20.834737675557584 69.09000015846493,20.715357676252054 69.12039088983951,20.55353145497123 69.05960942709034,20.473944788767543 69.05828809094362,20.195391457054644 69.04771740176984,20.06009412450838 69.04639606562313,20.26171367889105 68.9446531823256,20.306812789739805 68.92615447627149,20.33599456734782 68.80062754233298,20.245796345650312 68.71077668435593,20.203350123675015 68.66585125536741,20.160903901699715 68.64470987701988,20.052135457888014 68.58921375885758,19.938061236329396 68.55618035518955,20.02560656915345 68.53107496840185,20.22722612353612 68.49143488400021,19.97785456943124 68.38837066455596,19.92214390308866 68.35665859703465,19.82398701477078 68.37251463079531,19.778887903922026 68.38176398382235,19.343814128675213 68.45443747189202,19.17933501852093 68.48350686711989,18.983021241885172 68.5152189346412,18.62222835509513 68.50729091776087,18.465707911561218 68.56146569977643,18.404691467471725 68.57996440583054,18.126138135758826 68.53636031298873,18.10226213589772 68.40554803446334,18.126138135758826 68.29455579813876,18.152667024493386 68.19941959557482,18.09695635815081 68.14656614970598,18.051857247302053 68.10692606530434,17.90064258151505 67.96818576989861,17.78922124882989 67.99989783741992,17.71228747149966 68.0236818880609,17.638006583042888 68.04482326640844,17.282519473999763 68.11749675447811,17.240073252024462 68.09371270383713,17.181709696808426 68.0487872748486,17.080899919617092 68.02103921576746,16.94294969819737 67.9800777952191,16.738677254941244 67.91401098788305,16.669702144231383 67.80962543229207,16.63786747774991 67.76602133945026,16.600727033521522 67.71052522128798,16.55562792267277 67.64710108624536,16.49195858970982 67.59028363193634,16.407066145759224 67.53346617762733,16.28503325758024 67.52818083304045,16.15769459165434 67.51761014386668,16.08871948094448 67.43568730276996,16.33013236842899 67.26127093140276,16.404413256885768 67.20445347709375,16.388495923645028 67.06967719012819,16.388495923645028 67.0458931394872,16.335438146175907 67.02607309728639,16.27707459095987 67.01021706352573,16.19483503588273 66.98114766829787,16.03831459234881 66.91243818866836,15.993215481500059 66.87147676812,15.87383548219453 66.78294724628968,15.767719927256284 66.70498841363313,15.621811039216194 66.59399617730855,15.44937326244154 66.5226440253856,15.375092373984767 66.4843252771307,15.4095799293397 66.4288291589684,15.452026151314996 66.34426364557824,15.483860817796472 66.28216084668234,15.30346437440145 66.23327140925366,15.213266152703941 66.20552335017251,15.035522598182379 66.15266990430366,14.743704822102199 66.14077787898317,14.515556378984968 66.13284986210284,14.539432378846072 66.06414038247334,14.550043934339897 66.02185762577827,14.573919934201001 65.95843349073564,14.584531489694829 65.89765202798647,14.595143045188653 65.8804746580791,14.62432482279667 65.81176517844959,14.542085267719528 65.69945160597828,14.53412660109916 65.67302488304387,14.515556378984968 65.58449536121354,14.499639045744228 65.5197498900242,14.499639045744228 65.43518437663404,14.499639045744228 65.41932834287338,14.499639045744228 65.35722554397749,14.50494482349114 65.30965744269552,14.377606157565246 65.24755464379963,14.327201268969578 65.11806370142095,14.244961713892437 65.06124624711194,14.109664381346171 64.96082469996112,14.064565270497415 64.93175530473326,13.931920826824609 64.8220844045554,13.85498704949438 64.76130294180622,13.817846605265991 64.72826953813819,13.706425272580834 64.63974001630787,13.65336749511171 64.57895855355869,13.841722605127096 64.52214109924968,13.892127493722764 64.50628506548902,14.085788381485067 64.47721567026116,14.114970159093083 64.4613596365005,14.11762304796654 64.43493291356609,14.149457714448015 64.25787386990544,14.157416381068384 64.1931283987161,14.05395371500359 64.09138551541857,13.966408382179537 64.0068200020284,13.717036828074658 64.04646008643005,13.41726038537411 64.07552948165791,13.36154971903153 64.07949349009807,13.210335053244528 64.09534952385873,13.175847497889595 64.09006417927185,12.926475943784716 64.05835211175054,12.74873238926315 63.99757064900136,12.67975727855329 63.97378659836038,12.61078216784343 63.916969144051365,12.49936083515827 63.832403630661204,12.422427057828042 63.776907512498916,12.329575947257077 63.7134833774563,12.2977412807756 63.67120062076122,12.231419058939196 63.6328818725063,12.149179503862054 63.59456312425139,12.212848836825003 63.47828554333992,12.080204393152194 63.355401281694846,12.035105282303439 63.31576119729321,11.974088838213948 63.26951443215797,12.077551504278738 63.15191551509978,12.175708392596617 63.048851295655524,12.218154614571915 62.99996185822684,12.074898615405282 62.90218298336947,12.135915059494774 62.74758665420309,12.096121726392932 62.681519846867026,12.05632839329109 62.61016769494408,12.06959283765837 62.594311661183426,12.186319948090443 62.42518063440311,12.2977412807756 62.26662029679656,12.276518169787952 62.19658948102034,12.27121239204104 62.170162758085915,12.234071947812652 62.06181319405478,12.212848836825003 61.97724768066462,12.202237281331179 61.933643587822814,12.170402614849705 61.83454337681873,12.159791059355879 61.79886730085725,12.13856794836823 61.723551140494145,12.276518169787952 61.64030696325071,12.3401875027509 61.61520157646301,12.419774168954586 61.561026794447436,12.44365016881569 61.566312139034316,12.568335945868132 61.568954811327764,12.61078216784343 61.538564079953176,12.655881278692185 61.50817334857859,12.70893905616131 61.46985460032367,12.815054611099555 61.39850244840073,12.870765277442135 61.35621969170565,12.857500833074855 61.31525827115729,12.823013277719923 61.23994211079418,12.79117861123845 61.1976593540991,12.706286167287853 61.142163235936806,12.706286167287853 61.136877891349926,12.67975727855329 61.05759772254665,12.65853416756564 61.05099104181304,12.613435056716886 61.047027033372885,12.488749279664447 61.049669705666325,12.44365016881569 61.049669705666325,12.321617280636707 61.03117099961223,12.239377725559565 61.01927897429174,12.220807503445371 61.01267229355813,12.234071947812652 60.99813759594419,12.332228836130533 60.889788031913056,12.334881725003989 60.852790619804864,12.348146169371269 60.81843587999011,12.39589816909348 60.732549030453235,12.459567502056428 60.68630226531799,12.509972390652095 60.64137683632947,12.512625279525551 60.59909407963439,12.581600390235412 60.550204642205706,12.605476390096518 60.51188589395079,12.605476390096518 60.406179002213094,12.547112834880481 60.34936154790408,12.49936083515827 60.32293482496966,12.504666612905183 60.27668805983441,12.523236835019375 60.223834613965565,12.54180705713357 60.19344388259098,12.525889723892831 60.16437448736311,12.502013724031727 60.09962901617377,12.446303057689146 60.038847553424596,12.39589816909348 60.01506350278361,12.3401875027509 59.96617406535493,12.22876617006574 59.92785531710001,12.17305550372316 59.88821523269837,12.15183239273551 59.886893896551655,12.117344837380582 59.892179241138535,12.053675504417633 59.884251224258215,11.984700393707772 59.89878592187215,11.928989727365192 59.886893896551655,11.915725282997911 59.87235919893772,11.883890616516437 59.87235919893772,11.88919639426335 59.85782450132379,11.838791505667682 59.83932579526969,11.852055950034963 59.83007644224264,11.875931949896069 59.8274337699492,11.926336838491736 59.79307903013445,11.931642616238648 59.7587242903197,11.92368394961828 59.74815360114592,11.931642616238648 59.73890424811888,11.93694839398556 59.69397881913036,11.88919639426335 59.69133614683691,11.878584838769525 59.68340812995659,11.867973283275699 59.66094541546232,11.854708838908419 59.647732053995114,11.788386617072014 59.64376804555495,11.727370172982523 59.62659067564758,11.698188395374505 59.608091969593474,11.690229728754137 59.58827192739266,11.727370172982523 59.51163443088283,11.753899061717085 59.4786010272148,11.761857728337453 59.42574758134595,11.775122172704734 59.41385555602546,11.780427950451646 59.38478616079759,11.817568394680032 59.345146076395956,11.82022128355349 59.29625663896727) diff --git a/rust/sedona-geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt b/rust/sedona-geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt deleted file mode 100644 index 168fb6ab..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/norway_nonconvex_hull.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(7.717377961338066 57.74911832172092,12.83203125 58.722598828043374,31.218815724995086 69.50004679809811,31.220360609653444 69.74967563784787,31.22041170425437 70.00042112672493,31.220012092660365 70.50025174432726,30.61987385954102 70.74988171707938,28.291580927773403 71.25031072902001,27.018043769538682 71.25053409142788,25.81713611470763 71.25061029282803,23.99734444112429 71.25032666052927,23.41773118246719 71.25021807292373,18.503596794856012 70.49788127446817,15.010693169334283 69.49664550225157,12.617561279995918 68.4983356095851,9.580078125 64.62387720204688,4.340231074407465 61.998825794804695,4.346980035524813 60.498808789126734,4.722530819313656 59.24963650749106,5.464957056755467 58.24822761552509,6.968425350867709 57.74957737187902,7.717377961338066 57.74911832172092) diff --git a/rust/sedona-geo-test-fixtures/fixtures/poly1.wkt b/rust/sedona-geo-test-fixtures/fixtures/poly1.wkt deleted file mode 100644 index 059f8a84..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/poly1.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(-75.57274028771249 110.01960141091608,-47.01425001453319 224.2535625036333,-44.1986052400443 233.56520178444188,-40.491516848197264 242.55919851821028,-35.928066677809895 251.1504384831045,-30.55144070299677 259.2576189250935,-24.412520344941953 266.8040179623472,-17.56940095820731 273.7182206387879,-10.086842048356445 279.93479475582495,-2.0356544237308825 285.394910086574,6.507969918963688 290.0468951126591,15.463178833668529 293.8467260149487,24.745225165064543 296.758443290685,34.26626874888323 298.7544920543751,43.93620768274765 299.8159828020204,53.66353100085455 299.9328701709592,63.35618468325523 299.10404800363494,72.92244280430123 297.33735981566144,82.27177557618647 294.64952456911897,91.31570607290114 291.0659784535237,99.96864752703414 286.6206341717666,108.14871327570971 281.355560009008,115.77849169077639 275.3205817216414,122.78577875973701 268.57281101383126,129.10426138467784 261.17610506386103,134.67414493283295 253.20046221503722,139.44271909999156 244.72135954999587,189.4427190999916 144.72135954999578,193.40316487178438 135.7190256296874,196.46014848027284 126.37119176608674,198.5841005952538 116.76827688896145,199.75447683394128 107.00316725394137,199.959956480919 97.1703179802708,199.19855199019082 87.36483941339068,197.47762821014587 77.68157714970485,194.8138311454814 68.21419462218802,191.23292694514913 59.05426712072333,186.76955267374814 50.29039601045239,181.46688127708177 42.007351716050565,175.37620398257155 34.28525376159651,168.5564341738489 27.198795797276006,161.07353753840516 20.81652310901589,152.99989400031805 15.200169599491232,98.33653286253586 -18.964431111622638,97.01425001453319 -24.253562503633297,94.16983504461093 -33.64583432864707,90.41851308474087 -42.71407837639184,85.79641141607766 -51.37096249948156,80.34804340438832 -59.53311617147662,74.12587981200636 -67.12193339062866,67.189843475707 -74.06432969864774,59.606732217031976 -80.2934460239878,51.44957554275259 -85.74929257125446,42.79693133079759 -90.37932655572841,33.73212927494458 -94.13895821910516,24.342468374316272 -96.99198025324264,14.718376196296493 -98.91091649633165,4.952538009623515 -99.87728654335396,-4.860995825414805 -99.88178372248515,-14.627715613363762 -98.92436472343178,-17.953756809330994 -98.26435835897965,-53.64820903700594 -226.76438637860946,-56.7355378616229 -236.07963555856995,-60.72105444017349 -245.0474181249662,-65.5663760693013 -253.58136942939535,-71.22483965299563 -261.59930285566344,-77.64195109371464 -269.02400132182726,-84.75591010033425 -275.7839609229046,-92.49820535873518 -281.81407955256725,-100.79427433320987 -287.05628387201347,-109.56422134444159 -291.46008858796654,-118.72358700857137 -294.98308265364733,-128.18416162723517 -297.59133771033885,-137.85483469517902 -299.2597348360279,-147.64247234423098 -299.9722064543555,-157.4528142733637 -299.72189107416057,-167.19138152692128 -298.5111993693906,-176.76438637860946 -296.3517909629941,-186.0796355585698 -293.26446213837716,-195.04741812496607 -289.2789455598266,-203.58136942939524 -284.4336239306988,-211.59930285566332 -278.7751603470045,-219.02400132182714 -272.3580489062855,-225.78396092290453 -265.2440898996658,-231.8140795525672 -257.50179464126495,-237.0562838720134 -249.20572566679022,-241.46008858796648 -240.4357786555585,-244.98308265364727 -231.27641299142869,-247.59133771033882 -221.8158383727649,-249.25973483602792 -212.145165304821,-249.97220645435553 -202.35752765576902,-249.72189107416057 -192.54718572663626,-248.51119936939062 -182.8086184730787,-246.35179096299407 -173.23561362139054,-196.35179096299407 6.7643863786094585,-193.32576660256726 15.920764023655508,-189.43184924301974 24.74309266215056,-184.7062507874361 33.14932810051302,-179.19291744665992 41.0612956486063,-172.94312105678188 48.40541711367358,-166.01498227118805 55.11339504865113,-158.47293006129595 61.12284789161923,-150.3871025524086 66.37789008984335,-75.57274028771249 110.01960141091608) diff --git a/rust/sedona-geo-test-fixtures/fixtures/poly1_hull.wkt b/rust/sedona-geo-test-fixtures/fixtures/poly1_hull.wkt deleted file mode 100644 index 4b3becf7..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/poly1_hull.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(-249.25973483602792 -212.145165304821,-247.59133771033882 -221.8158383727649,-244.98308265364727 -231.27641299142869,-241.46008858796648 -240.4357786555585,-237.0562838720134 -249.20572566679022,-231.8140795525672 -257.50179464126495,-225.78396092290453 -265.2440898996658,-219.02400132182714 -272.3580489062855,-211.59930285566332 -278.7751603470045,-203.58136942939524 -284.4336239306988,-195.04741812496607 -289.2789455598266,-186.0796355585698 -293.26446213837716,-176.76438637860946 -296.3517909629941,-167.19138152692128 -298.5111993693906,-157.4528142733637 -299.72189107416057,-147.64247234423098 -299.9722064543555,-137.85483469517902 -299.2597348360279,-128.18416162723517 -297.59133771033885,-118.72358700857137 -294.98308265364733,-109.56422134444159 -291.46008858796654,-100.79427433320987 -287.05628387201347,-92.49820535873518 -281.81407955256725,-84.75591010033425 -275.7839609229046,-77.64195109371464 -269.02400132182726,-71.22483965299563 -261.59930285566344,175.37620398257155 34.28525376159651,181.46688127708177 42.007351716050565,186.76955267374814 50.29039601045239,191.23292694514913 59.05426712072333,194.8138311454814 68.21419462218802,197.47762821014587 77.68157714970485,199.19855199019082 87.36483941339068,199.959956480919 97.1703179802708,199.75447683394128 107.00316725394137,198.5841005952538 116.76827688896145,196.46014848027284 126.37119176608674,193.40316487178438 135.7190256296874,189.4427190999916 144.72135954999578,139.44271909999156 244.72135954999587,134.67414493283295 253.20046221503722,129.10426138467784 261.17610506386103,122.78577875973701 268.57281101383126,115.77849169077639 275.3205817216414,108.14871327570971 281.355560009008,99.96864752703414 286.6206341717666,91.31570607290114 291.0659784535237,82.27177557618647 294.64952456911897,72.92244280430123 297.33735981566144,63.35618468325523 299.10404800363494,53.66353100085455 299.9328701709592,43.93620768274765 299.8159828020204,34.26626874888323 298.7544920543751,24.745225165064543 296.758443290685,15.463178833668529 293.8467260149487,6.507969918963688 290.0468951126591,-2.0356544237308825 285.394910086574,-10.086842048356445 279.93479475582495,-17.56940095820731 273.7182206387879,-24.412520344941953 266.8040179623472,-30.55144070299677 259.2576189250935,-184.7062507874361 33.14932810051302,-189.43184924301974 24.74309266215056,-193.32576660256726 15.920764023655508,-196.35179096299407 6.7643863786094585,-246.35179096299407 -173.23561362139054,-248.51119936939062 -182.8086184730787,-249.72189107416057 -192.54718572663626,-249.97220645435553 -202.35752765576902,-249.25973483602792 -212.145165304821) diff --git a/rust/sedona-geo-test-fixtures/fixtures/poly2.wkt b/rust/sedona-geo-test-fixtures/fixtures/poly2.wkt deleted file mode 100644 index 06f841e7..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/poly2.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(0 -100,-9.801714032956664 -99.51847266721963,-19.509032201613387 -98.07852804032294,-29.02846772544675 -95.69403357322072,-38.268343236509445 -92.38795325112848,-47.13967368260018 -88.19212643483529,-55.5570233019606 -83.14696123025428,-63.439328416364795 -77.30104533627349,-70.710678118655 -70.71067811865453,-77.30104533627389 -63.439328416364326,-83.14696123025468 -55.55702330196001,-88.1921264348356 -47.13967368259957,-92.38795325112875 -38.2683432365088,-95.69403357322092 -29.028467725446088,-98.07852804032306 -19.509032201612705,-99.5184726672197 -9.80171403295597,-100 0,-100 500,-99.51847266721968 509.80171403295606,-98.07852804032305 519.5090322016129,-95.69403357322088 529.0284677254463,-92.38795325112868 538.2683432365089,-88.1921264348355 547.1396736825998,-83.14696123025453 555.5570233019603,-77.3010453362737 563.4393284163646,-70.71067811865474 570.7106781186548,-63.439328416364525 577.3010453362738,-55.55702330196019 583.1469612302545,-47.13967368259977 588.1921264348355,-38.268343236508976 592.3879532511287,-29.028467725446223 595.6940335732208,-19.5090322016128 598.078528040323,-9.80171403295602 599.5184726672197,0 600,500 600,509.8017140329562 599.5184726672196,519.509032201613 598.078528040323,529.0284677254464 595.6940335732208,538.268343236509 592.3879532511287,547.1396736825999 588.1921264348355,555.5570233019603 583.1469612302544,563.4393284163647 577.3010453362737,570.7106781186549 570.7106781186546,577.3010453362738 563.4393284163644,583.1469612302545 555.5570233019602,588.1921264348355 547.1396736825997,592.3879532511287 538.2683432365089,595.6940335732208 529.0284677254463,598.078528040323 519.5090322016129,599.5184726672197 509.80171403295606,600 500,599.5184726672197 490.19828596704394,598.078528040323 480.4909677983872,595.6940335732208 470.9715322745538,592.3879532511287 461.73165676349106,588.1921264348355 452.8603263174003,583.1469612302545 444.44297669803984,577.3010453362738 436.5606715836355,570.7106781186548 429.28932188134524,563.4393284163646 422.69895466372634,555.5570233019603 416.85303876974547,547.1396736825998 411.8078735651645,538.2683432365089 407.6120467488713,529.0284677254463 404.3059664267791,519.5090322016127 401.921471959677,509.801714032956 400.4815273327803,500 400,100 400,100 100,500 100,509.8017140329562 99.51847266721967,519.509032201613 98.07852804032302,529.0284677254464 95.69403357322085,538.268343236509 92.38795325112864,547.1396736825999 88.19212643483544,555.5570233019603 83.14696123025446,563.4393284163647 77.30104533627363,570.7106781186549 70.7106781186547,577.3010453362738 63.439328416364496,583.1469612302545 55.55702330196017,588.1921264348355 47.139673682599714,592.3879532511287 38.26834323650893,595.6940335732208 29.028467725446205,598.078528040323 19.509032201612804,599.5184726672197 9.801714032956049,600 0,599.5184726672197 -9.801714032956049,598.078528040323 -19.509032201612804,595.6940335732208 -29.028467725446205,592.3879532511287 -38.26834323650893,588.1921264348355 -47.139673682599714,583.1469612302545 -55.557023301960186,577.3010453362738 -63.439328416364525,570.7106781186548 -70.71067811865474,563.4393284163646 -77.30104533627369,555.5570233019603 -83.14696123025452,547.1396736825998 -88.1921264348355,538.2683432365089 -92.38795325112868,529.0284677254463 -95.69403357322089,519.5090322016127 -98.07852804032305,509.801714032956 -99.5184726672197,500 -100,0 -100) diff --git a/rust/sedona-geo-test-fixtures/fixtures/poly2_hull.wkt b/rust/sedona-geo-test-fixtures/fixtures/poly2_hull.wkt deleted file mode 100644 index e15bceb8..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/poly2_hull.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(-99.5184726672197 -9.80171403295597,-98.07852804032306 -19.509032201612705,-95.69403357322092 -29.028467725446088,-92.38795325112875 -38.2683432365088,-88.1921264348356 -47.13967368259957,-83.14696123025468 -55.55702330196001,-77.30104533627389 -63.439328416364326,-70.710678118655 -70.71067811865453,-63.439328416364795 -77.30104533627349,-55.5570233019606 -83.14696123025428,-47.13967368260018 -88.19212643483529,-38.268343236509445 -92.38795325112848,-29.02846772544675 -95.69403357322072,-19.509032201613387 -98.07852804032294,-9.801714032956664 -99.51847266721963,0 -100,500 -100,509.801714032956 -99.5184726672197,519.5090322016127 -98.07852804032305,529.0284677254463 -95.69403357322089,538.2683432365089 -92.38795325112868,547.1396736825998 -88.1921264348355,555.5570233019603 -83.14696123025452,563.4393284163646 -77.30104533627369,570.7106781186548 -70.71067811865474,577.3010453362738 -63.439328416364525,583.1469612302545 -55.557023301960186,588.1921264348355 -47.139673682599714,592.3879532511287 -38.26834323650893,595.6940335732208 -29.028467725446205,598.078528040323 -19.509032201612804,599.5184726672197 -9.801714032956049,600 0,600 500,599.5184726672197 509.80171403295606,598.078528040323 519.5090322016129,595.6940335732208 529.0284677254463,592.3879532511287 538.2683432365089,588.1921264348355 547.1396736825997,583.1469612302545 555.5570233019602,577.3010453362738 563.4393284163644,570.7106781186549 570.7106781186546,563.4393284163647 577.3010453362737,555.5570233019603 583.1469612302544,547.1396736825999 588.1921264348355,538.268343236509 592.3879532511287,529.0284677254464 595.6940335732208,519.509032201613 598.078528040323,509.8017140329562 599.5184726672196,500 600,0 600,-9.80171403295602 599.5184726672197,-19.5090322016128 598.078528040323,-29.028467725446223 595.6940335732208,-38.268343236508976 592.3879532511287,-47.13967368259977 588.1921264348355,-55.55702330196019 583.1469612302545,-63.439328416364525 577.3010453362738,-70.71067811865474 570.7106781186548,-77.3010453362737 563.4393284163646,-83.14696123025453 555.5570233019603,-88.1921264348355 547.1396736825998,-92.38795325112868 538.2683432365089,-95.69403357322088 529.0284677254463,-98.07852804032305 519.5090322016129,-99.51847266721968 509.80171403295606,-100 500,-100 0,-99.5184726672197 -9.80171403295597) diff --git a/rust/sedona-geo-test-fixtures/fixtures/poly_in_ring.wkt b/rust/sedona-geo-test-fixtures/fixtures/poly_in_ring.wkt deleted file mode 100644 index bdfeab7a..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/poly_in_ring.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(4 1,3.9855541800165906 0.7059485790113185,3.9423558412096913 0.41472903395161576,3.8708210071966267 0.12914596823661362,3.771638597533861 -0.14805029709526818,3.6457637930450657 -0.41419021047799154,3.4944088369076365 -0.6667106990588052,3.3190313600882124 -0.9031798524909349,3.1213203435596446 -1.121320343559641,2.903179852490939 -1.3190313600882089,2.6667106990588096 -1.4944088369076338,2.4141902104779955 -1.6457637930450635,2.1480502970952724 -1.771638597533859,1.8708540317633906 -1.8708210071966254,1.5852709660483888 -1.9423558412096904,1.2940514209886862 -1.9855541800165901,1.0000000000000049 -2,0.7059485790113234 -1.985554180016591,0.41472903395162053 -1.9423558412096922,0.1291459682366185 -1.8708210071966285,-0.14805029709526352 -1.7716385975338627,-0.4141902104779871 -1.6457637930450684,-0.6667106990588012 -1.4944088369076391,-0.9031798524909318 -1.3190313600882146,-1.1213203435596384 -1.1213203435596468,-1.319031360088207 -0.9031798524909405,-1.494408836907633 -0.666710699058811,-1.645763793045063 -0.4141902104779971,-1.7716385975338587 -0.1480502970952733,-1.8708210071966254 0.12914596823660918,-1.9423558412096904 0.41472903395161165,-1.9855541800165906 0.7059485790113149,-2 0.999999999999997,-1.9855541800165906 1.294051420988679,-1.9423558412096922 1.5852709660483826,-1.8708210071966271 1.8708540317633853,-1.7716385975338609 2.148050297095268,-1.6457637930450657 2.414190210477992,-1.4944088369076365 2.6667106990588056,-1.3190313600882115 2.903179852490936,-1.1213203435596428 3.1213203435596424,-0.9031798524909378 3.3190313600882098,-0.6667106990588088 3.494408836907634,-0.414190210477996 3.6457637930450635,-0.1480502970952735 3.7716385975338587,0.12914596823660762 3.870821007196625,0.41472903395160876 3.94235584120969,0.7059485790113107 3.9855541800165897,0.9999999999999915 4,1.2940514209886724 3.9855541800165915,1.5852709660483744 3.942355841209693,1.870854031763376 3.87082100719663,2.1480502970952577 3.7716385975338653,2.414190210477981 3.6457637930450715,2.6667106990587945 3.494408836907644,2.9031798524909247 3.3190313600882204,3.121320343559631 3.1213203435596544,3.3190313600881995 2.90317985249095,3.4944088369076254 2.666710699058822,3.645763793045056 2.41419021047801,3.771638597533852 2.1480502970952884,3.8708210071966205 1.870854031763408,3.942355841209687 1.585270966048407,3.9855541800165883 1.2940514209887053,4 1.0000000000000246,4 1) diff --git a/rust/sedona-geo-test-fixtures/fixtures/ring.wkt b/rust/sedona-geo-test-fixtures/fixtures/ring.wkt deleted file mode 100644 index ee0cd97b..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/ring.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(10 1,9.956662540049772 0.1178457370339554,9.827067523629074 -0.7558128981451526,9.61246302158988 -1.612562095290159,9.314915792601582 -2.4441508912858048,8.937291379135196 -3.242570631433975,8.483226510722911 -4.000132097176415,7.957094080264637 -4.709539557472804,7.363961030678933 -5.363961030678923,6.709539557472817 -5.957094080264627,6.0001320971764285 -6.483226510722902,5.2425706314339875 -6.937291379135191,4.444150891285817 -7.314915792601576,3.612562095290172 -7.6124630215898765,2.755812898145167 -7.827067523629072,1.8821542629660588 -7.95666254004977,1.0000000000000144 -8,0.11784573703397005 -7.9566625400497735,-0.7558128981451382 -7.827067523629077,-1.6125620952901443 -7.612463021589885,-2.4441508912857906 -7.314915792601587,-3.2425706314339617 -6.937291379135204,-4.000132097176404 -6.483226510722918,-4.709539557472795 -5.957094080264644,-5.363961030678915 -5.36396103067894,-5.957094080264622 -4.709539557472821,-6.483226510722899 -4.000132097176433,-6.937291379135188 -3.242570631433991,-7.314915792601576 -2.44415089128582,-7.6124630215898765 -1.6125620952901727,-7.827067523629072 -0.7558128981451653,-7.956662540049772 0.11784573703394452,-8 0.9999999999999909,-7.956662540049772 1.8821542629660373,-7.827067523629076 2.7558128981451473,-7.612463021589882 3.6125620952901554,-7.314915792601582 4.444150891285803,-6.937291379135197 5.242570631433975,-6.4832265107229095 6.000132097176418,-5.957094080264634 6.709539557472807,-5.363961030678929 7.363961030678928,-4.709539557472813 7.95709408026463,-4.000132097176427 8.483226510722902,-3.2425706314339875 8.937291379135191,-2.4441508912858207 9.314915792601576,-1.6125620952901771 9.612463021589875,-0.7558128981451737 9.82706752362907,0.11784573703393209 9.95666254004977,0.9999999999999744 10,1.8821542629660168 9.956662540049773,2.7558128981451233 9.82706752362908,3.612562095290128 9.612463021589889,4.444150891285773 9.314915792601596,5.242570631433943 8.937291379135214,6.000132097176383 8.483226510722933,6.709539557472773 7.957094080264662,7.363961030678892 7.363961030678963,7.957094080264599 6.7095395574728505,8.483226510722876 6.000132097176467,8.937291379135168 5.242570631434031,9.314915792601557 4.444150891285865,9.61246302158986 3.6125620952902233,9.827067523629061 2.755812898145221,9.956662540049765 1.8821542629661163,10 1.0000000000000742,10 1) diff --git a/rust/sedona-geo-test-fixtures/fixtures/shell.wkt b/rust/sedona-geo-test-fixtures/fixtures/shell.wkt deleted file mode 100644 index b40a300e..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/shell.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(11 1,10.95184726672197 0.019828596704394963,10.807852804032304 -0.9509032201612808,10.56940335732209 -1.902846772544621,10.23879532511287 -2.826834323650894,9.819212643483553 -3.713967368259972,9.314696123025456 -4.555702330196017,8.730104533627374 -5.343932841636449,8.07106781186548 -6.07106781186547,7.343932841636462 -6.7301045336273635,6.5557023301960315 -7.314696123025447,5.713967368259986 -7.819212643483546,4.826834323650909 -8.238795325112862,3.9028467725446356 -8.569403357322084,2.9509032201612966 -8.807852804032303,1.9801714032956208 -8.951847266721966,1.0000000000000162 -9,0.019828596704411172 -8.95184726672197,-0.9509032201612646 -8.807852804032308,-1.902846772544605 -8.569403357322095,-2.8268343236508784 -8.238795325112875,-3.713967368259957 -7.81921264348356,-4.555702330196004 -7.314696123025465,-5.343932841636439 -6.730104533627382,-6.071067811865461 -6.071067811865489,-6.730104533627358 -5.343932841636468,-7.314696123025444 -4.555702330196036,-7.819212643483542 -3.71396736825999,-8.238795325112862 -2.8268343236509113,-8.569403357322084 -1.902846772544636,-8.807852804032303 -0.9509032201612948,-8.951847266721968 0.01982859670438286,-9 0.9999999999999899,-8.95184726672197 1.980171403295597,-8.807852804032306 2.9509032201612753,-8.569403357322091 3.902846772544617,-8.23879532511287 4.826834323650893,-7.819212643483553 5.713967368259972,-7.314696123025454 6.55570233019602,-6.730104533627371 7.343932841636453,-6.071067811865477 8.071067811865476,-5.343932841636459 8.730104533627367,-4.55570233019603 9.314696123025447,-3.7139673682599863 9.819212643483546,-2.8268343236509117 10.238795325112862,-1.902846772544641 10.569403357322084,-0.9509032201613041 10.8078528040323,0.019828596704368984 10.951847266721966,0.9999999999999715 11,1.9801714032955744 10.951847266721972,2.950903220161248 10.807852804032311,3.902846772544587 10.569403357322098,4.826834323650859 10.238795325112884,5.713967368259937 9.81921264348357,6.555702330195982 9.314696123025481,7.3439328416364145 8.730104533627403,8.071067811865436 8.071067811865515,8.730104533627333 7.343932841636501,9.314696123025417 6.555702330196074,9.81921264348352 5.713967368260034,10.238795325112841 4.826834323650961,10.569403357322068 3.9028467725446925,10.80785280403229 2.950903220161357,10.95184726672196 1.9801714032956848,11 1.0000000000000824,11 1) diff --git a/rust/sedona-geo-test-fixtures/fixtures/vw_orig.wkt b/rust/sedona-geo-test-fixtures/fixtures/vw_orig.wkt deleted file mode 100644 index abdba07c..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/vw_orig.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(2.32986 48.86005,2.35093 48.863411,2.43115 48.940418,2.54246 48.960732,2.63999 49.001961,2.72844 49.08049,2.73925 49.098728,2.77004 49.111778,2.80339 49.144669,2.85119 49.15979,2.99549 49.23616,3.03301 49.241539,3.08543 49.26516,3.13198 49.266472,3.18086 49.294731,3.21429 49.302959,3.28301 49.356419,3.3289 49.35873,3.35653 49.368698,3.37508 49.387329,3.3684 49.40694,3.40955 49.42358,3.43405 49.446411,3.51661 49.463291,3.58582 49.519058,3.59405 49.535789,3.62701 49.551029,3.63567 49.573921,3.65985 49.59404,3.71867 49.705761,3.80852 49.78054,3.9306 49.8503,4.00552 49.867611,4.02625 49.889511,4.06293 49.90406,4.09659 49.905418,4.10586 49.934929,4.14826 49.948738,4.16724 49.974251,4.20531 49.97723,4.31856 50.0275,4.37885 50.030609,4.46792 50.070969,4.46888 50.083069,4.49986 50.102741,4.49368 50.127609,4.50478 50.152081,4.52658 50.17326,4.53016 50.19585,4.55226 50.203079,4.57809 50.246059,4.60485 50.252739,4.65955 50.304298,4.71331 50.31625,4.73277 50.346191,4.74492 50.346069,4.77921 50.37978,4.82965 50.398071,4.84423 50.415329,4.86628 50.42218,4.85599 50.445961,4.86486 50.45866,4.89671 50.468529,4.94456 50.503571,5.00459 50.525509,5.0625 50.5825,5.12338 50.591831,5.14038 50.606461,5.14052 50.615791,5.17591 50.62899,5.19067 50.649441,5.23795 50.676979,5.3241 50.72472,5.36659 50.737,5.46203 50.78297,5.59527 50.811749,5.66683 50.840649,5.69181 50.859291,5.70955 50.859509,5.78653 50.907829,5.83605 50.9123,5.96387 50.980091,6.14661 51.039459,6.15822 51.053169,6.17824 51.055672,6.21046 51.077419,6.25705 51.084091,6.2703 51.098911,6.33651 51.12685,6.36855 51.158169,6.42585 51.195591,6.43804 51.19519,6.47667 51.218029,6.48883 51.22998,6.47779 51.252701,6.5801 51.331532,6.69558 51.36377,6.75227 51.371132,6.81237 51.399792,6.84989 51.429039,6.87801 51.431438,6.93167 51.462551,6.97855 51.47644,6.98048 51.488819,7.00807 51.496368,7.01853 51.508781,7.0581 51.51609,7.08124 51.53183,7.19856 51.544189,7.24011 51.55888,7.31798 51.557789,7.36123 51.57444,7.38654 51.575272,7.42589 51.595341,7.54105 51.608761,7.59659 51.636028,7.70191 51.658932,7.70489 51.672791,7.74593 51.686958,7.92157 51.708809,8.03324 51.75507,8.07623 51.76083,8.19468 51.80426,8.21855 51.80405,8.35782 51.849621,8.44433 51.859482,8.49079 51.879719,8.5841 51.884579,8.60752 51.900669,8.66277 51.90995,8.69632 51.90266,8.72335 51.909081,8.7726 51.906609,8.90044 51.947609,8.91911 51.945801,8.9343 51.95689,9.00241 51.956379,9.09687 51.99094,9.15502 51.99136,9.33535 52.079762,9.35207 52.090561,9.34909 52.101231,9.36184 52.104111,9.41245 52.10014,9.48007 52.10656,9.53231 52.12204,9.56786 52.110561,9.60129 52.084061,9.61335 52.084469,9.73862 52.124001,9.76815 52.149029,9.85091 52.159939,9.93417 52.153461,10.01568 52.160728,10.12938 52.199108,10.15967 52.20097,10.26939 52.233261,10.33079 52.25803,10.38941 52.26247,10.40875 52.256908,10.5142 52.26252,10.6691 52.245571,10.79077 52.25753,10.84149 52.234901,10.88113 52.22681,10.99778 52.229191,11.03062 52.217602,11.05477 52.22015,11.11851 52.208031,11.35227 52.18716,11.43668 52.188049,11.52164 52.164879,11.62238 52.187531,11.68052 52.218311,11.76374 52.229019,12.05675 52.23267,12.2143 52.252441,12.29568 52.247169,12.34305 52.26495,12.44244 52.2799,12.50953 52.33836,12.55295 52.351181,12.60367 52.349911,12.66093 52.335209,12.80768 52.337711,12.91879 52.290451,12.97733 52.3036,13.24849 52.300331,13.27942 52.30859,13.44054 52.30608,13.51074 52.319302,13.64603 52.310699,13.7164 52.324501,13.8241 52.310299,13.89843 52.316368,13.95759 52.31155,14.0635 52.33419,14.18073 52.343922,14.29105 52.324291,14.54354 52.314289,14.75599 52.33532,14.84256 52.328499,14.95564 52.338371,15.06221 52.32468,15.16572 52.325298,15.28446 52.294231,15.39406 52.318531,15.54209 52.32399,15.65358 52.29948,15.71254 52.296532,15.83711 52.327572,15.93636 52.330448,16.130489 52.36385,16.448879 52.390018,16.5352 52.385269,16.62204 52.356419,16.67141 52.348579,16.88826 52.35461,17.004881 52.345322,17.170919 52.307411,17.362419 52.310108,17.440769 52.31905,17.521919 52.316971,17.549561 52.30616,17.554529 52.313641,17.62093 52.32695,17.78367 52.318829,17.890829 52.282341,17.98637 52.313019,18.00901 52.336861,18.069059 52.358261,18.130541 52.36541,18.158409 52.394329,18.18281 52.39386,18.225611 52.376949,18.30847 52.370152,18.41881 52.3894,18.527161 52.38678,18.615891 52.398628,18.68129 52.39312,18.7043 52.405609,18.732691 52.405029,18.762569 52.420631,18.80508 52.4128,18.86809 52.426079,18.89086 52.418201,18.94124 52.419811,19.0529 52.404129,19.164961 52.40538,19.24848 52.423641,19.305229 52.41375,19.35132 52.43359,19.396641 52.44128,19.429609 52.44141,19.46174 52.42918,19.482149 52.444271,19.611401 52.465778,19.654921 52.491261,19.648609 52.504318,19.70643 52.546162,19.816271 52.573441,19.88517 52.606121,19.91324 52.607239,19.98106 52.63168,20.05653 52.647541,20.33197 52.61694,20.440701 52.62476,20.49379 52.65279,20.52486 52.659981,20.570709 52.66391,20.655951 52.65588,20.707939 52.67017,20.7414 52.666321,20.81212 52.68528,20.89023 52.694012,21.043341 52.67868,21.0809 52.696308,21.09758 52.69495,21.115641 52.708408,21.31554 52.724289,21.361641 52.716061,21.39842 52.698738,21.590389 52.685459,21.59984 52.694321,21.63352 52.685341,21.85906 52.784401,21.87155 52.79987,21.89496 52.802479,22.24649 52.987999,22.4666 53.090141,22.924431 53.164379,22.9757 53.163528,23.159651 53.135971,23.196211 53.120152,23.233709 53.126122,23.41815 53.12582,23.44846 53.13739,23.50668 53.14436,23.643511 53.10825,23.796881 53.108688,23.87129 53.124249,24.06872 53.116779,24.450899 53.15369,24.47839 53.14238,24.557699 53.150539,24.71763 53.137539,24.85112 53.146969,25.131519 53.118011,25.25131 53.08876,25.303431 53.086411,25.32103 53.09425,25.41754 53.097252,25.488529 53.087769,25.59878 53.1077,25.715191 53.146481,25.90134 53.13982,25.92585 53.132629,26.067511 53.181671,26.120001 53.20966,26.330429 53.266708,26.599449 53.402821,26.76107 53.50737,26.81377 53.51268,26.96689 53.55397,27.03907 53.58942,27.05237 53.619888,27.089849 53.66666,27.303511 53.73513,27.391319 53.803421,27.432171 53.817829,27.475559 53.849411,27.49699 53.85548,27.49404 53.869808,27.5397 53.88554,27.58568 53.916759,27.71962 53.955311,27.854549 54.008701,27.997959 54.030449,28.33709 54.106628,28.48181 54.20295,28.49527 54.226021,28.51235 54.237518,28.57115 54.255291,28.770069 54.27718,28.802771 54.290051,28.876591 54.29155,29.036091 54.31271,29.166031 54.364811,29.304399 54.37254,29.807631 54.477001,29.89637 54.473911,30.11908 54.506271,30.195641 54.542679,30.27557 54.55484,30.32493 54.575699,30.35874 54.602482,30.40913 54.619732,30.591089 54.642479,30.780769 54.683159,31.06407 54.689949,31.201559 54.70348,31.37289 54.738861,31.48156 54.749538,31.63796 54.814232,31.67371 54.84396,32.004681 54.86578,32.101212 54.89006,32.147099 54.9259,32.299351 55.016338,32.344479 55.029751,32.4063 55.034019,32.504452 55.056099,32.597309 55.059959,32.674419 55.078171,32.745689 55.079319,33.19561 55.132179,33.346119 55.15284,33.471249 55.183289,33.647659 55.179359,33.89735 55.1996,34.06139 55.18755,34.237122 55.22208,34.389042 55.2654,34.562809 55.32428,34.946049 55.486511,34.976509 55.49308,35.120701 55.505718,35.398941 55.491329,35.519581 55.470581,35.61898 55.46545,35.913269 55.46558,36.064789 55.457821,36.17548 55.494419,36.455029 55.54895,37.198662 55.626869,37.29747 55.6576,37.366482 55.70998,37.53793 55.73756,37.532028 55.752178,37.538471 55.76757,37.569962 55.77998) diff --git a/rust/sedona-geo-test-fixtures/fixtures/vw_simplified.wkt b/rust/sedona-geo-test-fixtures/fixtures/vw_simplified.wkt deleted file mode 100644 index cff03fae..00000000 --- a/rust/sedona-geo-test-fixtures/fixtures/vw_simplified.wkt +++ /dev/null @@ -1 +0,0 @@ -LINESTRING(2.32986 48.86005,2.35093 48.863411,2.43115 48.940418,2.54246 48.960732,2.63999 49.001961,2.80339 49.144669,2.85119 49.15979,2.99549 49.23616,3.08543 49.26516,3.13198 49.266472,3.21429 49.302959,3.28301 49.356419,3.3289 49.35873,3.37508 49.387329,3.3684 49.40694,3.43405 49.446411,3.51661 49.463291,3.62701 49.551029,3.65985 49.59404,3.71867 49.705761,3.80852 49.78054,3.9306 49.8503,4.00552 49.867611,4.02625 49.889511,4.09659 49.905418,4.10586 49.934929,4.16724 49.974251,4.20531 49.97723,4.31856 50.0275,4.37885 50.030609,4.46792 50.070969,4.49368 50.127609,4.57809 50.246059,4.60485 50.252739,4.65955 50.304298,4.71331 50.31625,4.77921 50.37978,4.86628 50.42218,4.85599 50.445961,4.94456 50.503571,5.00459 50.525509,5.0625 50.5825,5.12338 50.591831,5.19067 50.649441,5.3241 50.72472,5.46203 50.78297,5.59527 50.811749,5.70955 50.859509,5.78653 50.907829,5.83605 50.9123,5.96387 50.980091,6.14661 51.039459,6.21046 51.077419,6.33651 51.12685,6.36855 51.158169,6.48883 51.22998,6.47779 51.252701,6.5801 51.331532,6.75227 51.371132,6.84989 51.429039,6.87801 51.431438,6.97855 51.47644,7.01853 51.508781,7.08124 51.53183,7.19856 51.544189,7.24011 51.55888,7.31798 51.557789,7.42589 51.595341,7.54105 51.608761,7.59659 51.636028,7.70191 51.658932,7.74593 51.686958,7.92157 51.708809,8.03324 51.75507,8.07623 51.76083,8.19468 51.80426,8.21855 51.80405,8.35782 51.849621,8.44433 51.859482,8.49079 51.879719,8.5841 51.884579,8.66277 51.90995,8.7726 51.906609,8.9343 51.95689,9.00241 51.956379,9.09687 51.99094,9.15502 51.99136,9.33535 52.079762,9.36184 52.104111,9.48007 52.10656,9.53231 52.12204,9.61335 52.084469,9.73862 52.124001,9.76815 52.149029,9.85091 52.159939,9.93417 52.153461,10.01568 52.160728,10.15967 52.20097,10.33079 52.25803,10.5142 52.26252,10.6691 52.245571,10.79077 52.25753,10.88113 52.22681,10.99778 52.229191,11.11851 52.208031,11.35227 52.18716,11.43668 52.188049,11.52164 52.164879,11.62238 52.187531,11.68052 52.218311,11.76374 52.229019,12.05675 52.23267,12.2143 52.252441,12.29568 52.247169,12.34305 52.26495,12.44244 52.2799,12.50953 52.33836,12.55295 52.351181,12.66093 52.335209,12.80768 52.337711,12.91879 52.290451,12.97733 52.3036,13.24849 52.300331,13.27942 52.30859,13.44054 52.30608,13.51074 52.319302,13.64603 52.310699,13.7164 52.324501,13.8241 52.310299,13.95759 52.31155,14.0635 52.33419,14.18073 52.343922,14.29105 52.324291,14.54354 52.314289,14.75599 52.33532,14.84256 52.328499,14.95564 52.338371,15.06221 52.32468,15.16572 52.325298,15.28446 52.294231,15.39406 52.318531,15.54209 52.32399,15.65358 52.29948,15.71254 52.296532,15.83711 52.327572,15.93636 52.330448,16.130489 52.36385,16.448879 52.390018,16.5352 52.385269,16.67141 52.348579,16.88826 52.35461,17.004881 52.345322,17.170919 52.307411,17.362419 52.310108,17.440769 52.31905,17.554529 52.313641,17.62093 52.32695,17.78367 52.318829,17.890829 52.282341,17.98637 52.313019,18.00901 52.336861,18.130541 52.36541,18.158409 52.394329,18.30847 52.370152,18.41881 52.3894,18.527161 52.38678,18.615891 52.398628,18.68129 52.39312,18.762569 52.420631,18.80508 52.4128,18.86809 52.426079,19.0529 52.404129,19.164961 52.40538,19.24848 52.423641,19.305229 52.41375,19.35132 52.43359,19.482149 52.444271,19.611401 52.465778,19.70643 52.546162,19.816271 52.573441,19.88517 52.606121,20.05653 52.647541,20.33197 52.61694,20.440701 52.62476,20.49379 52.65279,20.570709 52.66391,20.655951 52.65588,20.89023 52.694012,21.043341 52.67868,21.115641 52.708408,21.31554 52.724289,21.39842 52.698738,21.63352 52.685341,21.85906 52.784401,22.24649 52.987999,22.4666 53.090141,22.924431 53.164379,22.9757 53.163528,23.233709 53.126122,23.41815 53.12582,23.50668 53.14436,23.643511 53.10825,23.796881 53.108688,23.87129 53.124249,24.06872 53.116779,24.450899 53.15369,24.47839 53.14238,24.557699 53.150539,24.71763 53.137539,24.85112 53.146969,25.131519 53.118011,25.25131 53.08876,25.41754 53.097252,25.488529 53.087769,25.59878 53.1077,25.715191 53.146481,25.90134 53.13982,25.92585 53.132629,26.067511 53.181671,26.120001 53.20966,26.330429 53.266708,26.599449 53.402821,26.76107 53.50737,26.81377 53.51268,26.96689 53.55397,27.03907 53.58942,27.089849 53.66666,27.303511 53.73513,27.391319 53.803421,27.432171 53.817829,27.49404 53.869808,27.58568 53.916759,27.71962 53.955311,27.854549 54.008701,27.997959 54.030449,28.33709 54.106628,28.48181 54.20295,28.51235 54.237518,28.57115 54.255291,28.770069 54.27718,29.036091 54.31271,29.166031 54.364811,29.304399 54.37254,29.807631 54.477001,29.89637 54.473911,30.11908 54.506271,30.195641 54.542679,30.27557 54.55484,30.40913 54.619732,30.591089 54.642479,30.780769 54.683159,31.06407 54.689949,31.201559 54.70348,31.37289 54.738861,31.48156 54.749538,31.63796 54.814232,31.67371 54.84396,32.004681 54.86578,32.101212 54.89006,32.147099 54.9259,32.299351 55.016338,32.504452 55.056099,32.597309 55.059959,32.674419 55.078171,32.745689 55.079319,33.19561 55.132179,33.346119 55.15284,33.471249 55.183289,33.647659 55.179359,33.89735 55.1996,34.06139 55.18755,34.237122 55.22208,34.389042 55.2654,34.562809 55.32428,34.946049 55.486511,35.120701 55.505718,35.398941 55.491329,35.519581 55.470581,35.61898 55.46545,35.913269 55.46558,36.064789 55.457821,36.17548 55.494419,36.455029 55.54895,37.198662 55.626869,37.29747 55.6576,37.366482 55.70998,37.53793 55.73756,37.569962 55.77998) diff --git a/rust/sedona-geo-test-fixtures/pp_points.py b/rust/sedona-geo-test-fixtures/pp_points.py deleted file mode 100755 index 0771caac..00000000 --- a/rust/sedona-geo-test-fixtures/pp_points.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env python3 - -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -"""Script to parse coordinates through debug log, and replace them with easier -names. - -""" - -import sys -import re - - -def main(): - pts = {} - - float_regex = r"[-+]?(?:\d*\.\d+|\d+)" - coord_regex = f"({float_regex}),? ({float_regex})" - regex = re.compile(coord_regex) - - line = sys.stdin.readline() - while line: - if line.startswith("input:"): - print(line, end="") - m = regex.search(line) - while m: - st = m.start() - print(line[:st], end="") - sig = m.expand(r"\1#\2") - if sig not in pts: - pts[sig] = len(pts) - idx = pts[sig] - print(f"⚝{idx}", end="") - - en = m.end() - line = line[en:] - m = regex.search(line) - print(line, end="") - line = sys.stdin.readline() - - print("end of input") - print("points:") - for sig in pts: - x, y = sig.split("#") - idx = pts[sig] - print(f"\t{idx}: Pt({x} {y})") - - -if __name__ == "__main__": - main() diff --git a/rust/sedona-geo-test-fixtures/src/lib.rs b/rust/sedona-geo-test-fixtures/src/lib.rs deleted file mode 100644 index 62ff2c9b..00000000 --- a/rust/sedona-geo-test-fixtures/src/lib.rs +++ /dev/null @@ -1,186 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -use std::{path::PathBuf, str::FromStr}; - -use geo_types::{LineString, MultiPolygon, Point, Polygon}; -use wkt::{TryFromWkt, WktFloat}; - -pub fn louisiana() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("louisiana.wkt") -} - -pub fn baton_rouge() -> Point -where - T: WktFloat + Default + FromStr, -{ - let x = T::from(-91.147385).unwrap(); - let y = T::from(30.471165).unwrap(); - Point::new(x, y) -} - -pub fn east_baton_rouge() -> Polygon -where - T: WktFloat + Default + FromStr, -{ - polygon("east_baton_rouge.wkt") -} - -pub fn norway_main() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("norway_main.wkt") -} - -pub fn norway_concave_hull() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("norway_concave_hull.wkt") -} - -pub fn norway_convex_hull() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("norway_convex_hull.wkt") -} - -pub fn norway_nonconvex_hull() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("norway_nonconvex_hull.wkt") -} - -pub fn vw_orig() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("vw_orig.wkt") -} - -pub fn vw_simplified() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("vw_simplified.wkt") -} - -pub fn poly1() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("poly1.wkt") -} - -pub fn poly1_hull() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("poly1_hull.wkt") -} - -pub fn poly2() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("poly2.wkt") -} - -pub fn poly2_hull() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("poly2_hull.wkt") -} - -pub fn poly_in_ring() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("poly_in_ring.wkt") -} - -pub fn ring() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("ring.wkt") -} - -pub fn shell() -> LineString -where - T: WktFloat + Default + FromStr, -{ - line_string("shell.wkt") -} - -// From https://geodata.nationaalgeoregister.nl/kadastralekaart/wfs/v4_0?request=GetFeature&service=WFS&srsName=EPSG:4326&typeName=kadastralekaartv4:perceel&version=2.0.0&outputFormat=json&bbox=165593,480993,166125,481552 -pub fn nl_zones() -> MultiPolygon -where - T: WktFloat + Default + FromStr, -{ - multi_polygon("nl_zones.wkt") -} - -// From https://afnemers.ruimtelijkeplannen.nl/afnemers/services?request=GetFeature&service=WFS&srsName=EPSG:4326&typeName=Enkelbestemming&version=2.0.0&bbox=165618,480983,166149,481542"; -pub fn nl_plots_wgs84() -> MultiPolygon -where - T: WktFloat + Default + FromStr, -{ - multi_polygon("nl_plots.wkt") -} - -pub fn nl_plots_epsg_28992() -> MultiPolygon -where - T: WktFloat + Default + FromStr, -{ - // https://epsg.io/28992 - multi_polygon("nl_plots_epsg_28992.wkt") -} - -fn line_string(name: &str) -> LineString -where - T: WktFloat + Default + FromStr, -{ - LineString::try_from_wkt_reader(file(name)).unwrap() -} - -pub fn polygon(name: &str) -> Polygon -where - T: WktFloat + Default + FromStr, -{ - Polygon::try_from_wkt_reader(file(name)).unwrap() -} - -pub fn multi_polygon(name: &str) -> MultiPolygon -where - T: WktFloat + Default + FromStr, -{ - MultiPolygon::try_from_wkt_reader(file(name)).unwrap() -} - -pub fn file(name: &str) -> std::fs::File { - let mut res = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - res.push("fixtures"); - res.push(name); - std::fs::File::open(&mut res).unwrap_or_else(|_| panic!("Can't open file: {res:?}")) -} diff --git a/submodules/sedona-testing b/submodules/sedona-testing index 5073f740..c7bc17d7 160000 --- a/submodules/sedona-testing +++ b/submodules/sedona-testing @@ -1 +1 @@ -Subproject commit 5073f7405a6aa2b8eb326da94356802dca956a6a +Subproject commit c7bc17d7109fc628959eb2850d4cfce3d483b1ee